




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程复习资料2014软件概念:是计算机系统中的一个重要组成部分,从系统工程的角度来看,它作为系统元素,与计算机硬件、人、数据库、过程等共同构成计算机系统。它由两部分组成,计算机程序及其相关文档。其中,计算机程序是按事先设汁的功能和性能要求执行的指令序列,文档是与程序开发、维护和使用有关的图文资料,它又可以分为系统文档,用户文档和web站点。系统文档用于描述系统的结构,用户文档针对软件产品解释如何使用系统,web站点用于下载系统信息。软件也是用户与硬件之间的接口。软件危机:软件危机是指软件在开发和维护过程中遇到的一系统严重问题,主要包含二方面的问题,一是如何开发利用软件,二是如何维护数量不断膨胀的已有软件。主要体现在软件开发进度无法预测,成本增长无法控制,软件可靠性没有保证,软件维护费用大幅上升,开发人员无限增多,软件产品无法满足用户的要求。解决办法:采用先进的开发技术和方法;使用好的软件开发工具,提高软件生产率,有良好的组织,严密的管理,各类人员相互配合共同完成任务。总之,消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。原因:(1)软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。(6)开发工具落后,生产率提高缓慢。软件的发展阶段:a.程序设计阶段(19461956)b.程序系统阶段(19561968)c.软件工程阶段(1968年以来)。软件工程定义:应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义开发发布和维护的工程或进行研究的学科。是指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念原理技术和方法进行软件的开发与维护,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件并维护它。软件工程的框架:可用一个三元组刻画,即SE=(G,P,Q),其中SE表示软件工程,G为目标,P为原则,Q为活动。目标:生产具有正确性,可用性,开销适宜的产品。活动:需求分析,设计,实现,V&V(验证与确认),支持。原则:选取适宜的开发范型,采用合适的设计方法,提供高质量的工具支持,重视开发过程的管理(工程管理)。软件的生存周期:是软件产品的一系列相关活动的整个生命期,即从形成概念开始,经过开发,交付使用,在使用中不断修改和演进,直到最终被废弃,让位于新的软件产品位置的整个时期。三个时期的基本任务:软件定义(任务:问题定义与可行性研究;需求分析)、软件开发(软件设计是技术核心,分为概要设计和详细设计;程序编码与单元测试;综合测试)、运行维护(软件维护:使软件持久地满足用户的需要)。瀑布模型:定义:规定了这些活动,并且规定了这些活动按自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。基本活动:需求分析与定义;系统与软件设计;实现和单元测试;集成和系统测试;运行和维护。特点:阶段间具有顺序性和依赖性:必须等前一阶段的工作完成之后,才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。缺点:各个阶段的划分固定,缺乏灵活性,阶段之间产生大量的文档,极大地增加了工作量;由于开发模型基本是线性的,用户只有等到过程的末期才能见到开花结果,从而增加了开发的风险;早期的错误可能要等到开发后期的测试阶段才能发现,今儿带来严重的后果。快速原型模型:定义(基本思想):基于快速开发一个满足构想的模型的想法提出来的。先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。优点:可以满足客户直接的要求,可以增量式地开发出需求规格说明,有较大的灵活性,适合软件需求不明确,设计方案有一定风险的软件项目。缺点:过程不可见,系统常常构造的不合理,可能要求特殊的工具和技术。类型:演进开发和废弃原型。计算机系统的系统元素:软件(计算机程序、数据结构、相关文档)、硬件(电子计算设备和外部机电设备)人(硬件和软件的用户)数据库(一个大型的有组织的信息集合)文档(手册、表格和其它用以描述系统使用和操作的信息)过程(定义每一种系统元素的特定使用步骤,或系统驻留的过程性环境)系统(中心)SCD环境图:定义:确定了系统所使用信息的所有外部生产者,系统所生产信息的所有外部消费者,所有通过接口交流或者执行维护和自检的实体。什么是需求分析:指开发人员要准确地理解用户的要求,进行细致的调查分析,将用户非形式化的需求陈述转化为完整的需求定义,再由需求定义转化为相应的软件需求规格说明书(即需求分析的结果)的过程。该阶段的基本任务:问题识别分析与综合,导出软件的逻辑模型编写文档软件需求层次:1.业务需求:反映了组织或客户高层次的目标要求,描述了组织的愿景。2.用户需求:描述了要求系统必须完成的任务,即用户对系统的目标要求,一般采用自然语言和直观图形相结合的方式描述。例如采用用例、文档或场景、等方式说明。3.功能需求和非功能需求:功能需求定义了开发者应提供的软件功能或服务,但不涉及这些功能或服务的实现。非功能需求则是对功能需求的补充,包括了对系统的各种限制和用户对系统的质量要求。4.系统需求:来自于系统分析和结构设计。充分描述了软件系统应具有的外部行为。各种需求的关系:所有的用户需求必须与业务需求一致。功能需求必须从用户需求中提取,以满足用户对产品的要求从而完成其任务。开发人员应根据功能需求来设计软件以实现必须的功能。功能需求从外部(用户角度)描述了软件系统所应具有的行为。 对一个复杂产品来说,软件功能需求也许只是系统需求的一个子集。非功能需求作为功能需求的补充,包括产品必须遵从的标准、规范和合约;外部接口的具体细节;性能要求;设计或实现的约束条件及质量属性。约束是指在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发者都极为重要。软件设计的目标:软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。准则:性能准则(包括对系统速度和空间的需求,例如:响应时间,吞吐量,内存)。可靠性准则(决定了对减少系统崩溃及随后所造成危害所做的努力程度。有健壮性,可靠性,可用性,容错性,保密性,安全性)成本准则、维护准则、最终用户准则。任务:是基于需求分析的结果建立各种设计模型,给出问题解决的方案。它将用户需求准确地转化成为最终的软件产品的唯一途径,在需求到实现之间起到了桥梁作用。概念:软件设计包括一套原理,概念和实践,可以指导高质量的系统或产品开发。为程序正确提供了必要的框架。软件设计的阶段和任务:从工程管理的角度,可以将软件设计分为两个阶段:概要设计阶段(概念:把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。任务:将需求转化为数据结构和软件的系统结构,要完成体系结构设计,数据设计及接口设计)和详细设计阶段(要完成过程设计,是通过对结构表示进行细化,得到软件详细的数据结构和算法)。从技术的角度,采用的方法不同会有所不同:传统的结构化方法将软件设计划分为体系结构设计、数据设计、接口设计及过程设计四部分;面向对象方法则将软件设计划分为体系结构设计、类设计数据设计、接口设计、构件级设计四部分。 创建良好设计的原则:1.分而治之:将大型复杂的问题分解为许多容易解决的小问题。(例:软件的体系结构设计和模块化设计)2.模块化:将程序划分成独立命名且可独立访问的模块,不同的模块通常具有不同的功能或职责(面向对象中,对象是模块;结构化方法中,模块是过程、函数和子程序)3.模块独立性(好的话是高内聚低耦合):概念:模块化,抽象,逐步求精和信息隐藏等概念的直接结果,也是完成有效模块设计得基本标准。软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。3.1一般用两个准则独立模块独立性,模块之间的耦合(模块之间相互连接的紧密程度的度量,之间的连接越紧密,联系越多,耦合性就越高,模块独立性就越弱)和模块的内聚(模块内部各个元素彼此结合的紧密程度的度量,模块内部各个元素之间的联系越紧密,则它的内聚性越高,相对地,他与其他模块间的耦合性就会降低,模块独立性就越强)模块类型与模块独立性间关系(耦合性紧密到松散):内容耦合,公共耦合,控制耦合,标记耦合,数据耦合,例程调用耦合,类型使用耦合,包含/引入耦合,外部耦合内聚类型与模块独立性间关系(内聚性高到低):功能内聚,层内聚,通信内聚,顺序内聚,过程内聚,时间内聚,实用程序内聚。接口设计:系统的接口设计包括用户界面设计及系统的接口设计,是由穿越边界的数据流定义的,包括三方面内容:模块或软件构件之间的接口设计;软件与其他软硬件系统之间的接口设计;软件与人之间的交互设计。处理过程设计:要决定各个模块的功能及模型的实现算法,并精确地表达这些算法。PAD图:用结构化程序设计思想表现程序逻辑结构的图形工具,由程序流程图演化而来。优点:1.PAD所表达的程序,结构清晰且结构化程度高;2.PAD的执行顺序从最左主干线的上端的节点开始,自上而下依次执行;3.由于PAD的树形特点,使他比流程图更容易在计算机上处理。HIPO图:由可视目录表(给出系统的功能分层关系)和IPO图组成(为系统的各部分提供具体地工作细节)数据字典:关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。体系结构概念:软件被分成许多模块,模块之间相互作用,组合起来就有了整体的属性,就具有了体系结构。一个程序或计算机系统的软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件、构件的外部可见属性以及它们间的相互关系。外部可见属性则是指软件构件提供的服务、性能、使用特性、错误处理、共享资源使用等。基本单位是软件构件。体系结构的结构风格:定义一个词汇表和一组约束。1.数据流风格:例管道和过滤器结构。2.调用返回风格:主程序子程序体系结构 ;面向对象风格;层次结构风格。3.数据仓库风格:如数据库系统,超文本系统,黑板系统。结构化程序设计:原则:使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑;选用的控制结构只准许有一个入口和一个出口;程序语句组成容易识别的块(Block),每块只有一个入口和一个出口;复杂结构应该用基本控制结构进行组合嵌套来实现;语言中没有的控制结构,可用一段等价的程序段模拟, 但要求该程序段在整个系统中应前后一致;严格控制GOTO语句,仅在下列情形才可使用:用一个非结构化的编程语言去实现一个结构化的构造,在某种可以改善而不是损害程序可读性的情况下。包括两个方面:1.在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。方法:以自顶向下逐步求精的方式编写程序:把模块功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种编程语言写成的程序。用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解。2.在编写程序时强调使用几种基本控制结构,通过组合嵌套,形成程序的控制结构。尽可能避免使用会使程序质量受到影响的GOTO语句。方法:使用基本控制结构构造程序 结构化设计方法的设计步骤:对DFD图进行复审,必要时修改或细化;根据数据流图确定问题的类型,针对不同的类型分别进行分析处理;由DFD映射成初始SC图;改进SC图,直至得到符合要求的结构图。软件测试的目的:从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求。 对一个软件系统,尤其是规模大、复杂性高的大型软件系统,虽经过了分析、设计和编程阶段但仍会存在错误。为了保证软件系统的质量,就要对软件系统进行检验和测试。软件测试手段有三类:动态检查、静态检查和正确性证明软件测试的定义:使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。它是帮助识别开发完成的计算机软件的正确度、完全度和质量的软件过程;是的重要子域。软件测试的基本原则:1)测试用例应该由以下两部分组成:输入数据。预期的输出结果。2)不仅要选用合理的输入数据作为测试用例,还应选用不合理的输入数据作为测试用例。3)除了检查程序是否做了它应做的工作之外,还应检查程序是否还做了它不应做的事情。4)应该长期保留所有的测试用例,直至这个程序系统被废弃不用为止。软件测试步骤:说明这些步骤的测试对象是什么?答:(1)单元测试,测试对象为单元模块(2)集成测试,测试对象为组装后的程序模块(3)确认测试,测试对象为可运行的目标软件系统(4)最后一步是系统测试,检查软件与系统中其他元素是否协调错误分类:1.按错误的影响和后果分类:微小错误,一般错误,较严重错误、严重错误,非常严重的错误,最严重的错误。2.按错误的性质和范围分类:功能错误、系统错误、加工错误、数据错误、代码错误。3.按软件生存周期阶段分类:需求错误、功能与性能、程序结构、数据错误、实现和编码错误、集成错误、系统结构错误、测试定义与测试执行错误。单元测试定义:是针对软件设计的最小单位程序模块,进行正确性检验的测试工作,是在模块源程序代码编写完成之后进行的测试。对于传统的结构化程序而言,程序单元是指程序中定义的函数或子程序,单元测试就是对函数或予程序进行的测试。对于面向对象的程序而言,程序单元是指特定的一个具体的类或相关的多个类,单元测试是对类的测试;但有时候,在一个类特别复杂时,就会把方法作为一个单元进行测试。目的:验证代码是与设计相符合的;跟踪需求和设计的实现;发现设计和需求中存在的缺陷;发现在编码过程中引入的错误。步骤:人工检查和动态执行跟踪。人工检查主要是保证代码算法的逻辑正确性、清晰性、规范性、一致性、算法高效性,并尽可能地发现程序中没有发现的错误。动态执行跟踪就是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误。环境:由于一个模块或一个方法并不是一个独立的程序,考虑测试时要同时考虑它和外界的联系,因此要用到一些辅助模块,来模拟与被测模块相联系的其他模块。这些被测试模块和与它相关的驱动模块及桩模块共同构成了测试环境。单元测试的基本内容:测试构造软件系统的模块(对象和子系统)1、模块接口:主要检查数据能否正确通过模块;属性及对应关系是否一致。2、局部数据结构:说明不正确或不一致;初始化或缺省值错误;变量名未定义或拼写错误;数据类型不相容;上溢下溢或地址错误等3、重要的执行路径:重要模块要进行基本路径测试,仔细地选择测试路径是单元测试的一项基本任务。4、错误处理:主要测试程序对错误处理的能力,应检查是否不能正确处理外部输入错误或内部处理引起的错误;对发生的错误不能正确描述的内容,难以理解;在错误处理之前,系统已经进行干预。5、边界条件:程序最容易在边界上出错,如输入输出数据的等价类边界,选择条件和循环条件的边界,复杂数据结构的边界等都应进行测试单元测试策略:1.自顶向下的单元测试策略:从最顶层的单元开始,把顶层调用的单元用桩模块代替,对顶层模块做单元测试。对下一层单元进行测试时,使用上面已测试的单元做驱动模块,并为被测模块编写新的桩模块。依次类推,直到全部单元测试结束。优点是:可以在集成测试之前为系统提供早期的集成途径。缺点是:单元测试被桩模块控制,随着单元测试的不断进行,测试过程也会变得越来越复杂。2.自底向上的单元测试策略:先对调用图的最底层单元进行测试,使用驱动模块来代替调用它的上层单元。对上一层单元进行测试时,用已经被测试过的模块做桩模块,并为被测单元编写新的驱动模块。依次类推,直到全部单元测试结束。优点是:不需要单独设计桩模块;无需依赖结构设计,可以直接从功能设计中获取测试用例,可以为系统提供早期的集成途径。缺点是:自底向上的单元测试不能和详细设计、编码同步进行。3.孤立测试:分别为每个模块单独设计桩模块和驱动模块,逐一完成所有单元模块的测试。优点是:方法简单、易操作,能够达到高覆盖率。各模块之间不存在依赖性,所以单元测试可以并行进行。缺点是:不能为集成测试提供早期的集成途径。依赖结构设计信息,需要设计多个桩模块和驱动模块,增加了额外的测试成本。4.综合测试:单元测试分析:目的是要根据可能的各种情况,确定测试内容。要确认这段代码是否在任何情况下都和期望的一致。1.模块接口测试(参数表、全局变量、文件)2.局部数据结构:3.路径测试4.错误处理测试5.边界测试。集成测试:定义:根据实际情况对程序模块采用适当的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确性检验的测试工作。目的:根据实际情况对程序模块采用适当的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确性检验的测试工作。对于传统软件来说,按集成程度不同,可以把集成测试分为 3 个层次,即模块内集成测试;子系统内集成测试;子系统间集成测试。对于面向对象的应用系统来说,按集成程度不同,可以把集成测试分为2个层次,即类内集成测试;类间集成测试。环境:硬件环境,操作系统,数据库,网络,测试工具运行,其他集成测试策略:1,基于分解的集成方式(a.一次性集成方式,优点是只要极少数的驱动和桩模块;需要的测试用例最少;方法简单;多个测试人员可以并行工作,对人力、物力资源利用率较高。缺点是一次试运行成功的可能性不大;错误定位和修改困难;有许多接口错误很容易躲过测试。b.自顶向下的增量式集成:优点是在增量式集成的过程中较早地验证了主要的控制和判断点;减少了驱动模块开发的费用;由于集成顺序和设计顺序一致,可以和设计并行进行;支持故障隔离。缺点是建立桩模块的成本较高;底层构件中的一个无法预计的需求可能会导致许多顶层构件的修改;底层构件行为的验证被推迟了;随着底层模块的不断增加,整个系统越来越复杂,导致底层模块的测试不充分,尤其是那些被复用的模块。c.自底向上的增量式集成:优点是对底层模块的行为能够早期验证;可以并行进行测试和集成,驱动模块的编写工作量远比桩模块的编写工作量小;支持故障隔离。缺点是对高层的验证被推迟到了最后,设计上的错误不能被及时发现;对于底层的一些异常很难覆盖。d.优点是集合了由顶向下和自底向上的两种集成策略的优点,且对中间层能够尽早进行比较充分的测试;而且该策略的并行度比较高。缺点是中间层如果选取不恰当,可能会有比较大的驱动模块和桩模块的工作量。)2、基于层次的集成:适用范围:有明显线性层次关系的软件系统。3.基于路径的集成:集成测试分析:1、体系结构分析:1).跟踪需求分析:从需求的跟踪实现出发,划分出系统实现上的结构层次图。2)对系统各个构件之间的依赖关系进行分析,然后据此确定集成测试的模块的大小。2、模块分析:3、接口分析:集成测试的重点是测试接口的功能性、可靠性、安全性、完整性、稳定性等多个方面。接口的划分,接口的分类,接口数据分析。4、集成测试策略的分析:主要根据被测对象选择合适的集成策略。测试用例的重要性 :测试用例是测试人员执行测试的重要参考依据。良好的测试用例具有复用的功能,在测试过程中可以重复使用。测试用例是在长期测试实践中积累起来的,组织好这些测试用例,可帮助测试者有效使用它们。测试用例的通过率是检验程序代码质量的例证,衡量程序代码的质量,量化的标准应该是测试用例的通过率和软件缺陷(bug)的数目。测试用例也是检验测试人员进度、工作量以及跟踪管理测试人员的工作效率的因素。黑盒测试(叫做功能测试或数据驱动测试或基于规格说明的测试):定义:根据产品的外部功能来规划测试,检查程序各个功能是否实现,主要的质量属性是否达到要求,其中有无错误。白盒测试:定义:基于产品内部结构来规划测试,检查程序内部操作是否按规定运行,各部分代码是否被充分覆盖。方法:把测试对象看做一个玻璃盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。主要想对程序模块进行如下的检查:1)路径覆盖测试:对程序模块的独立的执行路径尽可能多的执行测试;2)逻辑覆盖测试:对所有的逻辑判定,取“真”与取“假”的两种情况尽可能多地执行测试;3)控制流测试:在循环的边界和运行界限内执行循环体检查循环的执行状态;4)数据流测试、领域测试:测试内部数据结构的有效性 。 白盒测试用例设计方法逻辑覆盖有语句覆盖(设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。)、判定覆盖(设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。)、条件覆盖、判定/条件覆盖、条件组合覆盖及路径覆盖。软件工程为什么要强调规范化和文档化?规范化的目的是使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式。文档化是将软件的设计思想、设计过程和实现过程完整地记录下来,以便于后人的使用和维护,在开发过程中各类相关人员借助于文档进行交流和沟通。另外,在开发过程中产生的各类文档使得软件的生产过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理。在用户最终验收时可以通过对提交的文档进行技术审查和管理审查,保证软件的质量。结构化分析的主要步骤:根据用户的需求画出初始的数据流程图,写出数据字典和初始的加工处理说明(IPO图),实体关系图。以初始数据流程图为基础,从数据流程图的输出端开始回溯。在对数据流程图进行回溯的过程中可能会发现丢失的处理和数据,应将数据流程图补充完善。对软件性能指标、接口定义、设计和实现的约束条件等逐一进行分析。系统分析人员与用户一起对需求分析的结果进行复查。根据细化的需求修订开发计划。编写需求规格说明书和初始的用户手册,测试人员开始编写功能测试用的测试数据。数据流图:是描绘信息和数据从输入移动到输出的过程中所经受的变换。反映了数据在软件中流动和被处理的逻辑过程。数据流图是系统逻辑功能的图形表示,是一种极好的通信工具。包括的条目:数据流词条,数据元素词条,数据存储词条,数据加工处理词条,数据源点及终点词条。组成:外部实体(外部实体是指系统之外的人或单位,它们和本系统有信息传递关系)数据流,处理、数据存储。内聚性和耦合性的类别。作用:数据流程图描述了系统的逻辑结构,其中的四个基本图形元素的含义无法在数据流程图中详细说明,因此数据流程图需要与其他工具配合使用,数据字典就是这样的工具之一。需求工程包括哪些基本活动?各项基本活动的主要任务是什么?主要活动:获取需求。深入实际,在充分理解用户需求的基础上,获取足够多的问题领域的知识,积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。需求获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。需求分析与建模。对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。进一步对所建立的模型(原型)进行分析。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需求规格说明。对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。确认需求。以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格说明与用户达成一致。其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。需求管理。在整个需求工程过程中,贯穿了需求管理活动。需求管理主要包括跟踪和管理需求变化,支持系统的需求演进。由于客户的需要总是不断(连续)增长的,但一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件管理的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性,并进行关于变化的推理。进化需求是十分必要的。1.语句覆盖:主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。1)用例设计:(如果此时将A路径上的语句1T去掉,用例如下)XY路径15050OBDE29070OBCE2)优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。3)缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在本例中去掉了语句1T去掉,那么就少了一条测试路径。在if结构中若源代码没有给出else后面的执行分支,那么语句覆盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再如,在Do-While结构中,语句覆盖执行其中某一个条件分支。那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。2.判定覆盖1)主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。2)用例设计:XY路径19090OAE25050OBDE39070OBCE3)优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。4)缺点:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。1)分析这一段说明,列出原因和结果原因:1.售货机有零钱找2.投入1元硬币3.投入5角硬币4. 押下橙汁按钮5. 押下啤酒按钮结果:21. 售货机零钱找完灯亮22. 退还1元硬币 23. 退还5角硬币24. 送出橙汁饮料25. 送出啤酒饮料2)画出因果图。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示中间状态:11. 投入 1 元硬币且押下饮料按钮12. 押下橙汁或啤酒的按钮13. 应找 5 角零钱且售货机有零钱找14. 钱已付清3)由于 2 与 3 ,4 与 5 不能同时发生,分别加上约束条件E。4)因果图转换成判定表。5)在判定表中选择测试用例。22售货机有零钱找售货机“零钱找完”的灯亮投入1元硬币退还1元硬币找回5角硬币投入5角硬币按下橙汁按钮送出橙汁饮料按下啤酒按钮送出啤酒饮料按下按钮钱付清可找5角该找5角235423112524211214113EE软件的分类:a.系统软件:是能与计算机硬件紧密配合一起,使计算机系统各个部件,相关的软件和数据协调、高效工作的软件。B.应用软件:是在系统软件的支持下,在特定领域内开发,为特定目的服务的一类软件。C.支撑软件:亦称为工具软件,是协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具和帮助管理人员控制开发进程的工具。D.可复用软件:最初实现的典型可复用软件是各种标准函数库。范型:定义:指软件开发的模式,定义了特定的问题和应用系统开发过程中应遵循的步骤,确定用于描述问题及解决方案中各个成分的表示方式,并利用这些成分表示与问题解决相关的抽象,直接得到问题的结构,支配了设计方法编码语言、测试和检验技术的选择。分类:过程性范型(把软件视为处理流,定义成由一系列步骤构成的算法。每一步骤都是带有输入和输出的一个过程,把这些步骤串联在一起可产生贯通于整个程序的控制流)、面向对象的范型(把标识和模型化问题领域中的实体做为系统开发的起点,面向对象系统中的对象是数据抽象与过程抽象的综合)、面向进程的范型(把一个问题分解成独立执行的模块。让不只一个程序同时运行。这些进程互相配合,解决问题)、逻辑的、面向存取的、函数型的、说明型的可行性分析:1.经济可行性:主要进行成本的估算及可能取得效益的评估,确定待开发系统是否值得投资开发。讨论经济可行性,需要进行成本效益分析。其目的,是从经济角度评价开发一个新的软件项目是否可行。它首先估算新软件系统的开发成本,然后与可能取得的效益进行比较权衡。有形的效益可以用货币的时间价值、投资回收期、纯收入等指标进行度量。无形的效益主要是从性质上、心理上进行衡量。无形的效益可以被赋予货币价值,或用于支持按劝告行事。系统的经济效益等于因使用新系统而增加的收入加上使用新系统可节省的运行费用。度量效益的的方法:货币的时间价值,投资回收期,纯收入,投资回收率。2。技术可行性:是根据开发系统的功能,性能及实现系统的各种约束条件等,分析在现有的资源和技术条件下,技术风险由多大,系统是否能实现。通常包括风险分析,资源分析,技术分析。3.法律可行性:关注的是系统开发过程中可能涉及的合同,侵权,责任以及各种与法律相抵触的问题。4.用户操作可行性:要考察待开发系统的系统构架是否符合使用单位的使用环境现状和管理制度,系统的操作方式是否符合用户的技术水平和使用习惯。人工测试:包括桌面检查、走查、代码检查和同行评审技术。1.桌面检查文档的主要内容:建立小型数据字典,描述程序中数据结构、变量和寄存器的用法,建立各种交叉引用表。描述主要的路径和异常的路径。当检查程序逻辑时,可通过判定表或布尔代数方法来确定逻辑覆盖情况。当检查程序状态时,可考虑程序中的一组状态和状态迁移,来检查状态控制变量。以纯粹的功能术语来描述输入与输出。描述全部已知的限制和假定。描述全部的接口和对接口的假定。2.代码检查是以小组为单位阅读代码,使用一系列规程和缺陷检查技术,检查实际的产品,包括文档和程序代码,发现存在缺陷和缺陷的过程。3.用于代码检查的缺陷列表:数据引用缺陷、数据声明缺陷、运算缺陷、比较缺陷、控制流程缺陷、接口缺陷、输入输出缺陷、其他检查。三种方式的区别:要检查的项目也不同。桌面检查由程序员自己检查自己编写的程序,程序员在程序通过编译之后,进行单元测试设计之前,对源程序代码进行分析,对照缺陷列表进行检查,对程序推演测试数据,并补充相关的文档。目的是发现程序中的缺陷。代码检查,是以小组为单位阅读代码,使用一系列规程和缺陷检查技术,检查实际的产品,包括文档和程序代码,发现存在缺陷和缺陷的过程。走查与代码检查类似,都是以小组为单位进行的。走查的过程与代码检查的过程大体相同,但是规程稍微有所不同,采用的缺陷检查技术也不一样。走查的目的是要评价一个产品,通常针对用场景和程序逻辑。目标是发现缺陷、遗漏和矛盾的地方,改进产品,考虑可替换的实现方法。 走查除用于检查程序代码以外,还可以用于检查其他阶段的文档。走查的优点在于,一旦发现错误,通常就能在代码中对其进行精确定位,这就降低了调试(修正缺陷)的成本。另外,这个过程通常可以发现成批的错误,这样错误就可以一同得到修正。黑盒测试用例设计方法因果图:定义:描述事物的结果与其相关的原因之间的关系的图示。适用范围:1)如果在测试时必须考虑输入条件的各种组合情况时,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。2)因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。基本步骤:1)分析软件规格说明中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023公路水运工程试验检测人员考试习题及答案
- 安国市2025-2026学年八年级上学期语文期中模拟试卷
- 安徽省滁州市全椒县2023-2024学年高三上学期第二次月考历史试题及答案
- 江苏省江阴市2025-2026学年八年级上学期开学考试数学试题答案
- 河南省驻马店市汝南县2024-2025学年四年级下学期期末英语试题
- 2024-2025学年山东省淄博市周村区七年级(下)期末数学试卷(五四学制)(含答案)
- 地摊仓库出租合同范本
- 运动教练聘用合同范本
- 供暖施工付款合同范本
- 湖南建工工程合同范本
- 图表作文写作技巧与范文解析
- 中西翻译简史-研究的考试课题
- 静脉导管的维护
- 设备监理表格使用说明
- 文化创意公司章程范本
- 代谢性脑病的护理诊断与措施
- 五年级阅读理解(通用15篇)
- 2023-2024学年部编版七年级上册生物第三单元教案生物圈中的绿色植物生物学与文学 寄予植物的情怀
- 院内感染预防控制
- Unit 11 Lesson 1 课件-2023-2024学年高中英语北师大版(2019)选择性必修第四册
- 神经外科围手术期疼痛护理的现状及进展
评论
0/150
提交评论