章软件维护与再工程[1]

合集下载

软件工程导论PPT课件-第8章-维护

软件工程导论PPT课件-第8章-维护
改错或修改的要求不能及时满足引起的用户不满; 维护时的改动,引入潜伏错误,导致软件质量降低; 软件工程师从事维护工作造成的开发过程混乱。 生产率的大幅下降 维护工作量:生产性劳动+非生产性劳动。
分析评价,修改设计,编写代码等
理解代码功能、解释数据结构、接口特点和性能限度等
8.3 软件维护的特性
8.3.3 软件维护的副作用
-结构化维护
结构化维护是指软件开发过程是按照软件工程方法进 行的、各开发阶段文档齐全的软件的维护过程。
-非结构化维护
非结构化维护是指在只有源程序,缺乏必要的文档说 明,难于确定数据结构、系统接口等特性的情况下,进行 的软件维高昂
明显代价:高昂的维护费用,已上升达80%左右; 无形代价:
的工作环境,或适应已变动的数据或文件; (4)为预防软件系统的失效而对软件系统实施修改。
8.2 软件维护的分类
- 改正性维护
对在测试阶段未能发现的、在软件投入使用后才逐渐暴露出来的 错误的测试、诊断、定位、纠错,以及验证、修改的回归测试过程, 称为改正性维护。
- 完善性维护
为了满足用户在使用过程中对软件提出的新的功能与性能要求, 需要对原来的软件的功能进行修改或扩充。
- 适应性维护
使软件适应外部新的软硬件环境或者数据环境发生的变化, 而进行修改软件的过程。
- 预防性维护
为了提高软件未来的可维护性、可靠性等,或为了给未来 的改进奠定更好的基础而修改软件的过程。
8.2 软件维护的分类 预防性维护 4% 适应性维护 21% 完善性维护 50%
改正性维护 25%
四类维护占总维护的比例
修改软件设计、 复查、必要的代 码修改、单元测 试和集成测试、 验收测试和复审

《软件工程》第10章 软件维护

《软件工程》第10章 软件维护

北京大学远程教育课程
Software Engineering_Chapter10-2
问题定义
计划 时期 可行性论证 及软件计划
需求分析
概要设计 开发 时期
详细设计Байду номын сангаас
编码
测试 运行时期 运行/维护
北京大学远程教育课程
Software Engineering_Chapter10-3
本章主要内容
• 10.1 软件维护的定义,目标与任务 • 10.2 软件维护的类型 • 10.3 软件的可维护性
北京大学远程教育课程
Software Engineering_Chapter10-13
10.2.1 改正性维护(续)
• 实践表明,软件测试和排错不可能完全暴露并改正一个大 型软件系统中的所有错误。 • 经过统计分析,在典型的市场销售的软件包中,还有缺陷 的代码行约占代码总行数的3%。正式投入使用的软件中 含有错误是不足为奇的,即使是已运行多年的软件。 • 改正性维护举例:
北京大学远程教育课程
Software Engineering_Chapter10-6
10.1.3 软件维护的任务
• 一个软件开发机构60%的精力用在维护现有的软件上。随 着产品的增加,这个比例还将不断提高。不仅当前的软件 版本要维护,仍在使用的旧版本和即将投入使用的新版本 也将需要维护。 • 在软件整个运行周期中,不仅要解决原有问题,还要解决 修改过程中产生的新问题。因此软件维护是一个无穷尽的 过程。
Software Engineering_Chapter10-18
10.2.4 预防性维护
• 维护人员不要单纯等待用户提出维护的请求,而应该选择 那些还能使用数年、目前虽能运行,但不久就须作重大修 改或加强的软件,进行预先的维护。预防性维护可以改善 软件的可维护性,减少今后对它们维护时所需要的工作量。

《软件工程》教学教案

《软件工程》教学教案

《软件工程》教学教案一、第一章:软件工程概述1. 教学目标了解软件工程的定义、目的和重要性,掌握软件开发的基本过程和原则。

2. 教学内容软件工程的定义和重要性;软件开发的基本过程;软件工程的原则和方法。

3. 教学方法采用讲授法,结合案例分析,让学生了解和掌握软件工程的基本概念和原则。

4. 教学资源教材、课件、案例分析。

5. 教学评价通过课堂提问和案例分析,评估学生对软件工程的理解和应用能力。

二、第二章:软件需求分析1. 教学目标掌握软件需求分析的基本概念、方法和过程,能够运用需求分析工具进行需求收集和分析。

2. 教学内容软件需求分析的基本概念;需求分析的方法和过程;需求分析工具的使用。

3. 教学方法采用讲授法和实例分析,让学生了解和掌握需求分析的方法和过程。

4. 教学资源教材、课件、实例分析。

5. 教学评价通过课堂提问和实例分析,评估学生对需求分析的理解和应用能力。

三、第三章:软件设计1. 教学目标掌握软件设计的基本概念、方法和过程,能够运用设计工具进行软件架构和详细设计。

2. 教学内容软件设计的基本概念;设计方法和过程;设计工具的使用。

3. 教学方法采用讲授法和实例分析,让学生了解和掌握软件设计的方法和过程。

4. 教学资源教材、课件、实例分析。

5. 教学评价通过课堂提问和实例分析,评估学生对软件设计的理解和应用能力。

四、第四章:软件实现1. 教学目标掌握软件实现的基本概念、方法和过程,能够运用编程语言进行软件编码和测试。

2. 教学内容软件实现的基本概念;实现方法和过程;编程语言和测试工具的使用。

3. 教学方法采用讲授法和编程实践,让学生了解和掌握软件实现的方法和过程。

4. 教学资源教材、课件、编程环境和测试工具。

5. 教学评价通过编程实践和测试结果,评估学生对软件实现的理解和应用能力。

五、第五章:软件维护1. 教学目标掌握软件维护的基本概念、方法和过程,能够进行软件维护和优化。

2. 教学内容软件维护的基本概念;维护方法和过程;软件优化技巧。

软件维护

软件维护
维 护(Maintenance)
—— 亦称 Software Evolution
1.软件维护的概念 2.维护的特点 3.维护的过程 4.可维护性 5.软件再工程过程
2018年7月2日星期一
计算机科学与工程学院
1
6.8.软件系统维护的基本概念
1.软件维护定义:
是指在软件系统已经交付使用之后,软件使用人员为了 适应新的要求、满足新的需要或为了改正软件中存在的错误 而对软件系统进行修改的过程。
2018年7月2日星期一 计算机科学与工程学院
8
维护工作量的经验模型:
M=P+K×exp(c-d) 其中: M是维护用的总工作量; P是生产性工作量; K是经验常数; c是复杂程度(非结构化设计和缺少文档都会增加软件 的复杂程度); d是维护人员对软件的熟悉程度。
上面的模型表明,如果软件的开发途径不好(即,没 有使用软件工程方法学),而且原来的开发人员不能参加 维护工作,那么维护工作量(和费用)将指数地增加。
2018年7月2日星期一 计算机科学与工程学院 17
⑴ 可理解性(Understandability) 指由文档代码理解功能运行的容易程度。对外又称 user friendliness. 好程序的特征:模块化、结构化、代码与设计风格一致, 高级语言实现。 度量方法:90 - 10 Test ——读源程序10分钟,能否默写 出90%? ⑵可测试性(Testability) 是指论证程序正确性的容易程度。 好程序的特征:可理解、可靠、简单。 度量方法:程序复杂度(第五章中已讨论)
文档:开发文档 和测试文档
缺乏文档 不能进行回归测试
原因:没有使用良好定义的方法学开发出来。 回归测试:为了保证所做的修改没有在以前可以正常使用的软件 功能中引入错误而重复过去做过的测试。

软件维护与软件工程管理

软件维护与软件工程管理

14
1. 逆向工程
软件的逆向工程通过对程序的分析,导出更高抽象层次的 表示,如从现存的程序中抽取数据、体系结构、过程的设计信息 等,是一个设计恢复过程。
逆向工程过程所抽取的信息,一方面可以提供给软件工程 师以便在维护活动中使用这些信息;另一方面可以用来重构原来 的系统,使新系统更易维护。
15
2. 重构
因此,进行维护工作要相当谨慎。
5
13.1 软件维护
• 13.1.1 软件维护的过程 • 典型的软件维护的过程可以概括为:
• 建立维护机构 • 用户提出维护申请并提交维护申请报告 • 维护人员确认维护类型并实施相应的维护工作 • 整理维护记录并对维护工作进行评审 • 对维护工作进行评价
6
13.1 软件维护
基于经验模型
• IBM 模型、普特南模型、COCOMO模型
21
13.3 软件开发进度计划
• 项目管理者的目标是定义全部项目任务,识别出关键任 务,规定完成各项任务的起、止日期,跟踪关键任务的进 展状况,以保证能及时发现拖延进度的情况。为了做到这 一点,管理者必须制订一个足够详细的进度表,以便监督 项目进度,并控制整个项目。
软件维护与软件工程管理
本章概述
本章首先介绍软件维护的概念,包括软件部署与软件交付、软件维护的过程和分类、软件的可维护
性、软件维护的副作用、自动化运维以及软件再工程技术;然后阐述软件估算软件开发进度计划、软件
开发人员组织、软件开发风险管理、软件质量保证、软件配置管理.软件工程标准与软件文档、软件过
程能力成熟度模型和软件项目管理等相关概念。 本章目标:
• 人类通过编程语言与计算机进行交流,每种编程语言都有严格的语义和语法结构。编程

第8章软件维护

第8章软件维护

软件维护步骤
4、修改程序的副作用
副作用是指因修改软件而造成的错误或其它不希望发生的情况。 1)编码副作用:在使用程序设计语言修改源代码时可能引起的错误, 如删除或修改一个标号、标识符、一个子程序,改变程序代码的时序关系, 改变逻辑运算符,改进程序的执行效率,改变程序占用存储的大小等,都 很容易引入错误,应特别小心。 2)数据副作用:在修改数据结构时,有可能造成软件设计和数据结构 的不一致,而导致软件错误。数据副作用是修改软件信息结构引起的,如 重新定义全局或局部常量,重新初始化控制标志或指针等,都容易产生设 计与数据不相容的错误,可通过详细设计文档对数据副作用加以控制。 3)文档副作用:对数据流、软件结构、逻辑模块等进行修改时,必须 对相关技术文档进行修改,否则会导致 文档与程序功能不匹配,使文档不 能反映软件当前的状态。
软件维护步骤
5、重新验证程序:
1)静态确认; 2)计算机确认; 3)维护后的验收。
软件维护步骤
第三步:维护文档整理
记录一些与维护工作有关的数据信息,这些信息 可作为估计软件维护的有效程度,确定软件产品的 质量,确定维护的实际开销等工作的原始数据。
软件维护步骤
第四步:维护活动评价
具体的评价工作可从以下几个方面考虑: (1)每次程序运行时的平均出错次数; (2)花费在每类维护活动上的总的“人时”数; (3)每个程序、每种语言、每种维护类型程序的平均修改次数; (4)维护工作中增加或删除每个源程序语句所花费的平均“人 时”数; (5)用于每种语言的平均“人时”数; (6)维护申请报告的平均处理时间; (7)各类维护申请的百分比。 一方面,可判定此次维护活动开展是否顺利、成功;另一方面, 为今面的维护工作积累经验。
2、结构化维护:进行维护 活动时,首先从评价需求开始,搞清楚 功能、性能上的改变,然后对设计说明文档进行评价、修改和复查; 根据设计的修改,再进行程序的变动;然后根据测试文档中的测试 用例进行回归测试;最后将修改后的软件再次交付使用。

软件工程各章名词解释

软件工程各章名词解释

名词解释一个三分 五个十五分第一章 绪论1. 软件2. 文档3. 软件工程4. 软件工程过程5. 软件生存周期6. 软件生存周期模型第二章 软件可行性研究与项目开发计划1. 投资回收2. 纯收人第三章 软件需求分析1. 需求分析2. 数据流3. 数据字典4. 加工5. 数据流图第四章 软件概要设计1. 模块2. 模块化3. 抽象4. 信息隐蔽5. 模块独立性6. 耦合性7. 无直接耦合8. 数据耦合9. 标记耦合10. 控制耦合11. 公共耦合12. 内容耦合13. 内聚性14. 偶然内聚15. 逻辑内聚16. 时间内聚17. 通信内聚18. 顺序内聚19. 功能内聚第五章 软件详细设计1. PAD2. 过程设计语言(PDL)第六章 软件编码1. 程序设计风格2. 程序可移植性第七章 软件测试1. 语句覆盖2. 判定覆盖3. 条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6. 路径覆盖7. 环路复杂性8. 黑盒测试9. 白盒测试10. 驱动模块11. 桩模块12. 单元测试13. 集成测试14. 确认测试15. 调试第八章 软件维护1. 维护2. 校正性维护3. 适应性维护4. 完善性维护5. 预防性维护6. 软件可维护性第九章 软件开发的增量模型1. 原型第十章 面向对象的方法1. 对象2. 类3. 消息4. 方法5. 继承性6. 单重继承7. 多重继承8. 多态性9. 抽象10. 信息隐藏11. 链12. 关联第十一章 软件质量与质量保证1. 软件可靠性2. 效率3. 可维护性4. 可移植性5. 可互操作性6. 适应性7. 可重用性8. 软件设计质量9. 软件程序质量10. 冗余第十二章 软件工程管理1. 软件配置管理2. 软件配置项3. 基线4. 文档第十三章 软件开发环境1. 软件开发环境2. 软件工具3. CASE4. CASE生存期5. CASE工作台软件工程自考名词解释答案第一章 绪论1. 计算机程序及其说明程序的各种文档.2. 文档是有关计算机程序功能,设计,编制,使用的方案或图形资料.3. 用科学知识和技术原理来定义,开发,维护软件的一门学科.4. 软件工程过程规定了获取,供应,开发,操作和维护软件时,要实施的过程,活动和任务.5. 软件生存周期是指一个软件从得出开发要求开始直到该软件报废为止的整个时期.6. 软件生存周期模型是描述软件开发过程中各种活动如何执行的模型.第二章 软件可行性研究与项目开发计划1. 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间.2. 在整个生存周期之内的累计经济效益(折合成现在值)与投资之差.第三章 软件需求分析1. 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非不甘落后将用户非不甘落后 需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程.2. 数据流是数据在系统内传播的路径,因此由一组成分固定的数据项组成.3. 数据字典(Data Dic onary, 简称DD)就是用来定义数据流图中的各个成分的具体含义的,它以一种准确的,无二义性的说明方式为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述.4. 加工又称为数据处理,是对数据流进行某些操作或变换.5. 数据流图,简称DFD,是SA方法中用于表示系统逻辑模型的一种工具,它以图形的方式描绘数据在系统中流动和处理的过程.第四章 软件概要设计1. 模块在程序中是数据说明,可执行语句等程序对象的集合,或者是单独命名和编址的元素,在软件的体系结构中,模块是可组合,分解和更换的单元.2. 模块化是指解决一个复杂问题自顶向下逐层把软件系统划分成若干模块的过程.每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个要求的功能.3. 抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素.4. 信息隐蔽指在设计和确定模块时,使得一个模块内包含信息(过程或数据),对于不需要这些信息的其他模块来说,是不能访问的.5. 模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单.6. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程序的一种度量.7. 无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息.8. 数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递.9. 标记耦合指两个模块之间传递的是数据结构,如高级语言的数组名,记录名,文件名等这些名字即为标记,其实传递的是这个数据结构的地址.10. 控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关,标志等),被调模块通过该控制变量的值有选择地执行块内某一功能.11. 公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合.公共数据环境可是是全程变量或数据结构,共享的通信,内存的公共覆盖区及任何存储介质上的文件,物理设备等(也有将共享外部设备分类为外部耦合).12. 当一个模块直接使用另一个模块的内部数据,或通过非正常口转入另一个模块内部,这种模块之间的耦合为内容耦合.13. 内聚块又称块内联系指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量.14. 偶然内聚指一个模块内的各处理元素之间没有任何联系.15. 逻辑内聚指模块内执行个逻辑上相似的功能,通过参数确定该模块完成哪一个功能.16. 把需要同时执行的动作组合在一起形成的模块为时间内聚模块.17. 通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据.18. 顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元素的输入.19. 功能内聚指模块内所有元素共同完成一个功能,缺一不可.因此模块不能再分割.第五章 软件详细设计1. PAD图指问题分析图(Problem Analysis Diagram),是一咱算法描述工具,它是一种由左往右展开的二维树型结构.PAD图的控制流程为自上而下,从左到右地执行.2. 过程设计语言(Process Design Language,简称PDL),也称程序描述语言(Program Descrip on Language),又称为伪码.它是一种用于描述模块自法设计和处理细节的语言.第六章 软件编码1. 程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等.2. 指程序从一个计算机环境移值到另一个计算机环境的容易程序.第七章 软件测试1. 语句覆盖是指设计足够的测试用例,使被测程序中每个语句至少执行一次.2. 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次”真”和”假”值,从而使程序的每一个分支至少都通过一次.3. 条件覆盖指设计足够的测试用例,使得判定表达工中每个条件的各种可能的值出现一次.4. 判定/条件覆盖标准指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次.5. 条件组合覆盖是比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次.6. 路径覆盖是指设计足够的测试用例,覆盖被测程序中所有可能的路径.7. McCabe定义程序图的环路为程序图中区域的个数.区域个数为边和结点圈定的封闭区域数加上图形外的区域数1.8. 黑盒测试是功能测试又称为功能测试或数据驱动测试.9. 白盒测试是对程序中尽可能多和逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.10. 驱动模块是用来模拟被测模块的上级调用模块的模块,功能要比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被模块,接收被测模块的测试结果并输出.11. 桩模块用来代替被测试模块所调用的模块它的作用是返回被测模块所需的信息.12. 单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误.13. 集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行测试,故也称组装测试或联合测试.14. 确认测试又称有效性测试.是为了检查软件的功能与性能是否与需求规格说明书中确定的指标相符合所进行的测试.15. 调试是为了确定错误的原因和位置,并改正错误所进行的工作,因此调试也称为纠错.第八章 软件维护1. 在软件运行/维护阶段对软件产品所进行的修改就是维护.2. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护.3. 随着计算机的飞速发展,计算机硬件,软件及数据环境在不断发生变化,为了使应用软件适应这种变化而修改软件的过程称为适应性维护.4. 在犯罪分子件运行时期中,用户往往会对软件提出新的功能要求与性能要求.这种增加软件功能,增强软件性能,提高软件运行效率而进行的维护活动称为完善性维护.5. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护.6. 软件可维护性是指软件能够被理解,校正,适应及增强功能的容易程度.第九章 软件开发的增量模型1. 软件开发中的原型是软件的一个早期可运行的版本,它反映了最终系统的重要特性.第十章 面向对象的方法1. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件.2. 具有相同或相似性质的对象的抽象就是类具有相同或相似性质的对象的抽象就是类3. 对象之间进行通信的构造叫做消息.4. 类中操作的实现过程叫做方法,一个方法有方法名,参数,方法体.5. 继承性是子类自动共享父类数据结构和方法的机制这是类之间的一种关系.6. 在类层次中,子类只继承一个父类的数据结构和方法,称为单重继承.7. 在类层次中,子类继承了多个父亲的数据结构和方法,称为多重继承.8. 多态性是指相同的操作或函数,过程可作用于多用户种类型的对象上并获得不同结果.不同的对象收到同一消息可以产生不同的结果,这种现象称为多态性.9. 抽象是指强调实体的本质,内在的属性,忽略一些无关紧要的属性.10. 信息隐蔽是指所有软件部件内部都有明确的范围以及清楚的外部边界每个软件部件都有友好的界面接口,软件部件的内部实现与外部可访问性分离.11. 链表示对象间的物理与概念联结.12. 关联表示类之间的一种关系,就是一些可能的链的集合.第十一章 软件质量与质量保证1. 软件按照设计要求,在规定时间和条件下不出故障,持续运行的程度.2. 为了完成预定功能,软件系统所需的计算机资源和程序代码数量的程度.3. 找到并改正程序中的一个错误所需代价的程度.4. 将一个软件系统从一个计算机系统或环境移植到另一个计算机系统或环境中运行时所需的工作量.5. 将一个系统耦合到另一个系统所需的工作量.6. 修改或改进一个已投入运行的软件所需工作量的程度.7. 一个软件能再次用于其他相关应用的程度.8. 设计的规格说明书要符合用户的要求.9. 程序要按照设计规格说明所规定的情况正确执行.10. 冗余是指实现系统规定功能是多余的那部分资源,包括硬件,软件,信息和时间.第十二章 软件工程管理1. 软件配置管理,简称SCM,是一组管理整个软件生存期各阶段中变更的活动是一组管理整个软件生存期各阶段中变更的活动2. 软件配置项是软件工程中产生的信息项,它是配置管理的基本单位.3. 基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果.4. 文档是指某种数据媒体和其中所记录的数据.在软件工程中,文档用来表示对需求,工程或结果进行描述,定义,规定,报告或认证的任何书面或图示的信息.它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令.第十三章 软件开发环境1. 软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成.2. 软件工具是指为支持计算机软件的开发,维护,模拟,移植或管理而研制的程序系统.3. CASE是一组工具和方法的集合,可以辅助软件开发生命周期各阶段进行软件开发.4. 一个组织中的CASE系统从被始需求到完全废弃这一生存期.5. 一个CASE工作台是一组工具集,支持像设计,实现或测试等特定的软件开发阶段.。

软件维护PPT课件

软件维护PPT课件

• 系统管理员对维护任务做出评价之后,由变化授
权人决定应该进行的活动。
16
2. 维护报告
• 应该用标准化的格式表达所有软件维护 申请(要求)。
• 维护申请报告或称软件问题报告,由申 请维护的用户填写。
• 用户必须完整地说明产生错误的情况, 包括输入数据、错误清单以及其它有关 材料。
• 如果申请的是适应性维护或完善性维护, 用户必须提出一份修改说明书,列出所 有希望的修改。
第9章 软件维护
1
第9章 软件维护
9.1 软件维护的定义
软件维护 ---- 就是在软件已经交付使用之后,
为了改正错误或满足新的需要而修改软件的过 程。
维护的类型有四种: 改正性维护 适应性维护 扩充与完善性维护 预防性维护
2
1.改正性维护 --- Corrective Maintenance
• 在软件交付使用后,因开发时测试的不 彻底、不完全,必然会有部分隐藏的错 误遗留到运行阶段。
13
9.3 软件维护过程
• 维护过程本质上是修改和压缩了的软件定义和开 发过程,而且事实上远在提出一项维护要求之前,
与软件维护有关的工作已经开始了。 • 为了有效地进行软件维护,应事先就开始做组织
工作。 – 首先建立维护的机构 – 申明提出维护申请报告的过程及评价的过程 – 为每一个维护申请规定标准的处理步骤 – 建立维护活动的记录保管,并规定复审的标准
17
• 维护申请报告将由维护管理员和系统管理员 来研究处理。
• 他们应相应地做出软件修改报告,指明: – 所需修改变动的性质; – 申请修改的优先级; – 为满足某个维护申请报告,所需的工作量 – 预计修改后的状况.
数据输入/输出方式、数据存储介 质) 可能发生变化。

软件工程中的软件维护与更新

软件工程中的软件维护与更新
快速响应用户需求 迭代更新软件功能 持续优化用户体验
持续集成与部署
版本控制与追踪
安全漏洞修复
自动化测试与部署流程 快速发布更新版本
确保软件稳定性
管理代码变更历史 追踪问题解决过程
保证版本一致性
定期安全评估与修复 保障用户数据安全
预防恶意攻击
软件维护与更新挑战
版本兼容性
安全漏洞防范
维护成本控制
团队协作与沟通
确保新功能不影响 旧版本
预防和及时处理安 全漏洞
有效管理维护成本
团队协作和沟通效 率
谢谢观看!
应性
根据新技术和市场 需求进行的软件功
能和性能更新
软件维护与更新
软件维护与更新是软件工程中关键的一环, 通过持续改进和更新软件系统,确保软件始 终满足用户需求并保持高质量。维护与更新 工作涉及多个方面,包括功能更新、性能优 化、安全修复等,是软件生命周期中不可或
缺的部分。
软件维护与更新实践
敏捷开发模式
修 复 软 件 缺 陷 和 漏 提高软件性能和安全


保护用户数据安全 提高软障率
提升系统稳定性
软件维护与更新的类型
预防性维护
纠错性维护
自适应维护
完善性更新
在软件交付之前进 行的维护工作,以
确保软件质量
修复软件缺陷和漏 洞,保障软件正常
运行
根据用户反馈和环 境变化进行的维护 工作,提高软件适
软件工程中的软件维护与更新
制作人: 时间:2024年X月
目 录
第1章 软件维护与更新简介
●01
第1章 软件维护与更新简介
什么是软件维护与更新
改进软件系统
提高软件性能

《软件工程》第八章 软件维护与再工程

《软件工程》第八章 软件维护与再工程

软件可维护性-主要影响因素
可移植性:指程序转移到一个新的计算环境的难易 程度。
影响软件可移植性的因素有:信息隐蔽原则;模块 独立;模块化;高内聚低耦合;良好的程序结构; 不用标准文本以外的语句等
一个可移植的程序应具有结构良好、灵活、不依赖 于某பைடு நூலகம்具体计算机或操作系统的性能
软件可维护性-主要影响因素
软件维护的概念-维护成本
其它一些因素:如应用的类型、数学模型、 任务的难度、IF嵌套深度、索引或下标数等, 对维护工作量也有影响
软件维护的过程-维护组织
维护组织结构图
软件维护的过程-维护组织
系统监督员一般都是对程序(某一部分)特别熟 悉的技术人员。 在维护人员对程序进行修改的过程中,由配 置管理员严格把关,控制修改的范围,对软 件配置进行审计 。 维护管理员、系统监督员、修改控制决策机 构等,均代表维护工作的某个职责范围 。
如果已经开始保存维护记录,可以对维护工作做 一些定量度量,至少可以从如下7方面进行评价:
每次程序运行平均失败的次数; 用于每一类维护活动的总人时数; 平均每个程序、每种语言、每种维护类型所必需的程序 变动数; 维护过程中增加或删除源语句平均花费的人时数; 维护每种语言平均花费的人时数; 一张维护请求表的平均周转时间; 不同维护类型所占的比例;
软件维护的过程-维护记录
软件修改报告指明:为满足维护申请报告提 出的需求所需的工作量、本次维护活动的类 别、本次维护请求的优先级、本次修改的背 景数据。在拟定进一步维护计划前,软件修 改报告要提交给修改决策机构,供进一步规 划维护活动使用 保存维护记录的第一个问题就是哪些数据值 得保存?
软件维护的过程-维护评价
软件维护的概念-维护问题

第5章 软件维护和软件重用

第5章  软件维护和软件重用

19
19
5.1 软件维护
5.1.3 软件维护过程
软件维护的副作用
维护是为了延长软件的寿命,让软件创造更多的价值。但是维护会产生潜 在的错误或其他不希望出现的情况,称为维护的副作用。维护的副作用有编码 副作用、数据副作用和文档副作用3种。
05
20
20
5.1 软件维护
5.1.3 软件维护过程
编码副作用
使用程序设计语言修改
源程序时可能引入错误。例如, 修改程序的标号、标识符、运 算符、边界条件、程序的时序
软件维护 副作用
关系等,要特别仔细、避免引
入新的错误。
文档副作用
数据副作用 修改数据结构时可能造成软件
设计与数据结构不匹配,从而导致 软件错误。例如,修改局部量、全 局量、记录或文件的格式、初始化 控制或指针、输入/输出或子程序的 参数等容易导致设计与数据不一致。
6
6
5.1 软件维护
5.1.2 软件维护的特点
1)结构化维护与非结构化维护
差别巨大
与非结构化维护相比,结构
化维护能减少工作量并提高维护
的总体质量。这是在软件开发的
01
早期就运用软件工程方法论的结 果。
3)维护的代价高昂
03
02
2)维护的问题很多
7
7
5.1.2 软件维护的特点
5.1.2 软件维护的特点
立即开始维护工作。
12
12
5.1 软件维护
5.1.3 软件维护过程
不管是改正性、完善性还是适应性维护,都需要进行同样的技术工作,包括修改软件 设计、对源程序进行修改、单元测试、组装、有效性测试及复审等。
参加软件维护工作的人员并不是越多越好。一般情况下,对需要维护的软件比较 熟悉的人员,其维护工作的效率比较高。维护人员在维护过程中要做好详细的记录。 对于不同类型的维护,其工作的侧重点会有所不同,但总的处理方法基本上是相同的 。

浅析软件再工程

浅析软件再工程
丁 技

浅析软件再工程
(宁波大红鹰职业技术学院 浙江宁波 315175)
摘 要: 前软件系统更新换代加剧而提出的。本文从软件工程方法学的角度对软件再工程的发展背景做了 分析 软件再工程的概念是针对目 , 分析了软件再工程的阻力所在, 并对软件再工程的前景做了展望。 关键 阐述了软件再工程定义和分类, 词: 计算机软件 再工程 软件工程方法学 中图分类号: TP 3 文献标识码: A 文章编号: 1672- 3791(2007)05(c)- 0097- 01
(2) 业务环境变化带来的软件维护。譬 如由于企业业务的发展和系统使用年限的增 加, 既存系统的存储媒体和数据管理系统满足
如此看来, 软件开发人员的担子越来越 重。 多年前曾 20 有人预言:软件进入维护期的 比例将随软件递增率一起增长, 进人2 1 世纪
后将有80%的软件人员从事维护性开发。 从软 件的价值随着生存期而递增的特点来看, 这并 不违背市场经济的价值规律。
然而, 和最初的软件工程诞生于对失败的 领悟一样, 在再工程需求和 ” 失败” 没有成熟, 即软件生存期的中后期全貌尚未完全显现出 来的时候, 要想研究它的问题、规律及其解 法也是勉为其难 。 第一次 (正向) 软件工程方法学研究已 取得了许多重大进展, 在其指导下开发的既存 软件资源越来越多, 覆盖面也越来越大, 使新 系统软件开发即一次 (正向) 软件工程的瓶 颈变宽, 从而以维护为中心的需求剧增 , 但相 关的方法学和技术人员严重匾乏, 使逆向工程 和再工程开发成了新的软件工程瓶颈, 且此危 机有愈演愈烈之势。
不了 数据量及其种类剧增的要求, 需要更新数 据库系统;随外部条件变化而必须修改部分数 据变量定义或算法, 例如征收消费税的法律修
工程方法学薄弱环节研究的推动力。这种推

软件工程课件-第八章维护ppt

软件工程课件-第八章维护ppt
例如,在软件交付用户使用之后,解决在开发时没有测 试所有可能的执行通路而带来的问题;
2. 适应性维护
计算机科学技术领域的各个方面都在迅速进步,大约每 过38个月就有新一代的硬件宣告出现;另一方面,应用软 件的使用寿命却很容易超过十年,远远长于最初开发这个 软件时的运行环境的寿命。因此,适应性维护就是为了和 变化了的环境适当地配合而进行的修改软件的活动,是既 必要又经常的维护活动。
4. 预防性维护
当为了提高未来的可维护性或可靠性,或为了给未来的 改进工作奠定更好的基础而修改软件时,就出现了第四类维 护活动,这类维护活动称为预防性维护。通常,把预防性维 护定义为:“把今天的方法学应用于昨天的系统以满足明天 的需要”。也就是说,预防性维护就是采用先进的软件工程 方法对需要维护的软件或软件中的某一部分,主动地进行重 新设计、编码和测试。
8.3.1 维护组织 虽然通常并不需要建立正式的维护组织,但是,即使对
于一个小的软件开发团体而言,非正式地委托责任也是绝 对必要的。维护机构成员一般包括:配置管理员、维护控 制员、系统管理员、一般维护工作人员。
每个维护要求都通过维护管理员转交给相应的系统管理 员去评价,见下页图示。
维护机构
维护要求 (软件问题报告)
● 当必须把软件工程师调去从事维护工作时,将在开发 过程中造成混乱。
8.1.2.3 维护的问题很多
与软件维护有关的绝大多数问题,都可归因于软件定 义和软件开发的方法有缺点。在软件生命周期的头两个时 期没有严格而又科学的管理和规划,几乎必然会导致在最 后阶段出现问题。下面列出和软件维护有关的部分问题:
8.1.2.2 维护的代价高昂 8.1.2.3 维护的问题很多
8.1.2.1 结构化维护与非结构化维护差别悬殊

第6章软件维护与再工程

第6章软件维护与再工程
M=p+K×e(c- d) 其中 M:软件维护所有的工作量;
p :生产性工作量(分析、设计、编码及测试); K:经验常数; c :复杂程度;
d:维护人员对软件的熟悉程度。
该模型描述了影响维护的诸多因素中重要的关系。如
果一个系统开发没有遵循软件工程原则,软件结构不好, c 的值就会很高,再加上维护人员对软件的不熟悉, d的值 很低。结果是,维护的成本呈指数级的增长。
10
R1
R2
R3
. . .
Ri
需求
水平追踪连接
D1
C1
D2
C2
D3
C3
.
.
.
.
.
.
Dj
Ck
垂直追踪连接
T1
T2
T3
. . .
Tn
设计
代码
工作产品的追踪图
六盘水师范学院 孙新杰
测试
11
其中:
每个矩形框内的结点:表示为该阶段产生的工作产 品或构件。
构件及之间的实线箭头:构成了度量产品的垂直跟 踪图。
在各里程碑处检查与可维护性相关的软件特性。
(见下图)
六盘水师范学院 孙新杰
18
各里程碑处对与可维护性相关的软件特性的检查:
分析
设计
编码
测试
验收
可靠性 可移植性 可用性
可理解性 可修改性 可测试性
可理解性 可修改性
可移植性 效率
可靠性 效率
配置 复审
完整性 一致性
可理解性
(4)选择易理解、易编程的语言。 (5)建立完整、一致和正确的文档。
带来高维护费用的关键因素:
• 人员的不稳定 • 合同责任 • 维护人员技术水平 • 系统结构衰退 遗留系统的结构受到频繁变更的破坏;没有使用现 代的软件工程技术开发;文档不全、不一致;没有采用 配置管理,系统变更时在寻找系统构件的合适版本上浪

软件工程复习知识点_2

软件工程复习知识点_2

第一章概论1.软件的特点:(1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。

(2)软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。

(3)软件的使用没有硬件那样的机械磨损和老化问题。

2.软件的分类:系统软件,居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用;支撑软件,支撑软件的开发和维护;应用软件,特定应用领域的专用软件。

3.软件工程定义:(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;(2)在(1)中所述方法的研究。

4.软件工程框架:目标、过程和原则。

目标指生产具有正确性、可用性和开销合宜的产品;过程指生产一个最终满足需求且达到工程目标的软件产品所需要的步骤;原则为选择适宜的开发模型、采用合适的设计方法、提供高质量的工程支撑、重视软件工程的管理。

5.软件生存周期:软件产品或软件系统从产生、投入使用到被淘汰的全过程。

大致分为六阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护。

6.能力成熟度模型CMM五个等级:初始级、可重复级、已定义级、已管理级、优化级。

7.常见模型优缺点:螺旋模型:螺旋模型是将瀑布模型与原型模型结合起来,加入风险分析环节,是一种风险驱动模型。

包括4个工作步骤:1)需求定义、2)风险分析、3)工程实现、4)评审。

瀑布模型:瀑布模型是将软件生存周期各活动规定为以线性顺序连接的若干阶段的模型;强调阶段的严格顺序和每一阶段的严格性。

前一阶段的输出是后一阶段的输入;每阶段要进行文档的复审与确认。

增量模型:融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征,强调每一个增量都发布一个可运行的产品,能有计划地管理技术风险;喷泉模型:一种支持面向对象开发的模型,体现迭代和无间隙特征;基于构件的开发模型:支持复用;形式化方法模型:建立在严格数学基础上;8.Agile方法的价值观:个人和交互高于过程和工具;可运行软件高于详尽的文档;与客户协作高于合同(契约)谈判;对变更及时做出反应高于遵循计划。

软件工程中的软件产品维护与升级

软件工程中的软件产品维护与升级
提供灰度发布
先让部分用户体验, 再逐步扩大范围
提供快速回滚机制
一旦发现问题,能 够快速回退到上一
个版本
用户反馈解决方案
建立用户反馈渠道
优先处理用户反馈
定期分析用户反馈
让用户更容易提供 反馈
让用户感受到关注
根据用户建议改进 软件
增量升级解决方案
灰度发布
逐步扩大用户范围 收集不同用户的反馈
快速回滚机制
保障升级过程的稳定性 降低系统故障的风险
持续监控升级效果
定期汇总用户反馈
及时调整升级策略 保持软件的稳定性和功能 性
分析用户需求变化 优化软件产品特性
软件产品升级的重要性
软件产品的升级是保持竞争力和持续改进 的关键。通过不断升级和改进,软件能够 适应市场变化,满足用户需求,提升用户 体验,增强软件产品的市场地位和用户粘
增加功能体验
提供更多选择 个性化定制
加强安全性
修复漏洞 防止黑客攻击
改善用户界面
增加易用性 提高美观度
总结
软件产品升级是软件工程中至关重要的一 环,通过合理的策略可以提升软件的性能、 安全性和用户体验。增量、强制和定时升 级是常见的策略,每种都有其适用的场景
和优势。
软件产品升级的挑战
在软件工程中,软件产品升级是一个重要 且具有挑战性的任务。面临的挑战包括兼 容性问题、用户反馈以及增量升级的稳定 性。这些问题需要在升级过程中得到有效 的解决,以确保软件产品的持续发展和用
能化和个性化软件维护与升级的趋势。
MORE>>
软件维护与升级的重要性
确保系统稳定性
持续维护可以预防 系统故障和漏洞
提升用户体验
改进功能和性能满 足用户需求

软件工程课本讲解第6章软件维护

软件工程课本讲解第6章软件维护
例如,开发每一行源代码耗资25美 元,维护每一行源代码需要耗资 1000美元。
维护工作量包括生产性活动(如分 析和评价、设计修改和实现)和 “轮转”活动(如力图理解代码在 做什么、试图判明数据结构、接口 特性、性能界限等)。
21
维护工作量的模型
MpKced
M是维护中消耗的总工作量 p是上面描述的生产性工作量 K是一个经验常数 c是因缺乏好的设计和文档而导致
复杂性的度量 d是对软件熟悉程度的度量。
22
模型指明,如果使用了不好的软件 开发方法(未按软件工程要求做), 原来参加开发的人员或小组不能参 加维护,则工作量(及成本)将按 指数级增加。
23
6.2 软件维护实施活动
为了有效地进行软件维护,应事先 就开始做组织工作。 首先建立维护的机构 申明提出维护申请报告的过程及 评价的过程 为每一个维护申请规定标准的处 理步骤 建立维护活动的登记制度以及规 定评价和评审的标准。
3
一、软件维护的定义
在软件运行/维护阶段对软件产品进行的修改就是 所谓的维护。
软件维护是软件生存周期的最后一个阶段,不属于系统开发的过程。
问题


维护 满足用户对已开发产品的性能与运行环境不断提高的要求,进而
目的 达到延长软件寿命的目的。
改正性 对程序使用期间发现的程序错误进行诊断和改正的过程;
改正性 17—21% 适应性 18—25%
完善性 50—66% 预防性 4%左右
软件的易维护性是软件开发过程中每个步骤的一个关键目标。维护费用占软件总支
出的20-30%到70-80%。而无形的代价更是无法估计的。
4
改正性维护
在软件交付使用后,因开发时测试 的不彻底、不完全,必然会有部分 隐藏的错误遗留到运行阶段。

软件工程第9章软件维护

软件工程第9章软件维护

9.2 软件维护的过程
1. 维护组织 除大的软件公司外,通常的在软件维护工作方面,并不保
持一个正式的组织。在软件开发部门,确立一个非正式的维 护组织即非正式的维护管理员来负责维护工作却是绝对必要 的。
2、维护工作的流程
用户
修改过 的软件 确定更
改要求
维护
维护人员
纠错性
严重 评价错误 严重程度

不严重
进行问 题分析
理解分析程序
安排计划 修改程序
要求 确认维 或
安排改正
维护实施
护类型


性维护

测试程序
美 或应


性 评价优
先级

将改正错误列入计划 安
高 进行问 排
复审 交付使用
将安排好的工

题分析
的软件
作量列入计划
软件维护的工作流程图
3、维护工作的组织管理
软件维护工作不仅是技术性的,它还需要大量的管理 工作与之相配合,才能保证维护工作的质量。管理部门 应对提交的修改方案进行分析和审查,并对修改带来的 影响作充分的估计,对于不妥的修改予以撤销。需修改 主文档时,管理部门更应仔细审查。
完善性 维护
50%
纠错性 维护 25%
适应性 维护21%
纠错性维护 适应性维护 完善性维护 预防性维护
9.1 .3 软件维护的特性
1.时间长、工作量大、成本高 软件的维护过程是软件生存期中最长,并且相当困难的
阶段,软件维护的工作量占整个软件生存期的70%以上, 而且还在逐年增加。因此,如何减少软件维护的工作量, 降低软件维护的成本,就成为提高软件维护效率和质量的 关键。 2.维护的副作用 (1)修改代码的副作用。在修改源代码时,由于软件的内 在结构等原因,任何一个小的修改都可能引起的错误。因 此在修改时必须特别小心。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 建立维护组织 – 确定维护过程 – 保管维护记录 – 进行维护评价
章软件维护与再工程[1]
软件维护的过程-维护组织
• 维护组织结构图
章软件维护与再工程[1]
软件维护的过程-维护组织
• 维护团队根据时间的不同,可以分为短期团队和 长期团队
• 短期团队一般是当需要执行相关具体任务时, 临时组织起来解决手头的问题
• 在实践中,软件维护各种活动常常交织在一起, 尽管这些维护在性质上有些重叠,但是还是有充 分的理由区分这些维护活动
• 只有正确区分维护活动的类型才能够更有效地确 定维护需求的优先级
章软件维护与再工程[1]
四类软件维护的比例
预防性 维护4%
完善性 维护50%
纠错性维 护25%
适应性 维护21%
章软件维护与再工程[1]
– 非生产性活动 如,程序代码功能理解、数据结构解 释、接口特点和性能界限分析等
• 维护工作量的模型
– M:维护的总工作量 ;P:生产性工作量;K:经验常数;c:复杂程 度;d:维护人员对软件的熟悉程度
章软件维护与再工程[1]
软件维护的概念-维护成本
• 影响维护工作量的因素主要有以下六种
➢ 系统的规模:系统规模越大,其功能就越复杂,软 件维护的工作量也随之增大
② 一些修复或修改请求得不到及时安排,使得客户 满意率下降
③ 维护的结果把一些新的潜在的错误引入软件,降 低了软件质量
④ 将软件人员抽调到维护工作中,使得其它软件开 发过程受到干扰
章软件维护与再工程[1]
软件维护的概念-维护成本
• 维护的工作可划分成:
– 生产性活动 如,分析评价、修改设计、编写程序代 码等
章软件维护与再工程
2020/11/24
章软件维护与再工程[1]
内容摘要
• 软件维护 • 再工程技术
章软件维护与再工程[1]
软件维护的概念
• 什么是软件维护
– 是指软件系统交付使用以后,为了改正错误或满足新的需要而修 改软件的过程
• 国标GB/T 11457-95给出如下定义
– 在一软件产品交付使用后对其进行修改,以纠正故障、改进其性 能和其它属性,或使产品适应改变了的环境。
• 软件修改报告指明:为满足维护申请报告提出的需求所 需的工作量、本次维护活动的类别、本次维护请求的优 先级、本次修改的背景数据。在拟定进一步维护计划前, 软件修改报告要提交给修改决策机构,供进一步规划维 护活动使用
章软件维护与再工程[1]
软件维护的过程-维护评价
• 如果已经开始保存维护记录,可以对维护工作 做一些定量度量,至少可以从如下7方面进行 评价:
• 两种错误认识
– 软件维护是一次新的开发活动 – 软件维护就是改错
• 新开发活动强调要在一定的约束条件下从头开始实施 • 软件维护强调必须在现有系统的限定和约束条件下实 ;
章软件维护与再工程[1]
软件维护的概念-软件维护分类
• 根据起因不同,软件维护可以分为四类
– 纠错性维护 – 适应性维护 – 改善性维护 – 预防性维护
• 确定质量管理目标和优先级
– 一个可维护的程序应该是可理解的,可修改的和可 测试的。但是要实现所有这些目标,需要付出很大 的代价。因为有些维护属性之间是相互促进的,例 如,可理解性和可测试性,可理解性和可修改性, 另外一些属性之间则是相互抵触的。
– 在程序的开发阶段就应保证软件具有可理解性。可 修改性和可测试性。在软件开发的每一个阶段都应 尽力考虑软件的可维护性。
Hale Waihona Puke 软件维护的概念-维护问题• 结构化维护:采用软件工程的方法进行软件开 发,保证每个阶段都有完整且详细的文档
• 非结构化维护:如果不采用软件工程方法开发 软件,软件只有程序而欠缺文档,则维护工作 将变得十分困难
维护时,开发人员从分析需求规格说明开始, 明白软件功能和性能上的改变,对设计说明文 档进行修改和复查,再根据设计修改进行程序 变动,并用测试文档中的测试用例进行回归测 试,最后将修改后的软件再次交付使用。
软件可维护性-软件可维护性评审
• 在进行需求分析评审时,要考虑可修改性、可移植性, 及影响维护的系统接口。
• 在进行设计评审时,要从易于维护和提高设计总体质量 的角度全面评审数据设计、总体结构设计、过程设计和 界面设计。
• 在进行代码评审时,要强调编程风格和内部文档。 • 在进行测试时应指出软件正式交付前应进行的预防性维
– 每次程序运行平均失败的次数; – 用于每一类维护活动的总人时数; – 平均每个程序、每种语言、每种维护类型所必需的
程序变动数; – 维护过程中增加或删除源语句平均花费的人时数; – 维护每种语言平均花费的人时数; – 一张维护请求表的平均周转时间; – 不同维护类型所占的比例;
章软件维护与再工程[1]
• 可修改性:指修改软件(主要指程序)的难易程度。
– 在修改软件时经常会发生这样的情况:修改了程序中某个错误 的同时又产生新的错误(由程序的修改引起的);或者在程序 中增加了某个功能后,导致原先的某些功能不能正常执行。
• 修改影响波及范围越大,则程序的可修改性就越差。 • 影响可修改性因素:软件设计中的设计准则和启发式规
章软件维护与再工程[1]
软件维护的概念-软件维护分类
• 纠错性维护:为了改正软件系统中的错误,使软件能够 满足预期的正常运行状态的要求而进行的维护
• 适应性维护:为了使软件适应内部或外部环境变化,而 去修改软件的过程
• 改善性维护:满足使用过程中用户提出增加新功能或修 改已有功能的建议维护
• 预防性维护:为了提高软件的可维护性、可靠性等,为 以后进一步改进软件打下良好基础而修改软件的活动
• 维护请求表(报告)即软件问题报告,该报告(表)由 要求一项维护活动的用户填写。对改正性维护,用户需 要将错误出现的现场信息详细描述出来,包括输入数据、 错误清单以及其它有关材料。对适应性维护或改善性维 护,应该给出一个简短的需求规格说明书。维护申请被 批准后,维护申请报告就成为外部文档,作为本次维护 的依据
采取的行 动
接受
按优先级在 队列中排队
并不严重
评估后按优先 级在队列排队
从维护请求队列之首取出一任务 按SE方法学规划、组织、实施工程
维 护 过 程 图
队列中还有维护请 求吗?
n 资源用于开发新的软件。
y
章软件维护与再工程[1]
软件维护的过程-维护过程
• 每种维护请求都要进行同样的一系列技术工作:
软件可维护性
• 可维护性(maintainability)
– 指理解、改正、调整和改进软件的难易程度。 – 对软件可维护性影响的主要因素有:
• 可理解性(understandability)、 • 可测试性(testability)、 • 可修改性、modifiability) • 和可移植性(portability)
➢ 绝大多数软件在设计时没有考虑到将来的修改问题 ➢ 软件维护这项工作毫无吸引力。一方面是因为软件维护,看
不到什么“成果”,但工作量很大,更重要的是维护工作难 度大,软件维护人员经常遭受挫折。
章软件维护与再工程[1]
软件维护的概念-维护成本
• 软件维护除费用外的无形代价包括
① 维护活动占用了其他软件开发可用的资源,使资 源的利用率降低
➢ 程序设计语言:使用强功能的程序设计语言可以控 制程序的规模。语言的功能越强,生成程序的模块 化和结构化程度越高,所需的指令数就越少,程序 的可读性也越好
➢ 系统年龄:老系统比新系统需要更多的维护工作量。
章软件维护与再工程[1]
软件维护的概念-维护成本
➢ 数据库技术的应用:使用数据库,可以简单而有效 地管理和存储用户程序中的数据,还可以减少生成 用户报表应用软件的维护工作量
章软件维护与再工程[1]
软件可维护性-主要影响因素
• 可测试性:指测试和诊断软件(主要指程 序)中错误的难易程度。
• 提高软件可测试性的措施有:
• 采用良好的程序结构; • 书写详细正确的文档; • 使用测试工具和调试工具; • 保存以前的测试过程和测试用例等
章软件维护与再工程[1]
软件可维护性-主要影响因素
• 长期团队则更正式,能够专业化创建沟通渠道, 可以管理软件系统整个生存期的成功演化
• 无论是短期团队还是长期团队,都要把有经验 的员工和新员工混合起来。
章软件维护与再工程[1]
软件维护的过程-维护过程
• 对于非纠错性维护,则首先判断维护类型,对 适应性维护,按照评估后得到的优先级放入队 列
• 对于改善性维护,则还要考虑是否采取行动, 如果接受申请,则同样按照评估后得到的优先 级放入队列,如果拒绝申请,则通知请求者, 并说明原因
章软件维护与再工程[1]
软件维护的概念-维护问题
• 和软件维护有关的部分问题 :
➢ 理解别人的代码通常是非常困难的,而且难度随着软件配置 成分的缺失而迅速增加
➢ 需要维护的软件往往没有文档、或文档资料严重不足、或软 件的变化未在相应的文档中反映出来
➢ 当软件要求维护时,不能指望由原来的开发人员来完成或提 供软件的解释。由于维护持续时间很长,因此当需要解释软 件时候,往往开发人员已经不在附近了
• 一个可移植的程序应具有结构良好、灵活、不 依赖于某一具体计算机或操作系统的性能
章软件维护与再工程[1]
软件可维护性-主要影响因素
• 通常对于软件可移植性的度量考虑如下因素
① 是否是用高级的独立于机器的语言来编写程序? ② 是否采用广泛使用的标准化的程序设计语言来编写程序? 是否
仅使用了这种语言的标准版本和特性? ③ 程序中是否使用了标准的普遍使用的库功能和子程序? ④ 程序中是否极少使用或根本不使用操作系统的功能?
相关文档
最新文档