知识卡片

成功软件架构的五大品质与需求-架构的双向影响

普通读书笔记卡

内容

软件架构专家温昱认为,成功的软件架构应具有五种品质:良好的模块化(每个模块职责明确、模块间松耦合、模块内部高内聚并合理实现信息隐藏);适应功能与技术变化的能力(应用相关模块与领域通用模块分离、技术平台相关模块与独立于具体技术的模块分离,达到”隔离变化”效果);对系统动态运行的良好规划(标识主动/被动模块、明确调用关系和加锁策略、说明关键的进程线程队列消息机制);对数据的良好规划(不仅是持久化存储方案,还包括数据传递、复制、同步策略);明确灵活的部署规划(涉及可移植性、可伸缩性、持续可用性等大型企业软件特别关注的质量属性)。这五大品质背后的共同逻辑是”隔离变化”:模块化隔离职责边界、适应性隔离功能与技术变化、动态规划隔离并发风险、数据规划隔离状态管理复杂度、部署规划隔离物理环境差异。需求与架构不是单向的”需求决定架构”关系,而是相辅相成的双向关系:一方面,需求会影响架构风格的选择以及组件、连接件等相应组成的设计布局,约束架构的功能和质量部署;另一方面,架构通过自身设计对需求进行分析实现,并在设计过程中产生新的需求、去除不合理的需求,从而制定出更符合规约的需求——这个相互影响的过程可以被看作一个螺旋过程。把架构概念引入需求分析阶段(而非按传统方法先产生需求规约、事后再考虑架构),有助于保证需求规约与系统设计之间的可追踪性和一致性,也能获得更有结构性和可重用性的需求规约。

参考来源

- 位置:《软件架构理论与实践》第8章《软件架构设计和实现》"8.0 引言"及"8.1.3 需求与架构的协同演化"节(源文件:_epub-src/OEBPS/text00063.html、text00064.html) - 结论依据:原文引用温昱《软件架构设计》一书列出成功软件架构应具有的五点品质,并说明"软件需求和软件架构两者是相辅相成的关系……需求与架构的相互影响可以看成一个螺旋过程",直接支撑本卡片结论。 - 原始内容:①良好的模块化:每个模块职责明确,模块间松耦合,模块内部高内聚并合理地实现了信息隐藏……软件需求会影响软件架构风格的选择,以及软件架构相应组成的设计和布局,如组件、连接件等。它约束架构的功能和质量部署,并通过架构反映自身规约的合理性。