background image

2010 年下半年系统架构设计师_下午试题论文解析

 

试题一、 论软件的静态演化和动态演化及其应用
写作要点

1、简要叙述所参与管理和开发的软件项目,并明确指出自己在其中承担的主要任务和

开展的主要工作。

2、软件演化可分为静态演化和动态演化两种情形。
(1)静态演化(Static Evolution)。静态演化是指软件在停机状态下的演化。其优点是

不用考虑运行状态的迁移,同时也没有活动的进程需要处理。然而停止一个一个用程序就意
味着中断它提供的服务,造成软件暂时失效。

软件静态演化是指发生在应用程序停止时的软件修改和更新,即一般意义上的软件维护

和升级。静态演化的优点是没有状态迁移或活动线程的问题要解决,缺陷是停止应用程序意
味着停止它所提供的服务,也就是使软件系统暂时失效。在软件交付之后,静态演化(类似
于一般意义上的软件维护)就成为软件变更的一个常规过程。变更可以是一种更正代码错误
的简单变更,也可以是更正设计错误的较大范围的变更,还可以是对描述错误进行修正或提
供新需求这样的重大改进。有三种不同的软件维护:改正性维护、适应性维护和完善性维护 。
维护过程一般包括变更分析、版本规划、系统实现和向客户交付系统等活动。

在面向对象技术中,使用子类型方法来扩展程序,它适合于软件静态演化和代码重用。

子类型化一个类意味着保留父类中的参数和方法,并尽可能地增加新的参数和方法。另外,
使用重载和多态性作为主要的演化机制。实际上,建立类的新版本,最简单的机制是创建它
的子类,然后重载需要变更的方法,最后,使用多态性调用新创建的方法。在基于构件的软
件技术中,构件采取接口和实现相分离的技术,构件之间只能通过接口进行通信,这使得具
有兼容接口的不同构件实现可以相互取代,从而成为软件静态演化的一条途径。

(2)动态演化(Dynamic Evolution)。动态演化是指软件在执行期间的软件演化。其

优点是软件不会存在暂时的失效,有持续可用性的明显优点。但由于涉及状态迁移等问题,
比静态演化从技术上更难处理。

动态演化是最复杂也是最有实际意义的演化形式。动态演化使得软件在运行过程中,可

以根据应用需求和环境变化,动态地进行软件的配置、维护和更新,其表现形式包括系统元
素数目的可变性、结构关系的可调节性和结构形态的动态可配置性。软件的动态演化特性对
于适应未来软件发展的开放性、动态性具有重要意义。

动态演化是指软件在运行期间的演化。在许多重要的应用领域中,例如金融、电力、电

信及空中交通管制等,系统的持续可用性是一个关键性的要求,运行时刻的系统演化可减少
因关机和重新启动而带来的损失和风险。此外,越来越多的其他类型的应用软件也提出了运
行时刻演化的要求,在不必对应用软件进行重新编译和加载的前提下,为最终用户提供系统
定制和扩展的能力。

动态演化可分为两种类型:预设的和非预设的。在

Web 环境中,软件应用常常需要处

理多种类型的信息,因此它们常被设计为可以动态下载并安装插件以处理当前所面临的新类
型的信息;而分布式

Web 应用也常常需要增减内部处理节点的数目以适应多变的负载。这

些动态改变都是软件设计者能够预先设想到的,可实现为系统的固有功能。另有一些必须对
系统配置进行修改和调整的情况是直到系统投入运行以后才发现的,这就要求系统能够处理
在原始设计中没有完全预料到的新需求。这种情况下一般需要关闭整个系统,重新开发、重
新装入并重新启动系统。然而,为了进行局部的修改而关闭整个系统在某些情况下是不允许
的(例如,关键运行系统)或者代价太高。精心设计的动态演化技术可以在不关闭整个系统
的前提下修改系统的结构配置,并尽量使未受影响的部分继续工作已提高系统的可用度。

为支持软件的动态演化性,已在语言、机制和环境等方面做了大量工作。在程序语言的