1软件维护2维护中的典型问题难以跟踪软件版本的进化过程,软件的变化未在文档中反映出来。难以跟踪软件的创建过程。难以读懂他人程序。无文档或不全。软件人员流动性大。设计时未考虑修改需要,修改困难。维护工作无吸引力,缺乏成就感。3维护的定义在软件运行/维护阶段对软件产品进行的修改就是所谓的维护。软件维护活动所花费的工作占整个生存期工作量的70%以上,这是由于在漫长的软件运行过程中需要不断对软件进行修改,以改正新发现的错误、适应新的环境和用户新的要求,这些修改需要花费很多精力和时间,而且有时会引入新的错误。4软件维护的种类纠错性维护适应性维护完善性维护预防性维护5纠错性维护在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做纠错性维护。6适应性维护在使用过程中,会有下列情况的变化外部环境(新的硬、软件配置)数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。7完善性维护在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。8完善性维护实践表明,在几种维护活动中,完善性维护所占的比重最大。即大部分维护工作是改变和加强软件,而不是纠错。完善性维护不一定是救火式的紧急维修,而可以是有计划、有预谋的一种再开发活动。事实证明,来自用户要求扩充、加强软件功能、性能的维护活动约占整个维护工作的50%。9预防性维护预防性维护是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。预防性维护定义为:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。10维护所占比例适应性维护25%改正性维护20%扩充与完善性维护50%其它维护5%改正性维护占全部维护量的比率已从80年代初的20%大幅度下降,90年代初一些公司的产品差错率已接近于零11维护活动的目的是延长软件生存期软件生存周期软件诞生计划分析设计编码测试运行和维护(简称维护)改善期稳定期陈旧期1年-10年2个月-2年重构软件工程周期12软件可维护性软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的容易程度。可维护性、可使用性、可靠性是衡量软件质量的主要质量特性,也是用户十分关心的几个方面。13软件可维护性软件的可维护性是软件开发阶段各个时期的关键目标。影响软件可维护性主要有下述的三个因素:可理解性可修改性可测试性14可理解性可理解性表明人们通过阅读源代码和相关文档,了解程序功能及其如何运行的容易程度。可修改性可修改性表明程序容易修改的程度。可测试性可测试性表明论证程序正确性的容易程度。15提高可维护性的方法提供完整和一致的文档采用现代化的开发方法16软件维护的副作用修改代码的副作用在修改源代码时,都可能引入错误。例如,删除或修改一个子程序、删除或修改一个标号、删除或修改一个标识符、改变程序代码的时序关系、改变占用存储的大小、改变逻辑运算符、修改文件的打开或关闭、改进程序的执行效率,以及把设计上的改变翻译成代码的改变时,都容易引入错误。17软件维护的副作用修改数据的副作用在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件出错。数据副作用就是修改软件信息结构导致的结果。数据副作用可以通过交叉引用表加以控制。把数据元素、记录、文件和其它结构联系起来。18软件维护的副作用容易导致设计与数据不相容的错误可以有:重新定义局部的或全局的常量重新定义记录或文件的格式增大或减小一个数组或高层数据结构的大小修改全局或公共数据重新初始化控制标志或指针重新排列输入/输出或子程序的参数19软件维护的副作用文档的副作用对数据流、软件结构、模块逻辑或任何其它有关特性进行修改时,必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配,缺省条件改变,新错误信息不正确等错误。使得软件文档不能反映软件的当前状态。20软件维护的副作用对于用户来说,软件事实上就是文档。如果对可执行软件的修改不反映在文档里,就会产生文档的副作用。对交互输入的顺序或格式进行修改,如果没有正确地记入文档中,就可能引起重大的问题。过时的文档内容、索引和文本可能造成冲突,引起用户失败和不满。因此,必须在软件交付之前对整个软件配置进行评审,以减少文档的副作用。