这两个术语非常分散。它们到底有什么不同?
是否有任何现实生活中的例子或场景可以详细说明这种差异?
程序或计算系统的软件架构是系统的一个或多个结构,它包括软件组件、这些组件的外部可见属性以及它们之间的关系。[...] 记录软件架构有助于利益相关者之间的沟通,记录有关高级设计的早期决策,并允许在项目之间重用设计组件和模式。
--
软件设计是解决问题和规划软件解决方案的过程。在确定了软件的用途和规格后,软件开发人员将设计或聘请设计人员制定解决方案的计划。它包括低级组件和算法实现问题以及架构视图。
--
因此它们彼此共享部分,但它们指的是软件的略有不同的方面。从技术上讲,架构应该包括所有方面,但实际上它们通常是指软件的高级拓扑或结构。例如,决定是否将系统实现为基于文件的命令行软件、Web 应用程序或n 层富互联网应用程序将是一个架构决策。
address1
软件设计包括制定架构决策,但它会包括更深层次的决策,例如数据库中应该有多少字符,这并不是真正的架构决策。
编辑:为了简化差异,架构是指已知的软件解决方案模式,通常涉及子组件/层/层之间的放置和关系。这些模式还指定了数据的存储、处理和呈现方式和位置。架构是可以使用方框和箭头来描述的东西,例如自主机器人范式。
软件设计是考虑给定软件需求的解决方案的过程。每个问题都有其独特的方式,因此设计会有所不同。
在我的理解中,设计更针对一个系统。两个系统可以具有相似的设计但共享相同的架构。
因此,设计定义了如何将所选架构应用于给定的需求。(或类似的东西)
但这更像是我的一种感觉,所以我对其他答案很感兴趣......
可以这样想:建造房子,你从建筑师(Architect)那里得到一张蓝图。然后建设者使用这个蓝图并决定(设计师)需要多少柱子,使用什么样的水泥和砖块,需要做什么样的着色等等。这些都是设计决定。然后工人接受建筑商的订单并建造房屋(编码器)。
我对此的看法..
设计是计划如何构建软件的过程
架构是代码库结构的现实。如果您的代码不是结构化的,您就不能真正声称拥有架构。
理想情况下,您会从设计阶段(或代码库生命周期中的一系列设计阶段)获得架构,但有时好的架构可以来自重构的持续增量改进,并且只是一种做“正确”的感觉。
这些不是正式定义的词;)
体系结构是指计算机或基于计算机的系统的概念结构和逻辑组织。
设计是指为显示系统或对象在制造之前的外观和功能或工作原理而制作的计划或图纸。
如果您正在“构建”一个组件,那么您就是在定义它在更大系统中的行为方式。如果您正在“设计”相同的组件,那么您就是在定义它在内部的行为方式。
所有架构都是设计,但并非所有设计都是架构。
How
部分是设计,What
是How
建筑
的交集
还有一些设计决策,在架构上并不重要,即不属于设计的架构分支。例如,某些组件的内部设计决策,例如算法的选择、数据结构的选择等。任何在其组件边界之外不可见的设计决策都是组件的内部设计,并且是非架构的。这些是系统架构师将留给模块设计人员或实施团队的设计决策,只要他们的设计不破坏系统级架构施加的架构约束。
给出一个很好的类比的链接
架构是设计好的。但不是反过来。“架构”通常用于识别和命名大型(多层)系统的设计。根据定义,系统是多个组件或子系统的协作。人们可能称其为“系统设计”或仅称为“设计”,但由于某种原因,架构赋予它更公正的权重,因为它要求与其子系统或组件的设计有所不同。
架构是组件以及它们之间的关系。例如,当您从一千米高处看到建筑物时,您只能看到连接的路径和房间。但是在设计中描述了房间内的内容。
设计是一个计划,你将如何做到这一点。架构师是你如何实现的。1.就其阶段、职责范围和决策级别而言 2.架构是框架、工具、语言、范围、目标和高级方法论方面的更大图景,而设计是实现方法论的较小图景,具有系统不同部分的外观、设计模式、编程习惯、重构和代码组织方式的局部约束。3.架构面向更高层次的战略、结构和目的。设计是战术性的,面向实施和实践,更面向具体。