1、第十一章 软件维护 软件维护的概念软件维护的概念 软件维护活动软件维护活动 程序修改的步骤及修改的程序修改的步骤及修改的 副作用副作用 软件软件 可维护性可维护性 提高可维护性的方法提高可维护性的方法 软件维护的概念软件维护的概念软件维护的定义软件维护的定义影响维护工作量的因素影响维护工作量的因素软件维护的策略软件维护的策略维护成本维护成本软件维护的定义软件维护的定义 在软件运行维护阶段在软件运行维护阶段 对软件产对软件产品进行的修改品进行的修改 就是所谓的维护。就是所谓的维护。 维护的类型有四种:维护的类型有四种: 改正性维护改正性维护 适应性维护适应性维护 完善性维护完善性维护 预防性维护
2、预防性维护改正性维护改正性维护 在软件交付使用后,因开发时测在软件交付使用后,因开发时测试的试的 不彻底不彻底 、 不完全不完全 ,必然会有,必然会有部分隐藏的错误遗留到运行阶段部分隐藏的错误遗留到运行阶段。 这些隐藏下来的错误这些隐藏下来的错误 在某些特定在某些特定的使用环境下就会暴露出来的使用环境下就会暴露出来 。 为了为了 识别和纠正软件错误识别和纠正软件错误 、 改正改正软件性能上的缺陷软件性能上的缺陷 、 排除实施中排除实施中的误使用的误使用 ,应当进行的诊断和改,应当进行的诊断和改正错误的过程就叫做改正性维护正错误的过程就叫做改正性维护。适应性维护适应性维护 在使用过程中,在使用过
3、程中, 外部环境外部环境 ( 新的硬、软件配置新的硬、软件配置 ) 数据环境数据环境 ( 数据库、数据格式、数数据库、数据格式、数据输入据输入 /输出方式、数据存储介质输出方式、数据存储介质 )可能发生变化。可能发生变化。 为使软件适应这种变化,而去修改为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。软件的过程就叫做适应性维护。完善性维护完善性维护 在软件的使用过程中,用户往往会在软件的使用过程中,用户往往会对软件提出新的对软件提出新的 功能功能 与与 性能性能 要求。要求。 为了满足这些要求,需要修改或再为了满足这些要求,需要修改或再开发软件,以开发软件,以 扩充软件功能扩充软件功
4、能 、 增强增强软件性能软件性能 、 改进加工效率改进加工效率 、 提高软提高软件的可维护性件的可维护性 。 这种情况下进行的维护活动叫做完这种情况下进行的维护活动叫做完善性维护。善性维护。 实践表明,在几种维护活动中,完实践表明,在几种维护活动中,完善性维护所占的比重最大。善性维护所占的比重最大。 即大部即大部分维护工作是改变和加强软件,而分维护工作是改变和加强软件,而不是纠错不是纠错 。 完善性维护不一定是救火式的紧急完善性维护不一定是救火式的紧急维修,而可以维修,而可以 是有计划、有预谋的是有计划、有预谋的一种再开发活动一种再开发活动 。 事实证明,来自用户要求扩充、加事实证明,来自用户
5、要求扩充、加强软件功能、性能的维护活动约占强软件功能、性能的维护活动约占整个维护工作的整个维护工作的 50。预防性维护预防性维护 预防性维护是为了预防性维护是为了 提高软件的提高软件的可维护性可维护性 、 可靠性等可靠性等 ,为以后,为以后进一步改进软件打下良好基础进一步改进软件打下良好基础。 预防性维护定义为:预防性维护定义为: 采用先进采用先进的软件工程方法对需要维护的的软件工程方法对需要维护的软件或软件中的某一部分(重软件或软件中的某一部分(重新)进行设计、编制和测试。新)进行设计、编制和测试。 在整个软件维护阶段所花费的全部在整个软件维护阶段所花费的全部工作量中,工作量中, 完善性维护占了几乎一完善性维护占了几乎一半的工作量。半的工作量。 软件维护活动所花费的工作占整个软件维护活动所花费的工作占整个生存期工作量的生存期工作量的 70% 以上以上 ,这是由,这是由于在漫长的软件运行过程中需要不于在漫长的软件运行过程中需要不断对软件进行修改,以断对软件进行修改,以 改正新发现改正新发现的错误的错误 、适应新的环境和用户新的、适应新的环境和用户新的要求,这些修改需要花费很多精力要求,这些修改需要花费很多精力和时间,而且有时会引入新的错误和时间,而且有时会引入新的错误。三类维护占三类维护占 维护在软件生存期维护在软件生存期总维护比例总维护比例 所占比例所占比例