知识卡片

架构设计对复杂性管理、重用与维护成本的作用

普通读书笔记卡

内容

架构设计还能在三个相互关联的方面创造价值。管理复杂性:现今系统越来越复杂,而软件架构因为把关注点集中在组件、连接件这类高层元素上,天然提供了一种抽象的系统刻画方式,这使得架构本身就具备管理复杂性的能力;架构设计过程中的组件递归分解,是处理大问题的经典方法——把一个大问题拆成很多小问题、再逐个击破;而抽象架构之间的通信技术(比如采用UML这类业界标准来表达抽象性)进一步让复杂系统的文档化在今天的产业实践中变得稀松平常,这说明”管理复杂性”不是架构的副产品,而是架构存在的核心价值之一。奠定重用基础:架构设计过程能同时支持”使用已有重用资源”和”建立新的可重用资源”这两种活动,重用资源对组织而言的好处(降低系统成本、改进系统质量)已经得到充分验证;软件架构自身也可以被当作未来开发系统的重用参考资源,架构内部的组件同样可以被视为潜在的重用对象,但要注意的是,跨项目、跨企业层面的资源重用往往会引发比较大的冲突(如所有权、版本兼容、职责边界等问题),架构设计过程能够识别出当前项目里存在的重用机会,但并不能自动化解跨边界重用带来的组织摩擦。降低维护费用:架构设计过程要求把系统维护人员视为主要的利益相关者之一,并把他们的需求当作首要任务来满足;一份被恰当文档化的软件架构,不应该只是为了”减轻可维护性负担”这个消极目标,还应该主动集成恰当的系统维护机制、并提前考虑系统未来的适应性和可扩充性——这意味着”好维护”和”能扩展”本该是架构设计阶段就主动规划进去的属性,而不是留到系统建成之后再被动应对的问题。

参考来源

- 位置:《软件架构理论与实践》第23章《结束语》"23.2.4 架构设计能够有效地管理复杂性"、"23.2.5 架构设计为重用奠定了基础"、"23.2.6 架构设计能够降低维护费用"节(源文件:_epub-src/OEBPS/text00192.html) - 结论依据:原文说明"一个软件架构一般只把关注点集中在组件、连接件这些元素上,它提供了一种抽象的系统刻画,所以具有有效管理复杂性的作用",并指出"跨项目和企业的资源重用会导致产生很大的冲突",以及"一个被恰当文档化的软件架构……还应该确保集成了恰当的系统维护机制,并且要考虑系统将来的适应性和可扩充性",直接支撑本卡片结论。 - 原始内容:软件架构能够支持资源重用。软件架构自身也可以被用来作为今后开发系统的一个重用参考资源,甚至软件架构内部的组件也可以被认为是潜在的重用资源。虽然架构设计过程能够鉴别现今项目中存在的资源重用的机会,但是跨项目和企业的资源重用会导致产生很大的冲突。