软件工程第8章 软件维护

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
8.1.2 适应性维护(adaptive maintenance) 适应性维护是指使软件适应不断变化的运行环境而 进行修改过程。随着计算机技术近年来飞速发展,外部 环境(新的硬、软件配臵)或数据环境(数据库、数据 格式、数据输入/输出方式、数据存储介质)不断发生变 化,为了使软件适应这种变化而修改软件的过程称作适 应性维护。例如,适应性维护可以是将某个应用程序从 DOS环境移植到windows环境;将原来在VAX750机上 用Oracle的SQL实现的数据库移到Compaq机上;修改 程序使其适用于另外一种终端。
3
8.1.1 改正性维护(corrective maintenance) 改正性维护是在软件运行中发生异常或故障时进行 的维护工作。在软件交付使用后,由于开发时测试的不 彻底、不完全,必然会有一部分隐藏的错误被带到运行 阶段来。这些隐藏下来的错误在某些特定的使用环境下 会暴露出来。为了识别和纠正软件错误、改正软件性能 上的缺陷、排除实施中的误使用,应进行的诊断和改正 错误的过程,是改正性维护。例如,改正性维护可以是 改正原来程序中开关使用的错误;解决开发时未能测试 各种可能情况带来的问题;解决原来程序中遗漏处理文 件中最后一个记录的问题等。
1
8.1 软件维护的任务和分类
所谓软件维护就是在软件已经交付使用之后,为了 改正错误或满足新的需要而修改软件的过程。要求进行 软件维护的原因多种多样,归纳起来主要有4个原因: ①改正在特定的使用条件下暴露出来的一些潜在程 序错误或设计缺陷; ②因在软件使用过程中数据环境发生变化(例如, 某个事物处理代码发生改变)或运行环境发生变化(例 如,安装了新的硬件或操作系统),需要修改软件以适 应这种变化。
5
8.1.3 完善性维护(perfective maintenance) 用户的需求是经常变化的,在软件使用过程中,用 户往往会对软件提出新的功能与性能要求。为了满足这 些要求,需要修改或再开发软件,以扩充软件功能、增 强软件性能、改进加工效率、提高软件的可维护性。这 种情况下进行的维护活动称作完善性维护。例如,完善 性维护可能是修改一个计算工资的程序,使其增加新的 扣除项目;缩短系统的应答时间,使其达到特定的要求; 把现有程序的终端对话方式加以改造,使其具有方便用 户使用的界面;改进图形输出;增加联机求助(HELP) 功能;为软件的运行增加监控设施。完善性维护是软件 维护工作最主要的部分,占整个维护工作量的 50%~60%。
7
图8.1 各类维护Biblioteka Baidu比重
8
8.2 软件维护的特点
软件在运行过程中不断进化以适应变更的需求,是 一个不可避免的过程。这项工作主要有以下特点: ①软件维护是软件生产性活动中延续时间最长、工 作量最大的活动; ②软件维护不仅工作量大、任务重,甚至引入新的 错误; ③软件维护活动实际是一个修改和简化了的软件开 发过程; ④软件维护和软件开发一样,都需要采用软件工程 原理和方法。
2
③用户或管理人员在使用时常提出改进现有功能、 增加新的功能、改善总体性能的要求,为将这些合理要 求纳入现在运行的软件系统,需要维护软件。 ④为使投入运行的软件与其他相关的程序有良好的 接口,以利于协同工作;为使运行软件的应用范围得到 必要的扩充。 系统维护的重点是系统应用软件的维护工作,由于 上述软件维护的原因,按照软件维护的不同性质划分为 下面4种类型:
9
8.2.1 非结构化维护和结构化维护 软件的开发过程对软件的维护过程有较大的影响。 若不采用软件工程的方法开发软件,则软件只有程序而 无文档,维护工作非常难,这就是一种非结构化的维护。 若采用软件工程的方法开发软件,则各阶段都有相应的 文档,这容易进行维护工作,这是一种结构化的维护。 (1)非结构化维护 因为只有源程序,而文档很少或没有文档,维护活 动只能从阅读、理解、分析源程序开始,而且常常由于 程序内部文档不足而使评价更为困难,这是软件工程时 代以前进行维护的情况。
第8章 软件维护
软件维护工作处于软件生命期的最后一个阶段,是 在软件系统支付使用以后,在其有效运行期内,为了改 正软件运行错误或因满足新的需求而加入新功能的修改 软件的过程。这一阶段是软件生命周期中最长的一个阶 段,所花费的人力、物力最多,其花费高达整个软件生 命期花费的60%~70%,而且随着软件数量增多和使用 寿命延长,这个百分比还在持续上升。这是因为计算机 程序总是会发生变化,对于隐藏错误的修改、新功能模 块的增加、环境变化造成的程序变动等。
10
(2)结构化维护 用软件工程思想开发的软件具有各阶段的文档,这 对于理解和掌握软件功能、性能、系统结构、数据结构、 系统接口和设计约束有很大作用。这种维护对减少精力、 减少花费、提高软件维护效率有很大的作用。如果有一 个完整的软件配臵的存在,那么维护工作从评价设计文 档开始,确定软件重要的结构特点、性能特点以及接口 特点;估计要求的改动将带来的影响,并且计划实施途 径。然后首先修改设计并且对所做的修改进行仔细复查, 接下来编写相应的源程序代码,使用在测试说明书中包 含的信息进行回归测试;最后,把修改的软件再次交付 使用。
11
8.2.2 软件维护的困难性 软件维护的困难性是由于软件需求分析和开发方法 的缺陷。软件生存周期中的开发阶段没有严格而又科学 的管理和规划,就会引起软件运行时的维护困难,表现 在以下几个方面: 读懂别人写的程序是一件很困难的事情,如果程序 只有代码而无完整的文档资料,那困难可想而知了。 文档的不一致性。由于开发过程中文档管理不严所 造成的,在开发过程中经常会出现修改程序却遗忘了修 改与其相关的文档,使得文档前后不一致。
6
8.1.4 预防性维护(preventive maintenance) 除了以上三类维护之外,还有一类维护活动,称作 预防性维护。预防性维护是J.Miller首先创导的。他主张, 维护人员不要单纯等待用户提出维护的请求,应该选择 那些还能使用数年,目前虽能运行但不久就须重大修改 或加强软件,进行预先维护。其直接目的是提高软件的 可维护性、可靠性等,为以后进一步改进软件打下良好 基础。通常,预防性维护定义为:“把今天的方法用于 昨天的系统,支持明天的需要。”也就是说,预防性维 护是为了改善软件系统将来的可靠性或可维护性,为以 后进一步改善软件性能打好良好基础,而在开发过程中 就有意地进行软件的修改或补充工作。
相关文档
最新文档