1第六章软件质量管理首都师范大学教育技术系方海光2006年11月2回忆:项目管理知识体系的构成PMI将项目管理知识体系分为9大知识领域:1.项目集成管理2.项目范围管理3.项目时间管理4.项目成本管理5.项目质量管理6.项目人力资源管理7.项目沟通管理8.项目风险管理9.项目采购管理3项目管理知识领域与项目管理过程和过程组图解(PMBOK2000)风险管理规划项目计划实施综合变更控制项目计划开发启动范围计划范围定义活动定义范围核实范围变更控制活动排序活动工期估计进度开发进度控制资源规划成本估算成本预算成本控制质量规划组织规划质量保证质量控制人员招募团队开发沟通规划采购规划信息发布绩效报告管理收尾风险识别定性风险分析定量风险分析风险应对计划风险监测和控制询价规划询价供方选择合同管理合同收尾集成范围时间成本质量人力资源沟通风险采购4软件质量管理软件开发过程………………………5项目质量管理的概念………………19软件质量的概念……………………48软件质量管理………………………87软件质量的综合评价………………1445软件开发过程软件的含义软件=程序+文档+服务为解决软件危机,人们提出用工程化的原则及方法来组织软件开发工作,这就是软件工程的由来。在软件工程中可将软件的生存周期分为6个阶段(传统生命周期,即瀑布模型)(1)计划(Planning)(2)需求分析(RequirementAnalysis)(3)设计(Design)(4)编码(Coding)(5)测试(Testing)(6)运行与维护(RunandMaintenance)6软件开发瀑布模型7软件开发过程1.需求分析需求分析是根据客户的要求,清楚地了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。软件产品需求分析是软件开发过程的第一个环节,也是最重要的一个环节。如果需求分析做不好,下面的设计、编程做得再好,客户(用户)也不可能对开发出来的软件产品感到满意。软件产品需求分析的结果要文档化,而且这类文档的描述尽量不要用专业术语,从而使用户能够完全理解需求分析的结果,参与对其复审的过程。8软件开发过程2.设计软件设计是根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等。可以分为概要设计和详细设计,也可以分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、算法设计、界面设计等。设计过程将需求转换成软件表示,设计的结果将作为编码的框架和依据,以提高编码的效率和质量。设计的文档化体现在产品规格说明书(functionalspecification)、技术设计文档(developmentdesigndocument)和软件配置文档(softwareconfigurationdocument)。9软件开发过程3.编程经过需求分析、设计之后,接下来就是用一种或多种具体的编程工具(如VS.Net,JBuild、Eclipse、Delphi、PB等)进行编码,即将设计转换成计算机可读的形式。如果设计做得好、做得仔细,编程就容易了。4.测试任何编程,免不了存在这样或那样的错误,所以有必要进行软件测试。测试过程集中于软件的内部逻辑——保证所有语句都测试到,以及外部功能——即引导测试去发现错误,并保证定义好的输入能够产生与预期结果相同的输出。测试按不同的过程阶段分为单元测试、集成测试、功能测试、系统测试、验证测试等。10软件开发过程5.维护从理论上,软件测试的覆盖率不可能做到百分之百,所以软件在交付给用户之后有可能存在某些问题,而且用户的需求会发生变化,特别是开始使用产品之后,对计算机系统有了真正的认识和了解,会提出适用性更好的、功能增强的要求。所以,软件交付之后不可避免地要进行修改、升级等。软件维护复杂、周期长,其成本必然很高。通过提高软件的需求分析、设计和编程的质量,强化软件测试,可以大幅度降低软件的维护成本。11软件开发过程软件开发模式软件开发模式是指从最初构想到公开交付发行软件的过程。大棒模式或边写边改模式瀑布模式原型模式快速应用(RAD)模式螺旋模式增量模式和跌代模式12大棒模式或边写边改模式大棒模式优点是简单。几乎无计划。项目成员精力都花在开发软件和编写代码上。最终的软件产品是什么样不可知。边写边改模式在大棒模式的基础上考虑了产品的要求。项目成员通常只有粗略的想法就进行简单的设计,然后开始漫长的编码、测试、修复。13大棒模式或边写边改模式探索测试如果采用大棒模式或者边写边改模式,就不会有作为测试依据的各类文档。尽管这对于软件测试员不是理想的状况,但是此时可以采用称为探索测试的解决方案。这需要把软件当产品说明书来对待。分步骤地逐项探索软件特性。记录软件执行情况,详细描述功能。在这种情况下,无法像有产品说明书那样完整测试软件--比如无法判定是否遗漏功能,但是可以进行系统测试。找到软件缺陷。另外,与同类型软件进行比较也是一个有效的方法。14软件开发模式-原型模型在进行了基本需求分析之后,快速开发出产品的原型,然后基于这个原型,同客户沟通、交流,更好地了解客户需求,不断修改这个原型,到了双方认可的程度,再做详细地分析、设计和编程,最终开发出令客户满意的产品。一般步骤如下:(1)先定义软件的总体目标,根据已知的需求来规划出可实现的区域。(2)然后是“快速设计”,集中于系统的总体框架、基本功能和直观的输入方式和输出格式等。(3)有了原型,使客户对系统实现哪些具体功能、功能实现到什么程度有更好的理解。开发者可以边开发边评估,不断细化软件的需求,逐步调整原型使其满足客户的要求。这形成一个迭代的过程。15原型模型即使开始建立的原型过于简单或性能很差,难以使用,但为下一次建立适用的模型积累了经验,而浪费的成本、时间有限。原型模型的优点是使用户能够感受到实际的系统,使开发者能够快速地构造出系统的框架。原型模型的缺点是产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作。16RAD模型RAD模型RAD(rapapplicationdevelopment)模型,即快速应用开发模型。由于其模型构图形似字母“V”,故也称V模型,是属于线性顺序一类的软件开发模型。它通过使用基于构件的开发方法来缩短产品开发的周期,提高开发的速度。RAD模型实现的前提是能做好需求分析,并且项目范围明确,这一点正好和原型模型相反。17螺旋模型螺旋模型,最早是由Boehm提出来的,是一个演化软件过程模型,它将原型的迭代特征与线性顺序模型中控制和系统化方面结合起来,使得软件增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在早期的迭代中,发布的增量可能是一个纸上的模型或原型;在以后的迭代中,更加完善的被开发系统版本逐步产生。18增量模式和跌代模式软件开发分阶段可以通过两种模型来描述,即增量模型和迭代模型。增量模型描述软件产品的不同阶段是按产品所具有的功能进行划分,先开发主要功能或用户最需要的功能,然后,随着时间推进,不断增加新的辅助功能或次要功能,最终开发出一个强大的、功能完善的、高质量的、稳定的产品。迭代模型描述软件产品的不同阶段是按产品深度或细化的程度来划分。先将产品的整个框架都建立起来,在系统的初期,已经具有用户所需求的全部功能。然后,随着时间推进,不断细化已有的功能或完善已有功能,这个过程好像是一个迭代的过程。最终的目标是一致的,也是为了实现一个强大的、功能完善的、高质量的、稳定的产品。19项目质量管理的概念产品:过程的结果四类:硬件:有形产品,有计数的特性;服务:无形的,并且是在供方和顾客接触面上至少需要完成一项活动的结果软件:由信息组成,通常是无形产品并可以方法\论文或程序的形式存在.流程性材料:有形产品,有一定的连续性.20质量的定义ISO8402-1994《质量管理和质量保证术语》中对质量所下的定义是:质量是反映实体(产品、过程或活动等)满足明确和隐含需要的能力的特性总和。21实体(entity,item):“可单独描述和研究的事物”,实体可以是活动或过程,可以是产品,可以是组织、体系或人,也可以是上述各项的任何组合。需求(requirements):包括“明确需要”和“隐含需要”。22为使“需求”可以实际运用,一般应将其转化为质量要求。所谓质量要求,是指“对需要的表述或将需要转化为一组对实体特性的定量或定性的规定要求,以使其实现并进行考核”。23质量不仅包括活动或过程的结果,还包括它们形成和实现的活动及过程本身;质量不仅包括产品质量,还包括它们形成和实现过程中的工作质量;质量不仅要满足顾客的需要,还要满足社会的需要,并使顾客、从业人员、业主、供方和社会都收益;(stakeholder,受益者)质量问题不仅存在于工业,还存在于服务业及其他各行各业。产品质量服务质量过程质量工作质量质量24产品质量产品质量是指产品能够满足使用要求所具备的特性。一般包括性能、寿命、可靠性、安全性、经济性以及外观质量等。产品质量的概念,在不同历史时期有不同的要求。随着生产力发展水平不同和由于各种因素的制约,人们对产品质量会提出不同的要求。产品质量服务质量过程质量工作质量质量25服务质量服务质量是指服务满足明确和隐含需要的能力的特性总和。定义中的服务,主要指服务性行业提供的服务,如交通运输、邮电、商业、金融保险、饮食、宾馆、医疗卫生、文化娱乐、仓储、咨询、法律等组织提供的服务。由于服务含义的延伸,有时也包括工业产品的售前、售中和售后服务,以及企业内部上道工序对下道工序的服务。反映服务质量要求的质量特性主要有功能性、经济性、安全性、时间性、舒适性和文明性。产品质量服务质量过程质量工作质量质量26过程质量过程是指“将输入转化为输出的一组彼此相关的资源和活动”。其中资源可包括人员、资金、设施、设备、技术和方法。过程质量,是指过程满足明确和隐含需要的能力的特性之总和。过程质量,可分为开发设计过程质量、制造过程质量、使用过程质量与服务过程质量四个子过程的质量。产品质量服务质量过程质量工作质量质量27工作质量工作质量,是指与质量有关的各项工作对产品质量、服务质量、过程质量的保证程度。产品质量服务质量过程质量工作质量质量28质量特性的概念:•质量特性:产品或服务满足人们明确或隐含需求的能力、属性和特征的总和。29质量内涵:–内在质量特性:在产品或服务的持续使用中体现出来的特性(产品的特性、性能、强度、精度等)–外在质量特性:在产品或服务外在表现方面的属性和特性(产品外形、包装、色泽、味道等)–经济质量特性:与产品或服务的购买和使用成本有关的特性(产品的寿命、成本、价格、运营费等)–商业质量特性:与产品或服务提供企业承诺的各种商业责任有关的特性(产品的保质期、保修期、售后服务水平等)–环保质量特性:与产品或服务对环境的影响有关的特性30质量的决定因素:一件产品或一项服务能否成功地完成它预定的使命取决于四个主要因素,它们是:(1)设计质量:设计人员对产品或服务的一些性能所做出的接受或拒绝的选择。(2)质量符合设计的程度:产品或服务符合(即实现)设计人员意图的程度。(3)便于使用。(4)售后服务。31戴明:W.E.Deming戴明总结出14条质量管理原则,他认为一个公司要想使其产品达到规定的质量水平必须遵循这些原则。主要观点是引起效率低下和不良质量的原因在公司的管理系统而不在职员。部门经理的责任就是要不断调整管理系统以取得预期的结果。戴明还强调了减少质量波动(与一定标准之间的偏差)的必要性。要减少质量波动,就需要辨别引起波动的特殊原因(即可纠正的原因)和共同原因(即随机原因)。质量管理专家—戴明32戴明14条原则的核心:目标不变、持续改善和知识渊博;知识渊博包括(1)以所在公司为荣;(2)掌握质量波动的原理;(3)知识体系;(4)心理学原理;戴明知识渊博的概念使得日本成为世界经济强国的好学信条和价值观具体化了戴明14条原则的核心33朱兰:J