演化的重要性:
软件架构定义:
组件Components
连接件Connectors
约束Constraints
软件架构演化主要关注的是组件、连接件、约束的添加、修改和删除
面向对象软件架构演化过程
对象演化:AO、DO
AddObject(AO):系统需要添加新的对象来实现某种新的功能,或需要将现有对象的某个功能独立以增加架构灵活性的时候发生
DeleteObject(DO):系统需要移除某个功能或需要合并某些对象及其功能来降低架构的复杂度的时候发生
消息演化:AddMessage、DeleteMessage、SwapMessageOrder、OverturnMessage、ChangeMessageModule
AM:增添一条新的消息,产生在对象之间需要增加新的交互行为的时候
DM:删除当前一条消息,产生在需要移除某个交互行为的时候
SMO:交换两条消息的时间顺序,发生在需要改变两个交互行为之间的时候
OM:反转消息的发送对象与接收对象,发生在需要修改某个交互行为本身的时候
CMM:改变消息的发送或接收对象,发生在需要修改某个交互行为本身的时候
复合片段演化:Add Fragment(AF)、Delete Fragment(DF)、Fragment Type Change(FTC)、Fragment ConditionChange(FCC)
AF:在某几条消息上新增复合片段,发生在需要增添新的控制流时
DF:删除某个现有的复合片段,发生在需要移除当前某段控制流时
FTC:改变复合片段的类型,发生在需要改变某段控制流时
FCC:改变复合片段内部执行的条件,发生在改变当前控制流的执行条件时
约束演化:Add Constraint(AC)、Delete Constraint(DC)
AC:直接添加新的约束信息,需判断当前设计是否满足新添加的约束要求
DC:直接移除某条约束信息,发生在去除某些不必要条件的时候
分类方法:
软件架构演化时期
软件架构静态演化
静态演化需求
静态演化一般过程
5个步骤
软件理解——需求变更分析——演化计划——系统重构——系统测试

正交软件架构过程:对于复杂的应用系统,通过对功能分层和线索化,形成正交体系结构,同一层次中的组件不允许相互调用,故每次变动仅影响一条线索
软件架构动态演化
动态演化需求:
软件动态性的等级
动态演化的内容,主要包括以下4个方面
属性改名、行为变化、拓扑结构改变、风格变化
实现软件架构动态演化的技术:采用动态软件架构(DSA)、进行动态重配置(DR)
动态软件架构:指在运行时会发生变化的系统框架结构,允许在运行过程中通过框架结构的动态演化实现对架构的修改
动态重配置:从组件和连接件的配置入手,允许在运行过程中增删组件,增删连接件,修改连接关系等
动态软件架构实施演化4个步骤:
3类DSA描述语言
DSA演化工具:
动态重配置
动态重配置涉及的修改有:
4中动态重配置模式
主从模式、中央控制模式、客户端/服务器模式、分布式控制模式
动态重配置难点:
软件架构维护过程一般涉及架构知识管理、架构修改管理、架构版本管理
架构知识管理
架构知识=架构设计+架构设计决策
架构知识的可获得性能够极大提升软件开发流程。
架构修改管理
做法是建立隔离区域,保障该区域中任何修改对其他部分的影响比较小,甚至没有影响。
软件架构版本管理
为软件架构演化的版本演化控制、使用和评价提供可靠的依据
软件架构可维护性度量实践
6个度量指标