1.软件架构演化方式3种较典型的分类方法       

        目前,软件架构演化方式没有一种公认的分法,分类方法很多,以下列举说明3种较典型的分类方法:

        (1)按照软件架构的实现方式和实施粒度分类:基于过程和函数的演化、面向对象的演化、基于组件的演化和基于架构的演化。

        (2)按照研究方法将软件架构演化方式分为4类(Jeffrey M.Barnes等人的分类方法):第1类是对演化的支持,如代码模块化的准则、可维护性的指示(如内聚和耦合)、代码重构等;第2类是版本和工程的管理工具,如CVS和COCOMO;第3类是架构变换的形式方法,包括系统结构和行为变换的模型,以及架构演化的重现风格等;第4类是架构演化的成本收益分析,决定如何增加系统的弹性。

        (3)针对软件架构的演化过程是否处于系统运行时期,可以将软件架构演化分为静态演化(Static Evolution)和动态演化(Dynamic Evolution),前者发生在软件架构的设计、实现和维护过程中,软件系统还未运行或者处在运行停止状态;后者发生在软件系统运行过程中。

2.软件架构演化时期 

        1.设计时演化

         设计时演化(Design-Time Evolution)是指发生在体系结构模型和与之相关的代码编译之前的软件架构演化。

        2.运行前演化

         运行前演化(Pre-Execution Evolution)是指发生在执行之前、编译之后的软件架构演化,这时由于应用程序并未执行,修改时可以不考虑应用程序的状态,但需要考虑系统的体系结构,且系统需要具有添加和删除组件的机制。

        3.有限制运行时演化

         有限制运行时演化(Constrained Runtime Evolution)是指系统在设计时就规定了演化的具体条件,将系统置于“安全”模式下,演化只发生在某些特定约束满足时,可以进行一些规定好的演化操作。

        4.运行时演化 

        运行时演化(Runtime Evolution)是指系统结构在运行时不能满足要求时发生的软件架构演化,包括添加组件、删除组件、升级替换组件、改变体系结构的拓扑结构等。此时的演化是最难实现的。 

04-16 07:39