③共京宽大学 BEDING UNIVERSITY OF POSTS AND TELECOMMUNICATIONS 软件工程模型与方法 TSEG Models methods of sE Telecommunications Software Engineering Grou 第13,14,15章 肖丁diao(@bupt.edu.cn 通软件中心 ⊙2008 BUPTTSEG
© 2008 BUPT TSEG 软件工程模型与方法 Models & Methods of SE 第13,14,15章 肖丁 dxiao@bupt.edu.cn
共京部電大学 主要内容 ◆软件维护 ◆软件项目管理 ◆软件能力成熟度模型 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 2 主要内容 ◆ 软件维护 ◆ 软件项目管理 ◆ 软件能力成熟度模型
共京部電大学 第13章:软件维护 ◆软件维护的定义 ◆软件维护的分类 ◆软件维护的活动 ◆软件的逆向和再工程 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 3 第13章:软件维护 ◆ 软件维护的定义 ◆ 软件维护的分类 ◆ 软件维护的活动 ◆ 软件的逆向和再工程
共京部電大学 软件维护的定义和分类 铬曩需篠紋锲药痘程为而茬鞍樺运骁 阶段对软件产品所进行的一切改动。 改正在系统运行过程中暴露出来的一些潜在程序错误 或设计缺陷,称为改正性维护。 为了适应在软件使用过程中数据环境发生变化或处理 环境发生变化而进行的软件修改,称为适应性维护。 为满足用户的其他要求,就需要修改软件并把这些要 求纳入到软件之中,称为完善性维护。 为了提高软件的可维护性、可靠性等而事先进行的软 件改动,称为预防性维护。 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 4 软件维护的定义和分类 ◆ 在软件已经交付使用之后,为了改正错误或满足 新的需要而修改软件的过程,即在软件运行∕维护 阶段对软件产品所进行的一切改动。 ➢ 改正在系统运行过程中暴露出来的一些潜在程序错误 或设计缺陷,称为改正性维护。 ➢ 为了适应在软件使用过程中数据环境发生变化或处理 环境发生变化而进行的软件修改,称为适应性维护。 ➢ 为满足用户的其他要求,就需要修改软件并把这些要 求纳入到软件之中,称为完善性维护。 ➢ 为了提高软件的可维护性、可靠性等而事先进行的软 件改动,称为预防性维护
共京部電大学 影响软件维护工作量的因素 系绔左尘系绔薹大理蟹握来蘗图难系统越大, 序设计语言:使用强功能的程序设计语言可以控制程序 度越蓄,需的指数就越参,柱序的奇读性越孬。 ◆系统年龄:系统随着不断的修改,结构越来越乱;由于维 拉人曷经常更搀,穆序又变得越来越难理解长期的维 护过 名 ◆其它:例如,应用的类型、数学模型、任务的难度、开关 与标记、IF嵌套深度、索引或下标数等,对维护工作量都 有 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 5
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 5 影响软件维护工作量的因素 ◆ 系统大小:系统越大,理解掌握起来越困难。系统越大, 所执行功能越复杂。因而需要更多的维护工作量。 ◆ 程序设计语言:使用强功能的程序设计语言可以控制程序 的规模。语言的功能越强,生成程序的模块化和结构化程 度越高,所需的指令数就越少,程序的可读性越好。 ◆ 系统年龄:系统随着不断的修改,结构越来越乱;由于维 护人员经常更换,程序又变得越来越难于理解;长期的维 护过程中文档在许多地方与程序实现变得不一致。 ◆ 其它:例如,应用的类型、数学模型、任务的难度、开关 与标记、IF嵌套深度、索引或下标数等,对维护工作量都 有影响
共京部電大学 软件维护中的典型问题 首先软件维护人员大多数情况下不是软件开发人 员,为此他们会遇到以下问题: 阅读和理解别人写的程序非常困难。 需要维护的软件往往没有合格的文档,或者文档资料 明显不足。 不能指望开发人员仔细说明软件。 决大多数软件在设计时没有考虑将来的修改,从而导 致了软件的可维护性很差。 软件维护不是一项吸引人的工作,由于以上原因经常 导致维护出现困难,从而使软件维护人员产生厌烦和 挫折感 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 6 软件维护中的典型问题 ◆ 首先软件维护人员大多数情况下不是软件开发人 员,为此他们会遇到以下问题: ➢ 阅读和理解别人写的程序非常困难。 ➢ 需要维护的软件往往没有合格的文档,或者文档资料 明显不足。 ➢ 不能指望开发人员仔细说明软件。 ➢ 决大多数软件在设计时没有考虑将来的修改,从而导 致了软件的可维护性很差。 ➢ 软件维护不是一项吸引人的工作,由于以上原因经常 导致维护出现困难,从而使软件维护人员产生厌烦和 挫折感
共京部電大学 软件维护的活动 ◆为了有效地进行软件维护,就必须: 建立维护机构 给出软件维护的工作管理流程 为每一个维护申请规定标准的处理步骤 负责人 申请维护 维护管理员 系统监督员 配置管理员 维护人员 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 7 软件维护的活动 ◆ 为了有效地进行软件维护,就必须: ➢ 建立维护机构 ➢ 给出软件维护的工作管理流程 ➢ 为每一个维护申请规定标准的处理步骤
共京部電大学 软件维护的管理工作流程 用户维护人员 开始 评价 问题分 确 错误严重 (救火)析 更改要 求 程度/⊕ 维护墨求 安 理解程序 重 排 分析原设计 判明 安排 安排计划 维护类 改正性 维护 修改程序 维护 实施 测试程序 修改 性 性 把错误改正 列入计划 复审 优先次 分年业 开始 低 问题分 通过并交付 析 使用的软件 把安排好的开发 工作量列入计划 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 8 软件维护的管理工作流程
共京部電大学 软件维护的标准化 修改请求:一般由用户、程序员或管理人员提出,是软件维护 的开始; 分类与鉴别:根据修改请求,由维护机构来确认其维护类别, 给一个编号,并输入数据库保存 ◆分析:先进行维护的可行性分析,然后进行详细分析 设计:汇总全部信息开始更改,本阶段应更改设计的基线、更 改测试计划、修订详细分析结果、核实维护需求; 实现:制定程序更改计划并进行软件更改。包括编码、单元测 试、集成、风险分析、测试准备审查、更新文档; 系统测试:主要进行程序之间的接口测试,以确保加入了修改 的软件满足原来的需求,回归测试是确保不要引入新的错误; ◆验收测试:最终的综合测试,由客户、用户和第三方共同进行 交付:此阶段是将新的系统交给用户安装并运行 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 9
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 9 软件维护的标准化 ◆ 修改请求:一般由用户、程序员或管理人员提出,是软件维护 的开始; ◆ 分类与鉴别:根据修改请求,由维护机构来确认其维护类别, 给一个编号,并输入数据库保存; ◆ 分析:先进行维护的可行性分析,然后进行详细分析; ◆ 设计:汇总全部信息开始更改,本阶段应更改设计的基线、更 改测试计划、修订详细分析结果、核实维护需求; ◆ 实现:制定程序更改计划并进行软件更改。包括编码、单元测 试、集成、风险分析、测试准备审查、更新文档; ◆ 系统测试:主要进行程序之间的接口测试,以确保加入了修改 的软件满足原来的需求,回归测试是确保不要引入新的错误; ◆ 验收测试:最终的综合测试,由客户、用户和第三方共同进行 ; ◆ 交付:此阶段是将新的系统交给用户安装并运行
共京部電大学 软件的逆向工程和再工程 ◆术语“逆向工程”来自硬件。成功的逆向工程应当通过 考察产品的实际样品,导出该产品的一个或多个设计与 制造的规格说明。 软件的逆向工程是分析程序,是设计恢复的过程,需要 从已存在程序中抽取数据结构、体系结构和程序设计信 非结构化源代码 重构代码 分析语句 结构化源代码 理解处理 分析模式 提取抽象 理解界面 初始的规格说明 理解数据过程 分析程序 求精与简化 分析系统 最终的规格说明 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 10
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 10 软件的逆向工程和再工程 ◆ 术语“逆向工程”来自硬件。成功的逆向工程应当通过 考察产品的实际样品,导出该产品的一个或多个设计与 制造的规格说明。 ◆ 软件的逆向工程是分析程序,是设计恢复的过程,需要 从已存在程序中抽取数据结构、体系结构和程序设计信 息。 图13-7 逆向工程过程 非结构化源代码 结构化源代码 初始的规格说明 最终的规格说明 理解界面 理解处理 理解数据 分析模式 分析模块 分析程序 分析语句 求精与简化 分析系统 提取抽象 重构代码