知识卡片

决策派的代表性架构定义

普通读书笔记卡

内容

与[[组成派的代表性架构定义]]不同,决策派定义的依据是:软件架构设计是软件设计的一部分,而软件设计本质上是开发人员意志和决策在开发过程中的体现,软件架构更是高层领导和架构师意志决策的体现,因此决策派定义更注重架构风格和模式的”选择”本身,而不是选择之后固定下来的结构。1999年Booch等人把软件架构定义为”一系列重要决策的集合”,这些决策具体关于:软件系统的组织方式;组成系统的结构元素及其接口的选择,以及元素协作时的行为;如何把这些元素逐渐组合成更大的子系统;用于指导系统组织的架构风格。2005年Jansen等人进一步把架构定义为”架构层次上所有设计决策的集合体”,并把每个设计决策拆成五个维度:架构改造(对架构进行增加/删除/移动等操作)、原理(为什么要这样改造)、设计准则(哪些操作可以做)、设计约束(哪些操作不可以做)、附加需求(做出这个决策后可能产生的新需求)——这个拆分把”一个决策”本身也变成了一个可以被结构化描述的对象。2006年Kruchten等人把定义进一步压缩为”设计决策+设计”,这里的”设计”特指设计决策的推理过程本身。三个定义的演进方向是一致的:从”决策的结果是架构”,逐渐深入到”决策本身如何被记录、追溯、验证”,这也解释了决策派为什么天然更适合处理架构演化和架构知识管理这类需要追溯”为什么当初这样设计”的场景,而组成派定义对此天生缺乏描述能力。

参考来源

- 位置:《软件架构理论与实践》第2章《软件架构的概念》"2.3 决策派的主要定义"节(源文件:_epub-src/OEBPS/text00016.html) - 结论依据:原文分别给出1999年Booch"一系列重要决策的集合"定义的四点具体内容、2005年Jansen"设计决策集合体"定义涉及的架构改造/原理/设计准则/设计约束/附加需求五个方面、2006年Kruchten"设计决策+设计"的定义,直接支撑本卡片对三个定义演进方向的归纳。 - 原始内容:2005年Jansen等人认为软件架构是架构层次上所有设计决策的集合体,这些设计决策与以下内容有关:架构改造的影响、原理、设计准则、设计约束以及附加需求……2006年Kruchten等人将软件架构简单地定义为"设计决策+设计",这里的设计指的是设计决策的推理过程。