知识卡片
架构设计支持变更影响分析的机制
内容
架构设计一项重要但容易被低估的好处是:它让我们能够在真正做出改变之前,就推断出这个改变会产生什么样的影响。这个能力之所以成立,是因为软件架构本身就确定了三类关键信息——系统的主要组件及其交互方式、任意两个组件之间的依赖关系、以及这些组件对需求的可追溯性。有了这三类信息作为基础,当需求发生变化时,可以顺着”需求-组件”的可追溯性直接定位到哪些组件会受到影响;同样,当某一个组件本身发生变化时,也可以顺着组件间的依赖关系,反向分析出还有哪些依赖它的其他组件会被波及——这两条分析路径本质上是同一张依赖网络的两种走法:一条从需求出发找组件,一条从组件出发找组件。这种影响分析能力能够帮助确定三件事:这次改变会产生多少成本、改变对系统整体的影响范围有多大、以及改变本身带来了什么风险——而这三项信息,恰恰是在决定改变的优先级、以及具体研究和实施这些改变时绝对必要的输入,缺少了基于架构的影响分析,变更决策就只能凭经验拍脑袋,无法量化改动的真实代价。除此之外,架构设计还有几项相对分散但同样重要的作用:帮助尽早预测、获取和控制软件质量属性的行为,使其较早达到实际可接受的均衡状态;有助于减少软件失效;能为架构级别的决策提供合理的论证依据;有助于建立演化原型,从而预测和转移风险;并且提供了一个可以同时观察多个质量目标相互作用的视角,帮助在多个可能冲突的质量目标之间找到均衡点——这些作用共同说明,架构信息一旦被显式建立起来,就能在需求变更、质量权衡、风险管理等多个决策场景中被反复复用,而不是只在系统建成的那一刻发挥一次性的作用。
参考来源
- 位置:《软件架构理论与实践》第23章《结束语》"23.2.7 架构设计能够支持冲突分析"及"23.2.8 架构设计的其他作用"节(源文件:_epub-src/OEBPS/text00192.html)
- 结论依据:原文说明"软件架构确定了主要的组件及其交互作用、两个组件之间的依赖性以及这些组件对于需求的可追溯性。有了这个信息,如需求的改变等可以通过组件的影响来分析……这些信息在我们确定改变的优先级以及研究这些改变时是绝对必要的",直接支撑本卡片对变更影响分析机制的概括。
- 原始内容:软件架构确定了主要的组件及其交互作用、两个组件之间的依赖性以及这些组件对于需求的可追溯性。有了这个信息,如需求的改变等可以通过组件的影响来分析。同样,改变一个组件的影响可以通过依赖它的其他组件分析出来。