软件工程软件维护.ppt
软 件 工 程 第21讲:软件维护,主讲人:阳王东 Email:yangwangdong126.com,主要内容,1、软件维护概述 2、软件维护过程 3、逆向工程 4、程序修改的步骤及修改的副作用,1.1 背景知识,软件的生命周期 维护是延长软件生命周期的途径 千年虫问题 新环境下的老问题 维护的价值 软件维护是软件的成本的重要组成部分 不堪重负的维护 维护也是商机,1、软件系统概述,1.2 软件维护的定义,定义 在软件运行维护阶段对软件产品进行的修改就是所谓的维护,以保障软件能够正常运行。 维护的类型 改正性维护。纠正在使用过程中暴露出来的错误 适应性维护。适应外部环境的变化 完善性维护。改进原有的软件 预防性维护。提高可维护性和可靠性,1、软件维护概述,1.3 维护的工作量分配,1、软件维护概述,1.4 软件维护中存在的主要问题,程序的源代码或算法可读性差,加大了软件维护的难度。 文档丢失或文档不全。 软件的开发人员和软件维护人员分离,软件维护的逆向工程花费软件维护人员的大量时间和精力。 软件本身可修改性差,无法二次开发。 开发方和出资方对软件维护的认识不足,资金追加不够,软件维护工作无法深入。 软件维护工作繁琐,时间长,影响软件的正常使用,容易导致用户对软件维护人员和软件系统的不信任。,1、软件维护概述,1.5 软件维护的内容,程序维护 文件备份及修复 查杀病毒 硬件维护 系统优化,1、软件维护概述,1.6 软件维护工作的特点,软件维护耗时费力 软件维护的代价昂贵 远程维护是现代软件维护的新途径 软件复用技术简化了软件维护,1、软件维护概述,1.7 软件的可维护性,可理解性 可靠性 可测试性 可修改性 可移植性 可使用性,1、软件维护概述,2 软件维护过程,2.1 建立维护的机构 2.2 规范维护流程 2.3 编写维护报告 2.4 进行软件修改 2.5 保存维护记录 2.6 评价维护结果,2.1 维护机构,三种常用的软件维护组织方式 留下开发人员做维护 公司建立单独的维护部门进行维护 维护外包 维护的三个层次 客户自己维护 技术支持人员维护 开发人员维护,2、软件维护过程,2.2 维护管理流程,2、软件维护过程,2.3 编写维护报告,2、软件维护过程,2.4 进行软件修改,(1)由系统管理员提出软件修改请求报告; (2)由有关领导审批请求报告; (3)手续完备后,实施软件的修改; (4)进行软件修改后的测试与试运行; (5) 作总结调整并修改文档资料; (6)交付修改的软件 (7)软件做新的备份,并同定稿的文档资料一起存档,这里的文档主要应包括以下内容: 维护的审批人、提请人、维护人的姓名、维护时间、修改原因、修改的内容、修改后的现状。,2、软件维护过程,2.5 保存维护记录,维护请求 变动的程序和文档 维护日志 维护效果 客户确定,2、软件维护过程,2.6 评价维护结果,2、软件维护过程,软件维护评价,3 逆向工程,逆向工程是通过源程序,甚至是目标程序,由此导出设计模型、分析模型的过程。 逆向工程被用到了软件维护上,通过从老化系统的源代码中提取程序流程设计、系统结构设计,甚至数据流图,由此而给老化系统的维护带来方便。,4 程序修改的步骤,4.1 分析和理解程序 4.2 修改程序 4.3 重新验证程序,4.1 分析和理解程序,理解程序的功能和目标; 掌握程序的结构信息,即从程序中细分出若干结构成分。如程序系统结构、 控制结构、数据结构和输入输出结构等; 了解数据流信息,即涉及到的数据来源何处,在哪里被使用; 了解控制流信息,即执行每条路径的结果; 理解程序的操作(使用)要求。,4、程序修改,4.2 修改程序,设计程序的修改计划 修改代码,以适应变化 修改程序的副作用 修改代码的副作用 在修改源代码时,都可能引入错误。 修改数据的副作用 可能造成软件设计与数据结构不匹配 文档的副作用。 软件文档不能反映软件的当前状态。,4.3 重新验证程序,确定测试 确定修改程序的正确性 确定满足维护的请求 回归测试 确定未修改程序的正确性 确定未修改功能的正确性,小结,本章介绍软件维护的特点、软件维护活动的类型和维护过程,以及提高软件可维护性的技术。 软件维护是软件生存周期的最后一个阶段,也是持续时间最长、工作量最大的一项不可避免的过程。软件维护的基本目标和任务是改正错误、增加功能、提高质量、优化软件、延长软件寿命,提高软件产品价值。 软件维护活动分为改正性维护、完善性维护、适应性维护和预防性维护四种类型。,作业,对于ATM系统,分析一下该系统主要的维护项目有哪些?应该采用哪些维护策略?,