软件工程 第8章:维护

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

护活动的50%~66%,改正性维护占17%~21%,适
应性维护占18%~25%,其它维护活动占4%左右。
工学二部计算机教研室
3.结构化维护
评价代码
评价软件结构
评价数据结构
评价系统接口
评价设计约束
非结构化维护:经常产生误解,不能回归测试
,维护代价大。
工学二部计算机教研室
结构化维护
确定软件结构
户的不满; 修改可能会引入新的错误,使软件质量下降; 大量工程师从事维护工作,会影响开发工作。
工学二部计算机教研室
5. 软件维护工作量模型
Belady和Lehman的维护工作量模型
M=P+Ke(c-d)
其中:
M:用于维护工作的总工作量
P:生产性工作量 K:经验常数
复杂度-熟悉度
c:因缺乏好的设计和文档而导致软件复杂性的度量 d:维护人员对软件熟悉程度的度量
数据 重构 正向 工程 库存 目录 分析
文档 重构
发现有系统。
代码 重构
逆向 工程
工学二部计算机教研室
小结:维护过程管理
◇ 软件维护手册
主要包括软件系统说明、程序模块说明、操作环境、支 持软件说明、维护过程说明等。(便于软件的维护)
◇ 软件问题报告
软件问题的登记,如日期、发现人、状态、问题所属模块 等。(为维护提供准备文档)
三、软件维护过程 1. 维护组织
维护要求 (软件问题报告) 变化授权人 维护管理员
系统管理员

软件系统
工学二部计算机教研室
2. 维护报告
包含信息:
① 维护的工作量
② 维护的性质
③ 优先级
④ 有关的事后数据(如测试数据等)
工学二部计算机教研室
3. 维护的事件流
维护要求
类型
⊕ 完善 评价优 先度 低 错误 ⊕ 适应 估量错 严重 分析问 题 误严重 ⊕ 程度 不严重 计划改 正进度
工学二部计算机教研室
预防性维护的理由:
(1)对于旧系统,维护一行原代码的代价可能是最
初开该行源代码代价的14-40倍; (2)使用最新的设计理念重新设计软件体系结构( 程序和数据结构),对将来的维护有较大帮助; (3)旧系统可作为原型,能提高开发效率。
工学二部计算机教研室
六、软件再工程过程
分析应用系统的信息,
工学二部计算机教研室
当你使用正则表达式 返回了想要的结果时的样子
工学二部计算机教研室
终于把代码写完时的样子
工学二部计算机教研室
一.软件交付 二.软件维护 三.软件维护过程
四.软件的可维护性
五.预防性维护 六.软件再工程过程
工学二部计算机教研室
一、软件交付
尽可能平稳过渡
旧系统
新系统
工学二部计算机教研室
2.软件维护的类型
(1)改正性维护
在用户使用过程中诊断、发现和改正错误的过程
称为改正性维护。
(2)适应性维护
硬件系统和外设需要时常更新和升级,造成数据 库环境、数据输入/输出方式、数据存储介质等发生变 换。为了使软件适应这些环境变化而修改软件的过程 叫做适应性维护。
工学二部计算机教研室
(3)完善性维护
1. 软件交付使用的工作
① 数据转换(如数据库数据) ② 调试并加载,准备运行
③ 资料移交(如使用说明)
④ 用户培训
工学二部计算机教研室
意想不到的问题,程序设计错误
2.软件交付方式
(1)直接方式
旧系统
应急措施:随时能切换到旧系统
不适用关系重大的系统
新系统
优点:转换简单,费用最省 缺点:风险大
工学二部计算机教研室
文档 重构
代码 重构
逆向 工程
六、软件再工程过程
正向 工程 数据 重构 库存 目录 分析
恢复设计结果的过
文档 重构
程,从程序代码中
抽取数据结构、体
代码 重构
逆向 工程
系结构和处理过程
的设计信息。
工学二部计算机教研室
六、软件再工程过程
正向 工程 数据 分析源代码,标注 重构 库存 目录 分析
用户在使用过程中提出新的功能和性能要求, 造成功能增加和修改称为完善性维护。
(4)预防性维护
为了改进软件未来的可维护性或可靠性,或者为未来 维护方便而进行的修改,称为预防性维护。在实践中 比较少见。
工学二部计算机教研室
在各类维护中,完善性维护占软件维护工作的大
部分。
根据国外的数据统计表明,完善性维护占全部维
当你改错一行代码的时候
工学二部计算机教研室
当你想要重构别人的代码时
工学二部计算机教研室
当你尝试想要修复一个bug时的样子
工学二部计算机教研室
当你凌晨4点还在工作时的样子
工学二部计算机教研室
星期五下午项目经理给 你分配任务时的样子
工学二部计算机教研室
当你尝试修复别人代码的时候,结果...
工学二部计算机教研室
◇ 用户操作手册
详述软件的功能、性能和用户界面,用户如何使用软件,操作 人员具备的有关知识,操作方法的具体细节。
工学二部计算机教研室
实际应用中,常常是混合以上几种方法。对系统
不重要的部分采用直接方式,对系统重要部分采用
Leabharlann Baidu
并行方式,使系统平稳交付使用。
工学二部计算机教研室
二、软件维护
1.软件维护的原因
① 特定条件下会暴露出缺陷; ② 环境变化的适应性修改(数据环境、使用环境
和处理环境)
③ 新需求的出现(功能改进和增加、性能要求)
工学二部计算机教研室
工学二部计算机教研室
在没有使用百度就解决一个 重要问题时的样子
工学二部计算机教研室
向服务器上传文件时的样子
工学二部计算机教研室
当你发现上周五还非常好用, 到了周一却不能运行时的样子
工学二部计算机教研室
当所有人都在办公室挥汗如雨的加班 而你却能安然的回家度周末时的样子
工学二部计算机教研室
当听到老板说项目如果能如期完工 将会有一笔奖金时的样子
用户文档
使用手册 参考手册 操作员指南
系统文档
工学二部计算机教研室
3. 可维护性复审
测试结束时进行正式的可维护性复审,也称配置复审 目的:保证软件配置的所有成分是完整的、一致的和 可理解的。
工学二部计算机教研室
4. 影响维护工作量的因素
(1)系统大小。系统功能越复杂,理解掌握起来就
越困难,需要的维护工作量越大。
工学二部计算机教研室
6.软件维护的典型问题
只有代码而没有注释,维护就相当困难; 维护人员经常变化与流动,维护工作量增加;
没有足够的文档资料,或者资料不一致;
软件在设计时没有考虑将来的修改(模块化设计
原则);
维护常常受挫,吃力不讨好,没有挑战,很多人
不愿意从事这样的工作。
工学二部计算机教研室
产品上线时发现缺陷时的样子
工学二部计算机教研室
终端用户没有你的软件使用说明的时候
工学二部计算机教研室
当你看到第一次使用CSS 美化页面的效果时的样子
工学二部计算机教研室
一夜鏖战后第一次运行脚本时的样子
工学二部计算机教研室
老板找你修复严重bug时样子
工学二部计算机教研室
没有按Ctrl-s就关闭文件时的样子
(2)程序设计语言。语言的功能越弱,实现同样功
能所需的语句就越多,程序就越大,维护起来就越
困难。
(3)系统年龄。老系统当初未按照软件工程的要求
进行开发,文档太少;在长期的维护中许多地方与
程序不一致,维护起来困难较大。
工学二部计算机教研室
(4)数据库技术 ( 5)先进的开发技术。使用能使软件结构比较
工学二部计算机教研室
(3)可修改性
与设计时采用的原则和策略相关。(耦合、内聚、
控制域和作用域、局部化程度)
(4)可移植性
(5)可重用性 决定软件可维护性的最终因素是软件设计阶段所采用
的方法,以及软件文档资料的质量。提高软件的可维护
性是软件工程的一个重要目标。
工学二部计算机教研室
2.文档
功能描述 安装文档
◇ 软件修改报告
针对问题处理方案、修改后的影响的详细的描述,提交
审批。
工学二部计算机教研室
其它重要的文档
◇ 开发进度月报
包括进度与实际进度的比较、阶段成果、遇到的问题和解 决的办法以及下个月的打算等。
◇ 项目开发总结报告
总结实际执行的情况(进度、成果、资源利用、成本和投入 的人力)以及开发工作的评价,经验和教训。
的难易程度。
① 可理解性 ② 可测试性
1. 决定因素
③ 可修改性 ④ 可移植性 ⑤ 可重用性
工学二部计算机教研室
( 1 )可理解性:软件结构、接口、功能和内部过程
的理解的难易程度。
影响因素:模块化、结构化设计、详细的设计文
档资料、源代码内部文档、良好的程序设计语言等。 (2)可测试性 设计成易测试、易诊断,能用测试工具和调试工 具进行测试和诊断的软件。
2)用于每一类维护活动的总人时数; 3)平均每个程序、每种维护类型所做的程序变动数; 4)维护过程中增加或删除一个源语句平均花费的人时数; 5)维护每种语言平均花费的人时数;
6)一张维护要求表的平均周转时间;
7)不同维护类型所占的百分比。
工学二部计算机教研室
四、软件的可维护性
软件可维护性是维护人员理解、改正和改进软件
正向 工程 数据 重构 库存 目录 分析
找出再工程的目标 构建日期、修改次数
文档 重构
、过去18个月报告的
错误、用户数量、文
代码 重构
逆向 工程
档质量、预期寿命
……
工学二部计算机教研室
六、软件再工程过程
正向 工程 数据 重构 库存 目录 分析
如果一个程序走向生 命终点,不再经历变 化,最后保持现状。 重构只针对当前正在 修改的软件部分。
11)每个改动耗费的人时数; 12)程序改动的日期;
13)软件工程师的名字; 15)维护类型; 14)维护要求表的标识; 16)维护开始和完成的日期;
17)累计用于维护的人时数; 18)与完成的维护相联系的纯效益。
工学二部计算机教研室
5. 评价维护活动
可以从以下方面度量维护工作:
1)每次程序运行平均失效的次数;
稳定的分析与设计技术(如面向对象分析、设计
技术),可以减少一定的工作量。
( 6)其它因素。应用的类型、数学模型、任务
的难度、IF嵌套深度等。
工学二部计算机教研室
五、预防性维护
(1)反复多次做修改程序的尝试;
(2)分析掌握程序内部细节,再修改;
(3)用软件工程方法重新设计、编码和测试需要变
更的软件部分; (4)以软件工程方法为指导,对程序全部重新设计 、编码和测试。 3:是局部再工程;4:是软件再工程 / 预防性维护
评价设 计文档
评价性能特点 评价接口特点
修改设计
修改代码
回归测试
工学二部计算机教研室
4.软件维护的代价
有形代价:维护的费用开支
70年代,软件维护费用占总预算的 30%~ 40% ,80年代上升到60%左右,90年代达到了80%。
工学二部计算机教研室
无形代价:潜在的影响
当看起来合理的要求不能及时满足时,会引起用
第8章 维护
工学二部计算机教研室
任务:维护软件的正常运行,改进性能和质 量,为进一步推广和升级做准备。 工作量:大型软件的维护成本是开发总成本的 四倍左右,软件开发组织把60%以上的工作量 用于维护自己的软件上。
工学二部计算机教研室
软件一旦交付,就意味着漫长的
维护之路的开始……
工学二部计算机教研室
出不符合结构化设
计的部分,重构代 代码
逆向 重构 码,测试并更新。 工程
文档 重构
工学二部计算机教研室
六、软件再工程过程
正向 工程 数据 重构 库存 目录 分析
对较差的数据结构
进行再工程,以先
进的数据组织方式
文档 重构
代替陈旧的方式。
代码 重构
逆向 工程
工学二部计算机教研室
六、软件再工程过程
也称革新或改造。 以先进的软件工程 的原理、概念、技 术和方法来重新开
工学二部计算机教研室
(2)并行方式
关系重大的软件一般采用同时运行新系统和 旧系统,这就是并行方式。
优点: 旧系统
① 能对系统进行全面测试,减少了新系统风险; ② 给用户熟悉新系统的时间。
缺点:
新系统 双系统要投入更多的人力财力。
工学二部计算机教研室
(3)逐步方式
分期,分部分地交付使用 克服了上面两种方式的缺点,既能防止直接转换 产生的危险性,又能减少并行方式的费用 必须考虑好新旧系统的配合问题和接口问题
分配的人员
维护任 务 修改后的 软件配置
⊕ 高 错误改正目录 分配的人员 开始分 开发目录 析
复审
复审后新的的 软件配置 工学二部计算机教研室
4. 保存维护记录
1)程序标识; 3)机器指令数; 5)安装的日期; 2)源语句数; 4)使用的程序设计语言; 6)自安装以来程序运行次数;
7)自安装以来程序失效次数 8)程序变动的层次和标识; 9)因程序变动而增加的源语句数;10)因程序变动而删除的源语句数;
相关文档
最新文档