目录
|
软件进化是指在软件工程中,软件在第一次开发后,不断被更新、改进的过程。
在有计算机的早期,软件进化的行为主要就是给新的应用编写新的程序。直到20世纪60年代后期,人们才开始意识到旧的软件系统不能只是简单地被淘汰,软件需要被管理,软件的维护和进化是一个重要的活动。
现在人们普遍接受这个观点,反映现实世界应用的经常使用的软件必须持续不断地被改进和增强来维持人们对它的满意程度。这个观点第一次出现是被作为软件进化的原则陈述出来的。对这个观点,早在1968年在Garmisch会议上就被公开讨论过。同时,IBM公司于1968年开始了对软件过程的研究,Lehman等人在IBM中研究了规划设计过程,而用来检验和建模持续变化过程的一份研究报告被应用到了IBM的OS/360操作系统上,这份报告是关于支持软件版本实现的计划和管理的工具等系统进化的很简单的模型。尽管这个模型豹发展是相对简单的,但对它的研究促进了软件进化的发展及软件进化原则的出现。1971年,人们第一次把对软件过程看作是一个反馈系统(feedback system)进行了讨论。1979年开始,人们把软件进行了SPE三种类型的分类,认为E类型系统解决的问题、从事的应用都是现实世界中的,是现实世界中模型的反映,并认为E类型软件必须要持续不断地进行进化。从1974年开始一直到1996年,人们逐渐形成并完善了软件进化的8个基本原则,这些基本原则都是针对E类型软件的。
人们早期对于进化研究的数据是从IBMOS/360—370操作系统上获得的,随后是其他操作系统。早期的研究主要集中在进化的行为上。Lehman等人在对软件进化的研究中认为进化是大型程序的内在特性,每个特定系统都存在潜在的进化要求,这个现象可以被系统地研究和建模,且这些相关的模型可被用来预测未来系统的发展情况。
早期的研究在很大程度上不被计算机科学和软件工程组织重视,尽管如此,这个现象逐渐吸引了其他人的注意。由于程序的动态增长及其过程中各种因素的影响,1989年,出现了软件不确定原则,随后是1993年FEAST(Feedback,Evolution And Software Technology)假设,该假设认为全球的E类型软件系统的进化过程是一个自我稳定的系统,一个复杂的多循环、多层次、多代理的反馈系统,该假设是以前研究的一个总的反映。在1996年和2001年期间,人们开展了FEAST/1和FEAST/2工程,这些工程是依赖于FEAST假设的,它研究了在E类型软件系统的进化和软件过程的改进中反馈的作用和影响。直到现在,软件进化一直被人们进行着广泛系统的研究。