软件再工程
出自 MBA智库百科(https://wiki.mbalib.com/)
目录 |
软件再工程是对成品软件系统进行再次开发.软件维护期的适应性维护、完善性维护和预防性维护都属于再工程范畴。与从无到有的软件开发不同,再工程面对的不是原始需求.而是已经存在的软件系统.是从已经存在的软件起步开发出新软件的过程很多遗产系统正在被逐步地利用起来.但利用遗产系统的同时。会遇到许多困难。最重要的一个问题就是:现有的遗产系统没有好的可演化性.这样就使得我们无法利用简单的方法把遗产系统转化为一个新的系统。在这种情形下.再工程变得越来越重要。通过再工程提供的一整套严格定义的方法和活动,可以有效地使遗产系统得到再利用,提高其可演化性.适应新的软件生存周期模型的需求。
软件再工程是为了以新的形式重构已存在的软件系统而进行的检测、分析、更替、以及随后的对新形式的实现。这个过程包括了其他一些过程.诸如逆向工程、文档重构、结构重建、相关转换以及正向工程等。它的目的是理解一已存在的软件,然后对它重新实现以期增强它的功能.提高它的性能,或降低它的实现难度。客观上达到维持软件的现有功能并为今后新功能的加入做好准备的目标。
软件再工程有两个突出特征:
一是比一次软件工程更迫切地需要计算机辅助支持,二是测试工作比例远大于一次软件工程。前者在再工程方法学研究和软件模式运动推动下可以找到自动化解决方案,后者则须强化对测试方法学体系的研究。
二者恰好构成了对软件工程方法学薄弱环节研究的推动力。这种推动力来势之猛很难估量,上个世纪末以来发展迅速的电子商务、电子政务等都属再工程范畴。微软的WilliamGates在1999年曾指出,测试将是今后软件工程最重要的研究领域。更有不少人指出:21世纪软件维护技术与测试技术将并行发展。
严格地说,再工程的潜在需求尽管大得不可估量,但目前只能说是进入了再工程时代。其理由众所周知:一是资金不足一再工程需要大量投资;二是软件开发人员不足。所以除了应付尚未实施的一次软件工程外,可以有计划地投人再工程的资源很有限。目前的再工程主要为三类:
1.适应性维护的再工程
(1)伴随硬件和操作系统更新换代的软件维护。像小型机换PC机、PC机换Unix工作站、Win95换WinXP所带来的软件维护。
(2)业务环境变化带来的软件维护。譬如由于企业业务的发展和系统使用年限的增加,既存系统的存储媒体和数据管理系统满足不了数据量及其种类剧增的要求,需要更新数据库系统;随外部条件变化而必须修改部分数据变量定义或算法,例如征收消费税的法律修订、邮政编码位数改变、2000年问题等。
(3)系统运行环境变化带来的软件修正。如由主机方式变为客户/服务器方式,由客户/服务器方式变为Web方式,这时的系统体系结构必须做相应的改变。
(4)适应系统开发环境变化的软件维护。有一些软件,主要是定制软件,如ERP软件等,其软件再工程常伴随企业的BPR发生,所以开发环境也需随经常性的系统完善性再工程而更新,譬如PowerBuilder等开发环境的升级换代如同操作系统一样频繁发生。
2.善性维护的再工程
增加或修改功能,以提高系统的安全性、处理能力等性能。
3.预防性维护的再工程
为了提高可维护性而对系统进行优化(再结构化、再标淮化等),对文档进行重构,对数据进行重组。