软件架构是软件开发和维护过程中的一个重点制品,是软件需求和设计、实现之间的桥梁。软件架构的开发和维护是基于架构软件生命周期中的关键环节,与之相关的步骤包括导出架构需求、架构开发、架构文档化、架构分析、架构实现和架构维护。软件架构的维护与演化密不可分,维护需要对软件架构的演化过程进行追踪和控制,以保障软件架构的演化过程能够满足需求(亦有说法将架构维护作为架构演化的一个部分)。

        由于软件架构维护过程一般涉及架构知识管理、架构修改管理和架构版本管理等内容,下面分别对它们进行简单介绍。

1.软件架构知识管理

         软件架构知识管理是对架构设计中所隐含的决策来源进行文档化表示,进而在架构维护过程中帮助维护人员对架构的修改进行完善的考虑,并能够为其他软件架构的相关活动提供参考。

1.1架构知识的定义

         Lago等人给出了架构知识的定义:架构知识=架构设计+架构设计决策。即需要说明在进行架构设计时采用此种架构的原因。

1.2架构知识管理的含义

         架构知识管理侧重于软件开发和实现过程所涉及的架构静态演化,从架构文档等信息来源中捕捉架构知识,进而提供架构的质量属性及其设计依据以进行记录和评价。架构知识管理不仅要涵盖架构的解决方案,也要涵盖产生该方案的架构设计决策、设计依据与其他信息,以有助于架构进一步的演化。

1.3架构知识管理的需求

         许多人认为架构知识的可获得性能够极大地提升软件开发流程。如果对架构知识不进行管理的话,那么关键的设计知识就会“沉没”在软件架构之中,如果开发组人员发生变动,那么“沉没”的架构知识就会“腐蚀”。

1.4架构知识管理的现状

         对于软件架构知识的讨论侧重于对架构信息的整理、存储和恢复。尽管如此,当前尚无实用的架构知识整理策略,构建架构的利益相关者(即拥有架构知识的人)通常不会使用文档来记录架构知识,原因在于对架构知识文档化和维护的动机不足:其好处看起来不够重大而成本相对较高;利益相关者对工程的短期兴趣比起长远的架构知识重用显得更重要;开发者被设计中的创造性工作所吸引,而不会反思设计决策的长远影响;缺乏此方面的培训。更为重要的是,即使实现了文档化,通常架构知识也不能在整个组织中得到充分的分享。例如,架构知识没有传播给合适的利益相关者;架构知识的接收者没有将之应用于他们的任务之中;知识笨重,难以在应用的时候快速地搜索和定位到合适的知识。

2.软件架构修改管理

         在软件架构修改管理中,一个主要的做法就是建立一个隔离区域(Region of Quiescence),保障该区域中任何修改对其他部分的影响比较小,甚至没有影响。为此,需要明确修改规则、修改类型,以及可能的影响范围和副作用等。

3.软件架构版本管理

         软件架构版本管理为软件架构演化的版本演化控制、使用和评价等提供了可靠的依据,并为架构演化量化度量奠定了基础。

4.软件架构可维护性度量实践

        架构可维护性评估针对架构组件图进行度量,评估高层次上的架构复杂程度。基于Web读写系统的各个组件有圈复杂度(CNN)、扇入扇出度(FFC)、模块间耦合度(CBO)、模块的响应(RFC)、模块间内聚度TCC和LCC。

04-21 22:25