有人能解释一下软件设计和软件架构的区别吗?

更具体地说;如果你让别人给你展示“设计”——你希望他们展示什么?“建筑”也是如此。

我目前的理解是:

设计:系统特定模块/部分的UML图/流程图/简单线框(用于UI) 架构:组件图(显示系统的不同模块如何相互通信以及如何与其他系统通信),要使用什么语言,模式……?

如果我说错了,请指正。我提到了维基百科在http://en.wikipedia.org/wiki/Software_design和http://en.wikipedia.org/wiki/Software_architecture上有文章,但我不确定我是否理解正确。


当前回答

...long time ago in a faraway place philosophers worried about the distinction between the one and the many. Architecture is about relationship, which requires the many. Architecture has components. Design is about content, which requires the one. Design has properties, qualities, characteristics. We typically think that design is within architecture. Dualistic thinking gives the many as primordial. But architecture is also within design. It's all how we choose to view what is before us - the one or the many.

其他回答

我喜欢Roy Thomas Fielding在他的论文中对什么是软件架构的定义和解释: 架构风格与基于网络的软件架构设计

软件体系结构是软件系统在其操作的某个阶段的运行时元素的抽象。一个系统可能由许多抽象层次和许多操作阶段组成,每一个都有自己的软件体系结构。

他强调“运行时元素”和“抽象层次”。

是的,对我来说听起来不错。设计是你要做的事情,而架构是将设计的各个部分连接在一起的方式。它可以是语言不可知的,但通常会指定要使用的技术,例如LAMP vs Windows, Web服务vs RPC。

建筑是战略的,而设计是战术的。

架构包括框架、工具、编程范例、基于组件的软件工程标准和高级原则。

而设计是一种与局部约束有关的活动,例如设计模式、编程习惯用语和重构。

当我寻找建筑和设计之间的简单区别时,我发现了这一点; 你对这种看待他们的方式有什么看法?

架构是我们正在建造的“什么”; 设计是我们“如何”建造;

架构: 结构设计是在更高的抽象层次上进行的工作,它将技术上重要的需求实现到系统中。该体系结构为进一步的设计奠定了基础。

设计: 通过在每个抽象层的迭代过程来填充架构所没有的内容的艺术。