2010年10月13日下午参加了系统架构的考试,论文我做了第一个,如下:
试题一 论软件的静态演化和动态演化及其应用
软件演化(software
evolution)是指软件在其生命周期内的更新行为和过程。演化是一系列贯穿软件生命周期始终的活动,系统需求改变、功能实现增强、新功能加入、软件
架构改变、软件缺陷修复、运行环境改变均要求软件系统能够快速适应变化,具有较强的演化能力。软件静态演化(static
evolution)和动态演化(dynamic evolution)是目前软件演化的两种重要类型。
请围绕“软件的静态演化和动态演化及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的软件项目以及你在其中所担任的主要工作。
2.请分别对软件静态演化和动态演化的特点进行论述,说明两种软件演化类型各自的优缺点及其应用场合,并举例说明各自的常见演化技术手段。
3.具体阐述你参与管理和开发的项目中所进行的软件演化活动的特点、演化的类型,以及所采取的对应演化技术手段,说明具体实施过程以及实际应用的效果。
当时对于软件演化只是猜想,根本就不理解,事后查了查,发现真实的含义跟自己论文发挥的相差十万八千里,呵呵,论文肯定过不去啦。下面把我查的动态演化和静态演化的含义贴出来大家看看吧。
软件演化可以分为两种:动态演化和静态演化
1、静态演化(static evolution):是指软件在停机的状态下的演化。其优点是不用考虑运行状态的迁移,同时也没有活动的进程需要处理。然而停止一个应用程序就意味着中断它提供的服务,造成软件暂时失效。
2、动态演化(dynamic evolution):是指软件在执行期间的软件演化。其优点是软件不会存在暂时的失
效,有持续可用性的明显优点。但由于涉及状态迁移等问题,比静态演化从技术上更难处理。动态演化是最复杂也是最有实际意义的演化形式。动态演化使得软件在
运行过程中,可以根据应用需求和环境变化,动态地进行软件的配置、
维护和更新,其表现形式包括系统元素数目的可变性、结构关系的可调节性和结构形态的动态可配置性。软件的动态演化特性对于适应未来软件发展的开放性、动态性具有重要意义。
按照变更发生的时机,软件演化可分为以下几类。
1、设计时演化:设计时演化是指在软件编译前,通过修改软件的设计、源代码,重新编译、部署系统来适应变化。设计时演化是目前在软件开发实践中应用最广泛的演化形式。
2、装载期演化:装载期演化是指在软件编译后、运行前进行的演化,变更发生在运行平台装载代码期间。因为系统尚未开始执行,这类演化不涉及系统状态维护问题。
3、运行时演化:发生在程序执行过程中的任何时刻,部分代码或者对象在执行期间被修改。这种演化是研究领域的一个热点问题。
显而易见,设计时演化是静态演化,运行时演化是一种典型的动态演化,而装载期演化既可以被看作是静态烟花也可以看作是动态演化,取决于它怎样被平台
或提供者使用。事实上,如果是用于装载类和代码,那么装载期演化就是静态演化,因为它其实是类的映射,而实际的装载代码并没有改变;另一种可能是增加一个
层,允许在运行时刻动态的装载代码和卸载旧的版本,这样,通过连续的版本来更换代码,最后实现系统的演化,变更本身也可以被认为是动态的演化机制。
另外,演化可以使预设的和非预设的。