印桂生,宋敏,2,韦正现,王红滨,张万松
(1.哈尔滨工程大学计算机科学与技术学院,黑龙江 哈尔滨150001;2.北京外国语大学 信息技术中心,北京100089;3.船舶系统工程研究所,北京100036)
构造性和演化性是软件的两个基本特性[1].软件进行渐变并达到所希望的形态就是软件演化.软件演化由一系列复杂的变化活动组成,这些变化活动称为演化操作.引起软件变化的原因是多方面的,对软件演化进行理解和控制显得复杂而困难[2].而软件体系结构(software architecture,SA)作为软件的蓝图,为人们从宏观上把握软件的整体结构,为软件的整个生命周期各个阶段提供有效指导[3-4],因此,软件演化的研究应该从高层的软件体系结构,以便于对演化进程及其影响进行有效控制.SA演化研究分为静态演化和动态演化两方面.静态演化主要从非运行时SA版本更新、功能增加、删除和修改等方面入手.动态演化是在软件运行时刻SA的变换来进行深入研究[5-7].文献[2]通过语义可达矩阵给出构件对SA贡献大小来评价SA演化的波及效应,但没有从语义相关性以及不同SA演化操作具有不同特性的角度来分析SA演化.文献[8-9]分别用进程代数和图论来解释SA演化,但它们更注重SA的构造而非演化.文献[10-11]对软件演化过程进行了定性分析.本文从SA中构件及构件之间的语义关系、语义协议关系和SA演化操作特性3个方面综合分析SA静态演化及其波及效应.首先给出构件内部的语义和语义协议关系,分析了构件之间语义……