架构的演化和维护

架构演化

软件架构的演化和维护就是对架构进行修改和完善的过程,目的就是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改等,是一个不断迭代的过程,直至满足用户需求

软件架构的演化就是软件整体结构的演化,演化过程涵盖软件架构的全生命周期,包括软件架构需求的获取、软件架构建模、软件架构文档、软件架构实现以及软件架构维护等阶段。

一是架构是整个系统的骨架,是软件系统具备诸多好的特性的保障;二是软件架构作为软件蓝图为人们宏观管控软件系统的整体复杂性和变化性提供了一条有效途径

软件架构的定义包含组件、连接件、约束三大要素,这类软件架构演化主要关注的就是这三者之间的添加、修改和删除等

面向对象架构演化

面向对象软件架构演化主要分为以下四种演化:对象演化、消息演化、复合片段演化和约束演化

对象演化:在顺序图中,组件的实体是对象,会对架构设计的动态行为产生影响的演化只包括Add Object (AO)和DeleteObject(DO)两种。

消息演化:将消息演化分为AddMessage(AM)、 DeleteMessage (DM)、SwapMessageOrder (SMO)、OverturnMessage(OM)、ChangeMessageModule (CMM)5种。

复合片段演化:复合片段是对象交互关系的控制流描述,表示可能发生在不同场合的交互,与消息同属于连接件范畴。复合片段的演化分为AddFragment (AF)、Deletefragment(DF)、FragmentTypeChange (FTC)和FragmentConditionChange (FCC)。

约束演化:顺序图中的约束信息以文字描述的方式存储于对象或消息中,约束演化就是直接对约束信息进行添加和删除。

演化分类

针对软件架构的演化过程是否处于系统运行时期,可以将软件架构演化分为静态演化和动态演化

软件架构的演化时期包括:设计时演化、运行前演化、有限制运行时演化、运行时演化

软件架构静态演化主要是在设计时演化以及运行前演化。与此相对应的维护方法有3类:更正性维护、适应性维护和完善性维护

动态演化是在系统运行期间的演化,需要在不停止系统功能的情况下完成演化,较之静态演化更加困难。具体发生在有限制的运行时演化和运行时演化阶段。

软件的动态性分为3个级别:

交互动态性,要求数据在固定的结构下动态交互;

结构动态性,允许对结构进行修改,通常的形式是组件和连接件实例的添加和删除,这种动态性是研究和应用的主流;

架构动态性,允许软件架构的基本构造的变动,即结构可以被重定义,如新的组件类型的定义。

目前,实现软件架构动态演化的技术主要有两种:采用动态软件架构(DSA)和进行动态重配置(DR)。

DSA是指在运行时刻会发生变化的系统框架结构,允许在运行过程中通过框架结构的动态演化实现对架构的修改;

DR从组件和连接件的配置入手,允许在运行过程中增删组件,增删连接件,修改连接关系等操作。

系统必须提供SA动态演化的一些相关功能:保存当前软件架构信息的功能、设置监控机制监视系统有无需求变化、保证演化操作原子性。

DSA实施动态演化大体遵循以下4步:①捕捉并分析需求变化;②获取或生成体系结构演化策略;③根据步骤2得到的演化策略,选择适

当的演化策略并实施演化;④演化后的评估与检测。

动态重配置模式:主从模式、中央控制模式、客户端/服务器模式、分布式控制模式

演化评估

演化过程己知的评估(正向)和演化过程未知的评估(逆向)

演化过程己知的评估其目的在于通过对架构演化过程进行度量,比较架构内部结构上的差异以及由此导致的外部质量属性上的变化,对该演化过程中相关质量属性进行评估。

基于度量的架构演化评估方法,其基本思路在于通过对演化前后的软件架构进行度量,比较架构内部结构上的差异以及由此导致的外部质量属性上的变化。具体包括:架构修改影响分析、监控演化过程、分析关键演化过程。

当演化过程未知时,我们无法像演化过程已知时那样追踪架构在演化过程中的每一步变化,只能根据架构演化前后的度量结果逆向推测出架构发生了哪些改变,并分析这些改变与架构相关质量属性的关联关系。

架构维护

软件架构维护过程一般涉及架构知识管理、架构修改管理和架构版本管理