知识卡片

架构腐蚀与逆向工程恢复架构的价值

普通读书笔记卡

内容

软件系统的复杂度会随着演化不断增大(如Android代码规模已突破亿行),系统质量随之逐渐下降、维护也越来越难,因此人们逐渐认识到架构的重要性——架构能提供设计层次的视图,让人更容易理解系统、准确定位需要维护的代码及影响范围,也能在保持外部行为不变的前提下改变内部结构以提升易理解性、可扩展性和可重用性。但在实际演化过程中,架构文档往往得不到及时充分的更新,设计文档和实际架构之间的偏差越来越大;开发团队转而靠人工阅读代码来学习架构,费时费力,也未必人人都能读透原始架构——这就是预期架构与实际架构之间发生偏离的”软件架构腐蚀”现象。架构腐蚀会导致软件演化过程中工程质量恶化,包括功能性、性能、完整性、一致性、可理解性、可维护与演化性等重要特性的丧失。逆向工程(通过分析目标系统实现从低层到高层的抽象,描述软件系统的结构、逻辑及组件间相互作用)为解决架构腐蚀提供了出路——软件架构恢复正属于逆向工程的研究实践范畴,主要目的是从工程项目中获取所需架构信息,恢复出组件元素、连接件元素、架构模式和架构配置信息。架构恢复的价值不只在于”看懂系统”:恢复出的架构可以为重构提供数据基础和可靠的实现保障,开发人员据此能快速评估、在设计编码测试等多个阶段做出改进、选取最优改进方案,从而缩短开发周期、减少缺陷引入、降低测试工作量——这也解释了为什么架构恢复研究对软件开发和演化具有广泛意义,而不只是一个”补文档”的辅助性工作。

参考来源

- 位置:《软件架构理论与实践》第10章《软件架构恢复》"10.1 引言"节(源文件:_epub-src/OEBPS/text00080.html) - 结论依据:原文说明"在演化过程中,就有可能会出现预期架构与实际架构之间发生偏离的现象,即出现软件架构腐蚀。架构腐蚀会导致软件演化过程中出现工程质量的恶化",并说明"软件架构恢复……其主要目的是从工程项目中获取所需的架构信息,恢复出架构的组成元素",直接支撑本卡片结论。 - 原始内容:那么在演化过程中,就有可能会出现预期架构与实际架构之间发生偏离的现象,即出现软件架构腐蚀。架构腐蚀会导致软件演化过程中出现工程质量的恶化,包括功能性、性能、完整性、一致性、可理解性、可维护与演化性等重要特性的丧失。