6.1.1
软件维护的定义
软件维护是指在软件运行或维护阶段对软件产品所进行的修改。根据软件维护的不同原因,软件维护可以分成三种类型:
(1) 改正性维护 (2) 适应性维护 (3)
完善性维护
在软件交付使用的初期,改正性维护的工作量较大。随着错误发现率不断降低,软件便进入了正常使用期。在长期的软件使用过程中,由于计算机新技术的出现和用户新需求的提出,适应性维护和完善性维护的工作量逐步增加。在这种维护过程中,又会引入新的错误,从而加重了维护的工作量。
除了上述三类维护之外,还有一类维护活动,称为预防性维护。通常,人们将预防性维护定义为:"把今天的方法学用于昨天的系统以满足明天的需要"。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分重新进行设计、编制和测试,提高软件的可维护性和可靠性等,为以后进一步改进软件打下良好基础。
如图6.1所示,在整个软件维护阶段所花费的全部工作量中,预防性维护只占很小的比例,而完善性维护占了几乎一半的工作量,这说明即大部分维护工作是改变和加强软件,而不是纠错。同时,软件维护技术不像开发技术那样成熟和规范,自然消耗的工作量就比较多,其工作量占整个生存周期的70%以上。

图6.1 各种维护类型及维护工作量的比例
在软件维护过程中,需要花费大量的工作量,从而直接影响了软件维护的成本。因此,应当考虑影响软件维护工作量的各种因素,并采取适当的维护策略,在维护软件过程中有效地控制维护的成本。
在软件维护中,影响维护工作量的因素主要有以下六种:
(1) 系统的大小
系统规模越大,其功能就越复杂,软件维护的工作量也随之增大。
(2) 程序设计语言
使用强功能的程序设计语言可以控制程序的规模。语言的功能越强,生成程序的模块化和结构化程度越高,所需的指令数就越少,程序的可读性越好。
(3) 系统年龄
系统使用时间越长,所进行的修改就越多,而多次的修改可能造成系统结构变得混乱。由于维护人员经常更换,程序变得越来越难于理解,加之系统开发时文档不齐全,或在长期的维护过程中文档在许多地方与程序实现变得不一致,从而使维护变得十分困难。
(4) 数据库技术的应用
使用数据库,可以简单而有效地管理和存储用户程序中的数据,还可以减少生成用户报表应用软件的维护工作量。
(5) 先进的软件开发技术
在软件开发过程中,如果采用先进的分析设计技术和程序设计技术,如面向对象技术、复用技术等,可减少大量的维护工作量。
(6) 其它一些因素,如应用的类型、数学模型、任务的难度、开关与标记、IF嵌套深度、索引或下标数等,对维护工作量也有影响。
|