软件架构重组:实践需要和当前做法
总序
概要
1 介绍
2 实践场景
2.1 视图集的场景
2.2 架构执行场景
2.3 质量属性演变场景(非功能属性演变场景)
2.4 通用和易变架构场景
2.5 二进制组件场景
2.6 混合语音场景
3 已经存在的方法和工具
3.1 纯手工架构重组
3.2 使用工具手动重组
3.3 重组查询语言
3.4 其他技术
4 评估
5 当前和未来的工作
6 总结
7 参考文献
总序
这份报告所描述的是,软件工程研究所(SEI)和Department of Defense (DoD)还有其他商业组织一起合作研究到目前为止所得出的成果:重组软件架构的重要性、解决思路、当前方法论和工具。其中,重要性和解决思路将通过许多实际架构重组的描述来进行说明,每个场景都会通过以下这些方面来进行阐述: 名字、背景、问题描述、案例和需要的解决方案。
这份报告是给那些需要更好地理解已经存在的软件系统架构或者那些考虑使用架构重组但是不知道目前有哪些解决思路、方法论和工具。本篇文章所要阐述的方法论涵盖了纯手工重组到基于工具的重组和高级自动化重组的方方面面,甚至还包括了数据挖掘、架构描述语言的使用辅助.
目前所被提出的解决方案在实际中的架构重组场景中不断地被评估。实际结果显示:虽然架构重组中目前方法存在很多不足,但是通过改进还是能够解决的。这些不足的其中一个点就是对于混合语言组合的架构,我们缺少解决方案、方法论和重组工具。同样还有一个缺陷,就是对于基于二进制的(我们没有源代码)架构,我们也会碰到同样的问题:缺少解决方案、方法论和重组工具。
这份报告总结SEI一直以来为了解决这个问题所做的工作。当然更好的解决方案、方法论和工具等着我们进一步去研究去完成。
概要
软件架构作为一个系统的总框架,他对于基于构件的系统和产品线开发是处在一个核心的地位。对于已经存在的系统,架构必须被重组成精确的反映之前的架构(In existing systems, the architecture often must be reconstructed to reflect the as-built system accurately)。这份报告给出架构重组实际的场景,这些场景概括了常见的问题和解决方案,在DOD和商业组织的重组实践中经常被使用到。基于已经被提出和研究的重组方案之上,这份报告也说明了在许多实际场景和建议的方案中未能解决的重组缺陷。
1 介绍
架构重组是一个从已经存在系统中抽取出架构的过程。一直以来架构重组的许多解决方案已经被研究和提出。这些解决方法的使用场景如下:
- 评估架构文档和软件架构代码的一致性
- 对于那些文档极少或者根本无文档系统的系统重组描述
- 分析和理解已经存在的架构,方便我们进行新需求开发和修复已经存在系统的bug
Dod和商业组织不断的在强调软件架构的重要性,然后对于软件架构的研究仍然不够成熟,架构重组所扮演的角色和潜力我们至今都仍然无法参透。
这份报告给出了许多场景,在这些场景中架构重组很好地解决了那些我们总所周知的挑战,比如重组基本没有文档的软件系统,还有就是讲重组的概念应该到软件开发的整个过程中。基于有源代码的软件系统中进行重组将不再是一种通用的解决方案,因为商业组件的公司将不开放源代码。对于未开源的系统,只有比自己开发达到更多可预见性的收益,组织才有可能去进行架构的重组。