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

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

我目前的理解是:

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

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


当前回答

我非常喜欢这篇文章,因为它提供了将建筑与设计分开的经验法则:

http://www.eden-study.org/articles/2006/abstraction-classes-sw-design_ieesw.pdf

这被称为内涵/局部性假说。关于软件性质的非本地和内涵的陈述是架构性的。局部的和内涵的语句是设计的。

其他回答

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

我像Patrick Karcher一样看待建筑——从大局出发。例如,您可以为建筑物提供架构,查看其结构支撑、窗户、入口和出口、排水等。但你并没有“设计”楼层布局、隔间位置等。

所以当你设计了大楼的时候,你并没有设计每个办公室的布局。 我认为这同样适用于软件。

你可以把设计布局看作是“设计布局”……

我同意其中的许多解释;本质上,我们认识到软件系统的架构设计和详细设计之间的区别。

虽然设计师的目标是在开发所需的规格中尽可能精确和具体;架构师本质上的目标是指定系统的结构和全局行为,就像详细设计开始时所要求的那样。

优秀的架构师会避免过度规范——架构不能过分指定,但要足够,(架构)决策只针对那些风险处理成本最高的方面建立,并有效地提供一个框架(“通用性”),在这个框架内可以进行详细设计,即局部功能的可变性。

实际上,体系结构过程或生命周期只是遵循这个主题——足够的抽象级别来概述(体系结构上的)重要业务需求的结构,并将更多细节留给设计阶段以实现更具体的可交付成果。

架构是高层次的、抽象的、逻辑的设计,而软件设计是低层次的、详细的、物理的设计。

架构:架构在建筑的各个阶段创建规划布局 按规格。

设计人员:-设计人员的工作是满足建筑设计的所有基本要求,包括布局的功能、美学和外观。