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

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

我目前的理解是:

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

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


当前回答

你说得对,是的。系统的架构是它的“骨架”。它是系统抽象的最高层次。有什么样的数据存储,模块之间如何交互,有什么样的恢复系统。就像设计模式一样,也有架构模式:MVC、3层分层设计等。

软件设计就是设计各个模块/组件。模块x的职责和功能是什么?Y类?它能做什么,不能做什么?可以使用哪些设计模式?

所以简而言之,软件架构更多的是整个系统的设计,而软件设计则强调模块/组件/类的层面。

其他回答

非常主观,但我的观点是:

体系结构 系统的总体设计,包括与其他系统的交互、硬件要求、整体组件设计和数据流。

设计 整个系统中一个组件的组织和流程。这还包括该组件用于与其他组件交互的API。

我的提醒:

我们可以不征求别人的意见就改变设计 如果我们改变架构,我们需要将其传达给某人(团队、客户、涉众……)

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

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

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

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

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

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

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

体系结构是用于构建系统的设计模式的最终集合。

我猜设计是用来把所有这些放在一起的创造力?