软件质量.ppt_第1页
软件质量.ppt_第2页
软件质量.ppt_第3页
软件质量.ppt_第4页
软件质量.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件质量保证和管理 - Ch.2 软件质量,第1章 回顾,1.1 质量 质量就是产品或工作的优劣程度,换句话说,质量就是衡量产品的或工作的好坏。,质量属性,质量的内涵是由一组满足客户及其他相关方所要求的固有特性组成,包括内在特性和外在特性 质量的客户属性,质量是相对客户而存在,也是质量相对性的一种体现。 质量的成本属性,也可以称为质量的经济性,质量越好的产品,带给社会的损失就越小 。 社会属性,质量很多时候体现的是一种理念,是哲学而不仅仅是方法,它与社会的价值观有直接的关系。 可测性。产品的质量好坏将取决对相应特征的衡量,质量的可测性决定了质量的可控特性。 质量的可预见性:可以预测质量在不同过程中的结果 。,1.2 客户,外部客户,不是组织内部的组成部分,但是受本组织活动影响的个人和组织。外部客户是在传统意义上大家所认知的客户 内部客户,指组织内部的部门和员工,组织内部某一方向对方提供产品或服务,“对方”就被视为内部客户 内部客户又分为4种,即职级客户、职能客户、工序客户和流程客户,客户与质量的关系,质量是相对客户而存在的,客户与质量的基本关系是相互依赖的关系,质量服务于客户,因客户存在而存在,而且质量由客户判定。 客户是质量的接受者,可以直接观察或感觉到质量的存在。,1.3 不同的质量观点,客观的/协调的:客观地认为质量是一个合理的工程过程。质量是和“开发过程的详细阐述和严格控制”联系在一起的, “质量是产品属性”的观点。 客观的/矛盾的:不仅明白“质量是客观的”,而且理解“质量属性之间总是存在冲突的矛盾的存在”,于是认为不可能满足所有的质量需求,而只能满足主要的需求。 主观的/一致的:认为质量关系到团体的结构,要解决许多不同团体的不同的观点和兴趣。最终的结果反映了不同观点的一致意见。 主观的/矛盾的:假定会有冲突和功能上的限制,需构造质量的新思路,以满足多的兴趣而忽视少数的部分功能。这一点更像一种协调而不是意见统一。,1.4 质量概念的发展,第一层次, “符合性质量” :能够满足国家或行业标准、产品规范的要求,最初的质量观念 第二层次, “适用性质量” :让客户满意,不仅满足标准、规范的要求,而且满足客户的其他要求 第三层次, “广义质量 “:不仅要让客户满意,还要让客户愉快,也就是,想在客户的前面,超出客户的希望,第 2章 软件质量,软件质量是低缺陷率、软件功能忠实于用户需求、高可靠性的组合。 2.1 软件特点 2.2 软件过程 2.3 软件缺陷 2.4 软件质量 2.5 软件质量的内容,2.1 软件特点,硬件是可以直观感觉到、触摸到的物理产品。硬件在生产时,人的创造性的过程(设计、制作、测试)可以完全转换成物理的形式。 软件是相对硬件而相对存在,是逻辑的、知识性的产品集合,是对物理世界的一种抽象,或者是某种物理形态的虚拟化。软件是由开发或工程化完成,不是传统方式生产的,而且大多数软件是自定义的,不是通过已有的“零件”组装成的,因此,软件具有与硬件完全不同的特征。,软硬件特征比较,软、硬件开发过程比较,软件的开发过程,相对传统行业(硬件制造)来说,实际上只是一个设计的过程,可以通过比较分析过程来进一步说明。,2.2 软件过程,2.2.1 软件开发的基本过程 2.2.2 软件开发过程模型 2.2.3 V模型的完整诠释 2.2.4 敏捷方法之极限编程 2.2.5 阶段性开发模型,软件的开发过程不同于传统的制造业,具有其自身的过程特点,通过V模型(作者完善的)可以介绍软件过程特点,并通过敏捷开发来进一步介绍开发人员和软件开发过程的关系,从而更好理解提高软件质量的根本路径。,2.2.1 软件开发的基本过程,需求分析: 根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。 设计: 根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。 编程: 将设计转换成计算机可读的形式。 测试: 对设计、编程进行验证和用户需求确认的过程 维护:维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。,2.2.2 软件开发过程模型,模型是对事物的一种抽象,人们常常在正式建造实物之前,首先建立一个简化的模型,以便更透彻地了解它的本质,抓住问题的要害。在模型中,先要剔除那些问题无关的、非本质的东西,从而使模型与真实的实体相比更加简单明了、易于把握。总的来说,使用模型可以使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止人们过早地陷入各个模块的细节。 经过软件领域的专家和学者不断努力,从早期的瀑布模型到现在的极限编程模型、Rational统一过程模型(RUP)、微软公司的MSF过程模型等,各种软件过程模型不断被退出。,2.2.2 软件开发过程模型,瀑布模型 原型模型 快速应用开发(RAD)模型 改进的V模型 螺旋模型 增量模型和迭代模型 构件组装模型 并发模型 Rational统一过程模型和UML XP模型 协议开发 形式描述技术FDT,2.2.3 V模型的完整诠释,从水平对应关系看,左边是设计和分析,是软件设计实现的过程,同时伴随着质量保证活动审核的过程,也就是静态的测试过程;右边是对左边结果的验证,是动态测试的过程,即对设计和分析的结果进行测试,以确认是否满足用户的需求。 通过V模型能清楚地看到质量保证活动和项目同时展开。项目一启动,软件测试的工作也就启动了,V模型避免了瀑布模型所带来的误区软件测试是在代码完成之后进行。,从垂直对应关系看,水平虚线上部表明,其需求分析、定义和验收测试等主要工作是面向用户,要和用户进行充分的沟通和交流,或者是和用户一起完成。水平虚线下部的大部分工作,相对来说,都是技术工作,在开发组织内部进行,主要是由工程师、技术人员完成。 从垂直方向看,越在下面,白盒测试方法使用越多,到了集成、系统测试,更多是将白盒测试方法和黑盒测试方法结合起来使用,形成灰盒测试方法。而在验收测试过程中,由于用户一般要参与,所以使用黑盒测试方法。,2.2.4 敏捷方法之极限编程,最简单的可能就是最有效的 极限编程适合 小团队 (2-10 programmers) “高风险” 快速变化或不稳定的需求 强调可测试性 格言 “沟通、简化、反馈、激励”,Kent Beck,XP-eXtreme Programming,极限编程XP基本思想和原则,个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划,最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。 敏捷过程提倡可持续的开发速度,责任人、开发者和用户应该能够保持一个长期稳定的开发速度。 即使到了开发的后期,需求改变还是受欢迎。 每隔一定时间,团队会进行反省,然后相应地对自己的行为进行调整。 ,极限编程(XP)生命周期,极限编程是敏捷方法的代表,并包括可测试驱动的开发思想。测试驱动型开发,在XP被称之为“测试第一的开发”,而在RUP过程中又被称为“测试第一的设计”。极限编程强调下列基本观点,模型如图,(1)客户作为团队成员。 (2)用户素材 (3)短交付周期 (4)验收测试 (5)结对编程 (6)测试驱动开发 (7)集体所有权 (8)持续集成 (9)可持续的开发速度 (10)开放的工作空间 (11)计划博弈 (12)重构 (13)隐喻,2.2.5 阶段性开发模型 1、软件开发分阶段的必要性,原因如下 市场的压力和竞争策略的需要,是市场策略和产品功能之间平衡所要求的。较早地、不失时机地占领市场对软件企业是很重要的,不能等到一个完美的软件产品被开发出来。 产品的开发预算是有限的,产品的开发周期和资源会受到预算的限制。 软件的复杂程度不断提高,增加了项目失败的可能性,将一个产品进行分阶段处理,可以尽早发现产品的市场问题或方向错误,降低风险。 软件的复杂程度不断提高,使系统的分析和设计变得非常困难。对于越来越复杂、庞大的系统,多数情况下不容易一次性整体实现,而是通过分解逐步实现。,软件在实际开发过程中是按阶段进行,逐步完善或深化系统的功能,如图所示,2、分阶段开发的基本模型,(1)增量模型描述软件产品的不同阶段是按产品所具有的功能进行划分,先开发主要功能或用户最重要的功能,然后随着时间推进,不断增加新的辅助功能或次要功能,最终开发出一个功能完善的、稳定的产品 (2)迭代模型描述软件产品的不同阶段是按产品深度或细化的程度来划分,现将产品的整个框架都建立起来,在系统的初期,已经具有用户所需求的全部功能。然后,随着时间推进,不断细化已有的功能或完善已有的功能,这个过程是一个迭代的过程,如图所示,增量和迭代模型,3、分阶段开发的其他形式,实际上,分阶段软件开发在上述的极限编程思想中得到很好的体现,对阶段的划分更细,由两周一次的小版本软件发布到为期3个月的大版本发布,形成多层迭代的过程,也可以说是多层迭代的增量过程,即迭代过程和增量过程的自然融合。 迭代模型在IBMRational统一过程(RUP)中也得到另外一种诠释,软件产品经过先启、精华、构建和产品化这一大迭代的过程。在“精化、构建和产品”每一个阶段中,又包含着几次小的迭代过程。当然,在RUP中,迭代的内容丰富了,不仅是用户的需求、业务建模和产品的功能设计等,而且还包括实施、部署、配置管理、变更管理、环境等,如图所示。,RUP模型迭代过程,2.3 软件缺陷,2.3.1 什么是软件缺陷 2.3.2 软件缺陷的产生 2.3.3 软件缺陷的分类,2.3.1 什么是软件缺陷 1、软件缺陷的定义,软件缺陷,常常又被叫做Bug(臭虫)。软件缺陷是计算机系统或者程序中存在的任何一种破坏正常运行能力的问题或错误,或者隐藏的功能缺陷或瑕疵。缺陷会导致软件产品在某种程度上不能满足用户的需要。,2.3.1 什么是软件缺陷,缺点(defect) 偏差 (variance) 谬误(fault) 失败 (failure) 问题(problem) 矛盾(inconsistency) 错误(error ) 毛病 (incident ) 异常(anomy),IEEE (1983) 729 软件缺陷一个标准的定义: 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题; 从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。,2、软件缺陷的类型,软件缺陷表现形式有多种,不仅仅体现在功能的失效方面,还体现在其他方面, 软件缺陷的主要类型/现象: 功能、特性没有实现或部分实现 设计不合理,存在缺陷 实际结果和预期结果不一致 运行出错,包括运行中断、系统崩溃、界面混乱 数据结果不正确、精度不够 用户不能接受的其他问题,如存取时间过长、界面不美观 硬件或系统软件上存在的其他问题。,3、软件错误,软件缺陷是一个更广的概念,而软件错误属于缺陷的一种内部缺陷,往往是软件本身的问题,如程序的算法错误、语法错误或数据计算不正确、数据溢出等,部分软件错误如下。 数组和变量初始化错误或赋值错误。 算法错误。在给定的条件下没能给出正确或准确的结果 语法错误。一般情况下,对应的结果没有满足所需要的精度,系统结构不合理,算法不科学,造成系统性能低下 接口参数传递不匹配,导致模块集成出现问题 文字显示内容不正确或拼写错误 输出格式不对或不美观等 但软件错误往往导致系统某项功能的失效,或成为系统使用的故障。,2.3.2 软件缺陷的产生,软件错误产生的原因可能还有其他一些,如软件设计文档不清楚,文档本身就存在错误,导致是使用者产生更多的错误。还有沟通上的问题、开发人员的态度问题以及项目管理问题等。主要 原因如下: 项目期限的压力 产品的复杂度 沟通不良 开发人员的疲劳、压力或受到干扰 缺乏足够的知识、技能和经验 不了解客户的需求 缺乏动力,软件缺陷的产生 - 2,技术问题 算法错误,语法错误,计算和精度问题,接口参数传递不匹配 团队工作 误解、沟通不充分 软件本身 文档错误、用户使用场合(user scenario), 时间上不协调、或不一致性所带来的问题 系统的自我恢复或数据的异地备份、灾难性恢复等问题,2.3.3 软件缺陷的分类,软件产品规格说明书为什么是软件缺陷存在最多的地方,主要原因如下: 用户一般是非计算机专业人员,软件开发人员和用户的沟通存在较大的困难,对要开发的产品功能理解不一致。 由于软件产品还没有设计、开发,完全靠想象去描述系统的实现结果,所有有些特性还不够清楚。 用户的需求总是在不断变化的,容易引起前后文、上下文的矛盾和需求描述的不一致。,需求分析没有得到足够重视。在规格说明书设计和写作上投入的人力、时间不足。 没有再整个开发队伍中进行充分沟通,有时只有设计师或项目经理得到比较多的信息。,如果从软件开发各个阶段所能发现的软件缺陷分布来看,也主要集中在需求分析,系统设计阶段,代码阶段的错误要比前两个阶段少,如图所示。,2.4 软件质量,2.4.1 软件质量需求的背景 2.4.2 软件质量需求的内容 2.4.3 软件质量的定义 2.4.4 软件质量的特性分析,问题出在哪里?,项目没有被很好地理解;计划不周,最终导致进度拖延。 没有充分的文档资料。 人与人的交流比写程序困难得多。 软件可靠性缺少度量的标准,质量无法保证。 软件难以维护、不易升级。,2.4.1 软件质量需求的背景,质量的需求是被绝对认可的,但质量在软件业的地位还不是十分坚固 市场力量对于软件质量的影响,既有正面的,也有负面的 软件越来越复杂,软件的复杂性又是软件质量(包括软件可靠性)的另一个敌人。 。 软件缺陷造成的质量事故数不胜数,给企业带来的损失或负面影响很大 。,2.4.2 软件质量需求的内容,软件质量的需求,不仅要满足用户的需求,还要降低复杂性,满足可靠性要求,保证具有良好的可维护性。 1、用户的需求 满足用户的需求,软件的所有的功能正是用户所需要的 无缺陷或用户可接受的非常低的缺陷率 功能强大,而且界面美观、易用、好用 软件界面美观,内容健康,有益于生活和工作 用户的数据安全、受保护和兼容 及时得到新的产品或得到更完美的软件服务 软件可靠性很高,使用软件服务没有时间障碍,2、软件企业的需求 软件质量是市场竞争的需要;质量好的软件是留住客户的最关键的手段之一,软件企业也必须依靠质量,才能立于不败之地。 高质量的软件可以大大降低“质量问题产生的成本”,增加公司的盈利; 软件已是国际化的市场,质量是进入国际市场的一个关键门坎; 容易维护、移植和扩充,以扩大市场或适应环境的变化。,2.4.3 软件质量的定义,ANSI/IEEE STD729给出了软件质量定义: 软件产品满足规定的和隐含的与需求能力有关的全部特征和特性: 软件产品质量满足用户要求的程度; 软件各种属性的组合程度; 用户对软件产品的综合反映程度; 软件在使用过程中满足用户要求的程度。,软件质量的其它定义,SEI的Watts Humphrey认为软件质量是“在实用性、需求、可靠性和可维护性一致上,达到优秀的水准”,客户满意度:使最终的软件产品能最大限度地满足客户需求的程度。 一致性准则:在生命周期的每个阶段中,其工作产品总能保持与上一阶段工作产品的一致性,最终可追索到分配需求。 软件质量度量:设立软件质量度量指标体系(例如:ISO9126),并以此来度量软件产品的质量。 过程质量观:软件的质量就是其开发过程的质量。Humphrey 的质量观是“软件系统的质量取决于开发和维护它的过程的质量。”,软件质量范围- 3A,3A特性 Accountability (可说明性) 用户可以基于产品或服务的描述和定义进行使用. (例如: 市场需求说明书, 功能设计说明书.) Availability (有效性) 产品或服务对于99.999% 客户总是有效的 (例如: 性能测试和恢复测试) Accessibility (易用性) 对于用户, 产品或服务非常容易使用并且一定是非常有用的功能 . (例如: 确认测试和用户可用性测试),RUP 软件质量的三个维度,功能(Functionality):按照既定意图和要求,执行指定用例的能力。 可靠性(Reliability ):软件坚固性和可靠性(防故障能力,如防止崩溃、内存丢失等能力)、资源利用率、代码完整性以及技术兼容性等。健壮性和有效性有时可看成是可靠性的一部分。 性能(Performance):用来衡量系统占用系统资源(CPU时间、内存)和系统响应、表现的状态,高质量的软件,应该是相对的无产品缺陷(Bug Free)或只有极少量的缺陷, 它能够准时递交给用户并且所用的费用都是在预算内的并且满足客户需求,是可维护的。但是, 有关质量的好坏最终评价依赖于用户的反馈。,2.4.4 软件质量的特性分析,软件系统的可靠性和性能相互关联、相互影响。高可靠性可能降低性能,如数据的备份、重复计算等可以提高软件系统的可靠性,但在一定程度上降低了系统的性能。又如一些协同工作的关键流程要求快速处理,达到高性能,而这些关键流程可能是单点失效设计,其可靠性是不够的。 软件系统的安全性和可靠性是一致的。因为任何一个失效,可能造成数据的不安全 总之,对软件系统的设计,不仅要考虑功能、性能和可靠性等的要求,而且在可靠性、安全性、性能、适用性等软件质量特性方面达到平衡也是非常重要的。,软件产品质量属性,3个基本属性“可说明性、有效性、易用性”或“功能、可靠性和性能”是不够的。前5项对客户重要,后4项对软件开发组织重要。 - 功能性 Functionality - 可用性 Usability (简单安装; 轻松使用; 友好界面) - 可靠性 Reliability (用户使用的根本) - 性能 Performance - 容量 Capacity - 可测量性 Scalability - 可维护性 Service manageability - 兼容性 Compatibility - 可扩展性 Extensibility,软件质量特征 ( 1991年ISO发布ISO9126),功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。 可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。 易用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。 效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。 可维护:与进行指定的修改所需的努力有关的一组属性。 可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。 其中每一个质量特征都分别与若干子特征相对应。,软件质量特性类图,软件质量特性可以从产品和过程、动态和静态去归纳分析,如图所示,用户要求与软件质量特性(从用户要求归纳),2.5 软件质量的内容,产品质量 是人们实践产物的属性和行为,是可以认识,可以科学地描述的。并且可以通过一些方法和人类活动,来改进质量. 质量模型: McCall 模型, Boehm 模型, ISO 9126 模型 过程质量: 软件能力成熟度模型 CMM ( Capability Maturity Model). 国际标准过程模型 ISO 9000 软件过程改进和能力决断 SPICE ( Software Process Improvement and Capability dEtermination) 在商业过程中有关的质量内容: 培训、成品制作、宣传、发布日起、客户、风险、成本、业务等,2.5.1 软件产品质量,产品质量是人们实践产物的属性和行为,是可以辨识的,并能进行科学的描述。可以通过一些方法和人类活动,来改进产品的质量。软件产品质量,一般体现在以下方面。 (1)功能性。软件所实现的功能达到它的设计规范和满足用户需求的程度。 (2)可用性。对于一个软件,用户学习、操作、准备输入和理解输出所作努力的程度。 (3)可靠性。用户使用的根本,在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度。,(4)性能。在指定条件下,用软件实现某种功能所需的计算机资源的有效程度。 (5)容量。系统的接受、容纳或吸收

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论