1.静态演化需求
软件架构静态演化的需求是广泛存在的,可以归结为两个方面。
(1)设计时演化需求。在架构开发和实现过程中对原有架构进行调整,保证软件实现与架构的一致性以及软件开发过程的顺利进行。
(2)运行前演化需求。软件发布之后由于运行环境的变化,需要对软件进行修改升级,在此期间软件的架构同样要进行演化。
2.静态演化的一般过程
软件静态演化是系统停止运行期间的修改和更新,即一般意义上的软件修复和升级。与此相对应的维护方法有3类:更正性维护、适应性维护和完善性维护。
软件的静态化一般包括如下5个步骤,如图1所示。
图1 静态演化过程模型
软件理解:查阅软件文档,分析软件架构,识别系统组成元素及其之间的相互关系,提取系统的抽象表示形式。
需求变更分析:静态演化往往是由于用户需求变化、系统运行出错和运行环境发生改变等原因所引起的,需要找出新的软件需求与原有的差异。
演化计划:分析原系统,确定演化范围和成本,选择合适的演化计划。
系统重构:根据演化计划对系统进行重构,使之适应当前的需求。
系统测试: 对演化后的系统进行测试,查找其中的错误和不足之处。
3.静态演化的原子演化操作
一次完整软件架构演化过程可以看作经过一系列原子演化操作组合而成。所谓原子演化操作是指基于UML模型表示的软件架构,在逻辑语义上粒度最小的架构修改操作。这些操作并非物理结构上不可分割。例如增加一个新的模块,该模块需要与架构其余部分相关联,必然导致模块间依赖关系的增加。然而模块的增加还涉及模块内部的类、接口以及与模块相关的规约条件,这些对架构相关质量属性的度量均有影响,因而我们认为模块的增加是单独的原子粒度不可再拆分的架构修改操作。
4.静态演化实例:正交软件架构(Orthogonal Software Architecture)
再静态演化中,为了高效地对修改进行分析和管理,一种应用广泛的处理方式是使用正交软件架构。
对于复杂的应用系统,通过对功能进行分层和线索化,可以形成正交体系结构,同一层次中的组件不允许相互调用,故每个变动仅影响一条线索,如图2所示。
图2 正交软件体系结构的演化
这样,正交体系的演化过程概括如下: ①需求变动归类,是需求的变化和现有组件及线索相对应,判断重用情况;②制订架构演化计划;③修改、增加或删除组件;④更新组件之间的相互作用;⑤产生演化后的软件架构,作为系统更新的详细设计方案和实现基础。