1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件测试质量与保证,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件质量和测试的背景,2,内容提要,1.1,软件特征与软件工程,1.1.1,软件,分类,1.1.2,层次化,软件工程,1.1.3,软件范型的转变,1.1.4,现代软件开发,1.2,软件质量,1.2.1,质量,概念,1.2.2,质量运动,1.2.3,软件质量,概念,1.2.4,软件质量评价体系与标准,思考,3,1.1,软件特征与软件工程,要理解软件的含义并全面地理解软件工程,我们首先要明确软件的特征,并
2、据此知道软件与人类建造的其它事物之间的区别。,IEEE,定义对软件的定义如下:,软件是计算机程序、规程以及可能的相关文档和运行计算机系统需要的数据。软件包含计算机程序、规程、文档和软件系统运行所必需的数据四个部分。,4,软件具有与硬件完全不同的特征,软件是,开发,产生的,而不是用传统方法,制造,。,软件,不会,有像硬件一样的,磨损,。,很多软件不能通过已有,构件组装,,只能自己定义。,5,硬件、软件失效曲线图,(浴缸曲线),(锯齿曲线),结论:,软件维护比硬件维护更复杂,6,1.1.1,软件分类,当前的计算机软件分为七个大类,使得软件工程正面临持续的挑战:,系统软件,应用软件,Web,应用软件
3、工程和科学软件,嵌入式软件,产品线软件,人工智能软件,7,新的挑战也逐渐显现出来,普适计算,网络资源,开源软件,新经济,普适计算又称普存计算、普及计算(英文中叫做,pervasive computing,或者,Ubiquitous computing,)又称为环境智能,强调和环境融为一体的计算,而计算机本身则从人们的视线里消失。在普适计算的模式下,人们能够在任何时间、任何地点、以任何方式进行信息的获取与处理。,核心理念是小型、便宜、网络化的处理设备广泛分布在日常生活的各个场所,计算设备将不只依赖命令行、图形界面进行人机交互,而更依赖“自然”的交互方式,计算设备的尺寸将缩小到毫米甚至纳米级。,
4、8,新的挑战也逐渐显现出来,普适计算,网络资源,开源软件,新经济,网络资源,是利用计算机系统通过通信设备传播和网络软件管理的信息资源。,与传统的信息资源相比,网络信息资源在数量、结构、分布和传播的范围、载体形态、内涵传递手段等方面都显示出新的特点。,存储数字化,传输网络化;表现形式多样化,内容丰富;数量巨大,增长迅速;传播速度快、范围广,具有交互性;结构复杂,分布广泛;信息源复杂、无序;动态不稳定性。,9,新的挑战也逐渐显现出来,普适计算,网络资源,开源软件,新经济,开放源码软件,open-source,是一个新名词,它被定义为描述其源码可以被公众使用的软件,并且此软件的使用,修改和分发也不受
5、许可证的限制。具有质量可靠、透明度高、客户控制软件等优点。互联网的普及,将原来分散开发人员聚合在一起,只要有一个合适的基础和好的框架,他们就可以开发出产品级的工具软件从而开源成为了一种趋势。,10,新的挑战也逐渐显现出来,普适计算,网络资源,开源软件,新经济,新经济是指在经济全球化背景下,信息技术(,IT,)革命以及由信息技术革命带动的、以高新科技产业为龙头的经济。新经济是信息化带来的经济文化成果。,新经济之所以“新”,源于推动其产生与发展的原动力,信息、技术革命所具有的全新的革命意义。,同以往的任何一次技术革命不同,信息技术革命改变的不是人类对自然资源的利用方式。,11,1.1.2,层次化软
6、件工程,Fritz Bauer,在,NATO,(北大西洋公约组织)会议上给出的定义仍是我们进一步展开讨论的基础:,软件工程:是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。,美国电气和电子工程师协会(,Institute of Electrical and Electronics Engineers,,,IEEE,)给出了一个更加综合的定义:,软件工程:(,1,)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。(,2,)(,1,)中所述方法的研究。,12,软件过程、软件方法和软件工具,软件工程是一种层次化的技术,以质量
7、保证为基础。,着眼质量的理念促进过程改进,进而有更成熟的方法出现,13,软件工程的视图,抛开要工程化的实体,我们必须先回答下列问题:,要解决的问题是什么?明确问题,要用于解决该问题的实体具有什么特点?需求,如何实现该实体?其解决方案是怎样的?设计,如何建造该实体?开发与实现,采用什么方法去发现该实体设计和建造过程中产生的错误?质量监控,当该实体的用户要求修改、适应和增强时,如何支持这些活动?使用与维护,工程是对技术,实体,或社会实体的,分析、设计、建造、验证和管理,。,14,三个阶段,我们可以把与软件工程相关的工作分为三个阶段,其中的每个阶段能够回答上述的一个或多个问题:,定义阶段针对,“,做
8、什么,”,系统或信息工程、软件项目计划、需求分析,开发阶段针对,“,如何做,”,软件设计、代码生成、软件测试,维护阶段针对,“,改变,”,纠错、适应、增强、预防,15,保护性活动,还有很多,保护性活动,用来补充说明在软件工程的一般视图中的各个阶段和相关步骤,这些典型的贯穿于整个软件过程中的活动包括:,软件项目追踪和控制,正式的技术复审,软件质量保证,软件配置管理,文档的准备和产生,可复用管理,测试,风险管理,16,1.1.3,软件范型的转变,软件范型(,Software Paradigm,):软件系统组织与结构设计的工程技术。既可以指软件系统,静,态的组织与结构模型,也可以指,动,态的软件系统
9、开发与构造构成模型。,李德毅院士:软件工程学科今后的走向是,软件在网络环境下工作,、软件工程向,需求工程,倾斜、软件结构用,网络拓扑,表示、问题的形式化向着,本体描述,发展、软件在演化中生长完善。,正在进入,面向服务,的软件工程时代。,17,18,1.1.4,现代软件开发,传统软件开发和现代软件开发,(有区别:以软件危机为转折点),软件团队与软件开发人员的培养(微软),19,1.2,软件质量,有些软件开发者仍然相信软件质量是在编码之后才应该开始担心的事情。这是荒谬的,因为软件质量保证(,Software Quality Assurance,,,SQA,)是一种应用于,整个软件过程,的保护性活动
10、它包括:,一种,质量管理方法,有效的,软件工程技术,(方法和工具),在整个软件过程中采用的正式,技术复审,一种多层次的,测试策略,对软件,文档及其修改的控制,保证软件遵从,软件开发标准的规程,度量和报告机制,20,1.2.1,质量概念,软件质量评价:效率第一转变为清晰第一,我们应从以下几个方面考虑软件质量:,软件,结构方,面,内部结构清晰、易于阅读,界面友好、方便使用,功能与性能,方面,可靠的工作,足够健壮,开发,标准与文档,方面,遵守开发准则,资料齐全,三个方面相辅相成,但不同人从各自的要求出发,对软件质量标准常有不同的要求。如管理人员,用户,维护人员。,不同类型的软件也会有不同的质量要求
11、如实时控制软件,,MIS,。,质量的不同特性可能会矛盾。需要取舍和平衡。,21,1.2.2,质量运动,全面质量管理(,Total Quality Management,TQM,),一个组织以质量为中心,以全员参与为基础,目的在于通过让顾客满意、本组织所有成员及社会收益而达到永续经营的管理途径。,全面质量管理通常都包括以下,4,个步骤:,第,1,步是指一个,连续的过程改进系统,,其目标在于开发一个看的见的、可重复的和可度量的软件过程。,第,2,步只第,1,步完成之后才可启动。这一步将检查影响过程的,其它因素,,并,优化,这些因素对过程的影响。例如,软件过程可能受到高层职员流动的影响,而该影响则
12、是公司内部不断重组而引起的。一个稳定的公司组织会对软件质量的提高带来很大的帮助,所以第,2,步可以帮助管理者对公司重组方式提出建议。,前面两个步骤关注的是过程,第,3,步(或称为,“,第五感觉,”,)则关注,软件产品的用户,,它是通过检查用户使用产品的方式,而导致产品本身的,改进和潜在地改进产品的生产过程。,第,4,步将管理者的注意从当前的产品上移开并拓宽。作为一个面向商业的步骤,该步骤通过观察产品的市场用途,来寻找,产品在相关领域中的发展机会,。在软件领域,第,4,步可以被视为一种发现有利可图的新产品,或视作寻找当前计算机系统的副产品用途的努力。,22,注意:大多数公司先要做好第一步。没有成
13、熟的软件过程,后面步骤是无意义的。,23,1.2.3,软件质量概念,IEEE,关于软件质量的定义:软件质量是,系统、部件或者过程满足,规定需求,的,程度,。,系统、部件或者过程满足,顾客或者用户需要或期望,的,程度,。,该定义相对客观,强调了产品(或服务)和客户,/,社会需求的一致性。,ANSI,关于软件质量的定义:按照,ANSI,(,American National Standards Institute,,美国国家标准学会)在,1983,年的标准陈述,软件质量定义为,“,与软件产品满足规定的和隐含的需求的能力有关的特征和特性的全体,”,。具体包括,软件产品中能满足,用户给定需求的全部特性
14、的集合,,软件具有所期望的,各种属性组合,的程度,,用户,主观,得出的软件是否满足其综合期望的程度,,决定所用软件在使用中将满足其综合期望程度的,软件合成特性。,强调了软件的特性和特征,与需求的吻合程度以及综合评价值,24,6,个主要特征,我们把各类软件综合起来看,可以列出下列,6,个主要特征:,功能性,:,软件实现的功能达到要求的和隐含的用户需求以及设计规范的程度,,可靠性,:,软件在指定条件和特定时间段内维持性能的能力程度,,易使用性,:,用户使用该软件所付出的学习精力,,效率,:,在指定条件下,软件功能与所占用资源之间的比值,,可维护性,:当发现错误、运行环境改变或客户需求改变时,程序
15、能修改的容易程度,,可移植性,:,将软件从一种环境移入另一种环境的容易程度。,25,其他角度,过程质量,软件产品是如何生产出来的间接地推断软件质量,称为软件的过程质量,可以理解为一个活动序列、和与此相关的输入、输出、约束条件、实现方法、辅助工具等因素共同组成的系统。,用户满意度,软件的产品质量是最终的检验标准,而最终的检验者则是客户。,26,1.2.4,软件质量评价体系与标准,软件质量贯穿整个软件生存周期,涉及软件质量需求、软件质量度量、软件属性检测、软件质量管理技术和过程等。,软件质量保证涉及整个软件开发过程,包括监视和改善过程、确保任何经过认可的标准与步骤均可遵循,并且保证问题被发现和被处
16、理。,IEEE,给出软件质量保证的定义,软件质量保证(,SQA,)是:,一种有计划的,系统化的,行动模式,,它是为项目或者产品符合己有技术需求提供充分信任所必需的。,设计用来评价开发或者制造产品的过程的,一组活动,,与质量控制有区别。,尽局限于开发过程及技术层面,缺少进度和预算有关的活动。,软件质量控制很困难,如何进行质量评估很关键。,27,1.2.4,软件质量评价体系与标准,扩展定义:,软件质量保证是一个有系统的,有计划的,行动集合,,它是为提供软件产品的,软件开发过程与维护过程符合,其已经建立的技术,需求以,及跟上计划安排与在预算限制之内进行的管理上的需求的充分信任所必需的。,软件质量保证由各种任务构成,这些任务分别与两种不同的参与者有关:,一个是技术工作的软件工程师:技术、方法、过程。,另一个是负责软件保证的计划、监督、记录、分析及报告工作的软件质量保证小组。,28,思考,思考一下问题,用自己的语言进行描述。,谈谈自己对软件质量的理解,如何看待软件质量的地位?,怎么理解软件特征?,什么是软件工程?如何理解层次化软件工程?,现代软件开发和传统软件开发有何区别,?,






