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

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

我目前的理解是:

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

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


当前回答

体系结构更像是集成系统的各种功能,以实现系统的一个整体目标,而设计则解决每个功能需求。

例如,以MVVM为例,这是一种体系结构模式。对于通知功能,MVVM使用观察者模式,这又是一种设计模式,

其他回答

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

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

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

Cliff Notes版本:

设计:根据所需产品的规格实现解决方案。

架构:支持设计的基础/工具/基础设施/组件。

这是一个相当宽泛的问题,会引起很多人的回应。

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

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

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

当您需要将较高体系结构级别识别的业务和功能投射到应用程序中时,软件体系结构最好用于系统级。

例如,你的业务是关于交易员的“盈亏”,你的主要功能涉及“投资组合评估”和“风险计算”。

但是当软件架构师详细描述他的解决方案时,他会意识到:

“投资组合评估”不能只是一个应用程序。它需要在可管理的项目中进行细化,例如:

GUI 发射器 调度程序 ...

(因为涉及的操作太大了,需要在几台计算机之间进行拆分,同时仍然可以通过一个通用的GUI随时监控)

软件设计将检查不同的应用程序,它们的技术关系和内部子组件。 它将产生最后一个体系结构层(“技术体系结构”)工作所需的规范(根据技术框架或横向组件),以及项目团队(更面向业务功能的实现)开始各自的项目所需的规范。

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

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