SoftwareProjectManagement,Copyright20081SoftwareProjectManagement,Copyright20082SoftwareProjectManagement,Copyright20083发生故障的概率1硬件的可靠性变化SoftwareProjectManagement,Copyright2008时间导致:电源停电、介质信息丢失等故障浴盆曲线逻辑越来越复杂集成带来的特征交互越来越多软件的潜在缺陷SoftwareProjectManagement,Copyright2008导致:内存泄露、访问冲突、特征干扰等问题第七章第七章软件项目质量管理软件项目质量管理清华大学信息技术研究院清华大学信息技术研究院张勇张勇本章内容大纲本章内容大纲7.1质量管理基本概念7.2软件质量管理基本知识7.3软件项目质量计划7.4软件项目质量保证SoftwareProjectManagement,Copyright200877.4软件项目质量保证7.5软件项目质量控制7.6软件项目评审7.7软件质量成本7.8软件质量体系1质量的定义质量--国际标准组织对质量的定义:“反映实体满足主体明确和隐含需求的能力的特性总和”实体是指可单独描述和研究的事物,也就是有关质量工作的对象,它的内涵十分广泛,可以是活动、过程、产品(软件、硬件、服务)或者组织等。SoftwareProjectManagement,Copyright20088过程、产品(软件、硬件、服务)或者组织等。明确需求是指在标准、规范、图样、技术要求和其他文件中已做出规定的需要。隐含需求是指用户和社会对实体的期望以及公认的、不必明确的需求,需要对其加以分析研究、识别并加以确定的。2质量特性的定义质量特性:“是指实体所特有的性质,它反映实体满足需求的能力”质量是综合的概念,它要求功能、成本、服务、环境、心理等诸方面都能满足用户的需要。质量是一个动态的、相对的、变化的、发展的概念,随SoftwareProjectManagement,Copyright2008质量是一个动态的、相对的、变化的、发展的概念,随着地域、时期、使用对象、社会环境、市场竞争的变化而被赋予不同的内容和要求,而且随着社会的进步及知识创新,其内涵和要求也是不断更新、丰富的。93质量管理的定义质量管理:“确定质量方针、目标和职责并在质量体系中通过质量计划、质量控制、质量保证和质量改进使其实施的全部管理职能的所有活动”质量管理是项目管理的重要组成部分,是一个项目的范围、成本、时间等3项指标实现的重要领域。SoftwareProjectManagement,Copyright2008围、成本、时间等3项指标实现的重要领域。质量管理主要就是监控项目的可交付产品和项目执行的过程,以确保它们符合相关的要求和标准,同时确保不合格项能够按照正确方法或者预先规定的方式处理。107.1.2质量管理发展过程及影响因素以产品为中心的质量检验和统计质量控制阶段(18世纪——1950年)。以顾客为中心的质量保证阶段(1950年——1987年)。强调持续改进的质量管理阶段(1987年——现在)SoftwareProjectManagement,Copyright2008强调持续改进的质量管理阶段(1987年——现在)。全面质量管理阶段(TQM)。11检验统计质量控制质量保证质量管理全面质量管理质量管理发展阶段7.1.2质量管理发展过程及影响因素供应用户采购服务销售检验生产SoftwareProjectManagement,Copyright200812供应单位用户采购制定工艺产品研制市场研究服务产品质量循环7.1.2质量管理发展过程及影响因素产品质量SoftwareProjectManagement,Copyright200813材料方法设备测量人员环境产品质量的主要影响因素SoftwareProjectManagement,Copyright2008147.1.3全面质量管理1.系统的观点所有环节2.向用户服务的观点,用户满意是第一原则广义用户SoftwareProjectManagement,Copyright2008广义用户3.预防为主的观点,事前主动进行质量管理事后事前管结果管因素157.1.3全面质量管理AP经验教训遗留问题问题原因主要原因计划SoftwareProjectManagement,Copyright200816APCD检查执行计划质量管理的PDCA循环图7.1.4质量管理过程组质量计划:判断哪些质量标准与本项目相关,并决定如何达到这些质量标准。质量保证:开展计划所确定的系统的质量活动,确保项目实施满足要求所需的所有过程。SoftwareProjectManagement,Copyright2008保项目实施满足要求所需的所有过程。质量控制:监控项目的具体结果,判断它们是否符合质量标准,并找出消除问题的方法。177.2软件质量管理基本知识7.2.1软件质量概念7.2.2软件质量影响因素7.2.3软件度量标准7.2.4软件质量管理SoftwareProjectManagement,Copyright20087.2.5软件质量管理的实施18用户对软件质量的评价没有××功能(功能)运行速度太慢(性能)有太多的错误(故障)软件不好改动(维护)7.2.1软件质量概念SoftwareProjectManagement,Copyright2008©CopyrightXinjunMao2005•19软件不好改动(维护)界面不美观(人机界面)这个软件不好使用(易用性)……7.2.1软件质量概念ISO8402定义:“对用户在功能和性能方面需求的满足、对规定的标准和规范的遵循以及正规软件某些公认的应该具有的本质”ANSI/IEEE定义:“与软件产品满足规定的和隐含SoftwareProjectManagement,Copyright2008ANSI/IEEE定义:“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”软件质量不是绝对的,而是相对的概念,讨论软件的质量,最终将归结为定义软件的质量特性,而定义一个软件的质量,就等价于为该软件定义一系列质量特性207.2.1软件质量概念B.W.Boehm、T.R.Brown和M.Lipow于1976年首次提出软件质量模型1977年Walters和McCall提出了新的软件质量层次模型与度量SoftwareProjectManagement,Copyright2008模型与度量1994年ISO9000-3软件质量国际标准(ISO的软件质量评价模型)给出了6个软件质量特性和与其相关的21个质量子特性的明确定义21总体效用可移植性可使用性可靠性效率设备无关性自包含性准确性完备性健壮性一致性可说明性设备效率SoftwareProjectManagement,Copyright200822Boehm软件质量模型总体效用可维护性可使用性效率人性化可测试性易理解性可修改性设备效率易存取性易交流性自描述性结构性简明性易读性可扩充性McCall质量度量模型SoftwareProjectManagement,Copyright200823ISO建议的软件质量度量模型正确性可跟踪性完备性准确性容错性可容性效率SQDCSQRCSQMC一致性由各使用单位根据实际情况SoftwareProjectManagement,Copyright2008容错性简洁性模块性通用性扩充性安全性可维护性适应性连接性可用性实际情况决定软件质量特性之间的竞争在软件的质量特性与质量特性之间、质量特性与质量子特性之间存在着有利的影响和不利的影响。例如,由于效率的要求,应尽可能采用汇编语言。但是用汇编语言编制出的程序,可靠性、可移植性以及可维护性都很差。SoftwareProjectManagement,Copyright2008因此在系统设计过程中应根据具体情况对各种要素的要求进行折衷,以便得到在总体上用户和系统开发人员都满意的质量标准。质量要素之间的关系表25软件质量特性之间的竞争SoftwareProjectManagement,Copyright2008•26267.2.2软件质量影响因素人的因素软件需求测试的局限性质量管理的困难SoftwareProjectManagement,Copyright2008软件人员的传统习惯开发规范开发工具支持不够27软件复杂性的基本概念(1)规模,即总共的指令数,或源程序行数。(2)难度,通常由程序中出现的操作数的数目所决定的量来表示。(3)结构,通常用于程序结构有关的度量来表示。(4)智能度,即算法的难易程度。SoftwareProjectManagement,Copyright2008(4)智能度,即算法的难易程度。软件复杂性主要表现在程序的复杂性。程序的复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。28软件复杂性的度量方法--代码行度量法度量程序的复杂性,最简单的方法就是统计程序的源代码行数。此方法的基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的质量。SoftwareProjectManagement,Copyright200829软件复杂性的度量方法--McCabe度量法McCabe度量法是由ThomasMcCabe提出的一种基于程序控制流的复杂性度量方法。McCabe复杂性度量又称环路度量。它认为程序的复杂性很大程度上取决于程序的复杂性。单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。这种方法以图论为工具,先画出程序图,然后用SoftwareProjectManagement,Copyright2008。这种方法以图论为工具,先画出程序图,然后用该图的环路数作为程序复杂性的度量值。程序图是退化的程序流程图。也就是说,把程序流程图的每一个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧,这样得到的有向图就叫做程序图。30软件复杂性的度量方法--McCabe度量法SoftwareProjectManagement,Copyright200831软件复杂性的度量方法--McCabe度量法根据图论,在一个强连通的有向图G中,环的个数V(G)由以下公式给出:V(G)=m-n+2p其中,V(G)是有向图G中环路数,m是图G中弧数,n是图G中结点数,p是图G中强连通分量个数。在一个程序中,从程序图的入口点总能到达图中任何一个结点,因此,程序总是连通的,但不是强连通的。为了使图成为强连通图,从图的入口点到出口点加一条用虚线表示的有向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。SoftwareProjectManagement,Copyright2008向边,使图成为强连通图。这样就可以使用上式计算环路复杂性了。以图4-11所给出的例子示范,其中,结点数n=6,弧数m=9,p=1,则有V(G=m-n+2p=9-6+2=5即McCabe环复杂度度量值为5。这里选择的5个线形无关环路为(abefa),(beb),(abea),(acfa),(abcfa),其他任何环路都是这5个环路的线性组合。32McCabe度量法的缺点①对于不同种类的控制流的复杂度不能区分。②简单IF语句与循环语句的复杂性同等看待。③嵌套IF语句与简单CASE的复杂性是一样的。④模块间接口当成一个简单分支一样处理。SoftwareProjectManagement,Copyright2008⑤一个具有1000行的顺序程序与一行语句的复杂性相同。尽管McCabe复杂度度量法有许多缺点,但它容易使用,而且在选择方案和估计排错费用等方面都是很有效的。33软件可靠性定义软件可靠性定义表明了一个程序按照用户的要求和