没错,系统的架构就像是它的“骨架”。它是系统的最高抽象层。它包括哪些数据存储、模块之间如何交互以及哪些恢复系统已经到位。就像设计模式一样,有一些架构模式:MVC,三层分层设计等。
软件设计涉及到设计单个模块/组件。模块X具有哪些职责和功能?类Y呢?它能做什么,不能做什么?可以使用哪些设计模式?
简而言之,软件架构更多地关注整个系统的设计,而软件设计则强调在模块/组件/类级别上的设计。
即使阶段或责任领域混合在一起并且遍布各处,了解正在发生的决策层面总是好的。(我们可以永远继续下去。我试图让它成为一个摘要。)我会以这样的话结束:即使似乎您的项目没有正式的架构或设计阶段/ AOR /文档,它正在发生,无论是否有人有意识地这样做。如果没有人决定进行架构,则会发生默认的架构,可能很差。设计也是如此。如果没有代表它们的正式阶段,则这些概念几乎比任何其他时候都更重要。
架构是战略性的,而设计是战术性的。
架构包括框架、工具、编程范式、基于组件的软件工程标准和高级原则等内容。
而设计是与局部限制相关的活动,例如设计模式、编程习惯和重构。
我在寻找架构和设计之间简单的区别时发现了这篇文章;
你认为这种看待它们的方式怎么样:
架构是指计算机或基于计算机的系统的概念结构和逻辑组织。
设计是指在制作之前,展示系统或物体外观和功能或工作原理的计划或图纸。
如果您正在“设计”一个组件,您正在定义其内部行为。如果您正在“架构”同一组件,则正在定义其在更大系统中的行为。
所有架构都是设计,但并非所有设计都是架构。
What
部分是设计,How
是具体实现, What
和 How
的交集则是架构。
用于区分架构和设计的图示:
还有一些设计决策,这些决策不具备架构重要性,即不属于设计的架构分支。例如,某些组件的内部设计决策,如算法选择、数据结构选择等。
任何不能在其组件边界之外看到的设计决策都是组件的内部设计,并且是非架构性的。只要它们的设计不违反系统级架构施加的架构约束,系统架构师就会将这些设计决策留给模块设计人员或实现团队自行决定。
以下链接提供了一个很好的类比:good analogy
我认为你说得对,用我的话来说:
架构 是将系统要求分配给系统元素的过程。以下是关于架构的四个声明:
当系统的复杂性被分解时,架构是必要的工程步骤。
例如:想想你的房子,你不需要一个建筑师来设计你的厨房(只涉及一个元素),但整个建筑需要一些相互作用的定义,如门和屋顶。
设计 是对(拟议中的)功能实现的信息表示。它旨在引起反馈并与利益相关者讨论。这可能是一个好的实践,但不是必要的工程步骤。
在安装厨房之前看到厨房设计确实很好,但对于烹饪需求来说并不是必要的。
如果我考虑一下,可以说:
我的提醒: