资源描述
路漫漫其悠远路漫漫其悠远少壮不努力,老大徒悲伤少壮不努力,老大徒悲伤少壮不努力,老大徒悲伤少壮不努力,老大徒悲伤2024/7/24软件维护与软件再工程软件维护与软件再工程概述概述路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂三类维护所占比例三类维护所占比例:其它维护其它维护 5%5%适应性适应性维维 护护 25%25%改正性改正性维维 护护 20%20%扩充与完扩充与完善性维护善性维护 50%50%改正性维护占全部维护量的比率已从改正性维护占全部维护量的比率已从8080年代初年代初的的20%20%大幅度下降大幅度下降,90,90年代初一些公司的产品年代初一些公司的产品差错率已接近于零差错率已接近于零路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂各类维护活动的根本目的是各类维护活动的根本目的是延长软件生存期延长软件生存期其它维护其它维护 4%4%软件软件生存生存周期周期软件诞生软件诞生计计划划分分析析设设计计编编码码测测试试运行和维护运行和维护(简称维护简称维护)改善期改善期 稳定期稳定期 陈旧期陈旧期1 1年年-10-10年年2 2个月个月-2-2年年重构重构软件工程周期软件工程周期路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.2 7.2 软件维护的特点软件维护的特点MP+Ke e=(c c-d d)M M :维护工作总工作量维护工作总工作量P P:生产性工作量生产性工作量K K :经验常数经验常数c c:复杂度复杂度d d:对该软件熟悉程度的度量对该软件熟悉程度的度量7.2.1 7.2.1 维护的成本维护的成本路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.2.2 7.2.2 维护中的典型问题维护中的典型问题(1)(1)难以跟踪软件版本的进化过程难以跟踪软件版本的进化过程,软件的变化未在文档中反映出来软件的变化未在文档中反映出来.(2)(2)难以跟踪软件的创建过程难以跟踪软件的创建过程.(3)(3)难以读懂他人程序难以读懂他人程序.(4)(4)无文档或不全无文档或不全.(5)(5)软件人员流动性大软件人员流动性大.(6)(6)设计时未考虑修改需要设计时未考虑修改需要,修改困难修改困难.(7)(7)维护工作无吸引力维护工作无吸引力,缺乏成就感缺乏成就感.路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.3 7.3 软件的维护任务软件的维护任务7.3.1 7.3.1 维维护组织护组织路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.3.2 7.3.2 维护报告维护报告维护要求表维护要求表软件维护人员提供给用户的空白的维护要求表,也称为软件问题报告表,这个表格由要求一项维护活动的用户填写。软件维修报告软件维修报告满足维护要求表中的要求所需要的工作量;维护要求的性质;这项要求的优先次序;与修改有关的事后数据。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂维护阶段的事件流维护阶段的事件流路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂不管维护类型如何,都需要进行同样的技术工作。不管维护类型如何,都需要进行同样的技术工作。这些工作包括修改软件设计、复查、必要的代码修这些工作包括修改软件设计、复查、必要的代码修改、单元测试和集成测试(包括使用以前的测试方改、单元测试和集成测试(包括使用以前的测试方案的回归测试)、验收测试和复审。不同类型的维案的回归测试)、验收测试和复审。不同类型的维护强调的重点不同,但是基本路径是相同的。维护护强调的重点不同,但是基本路径是相同的。维护事件流中最后一个事件是复审,它再次检验软件配事件流中最后一个事件是复审,它再次检验软件配置的所有成分的有效性,并且保证事实上满足了维置的所有成分的有效性,并且保证事实上满足了维护要求表中的要求。护要求表中的要求。软件过程的输出信息可以分为软件过程的输出信息可以分为3 3类:类:计算机程序(源代计算机程序(源代码和可执行程序);码和可执行程序);描述计算机程序的文档(供技术人描述计算机程序的文档(供技术人员或用户使用);员或用户使用);数据(程序内包含的或在程序外的)。数据(程序内包含的或在程序外的)。上述这些项组成了在软件过程中产生的全部信息,我们把它上述这些项组成了在软件过程中产生的全部信息,我们把它们统称为软件配置,而这些项就是软件配置项。们统称为软件配置,而这些项就是软件配置项。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.3.4 7.3.4 保存维护记录保存维护记录维护过程中作应记录的数据维护过程中作应记录的数据F程序标识程序标识F源程序语句数目源程序语句数目F机器代码指令条数机器代码指令条数F.F.以收集的数据为基础构造维护数据库以收集的数据为基础构造维护数据库,供维护评价使用供维护评价使用.路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.3.5 7.3.5 评价维护活动评价维护活动从七个方面度量(评价从七个方面度量(评价)维护工作:维护工作:(1 1)每次程序运行平均失效的次数;)每次程序运行平均失效的次数;(2 2)用于每一类维护活动的总人时数;)用于每一类维护活动的总人时数;(3 3)平均每个程序、每种语言、每种维护类型所做的)平均每个程序、每种语言、每种维护类型所做的程序变动数;程序变动数;(4 4)维护过程中增加或者删除一个源语句平均花费的)维护过程中增加或者删除一个源语句平均花费的人时数;人时数;(5 5)维护每种语言花费的平均人时数;)维护每种语言花费的平均人时数;(6 6)一张维护要求表的平均周转时间;)一张维护要求表的平均周转时间;(7 7)不同维护类型所占的百分比。)不同维护类型所占的百分比。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.47.4软件可维护性软件可维护性7.4.1 7.4.1 软件软件可维可维护性的定义护性的定义 软件可维护性是指纠正软件系统出现的软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进错误和缺陷,以及为满足新的要求进行修改、扩充或压缩的难易程度。行修改、扩充或压缩的难易程度。或者:或者:维护人员理解、改正、改动或者改进这维护人员理解、改正、改动或者改进这个软件的难易程度。个软件的难易程度。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.4.2.4.2 可维护性的度量可维护性的度量度量程序可维护性的度量程序可维护性的7 7个特性在各类维护个特性在各类维护中的侧重点中的侧重点 改正性维护改正性维护 适应性维护适应性维护 完善性维护完善性维护可理解性可理解性 可测试性可测试性 可修改性可修改性 可靠性可靠性 可移植性可移植性 可重用性可重用性 效率效率 路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.5 7.5 提高可维护性的方法提高可维护性的方法F 建立明确的软件质量目标和优先级建立明确的软件质量目标和优先级F 使用提高软件质量的技术和工具使用提高软件质量的技术和工具F 进行明确的质量保证审查进行明确的质量保证审查F 选择可维护的程序设计语言选择可维护的程序设计语言F 改进程序的文档改进程序的文档F 维护老化代码维护老化代码路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.6 7.6 预防性维护预防性维护维护老程序的方法:维护老程序的方法:(1 1)反复多次的做修改程序的尝试;)反复多次的做修改程序的尝试;(2 2)仔细分析程序尽可能多得掌握程序的内部工作细节,以便)仔细分析程序尽可能多得掌握程序的内部工作细节,以便更加有效的修改它;更加有效的修改它;(3 3)在深入理解原有设计的基础上,用软件工程方法重新设计、)在深入理解原有设计的基础上,用软件工程方法重新设计、重新编码和测试那些需要变更的软件部分;重新编码和测试那些需要变更的软件部分;(4 4)以软件工程方法学为指导,对程序全部重新设计、编码和)以软件工程方法学为指导,对程序全部重新设计、编码和测试,为此可以使用逆向工程和再工程工具来帮助理解原有的测试,为此可以使用逆向工程和再工程工具来帮助理解原有的设计。设计。预防性维护:把今天的方法学应用到昨天的系统上,预防性维护:把今天的方法学应用到昨天的系统上,以支持明天的需求。以支持明天的需求。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7 7.7 软件再工程软件再工程 7.7.1 7.7.1 软件再工程软件再工程在软件复用中在软件复用中,有问题是与现有系统密切相关的有问题是与现有系统密切相关的例如例如:现有软件系统如何适应当前技术的发展及需求的变现有软件系统如何适应当前技术的发展及需求的变化化,采用更易于理解的、适应变化的、可复用的系统软采用更易于理解的、适应变化的、可复用的系统软件构架并提炼出可复用的软件构件件构架并提炼出可复用的软件构件?现存大量的遗产软件系统现存大量的遗产软件系统(Legacy Software)(Legacy Software)由于由于技术的发展技术的发展,正逐渐退出使用正逐渐退出使用,如何对这些系统进行挖掘、如何对这些系统进行挖掘、整理整理,得到有用的软件构件得到有用的软件构件?已有的软件构件随着时间的流逝会逐渐变得不可已有的软件构件随着时间的流逝会逐渐变得不可使用使用,如何对它们进行维护如何对它们进行维护,以延长其生命期以延长其生命期,充分利用充分利用这些可复用构件这些可复用构件?路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂软件再工程软件再工程(Software Reengineering)(Software Reengineering)正正是解决上述问题的主要技术手段。是解决上述问题的主要技术手段。软件再工程软件再工程是一类软件工程活动,是一类软件工程活动,n是一个工程过程是一个工程过程,它将它将逆向工程逆向工程、重构重构和和正向工程正向工程组合起来组合起来,将现存系统重新构造为将现存系统重新构造为新的形式。再工程的基础是系统理解新的形式。再工程的基础是系统理解,包括包括对运行系统、源代码、设计、分析、文档对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下等的全面理解。但在很多情况下,由于各类由于各类文档的丢失文档的丢失,只能对源代码进行理解只能对源代码进行理解,即程即程序理解。序理解。n 它能够使我们:它能够使我们:F 增进对软件的理解;增进对软件的理解;F 提高软件自身的可维护性、复用性或演化性提高软件自身的可维护性、复用性或演化性.软件再工程过程模型软件再工程过程模型代码重构代码重构数据重构数据重构正向工程正向工程库存目录分析库存目录分析文档重构文档重构逆向工程逆向工程路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂软件再工程相关术语间关系软件再工程相关术语间关系 信信息息库库1 1类视图:类视图:非过程性描述、元描述非过程性描述、元描述例:规格说明例:规格说明再工程再工程3 3类视图:类视图:过程性描述过程性描述例:源程序例:源程序再工程再工程2 2类视图:类视图:伪过程性描述、结构性描述伪过程性描述、结构性描述例:例:DFDDFD、PDLPDL A2 A2类视图:类视图:分析分析再工程再工程逆向工程逆向工程设计恢复设计恢复再工程再工程逆向工程逆向工程设计恢复设计恢复再工程再工程 A1 A1类视图:类视图:分析分析 A3 A3类视图:类视图:分析分析分解分解综合生综合生成视图成视图路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂软件视图软件视图 Software view有关软件的一种表达形式或报告;有关软件的一种表达形式或报告;视图分类:视图分类:F1 1类视图:类视图:F2 2类视图:类视图:F3 3类视图:类视图:FA类视图:类视图:伴随上述各类的分析视图;伴随上述各类的分析视图;A1类视图是对类视图是对1 1类视图的分析信息;类视图的分析信息;A2类视图是有关类视图是有关2 2类视图的分析信息;类视图的分析信息;A3类视图是由类视图是由3 3类视图得到。类视图得到。软件视图示例信息库信息库视图编辑器视图编辑器DFD视图编辑器视图编辑器Petri网网视图编辑器视图编辑器ERA图图视图编辑器视图编辑器跟踪矩阵跟踪矩阵X XX XX XReq1 Req2Prog1Prog2Prog3视图编辑器视图编辑器程序结构图程序结构图视图编辑器视图编辑器流程图流程图视图编辑器视图编辑器规格说明规格说明再工程信息库及其产品软件文档软件文档分析结果分析结果信息库设计成果设计成果规格说明规格说明各种图各种图度量值度量值分析、分解器分析、分解器源程序或其模板源程序或其模板(进入点进入点)源程序源程序自动进行再工程的过程软件软件的新视图语法分析器语义分析器视图合成器信息库其他产品经过再工程经过再工程过程可获得过程可获得的信息的信息格式格式图形图形文档文档度量值度量值逻辑逻辑报告报告路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.2 7.7.2 库存目录分析库存目录分析仔细分析库存目录,按照业务重要程度、寿命、仔细分析库存目录,按照业务重要程度、寿命、当前可维护性、预期的修改次数等标准,把库当前可维护性、预期的修改次数等标准,把库中的应用系统排序,从中选出再工程的候选者,中的应用系统排序,从中选出再工程的候选者,然后明智地分配再工程所需要的资源。然后明智地分配再工程所需要的资源。n开发和维护者不应等待用户的维护申请开发和维护者不应等待用户的维护申请,可先选可先选择以下类型程序作为预防性维护对象择以下类型程序作为预防性维护对象:n(1)(1)预计若干年内将继续使用的程序预计若干年内将继续使用的程序n(2)(2)当今正成功使用的程序当今正成功使用的程序n(3)(3)最近的将来要进行大修改和完善的最近的将来要进行大修改和完善的 n 程序程序路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.3 7.7.3 文档重构文档重构(1 1)保持现状)保持现状(2 2)针对系统中当前正在修改的那些部分建)针对系统中当前正在修改的那些部分建立完整文档立完整文档(3 3)如果某应用系统是完成业务工作的关键,)如果某应用系统是完成业务工作的关键,而且必须重构全部文档,则仍然应该设法把文而且必须重构全部文档,则仍然应该设法把文档工作减少到必需的最小量。档工作减少到必需的最小量。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.4 7.7.4 逆向工程逆向工程n逆向工程逆向工程(反推工程反推工程reverse engineering)reverse engineering)n从现有软件恢复设计信息从现有软件恢复设计信息(有用的维护信息有用的维护信息)非结构化、无文档非结构化、无文档的源代码或目标代码的源代码或目标代码 设计的设计的恢复过程恢复过程软件的全部文档软件的全部文档路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂逆向工程恢复信息的级别逆向工程恢复信息的级别:(1)(1)实现级实现级:程序的抽象语法程序的抽象语法 树、符号表等信息树、符号表等信息(2)(2)结构级结构级:反映程序分量之间反映程序分量之间 相互依赖关系的信相互依赖关系的信 息,如调用图、结息,如调用图、结 构图等构图等.(3)(3)功能级功能级:反映程序段功能和反映程序段功能和 段间关系的信息段间关系的信息(4)(4)领域级领域级:反映程序分量与应反映程序分量与应 用领域概念间对应用领域概念间对应 关系的信息关系的信息抽抽象象级级别别低低高高信息的抽象信息的抽象级别越高级别越高,它与代码距它与代码距离越远离越远,通通过逆向工程过逆向工程恢复的难度恢复的难度越大越大,自动自动工具支持的工具支持的可能性变小可能性变小路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂逆向工程逆向工程源程序源程序目标代码目标代码反汇编、反编译反汇编、反编译程序分析技术程序分析技术:程序结构分析工具程序结构分析工具 程序功能分析工具程序功能分析工具 源程序源程序概要设计概要设计详细设计详细设计概要设计概要设计需求分析需求分析路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.5 7.7.5 正向工程正向工程正向工程也称为革新或者改造,这项活动不仅正向工程也称为革新或者改造,这项活动不仅从现有程序中恢复设计信息,而且使用该信息从现有程序中恢复设计信息,而且使用该信息去改变或者重构现有系统,以提高整体质量。去改变或者重构现有系统,以提高整体质量。正向工程应用软件工程原理、概念、技术和方正向工程应用软件工程原理、概念、技术和方法来重新开发某个现有的应用系统。在大多数法来重新开发某个现有的应用系统。在大多数情况下,被再工程的软件不仅能构重新实现现情况下,被再工程的软件不仅能构重新实现现有系统的功能,而且加入了新功能和提高了整有系统的功能,而且加入了新功能和提高了整体性能。体性能。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.6 7.7.6 代码重构代码重构重构可疑模块的代码重构可疑模块的代码首先,用重构工具分析源代码,标注出需要重首先,用重构工具分析源代码,标注出需要重构的代码构的代码然后,自动重构有问题的代码;然后,自动重构有问题的代码;最后,复审和测试生成的重构代码。最后,复审和测试生成的重构代码。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.7 7.7.7 数据重构数据重构发生在较低抽象层次上,是一种全范围内的发生在较低抽象层次上,是一种全范围内的再工程活动。在大多数情况下,数据重构始再工程活动。在大多数情况下,数据重构始于逆向工程活动,分解当前使用的数据体系于逆向工程活动,分解当前使用的数据体系结构,必要时定义数据模型,标识数据对象结构,必要时定义数据模型,标识数据对象和属性,并且从软件质量的角度复审现存的和属性,并且从软件质量的角度复审现存的数据结构。数据结构。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂7.7.7.3.3 为什么要实施软件再工程为什么要实施软件再工程再工程可帮助降低软件演化风险再工程可帮助降低软件演化风险再工程可帮助补偿软件投资再工程可帮助补偿软件投资再工程可使得软件易于进一步变更再工程可使得软件易于进一步变更再工程有广阔市场再工程有广阔市场再工程扩大了再工程扩大了CASECASE工具集工具集再工程是推动自动软件维护的动力再工程是推动自动软件维护的动力路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂第八章第八章 软件项目管理软件项目管理n估算软件规模估算软件规模n工作量估算工作量估算n进度计划进度计划n人员组织人员组织n质量保证质量保证n软件配置管理软件配置管理n能力成熟度模型能力成熟度模型路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.1 估算软件规模估算软件规模1、代码行技术、代码行技术L=6a+4m+b由多名有经验的软件工程师分别作出估计。每个人都估计程序的最小规模a,最大规模b和最可能的规模m。LOCKLOC路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂2、功能点技术(1)信息域特性输入项数:用户向软件输入的项数,这些输入给软件提供面向应用的数据;输出项数:软件向用户输出的项数,它们向用户提供面向应用的信息;查询数:查询就是一次联机输入,它导致软件以联机输出方式产生某种即时响应;主文件数:逻辑主文件的数目;外部接口数:机器可读的全部接口的数量,用这些接口把信息传送给另一个系统。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂(2)估算功能点的步骤A、计算未调整的功能点数UFPB、计算技术复杂性因子TCP TCF=0.65+0.01DI其中,DI是14种技术因素对软件规模的综合影响程度。C、计算功能点数FP FP=UFPTCF路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.2 工作量估算工作量估算n静态单变量模型静态单变量模型n动态多变量模型动态多变量模型nCOCOMO2模型模型路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.3 进度计划进度计划n估算开发时间nGantt图n工程网络n估算工程进度n关键路径n机动时间路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.4 人员组织人员组织n民主制程序员组民主制程序员组n主程序员组主程序员组n现代程序员组现代程序员组路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂图 Putnam _ Norden 曲线高高低低计划需求分析初步设计详细设计编码单元测试整体测试功能测试管理人员管理人员高级技术人员高级技术人员初级技术人员初级技术人员路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.5 质量保证质量保证n软件质量软件质量 软件与明确地和隐含地定义的需求相一致的程序。定义强调了三个要点:(1)软件需求是度量软件质量的基础,与需求不一致就是质量不高(2)指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致软件质量不高(3)通常,有一组没有显式描述的需求,如果软件满足明确描述的需求,却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂产品运行产品转移产品修改可理解性可维修性灵活性可测试性可移植性可再用性互运行性正确性 完整性健壮性 可用性效率 风险软件质量因素与产品活动的关系路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂n软件质量保证措施软件质量保证措施SQA的措施主要有:的措施主要有:基于非执行的测试(复审或者评审)基于非执行的测试(复审或者评审)基于执行的测试基于执行的测试 程序正确性证明程序正确性证明路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.6 软件配置管理软件配置管理 软件配置管理是在软件的整个生命期内软件配置管理是在软件的整个生命期内管理变化的一组活动。管理变化的一组活动。具体地说,这组活动用来:标识变化控制变化确保适当地实现了变化向需要知道这类信息的人报告变化路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂n软件配置软件配置软件配置项:计算机程序、描述计算机程软件配置项:计算机程序、描述计算机程序的文档、数据。序的文档、数据。基线:通过了正式复审的软件配置项。基线:通过了正式复审的软件配置项。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂n软件配置管理过程软件配置管理过程 软件配置管理可以看作是应用于整个软件过程的软件质量保证活动,是专门用来管理变化的软件质量保证活动。软件配置管理的五项任务:标识、版本控制、变化控制、配置审计、报告。路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂8.7 能力成熟度模型能力成熟度模型n能力成熟度模型的主要思想 因为问题是管理软件过程的方法不恰当造成的,所以采用新技术并不会自动提高软件生产率和软件质量,应该下大力气改进对软件过程的管理。n能力成熟度模型的五个成熟度等级 初始级、可重复级、已定义级、已管理级、优化级路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂据美国卡内基据美国卡内基.梅隆大学梅隆大学SEISEI统计,至统计,至20012001年年6 6月底,月底,CMMCMM的的认证情况如下表所示。认证情况如下表所示。CMM级别级别世界软件企业世界软件企业通过通过CMM的数量的数量世界软件企业世界软件企业通过通过CMM的份额的份额5级级 41家家 3%4级级 54家家 4%3级级 232家家 17%2级级 438家家 32%1级级 600家家 44%路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂级别级别特点特点1 初始级初始级 软件开发过程是一个软件开发过程是一个偶然的甚至无序的过程偶然的甚至无序的过程,很少有很少有明确的定义明确的定义,成功完全依赖于个体的能力成功完全依赖于个体的能力.2 重复级重复级实施实施基本的项目管理基本的项目管理:跟踪软件成本、进度和功能。跟踪软件成本、进度和功能。依照以往项目成功的经验来建立基本的过程规则,使依照以往项目成功的经验来建立基本的过程规则,使得其他相似项目能重复以往的成功。得其他相似项目能重复以往的成功。3 定义级定义级软件过程的管理和实行方法都已软件过程的管理和实行方法都已文档化、标准化文档化、标准化,使,使开发商有一个开发过程的标准。即所有项目都可以依开发商有一个开发过程的标准。即所有项目都可以依照标准来开发和维护软件。照标准来开发和维护软件。4 管理级管理级定义了评估软件过程和产品质量的定义了评估软件过程和产品质量的度量度量。利用此度量。利用此度量对软件过程和产品做出推断和控制。对软件过程和产品做出推断和控制。5 优化级优化级系统地引导新理念及技术的反馈,从而不断改进软件系统地引导新理念及技术的反馈,从而不断改进软件过程。过程。5 5个成熟度等级在软件过程中的特点个成熟度等级在软件过程中的特点路漫漫其悠远路漫漫其悠远锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂锲而不舍,金石可镂五级成熟度的特性五级成熟度的特性n n等级等级1 初始级初始级CMM1杰出的主管和优秀的队伍杰出的主管和优秀的队伍项目成功项目成功 CMM1一般的主管和队伍一般的主管和队伍项目成功难以预测项目成功难以预测 等级等级2 重复级重复级项目经验项目经验定义准则定义准则和跟踪和跟踪新的类新的类似项目似项目再成功再成功
展开阅读全文