电子科大软件工程网络课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.1.4 软件维护的代价
二、软件维护的工作量模型
维护活动分为生产性活动和非生产性活动。 生产性活动 包括分析评价、修改设计和编写程序代码等。 非生产性活动 包括理解程序代码,解释数据结构,接口特点和设 计约束等。 Belady 和 Lehman 提出软件维护工作模型:
M=P+K*EXP(C - D) 其中:
8.1.3 软件维护的特性
三、软件维护的困难
由于软件维护工作通常并不由软件的设计和开发人员来完成,维护人 员首先要对软件各阶段的文档和代码进行分析、理解。因而出现了理解别 人的程序困难、文档不齐等问题,尤其是对大型、复杂系统的维护,更加 困难和复杂,甚至是不可能的!
1、结构化维护与非结构化维护
非结构化维护 — 缺乏必要的文档说明,文档缺少 或者不一制,难于确定数据结构、系统接口等特性,这 样的维护工作令人生畏,事倍功半。
8.1.1 软件维护的定义
8.1.1 软件维护的目的
软件维护是指在软件运行/维护阶段对软件产品进行的修改活动。 通常要求进行维护的主要原因有: 在运行中发现在测试阶段未能发现的软件错误和设计缺陷; 需要改进设计,以增强软件的功能,提高软件的性能; 要求已运行的软件能适应特定的硬件、软件、外部设备和通信设备 等的工作环境,或是要求适应已变动的数据或文件; 为使投入运行的软件与其它相关的程序有良好的接口,以利于协同 工作; 为使运行软件的应用范围得到必要的扩充。
8.1.3 软件维护的特性
一、时间长、工作量大、成本高
维护阶段是软件生存期中最长的一个阶段,软件维护的工作量占整个 软件生存期的70%以上(图8.2),而且还在逐年增加。因此,如何减少 软件维护的工作量,降低软件维护的成本,就成为提高软件维护效率和质 量的关键。
二、维护的副作用
维护的副作用是指由于修改程序而导致新的错误 或者新增加一些不必要的活动。
点击选择 维护内容
纠错性维护(Corrective Maintenance)
适应性维护(Adaptive Maintenance)
预防性维护(Preventive Maintenance)
8.1.2 软件维护的类型
图8.1表示各种维护所占的比例,显 然完善性维护所占的比例最大。
预防性 维护4%
二、软件维护的策略
1、修改代码的副作用
其余 29%
维护 71%
在修改源代码时,可能引起的错误。 2、修改数据的副作用
wenku.baidu.com
图8.2 维护工作比例
在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导 致软件出错。数据副作用就是修改软件信息结构导致的结果。
3、修改文档的副作用
对软件的数据流、软件结构、模块逻辑等进行修改时,必须对相关技 术文档进行相应修改。但修改文档过程会产生新的错误,导致文档与程序 功能不匹配,缺省条件改变等错误,产生文档的副作用。
由于软件的发展非常迅速,显然,对软件进行维护的目的是为了纠 正软件开发过程未发现的错误,增强、改进和完善软件的功能和性能, 以适应软件的发展,延长软件的寿命。
8.1.2 软件维护的类型
8.1.2 软件维护的类型
一、按照不同的维护目的,维护工作可分成4类。
完善性维护(Perfective Maintenance)
M—维护工作的总工作量 P—生产性活动的工作量 K—经验常数 C—程序复杂度(由非结构化维护引起的) D—对维护软件熟悉程度的度量 显然,若C越大,D越小,则维护工作量成指数增长,为此,必须 防止出现非结构化维护并尽可能由熟悉软件的原开发人员参加维护。
8.2 软件维护的过程
8.2 软件维护的过程
太累了!受不了啦! 几万行程序怎么改 哦???
结构化维护 — 指软件开发过程是按照软件工程方 法进行的,开发各阶段的文档齐全,软件的维护过程, 有一整套完整的方案、技术、审定过程及文档。
可以看到,维护工作的难度及工作量的大小,明显的与前期的开发工作 密切相关。
8.1.4 软件维护的代价
8.1.4 软件维护的代价
针对以上几种类型的维护,可采取相 应的维护策略,以提高维护效率,降低维 护成本。
1、纠错性维护策略
开发过程中采用新技术,利用应用软 件包,提高系统结构化程度,进行周期性 维护审查等。
完善性 维护50%
纠错性 维护 25%
适应性 维护21%
纠错性维护 适应性维护 完善性维护 预防性维护
图8.1 各类维护所占的比例
8
第八章 软件维护
8.1 软件维护的基本概念
8.2 软件维护的过程 8.3 软件维护技术 8.4 软件可维护性 8.5 软件再工程
8.1软件维护的基本概念
8.1 软件维护的基本概念
软件维护是指软件系统交付使用以后,为了改正错误或满足新的 需求而修改软件的过程。
软件维护工作处于软件生命期的最后阶段,维护阶段是软件生存 期中最长的一个阶段,其花费高达整个软件生命期花费的约60-70%。 因此,应充分认识到维护工作的重要性和迫切性,提高软件的可维护 性,减少维护的工作量和费用,延长已开发软件的生命期,以发挥其 应有的效益。
一、软件维护工作量大
维护费用高达开发费用的60% — 70%,而且逐年上涨。维护中还可 能引入新的潜在错误。要减少维护工作量,首先要考虑影响软件维护的 因素。
影响软件维护工作量和成本的因素很多,主要有以下方面: 1、系统的大小 系统越大,功能就越复杂,维护工作量就越大。 2、程序设计语言 语言的功能越强,生成程序所需要的指令(程序) 越少,而且程序的可读性也越好,维护工作量也就越小。 3、系统年龄 系统越老,修改维护的次数就越多,结构也就越乱。 因此维护工作量也就越大。 4、软件开发新技术的应用 软件开发过程中,使用先进的分析和设 计技术,以及程序设计技术,如:面向对象的技术、构件技术、可视化 程序设计技术等,可以减少维护工作量。
2、适应性维护策略
对可能变化的因素进行配置管理,将因环境变化而必须修改的部分局部 化,即局限于某些程序模块等。
3、完善性维护策略
除了可以使用前面两类维护的策略外,还有使用功能强、使用方便的工 具,采用原型化方法开发等,也可提高可维护性。
4、预防性维护策略 常采用提前实现、软件重用等技术。
8.1.3 软件维护的特性