您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 软件质量保证和管理Ch2-软件质量
Zhu.Kerry@gmail.com作者软件质量保证和管理-Ch.2软件质量Zhu.Kerry@gmail.comKerryZhuZhu.Kerry@gmail.com第1章回顾1.1质量概念,质量属性1.2客户内部客户,外部客户,客户识别,户与质量的关系1.3不同的质量观点1.4质量概念的发展1.5质量形成过程1.6质量管理的发展历程Zhu.Kerry@gmail.com第2章软件质量2.1软件特点2.2软件过程2.3软件缺陷2.4软件质量2.5软件质量的内容Zhu.Kerry@gmail.com软硬件特征比较特征软件硬件存在形式虚拟、动态固化、稳定客户需求不确定性相对清楚度量性非常困难正常生产过程逻辑性强流水线、工序逻辑关系复杂清楚接口复杂多数简单、适中维护复杂、新的需求、可以不断打补丁多数简单、适中、没有新的需求Zhu.Kerry@gmail.com软、硬件开发过程比较软件硬件54-56%质量缺陷来自需求不清楚需求分析调研分析质量控制的主要阶段之一25%质量缺陷来自设计和编程设计、编程设计阶段质量控制的主要阶段之一测试设计审查发布设计完成这里不是软件质量管理的主要阶段软件拷贝制造、检验生产的主要过程,质量控制的重点不仅支持原有功能,解决以前就存在的问题,而且增加新特性、加强新功能维护维修支持原有功能,解决运行中出现的问题,一般比较容易预测Zhu.Kerry@gmail.com2.2软件过程2.2.1软件开发的基本过程2.2.2软件开发过程模型2.2.3V模型的完整诠释2.2.4敏捷方法之极限编程2.2.5阶段性开发模型Zhu.Kerry@gmail.com2.2.1软件开发的基本过程①需求分析:根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。②设计:根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。③编程:将设计转换成计算机可读的形式。④测试:对设计、编程进行验证和用户需求确认的过程⑤维护:维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。Zhu.Kerry@gmail.com2.2.2软件开发过程模型瀑布模型原型模型快速应用开发(RAD)模型改进的V模型螺旋模型增量模型和迭代模型构件组装模型并发模型Rational统一过程模型和UMLXP模型协议开发—形式描述技术FDTZhu.Kerry@gmail.com2.2.3V模型的完整诠释分析/设计复审(静态测试)检验、动态测试黑盒方法测试灰盒方法测试白盒方法测试测试目标测试计划系统测试设计和环境功能测试用例设计工程师、技术人员客户、市场、产品人员需求分析定义系统、结构设计详细或程序设计编码单元测试功能测试系统测试验收测试确认需求技术实现Zhu.Kerry@gmail.com2.2.4敏捷方法之极限编程最简单的可能就是最有效的极限编程适合小团队(2-10programmers)“高风险”快速变化或不稳定的需求强调可测试性格言“沟通、简化、反馈、激励”KentBeckXP-eXtremeProgrammingZhu.Kerry@gmail.comXP基本思想和原则个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划•最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。•敏捷过程提倡可持续的开发速度,责任人、开发者和用户应该能够保持一个长期稳定的开发速度。•即使到了开发的后期,需求改变还是受欢迎。•每隔一定时间,团队会进行反省,然后相应地对自己的行为进行调整。•……Zhu.Kerry@gmail.comXP生命周期用户案例系统架构发布计划迭代验收测试小版本发布试探需求测试场景系统隐喻缺陷新用户案例发布计划不确定的评估确信的评估下一次反复最后版本用户认同Zhu.Kerry@gmail.com2.2.5阶段性开发模型Zhu.Kerry@gmail.com增量和迭代模型增量开发迭代开发Zhu.Kerry@gmail.comRUP模型迭代过程Zhu.Kerry@gmail.com2.3软件缺陷2.3.1什么是软件缺陷2.3.2软件缺陷的产生2.3.3软件缺陷的分类Zhu.Kerry@gmail.com2.3.1什么是软件缺陷缺点(defect)偏差(variance)谬误(fault)失败(failure)问题(problem)矛盾(inconsistency)错误(error)毛病(incident)异常(anomy)IEEE(1983)729软件缺陷一个标准的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。Zhu.Kerry@gmail.com软件缺陷表现形式软件缺陷的主要类型/现象:功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其他问题,如存取时间过长、界面不美观Zhu.Kerry@gmail.com2.3.2软件缺陷的产生项目期限的压力产品的复杂度沟通不良开发人员的疲劳、压力或受到干扰缺乏足够的知识、技能和经验不了解客户的需求缺乏动力Zhu.Kerry@gmail.com软件缺陷的产生-2①技术问题算法错误,语法错误,计算和精度问题,接口参数传递不匹配②团队工作误解、沟通不充分③软件本身文档错误、用户使用场合(userscenario),时间上不协调、或不一致性所带来的问题系统的自我恢复或数据的异地备份、灾难性恢复等问题Zhu.Kerry@gmail.com2.3.3软件缺陷的分类Zhu.Kerry@gmail.com2.4软件质量2.4.1软件质量需求的背景2.4.2软件质量需求的内容2.4.3软件质量的定义2.4.4软件质量的特性分析Zhu.Kerry@gmail.com问题出在哪里?•项目没有被很好地理解;计划不周,最终导致进度拖延。•没有充分的文档资料。•人与人的交流比写程序困难得多。•软件可靠性缺少度量的标准,质量无法保证。•软件难以维护、不易升级。Zhu.Kerry@gmail.com2.4.1软件质量需求的背景质量的需求是被绝对认可的,但质量在软件业的地位还不是十分坚固市场力量对于软件质量的影响,既有正面的,也有负面的软件越来越复杂,软件的复杂性又是软件质量(包括软件可靠性)的另一个敌人。。软件缺陷造成的质量事故数不胜数,给企业带来的损失或负面影响很大。Zhu.Kerry@gmail.com2.4.2软件质量需求的内容用户的需求能正常使用全部所需要的功能功能强大,而且界面美观、易用、好用内容健康,有益于生活和工作用户的数据安全、受保护和兼容及时得到新的产品或得到更完美的软件服务软件可靠性很高,使用软件服务没有时间障碍软件企业的需求软件质量是市场竞争的需要;高质量的软件可以大大降低“质量问题产生的成本”,增加公司的盈利;质量是进入国际市场的一个关键门坎;容易维护、移植和扩充,以扩大市场或适应环境的变化。Zhu.Kerry@gmail.com2.4.3软件质量的定义ANSI/IEEESTD729给出了软件质量定义:软件产品满足规定的和隐含的与需求能力有关的全部特征和特性:(1)软件产品质量满足用户要求的程度;(2)软件各种属性的组合程度;(3)用户对软件产品的综合反映程度;(4)软件在使用过程中满足用户要求的程度。Zhu.Kerry@gmail.com软件质量的其它定义SEI的WattsHumphrey认为软件质量是“在实用性、需求、可靠性和可维护性一致上,达到优秀的水准”1.客户满意度:使最终的软件产品能最大限度地满足客户需求的程度。2.一致性准则:在生命周期的每个阶段中,其工作产品总能保持与上一阶段工作产品的一致性,最终可追索到分配需求。3.软件质量度量:设立软件质量度量指标体系(例如:ISO-9126),并以此来度量软件产品的质量。4.过程质量观:软件的质量就是其开发过程的质量。Humphrey的质量观是“软件系统的质量取决于开发和维护它的过程的质量。”Zhu.Kerry@gmail.com软件质量范围-3AAccountability(可说明性)–用户可以基于产品或服务的描述和定义进行使用.(例如:市场需求说明书,功能设计说明书.)Availability(有效性)–产品或服务对于99.999%客户总是有效的(例如:性能测试和恢复测试)Accessibility(易用性)–对于用户,产品或服务非常容易使用并且一定是非常有用的功能.(例如:确认测试和用户可用性测试)Zhu.Kerry@gmail.comRUP软件质量的三个维度功能(Functionality):按照既定意图和要求,执行指定用例的能力。可靠性(Reliability):软件坚固性和可靠性(防故障能力,如防止崩溃、内存丢失等能力)、资源利用率、代码完整性以及技术兼容性等。健壮性和有效性有时可看成是可靠性的一部分。性能(Performance):用来衡量系统占用系统资源(CPU时间、内存)和系统响应、表现的状态Zhu.Kerry@gmail.com高质量的软件应该是相对的无产品缺陷(BugFree)或只有极少量的缺陷,它能够准时递交给用户并且所用的费用都是在预算内的并且满足客户需求,是可维护的。但是,有关质量的好坏最终评价依赖于用户的反馈。Zhu.Kerry@gmail.com2.4.4软件质量的特性分析软件系统的可靠性和性能相互关联、相互影响软件系统的安全性和可靠性是一致的。因为任何一个失效,可能造成数据的不安全Zhu.Kerry@gmail.com软件产品质量属性-功能性Functionality-可用性Usability(简单安装;轻松使用;友好界面)-可靠性Reliability(用户使用的根本)-性能Performance-容量Capacity-可测量性Scalability-可维护性Servicemanageability-兼容性Compatibility-可扩展性ExtensibilityZhu.Kerry@gmail.com软件质量特征(ISO9126)功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。易用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。可维护:与进行指定的修改所需的努力有关的一组属性。可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。其中每一个质量特征都分别与若干子特征相对应。Zhu.Kerry@gmail.com软件质量特性类图平均故障间隔时间软件质量产品质量过程质量静态质量动态质量需求说明书设计书源程序开发设备开发技术开发工具开发人员开发组织故障修复时间资源利用率完全程度简洁程度模块化程度测试数量和质量Zhu.Kerry@gmail.com用户要求与软件质量特性用户要求要求质量的定义质量特性功能·能否在有一定错误的情况下也不停止运行?·软件故障发生的频率如何?·故障期间的系统可以保存吗?·使用方便吗?完整性可靠性生存性可用性性能·需要多少资源?·是否符合需求规格?·能否回避异常状况?·是否容易与其它系统连接?效率性正确性安全性互操作性修改变更·发现软件差错后是否容易修改?·功能扩充是否简单?·能否容易地变更使用中的软件?·移植到其它系统中是否正确运行?·可否在其它系统里再利用?可维护性可扩充性灵活性可移植性再利用性管理·检验性能是否简单?·软件管理是否容易?
本文标题:软件质量保证和管理Ch2-软件质量
链接地址:https://www.777doc.com/doc-3679791 .html