什么是软件的动态演化

动态演化是指软件在执行期间的软件演化。其优点是软件不会暂时的失效。有持续可用性的明显优点。但由于涉及状态迁移等问题,比静态演化从技术上更难处理。动态演化是最复杂也是最有实际意义的演化行为。动态演化使得软件在运行过程中,可以根据应用需求和环境变化,动态地进行配置、维护和更新,其表现形式包括系统元素数目的可变性、结构关系的可调整性等。软件的动态演化特性对于适应未来软件发展的开放性、多态性具有重要意义。

根据演化发生的时机,软件演化可分为设计时演化、装载期演化和运行时演化。

①设计时演化

设计时演化是指在软件编译前,通过修改软件的设计、源代码,重新编译、部署系统来适应变化。设计时演化是目前在软件开发实践中应用最广泛的演化形式。

②装载期演化

装载期演化是指在软件编译后、运行前进行的演化,变更发生在运行平台装载代码期间。因为系统尚未开始执行,这类演化不涉及系统状态的维护问题。

③运行时演化

发生在程序执行过程中的任何时刻,部分代码或者对象中执行期间修改。显而易见,设计时演化是静态演化,运行时演化是一种典型的动态演化,而装载期间的演化既可以看作是静态演化也可以看作是动态演化,取决于它怎样被平台或提供者使用。

软件动态演化的技术包括:

①“重建”策略。系统使用动态类的新版本来创建相关对象,同时,将旧版本的对象的状态信息拷贝到新对象中。

②“共存”策略。动态类新、旧版本的对象共存,但是,以后对象的创建使用动态类的新版本。

③代理机制。在实现动态类时,通常需要引入代理(Proxy)机制。代理负责维护动态类的所有实现版本和实现版本的外部存储。代理机制下的动态类是一种轻量级的动态演化技术,它不需要编译器和底层运行环境(例如:操作系统和虚拟机)的支持,比较容易实现。基于代理机制的动态演化模型如图9-3所示。

图9-3 基于代理机制的动态演化

④基于构件的动态演化。按照功能划分,将构件的接口分为两种:用于处理构件所提供的服务,即行为接口,用于处理构件的演化,即演化接口,演化接口被设置成在特定的服务接口被调用时起作用。

在使用构件时,可以通过访问演化接口,为相关的动态插入点定义回调(Call Back)方法,增加或替换成用户需要的代码。

⑤基于过程的动态演化,形式化描述系统在运行过程中的状态,建立系统的状态机模型,在状态机模型中,系统的演化可以对应于状态的迁移。

⑥基于体系结构描述语言的动态演化,在体系结构描述语言中,增加动态描述成分,通过语言来定义构件之间是如何进行互操作的,构件是如何被替换的,以实现动态演化。

⑦基于体系结构模型的动态演化,这类方法是通过建立一个体系结构模型,并使用这个模型来控制构件行为,控制结构改变和行为演化。

版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。http://www.apmygs.com/553.html
返回顶部