知识卡片
组成派与决策派两大定义流派的分歧
内容
软件架构至今没有一个被公认的统一定义——目前存在的100多个定义大体可以归入组成派、决策派和其他定义三大类,这种分歧并非偶然,而是学术界与工业界长期脱节的直接后果:研究人员把架构视为系统的高层抽象骨架,倾向给出学术化的定义,业界人士则更注重现实问题的细节,双方对”什么是架构”的理解本身就不一致(”正如Martin Fowler所言:软件业的人乐于做这样的事情——找一些词汇,并将它们引申到大量微妙而又互相矛盾的含义中,其中最大的受害者就是’架构’这个词”)。组成派定义关注软件本身,把架构看作组件和交互的集合,强调软件系统的整体结构和配置;架构兴起初期的定义大都倾向组成派观点,但其缺陷随应用发展逐渐显露——开发者只注重组件本身,开发过程中经常出现违背原始设计的现象,导致成品不能完全满足需求,架构形成后的评价和演化也面临困难。决策派定义则关注架构中的实体(人),把架构视为一系列重要设计决策的集合,以人的决策为描述对象、从设计决策角度指导软件开发;但决策派同样有其不足——对设计决策的优化程度要求很高,一旦决策不当,修改代价很大。这两派的分歧本质上是”以物为中心”还是”以人为中心”看待架构的分歧:组成派回答”系统由什么构成”,决策派回答”这些构成是谁、为什么这样决定的”——具体的组成派代表性定义见[[组成派的代表性架构定义]],决策派代表性定义见[[决策派的代表性架构定义]]。
参考来源
- 位置:《软件架构理论与实践》第2章《软件架构的概念》"2.1 引言"节(源文件:_epub-src/OEBPS/text00014.html)
- 结论依据:原文说明软件架构定义"驳杂多端,其中影响较大的定义派别是组成派和决策派:前者关注软件本身……后者关注软件架构中的实体(人)……",并分别指出组成派"开发过程中经常会出现违背原始设计的现象"、决策派"对设计决策的优化程度要求很高,修改代价大"两个局限,直接支撑本卡片结论。
- 原始内容:软件架构的定义驳杂多端,其中影响较大的定义派别是组成派和决策派:前者关注软件本身,将软件架构看作组件和交互的集合;后者关注软件架构中的实体(人),将软件架构视为一系列重要设计决策的集合。