软件工程教程.ppt
,软件工程,案例课,期中考试,4.软件工程实践的一个重要原则是存在价值,是指()2分A.软件正常开发 B.软件能够稳定运行C.软件具有足够的可靠性 D.软件能够给用户提供价值参考答案:D 注:存在价值不是可靠性(单一),8.在需求分析阶段不属于数据模型的是()2分A.E-R图 B.数据字典C.数据流图 D.类图参考答案:C 注:数据流图:功能模型,9.数据流图里的数据流包括()类型。2分A.变换型和事务型 B.变换型和调度型C.调度型和事务型 D.数据型和控制型参考答案:A,期中考试,10.0层数据流图有()个数据加工。2分A.0 B.1C.2 D.多参考答案:B 注:一个数据加工:整个系统,11.数据流图的主图上的数据流必须封闭在()之间。2分A.外部实体 B.数据加工C.数据存储 D.数据流参考答案:A,14.用例图中的参与者也可以是一种分析类,它应当归为()A.实体类 B.控制类C.边界类 D.父类参考答案:A,数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡图上每个元素都必须有名字(连接数据存储的数据流除外)数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要数据流,边界类位于系统与外界的交界处,包括所有的窗体、报表、系统硬件接口、与其它系统的接口。实体类实体类保存要存入永久存储体的信息。实体类通常在事件流或交互图中,是对用户最有意义的类。控制类控制类负责协调其它类的工作。每个用例中至少应该有一个控制类,它控制用例中的事件顺序。一般地,控制类接收的消息并不多,而发出的消息比较多,因为它更多地是向其它类委托责任。,期中考试,15.不属于用例规约的组成部分的是()2分A.主要参与者 B.前置条件C.场景 D.输入参数参考答案:D 注:描述的是过程、条件、约束,无参数,16.软件的结构化设计方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是对()进行设计。2分A.软件结构 B.软件接口C.软件模型 D.软件模块参考答案:D 注:概要设计描述体系、调用关系、接口等,17.下列哪种设计相当于一个房屋中每个房间的门窗详图(以及规格说明)()。2分A.体系结构设计 B.构件级设计C.接口设计 D.数据设计参考答案:C,期中考试,20.程序流程图(框图)中的箭头代表()。2分A.数据流 B.控制流C.调用关系 D.组成关系参考答案:B 注:内接、外接,21.对体系结构的建模不使用()。2分A.构件图 B.部署图C.包图 D.用例图参考答案:D 注:用例图为功能模型,非体系结构建模,25.在顺序图中哪类消息使用带箭头的虚线表示?()。2分A.简单消息 B.反身消息C.返回消息 D.异步消息参考答案:C,期中考试,8.任意一层数据流图必须包括数据加工、数据流、外部实体和数据存储四种基本元素,缺一不可。2分参考答案:注:主图(非顶层图)四种元素缺一不可,11.E-R图中的“实体”等同于数据流图中的“外部实体”。2分参考答案:注:E-R图:数据模型,数据流图:功能模型,14.由A用例的扩展点可以扩展出B用例,则它们之间存在从A指向B的扩展关系。2分参考答案:注:方向反了,15.一个用例可以包含多个用例,反过来,一个用例也可被多个用例包含。2分参考答案:,期中考试,16.用例与用例之间可以存在关联、泛化、扩展和包含关系。2分参考答案:注:实现(关联)为参与者与用例间的使用关系,23.面向数据流的设计方法将数据流图转化为程序流程图。2分参考答案:注:概要设计:数据流图转化为体系结构图,24.顺序图中出现的所有对象框一定位于图的顶部。2分参考答案:注:临时创建的对象可以不在图的顶部,案例1:数据流图,某旅行社计划开发一个飞机订票系统。业务流程大致如下:在接收到旅客的订票请求后,旅行社工作人员将该订票请求信息输入到系统。系统接收到订票请求信息后进行预订机票处理,等待旅客付款。旅客成功付款后,系统进行出票处理,并将机票和发票交给旅客。请使用数据流图对该系统的功能进行建模。(20分),图形要素数据的源点/终点(外部项),是本软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称外部实体。一般只出现在数据流图的顶层图。即输入或输出。,命名要易于理解,如:旅行社工作人员、顾客,案例1:数据流图,图形要素加工,图形中注明加工或处理的名称和编号,加工的编号,说明该加工在层次分解中的位置(分层DFD),加工的命名 顶层的加工名就是整个系统的名称 尽量使用动宾短语,也可用主谓短语,也可因为双方的共识或上下文关联情况下省略宾语 不要使用独立且空洞的动词,采用有独立功能含义的动词,表示对数据的处理,如校验选课数据、产生课表,案例1:数据流图,图形要素数据流,不要把控制流作为数据流,数据存储,数据校验,读下一张卡,数据流不是触发条件,计算工资,每月1日,工资单,数据在系统内传播的路径,上方或下方注明名称,由一个或一组成分固定的数据组成,如订票单由顾客姓名、身份证号、航班号、出发地点、到达地点、时间等数据项组成。,由于数据流是流动中的数据,所以必须有流向,除与数据存储之间的数据流不用命名外,均应该用名词或名词短语命名。,图形要素数据存储,标识要存储的数据流向,如“学生档案”、“教师信息”等,在符号上方或下方标注,通常为名词或名词性短语,避免交叉,可多处出现。,在分层数据流图中,数据存储通常局限于某一层或某几层中,但是总体均衡,下层可能对上层的数据存储有拆分,指向数据存贮可理解为写数据、修改数据,从数据存贮引出可理解为读数据,又读又写(修改)为双向,案例1:数据流图,首先确定系统的输入和输出。仔细阅读描述识别外部用户(数据源/终点):旅行社工作人员、旅客;识别输入、输出(数据流):订票请求、付款信息、机票和发票识别数据存储:航班信息、订票数据加工:整个系统根据订票业务,画出顶层数据流图,以反映最主要业务处理流程。,飞机订票系统:在接收到旅客的订票请求后,旅行社工作人员将该订票请求信息输入到系统。系统接收到订票请求信息后进行预订机票处理,等待旅客付款。旅客成功付款后,系统进行出票处理,并将机票和发票交给旅客。,案例1:数据流图,飞机订票系统,旅行社工作人员,旅客,订票请求信息,付款信息,机票、发票,订票数据,案例1:数据流图,航班信息,根据描述,按照相对独立的功能划分,该描述只有订票一项独立功能,不再设中间层。根据描述识别每一项加工的输入输出数据流、流向、数据存储及流向。1、旅行社工作人员将该订票请求信息输入到系统。2、系统进行预订机票处理,等待旅客付款。3、旅客成功付款后,进行出票处理,发送机票和发票给旅客。然后从输入端开始,画出数据流流经的各加工框,逐步画到输出端,得到数据流图。,案例1:数据流图,飞机订票系统:在接收到旅客的订票请求后,旅行社工作人员将该订票请求信息输入到系统。系统接收到订票请求信息后进行预订机票处理,等待旅客付款。旅客成功付款后,系统进行出票处理,并将机票和发票交给旅客。,案例1:数据流图,航班信息,订票数据,1预订机票处理,旅行社工作人员,订票请求信息,2出票处理,订票信息,顾客信息,付款信息,机票、发票,检查和修改数据流图的原则,数据流图上所有图形符号只限于前述四种基本图形元素数据流图的主图必须包括前述四种基本元素,缺一不可数据流图的主图上的数据流必须封闭在外部实体之间每个加工至少有一个输入数据流和一个输出数据流在数据流图中,需按层给加工框编号。编号表明该加工所处层次及上下层的亲子关系规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致。此即父图与子图的平衡图上每个元素都必须有名字(连接数据存储的数据流除外)数据流图中不可夹带控制流初画时可以忽略琐碎的细节,以集中精力于主要数据流,案例1:数据流图,案例2:用例图,试画出网上选课系统的用例图。用例有:登录、找回密码、查看课程信息、按课程编号查询、按课程名查询、选择课程、删除已选课程、维护课程信息;参与者有系统管理员与学生。,用例需求分析,用例需求分析方法采用一种面向对象的情景分析方法用例是系统向用户提供一个有价值的结果的某项功能从用户角度出发考虑的功能需求,不反映功能的实现方式所有的用例结合起来就构成了用例模型,主要元素,参与者用例执行关联,用例图:表示参与者与系统的一次交互过程,用于描述系统需求,从用户的角度,描述系统的场景。,案例2:用例图,参与者(Actor),定义:是指外部用户或外部实体在系统中扮演的角色特征是直接与系统相互作用的系统、子系统或类的外部实体的抽象。是用户所扮演的角色,是系统的用户。每个参与者定义了一个角色集合。通常,一个参与者可以代表一个人、一个计算机子系统、硬件设备或者时间等角色。典型的参与者如销售部经理、销售员、结帐系统等 图形表示用小人图符表示,案例2:用例图,用例(Use Case),定义对一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果用例特征说明了系统具有的一种行为模式 说明了一个参与者与系统执行的一个相关的事件序列提供了一种获取系统需求的方法 提供了一种与最终的用户和领域专家进行沟通的方法 提供了一种测试系统的方法图形表示用椭圆形表示,用例名称,(用例名称),案例2:用例图,执行关联,定义:Actor 执行Use Case的关系。泛化:用例之间的is a kind of 关系,表示用例之间的场景共享;Actor之间的 is a kind of关系,一般描述职责共享。代表一般与特殊的关系。子用例表示父用例的特殊形式。子用例从父用例处继承行为和属性,还可以添加行为或覆盖、改变已继承的行为。当系统中具有一个或多个用例是较一般用例的特殊化时,就使用用例泛化。带空心箭头的实线表示,箭头的方向由子用例指向父用例。,讲师,案例2:用例图,执行关联,包含:一个用例(基本用例)可以包含另外一个用例(包含用例)。基本用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。如果两个以上用例有重复的功能,则可以将重复的功能分解到另一个用例中。其他用例可以和这个用例建立包含关系。一个用例的功能太多时,可以用包含关系创建多个子用例。虚线箭头+,箭头方向指向包含用例。,案例2:用例图,执行关联,扩展:由一个用例的扩展点可以扩展出另外一个用例。把新行为加入到已有用例的方法。有无扩展前基本用例是完整用例。为处理异常或构建灵活系统框架提供了一种有效的方法。虚线箭头+字样,箭头指向被扩展的用例(即基本用例)。,如:学生去食堂打饭,绝大部分人是两个步骤:刷卡,拿饭。但如果某人的饭卡里没钱了,还不无法用现金等其他方式。那么就要先去给饭卡充值。“饭卡充值”就是“刷卡”的一个扩展用例。“饭卡充值”与“刷卡”就是扩展关系。,案例2:用例图,执行关联,实现(关联):参与者与用例之间的使用关系。在UML中,实现关系用直线或箭头表示。如果参与者启动了用例,箭头指向用例;如果参与者利用了用例提供的服务,箭头指向参与者。如果二者是互动的,则是直线。实现关系表示参与者和用例之间的通信。不同的参与者可以访问相同的用例,一般说来它们和该用例的交互是不一样的,如果一样的话,说明他们的角色可能是相同的。,案例2:用例图,寻找参与者的问题,在获取用例前首先要确定系统的参与者,开发人员可以通过回答以下的问题来寻找系统的参与者。(1)谁将使用该系统的主要功能?(2)谁将需要该系统的支持以完成其工作?(3)谁将需要维护、管理该系统,以及保持该系统处于工作状态?(4)系统需要处理哪些硬件设备?(5)与该系统交互的是什么系统?(6)谁或什么系统对本系统产生的结果感兴趣?,案例2:用例图,寻找用例的问题,在识别用例的过程中,通过回答以下几个问题,系统分析者可以获得帮助。(1)特定参与者希望系统提供什么功能?(2)系统是否存储和检索信息,如果是,由哪个参与者触发?(3)当系统改变状态时,是否通知参与者?(4)是否存在影响系统的外部事件?哪个参与者通知系统这些事件?,案例2:用例图,用例建模的过程,建立用例模型的顺序是:确定谁会直接使用该系统。这些都是参与者(Actor)。选取其中一个参与者。定义该参与者希望系统做什么,参与者希望系统做的每件事成为一个用例。对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用例的基本过程。描述该用例的基本过程。考虑一些可变情况,把他们创建为扩展用例。复审不同用例的描述,找出其中的相同点,抽出相同点作为共同的用例(包含用例)。重复步骤27找出每一个用例。,案例2:用例图,1、确定参与者:系统管理员、学生。2、选取其中一个参与者。3、定义该参与者希望系统做什么,成为一个用例。系统管理员:维护课程信息、登录、(查看课程信息)学生:登录、查看课程信息(泛化:按课程编号查询、按课程名查询)、选择课程、删除已选课程、(维护课程信息)4、确定过程。5、描述该用例的基本过程。6、考虑可变,扩展用例:找回密码。7、复审相同点,包含用例(查询课程信息)。8、重复步骤27。,案例2:用例图,网上选课系统的用例图。用例有:登录、找回密码、查看课程信息、按课程编号查询、按课程名查询、选择课程、删除已选课程、维护课程信息;参与者有系统管理员与学生。,时序图展示了几个对象之间的动态协作关系,主要用来显示对象之间发送消息的顺序,还显示对象之间的交互,即系统执行某一特定时间点所发生的事。主要用于设计阶段,4、行为模型-时序图(Brief introduction),3.5 面向对象的分析方法,对象,生命线,消息,五要素:参与者、对象、生命线、控制焦点、消息参与者:参与者发出情况或者接收系统的服务。对象:对象是特定行为与属性的集合,在描述中有意义的集合生命线:用于描述对象的存在周期,对象下方的虚线就是该对象的生命线。控制焦点:是指活动者或对象处于执行状态的时间段。激活状态的时间段,从激活开始到空闲状态结束。,4、行为模型-时序图(Brief introduction)(顺序图),3.5 面向对象的分析方法,消息:用于描述对象间交互的方式及内容。同步消息、异步消息、返回消息、自关联消息1.同步消息=调用信息:一个对象向另一个对象发出同步消息(调用)后,将处于阻塞状态,直等到另外对象的回应。-消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。2.异步消息:发出异步消息(信号)后,该对象可进行其他操作,不需要等到另一个对象的响应。-消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。3.返回消息:同步消息的返回消息。-调用返回4.自关联消息:用来描述对象内部函数的互相调用。-表示方法的自身调用以及一个对象内的一个方法调用另外一个方法,4、行为模型-时序图(Brief introduction)(顺序图),3.5 面向对象的分析方法,如何绘制:从用例描述中确定交互过程的上下文关系,即分析交互过程和对象。识别参与过程的对象(参与者):在顶部依次排列,即包含对象和所属类的矩形,或小人表示参与者为每个对象设置生命线,即在对象下方画垂直虚线,并延伸超出最后一个箭线从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息如需表示消息的嵌套,或/和表示消息发生时的时间点,则使用FOC(控制焦点)如需说明时间约束,则在消息旁加上约束说明如果需要,可以为每个消息附上前置条件和后置条件,4、行为模型-时序图(Brief introduction)(顺序图、序列图),3.5 面向对象的分析方法,案例3:时序图,分支过程:多个时序图、组合碎片等方式,课程内容未涉及,案例3:时序图,登录界面,图书馆界面,查询界面,借阅窗口,登录信息,书名、作者、出版社等查询信息,查询结果,提交结果、订单号,借阅人,选择图书,提交订单信息,确认窗口,确认借阅图书清单,选择借阅图书信息,借阅订单及费用,选择确认订阅,例:下面给出“商品销售管理”用例的用例描述,画出相应的时序图(即顺序图)。参与者:销售员 前提条件:销售员成功登录系统。事后条件:商品的库存余额被修改。基本事件流:(1)输入商品销售信息(包括商品编号,数量,单价)。(2)输入销售日期。(3)输入顾客付款的金额总数,系统计算找零金额。(4)修改商品的库存余额。(5)打印销售收据给顾客。参与者:销售员,对象:销售界面、商品信息、销售信息、计算器、库存信息(可与商品信息对象合并)、销售依据(可与销售信息对象合并,案例3:时序图,案例3:时序图,输入付款金额总数,输出找零金额,案例4:测试用例,对以下程序进行测试:PROCEDURE EX(A,B:REAL;VAR X:REAL);BEGIN IF(A=3)OR(B 1)THEN X:=A+B IF(A2)AND(B=0)THEN X:=A3 END(1)先画出程序流程图。(2)再选择一种逻辑覆盖法(写出名称)设计测试用例(包括输入数据、覆盖条件、覆盖路径、输出数据),程序流程图,程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:,4.4 面向过程的系统设计,2、详细设计,程序流程图的标准符号,程序流程图,4.4 面向过程的系统设计,2、详细设计,循环的标准符号 注解的使用,程序流程图,4.4 面向过程的系统设计,2、详细设计,多出口判断,程序流程图,4.4 面向过程的系统设计,2、详细设计,案例4:测试用例,对以下程序进行测试:PROCEDURE EX(A,B:REAL;VAR X:REAL);BEGIN IF(A=3)OR(B 1)THEN X:=A+B IF(A2)AND(B=0)THEN X:=A3 END(1)先画出程序流程图。,T,F,F,T,案例4:测试用例,对以下程序进行测试:PROCEDURE EX(A,B:REAL;VAR X:REAL);BEGIN IF(A=3)OR(B 1)THEN X:=A+B IF(A2)AND(B=0)THEN X:=A3 END(2)再选择一种逻辑覆盖法(写出名称)设计测试用例(包括输入数据、覆盖条件、覆盖路径、输出数据),逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。属白盒测试。语句覆盖、分支覆盖、条件覆盖、条件组合覆盖,语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。,逻辑覆盖-语句覆盖,对以下程序进行测试:PROCEDURE EX(A,B:REAL;VAR X:REAL);BEGIN IF(A=3)OR(B 1)THEN X:=A+B IF(A2)AND(B=0)THEN X:=A3 END,c,b,e,d,a,L1(a-c-e);L2(a-b-d);L3(a-b-e);L4(a-c-d),程序结构同课程讲授案例,具体做法参考之L1,注:标注分支、说明条件。,案例4:测试用例,案例4:测试用例,设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。,案例4:测试用例,等价类划分:黑盒测试方法。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。,划分等价类的原则,(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。例如,在程序的规格说明中,对输入条件有一句话:“项数可以从1到999”则有效等价类是“1 项数999”两个无效等价类是“项数1”或“项数999”。在数轴上表示成:,案例4:测试用例,划分等价类的原则,(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例如,在Pascal语言中对变量标识符规定为“以字母打头的串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。,案例4:测试用例,(4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。,划分等价类的原则,案例4:测试用例,划分等价类的原则,(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,Pascal语言规定“一个语句必须以分号;结束”。这时,可以确定一个有效等价类“以;结束”,若干个无效等价类“以:结束”、“以,结束”、“以 结束”、“以LF结束”等。,案例4:测试用例,划分等价类的原则,(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,Pascal语言规定“一个语句必须以分号;结束”。这时,可以确定一个有效等价类“以;结束”,若干个无效等价类“以:结束”、“以,结束”、“以 结束”、“以LF结束”等。,案例4:测试用例,案例4:测试用例,设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。,方法:1、根据输入条件,确定等价类,包括有效等价类和无效等价类,建立等价类列表2、为每个等价类规定一个唯一的编号,案例4:测试用例,设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。,方法:3、设计一个测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类被覆盖完为止199103 覆盖(1)(2)(3)(4)4、设计一个测试用例,使其尽可能多的覆盖尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类被覆盖完为止2013020 覆盖(5)20091 覆盖(6)2015X9 覆盖(7)205903 覆盖(8)189002 覆盖(9)199315 覆盖(10)199300 覆盖(11),案例5:控制流图覆盖测试,9、下图为一个程序流程图的示意图,如采用控制流图覆盖测试,则其程序的环路复杂性为(),识别程序的逻辑行;根据程序逻辑行之间的控制关系绘制CFG图;在CFG图上作适当的标记,例如入/出口、真假分支等。,边:8节点:7环路复杂性:3,d,案例5:控制流图覆盖测试,Int x,a,bWhile(x210)If xa and xb then x=a+b else if x100 then x=xab else x=xa+b returnPrintf x,控制流图覆盖测试是将代码转变为控制流图(CFG),基于其进行测试的技术。它属白盒测试。,控制流图覆盖测试,2、白盒测试,程序的控制流图,符号为控制流图的一个结点,表示一个或多个无分支的PDL语句或源程序语句。箭头为边,表示控制流的方向。,案例5:控制流图覆盖测试,在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。,2、白盒测试,控制流图覆盖测试,案例5:控制流图覆盖测试,案例5:控制流图覆盖测试,Int x,a,bWhile(x210)If xa then if xb then x=a+b else if x100 then x=xab else x=xa+b else if x100 then x=xab else x=xa+b returnPrintf x,基本路径覆盖,程序的环路复杂性:程序基本路径集中的独立路径条数,这是确保程序中每个可执行语 句至少执行一次所必需的测试用例数目的上界。,独立路径:从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未 有过的边的路径。,计算方法:V(G)=en+2。其中,e 为图中边的数目;n 为节点数目。,案例5:控制流图覆盖测试,基本路径覆盖,确定线性独立路径的基本集合,案例5:控制流图覆盖测试,案例5:控制流图覆盖测试,边:19,节点:15环路复杂性:6基本路径集合:略,PERT技术和CPM方法,PERT技术叫做计划评审技术,CPM方法叫做关键路径法,它们都是安排开发进度,制定软件开发计划的最常用的方法。相同点:都采用网络图来描述一个项目的任务网络,也就是从一个项目的开始到结束,把应当完成的任务用图或表的形式表示出来。不同点:前者主要是用于非肯定性的项目,它的活动时间基本上都是基于概率估计;后者则主要用于肯定性项目,假定每一活动的时间是确定的。,案例6:项目管理,通常用两张表来定义网络图。一张表给出与一特定软件项目有关的所有任务(也称为任务分解结构WorkBreakdown Structure);另一张表给出应当按照什么样的次序来完成这些任务(有时称为限制表RestrictionList)。PERT技术和CPM方法都为项目计划人员提供了一些定量的工具。,PERT技术和CPM方法-基础性工作,案例5:项目管理,任务分解:给出与一特定软件项目有关的所有任务(也称为任务分解结构WorkBreakdown Structure,WBS);,PERT技术和CPM方法-基础性工作,案例5:项目管理,次序限定:给出应当按照什么样的次序来完成这些任务(有时称为限制表RestrictionList,根据应用不同,有不同画法)。,PERT技术和CPM方法-基础性工作,CPM:0-1-2-3-5-7-8-9,时差为零,此为关键路线PERT:0-1-2-3-5-7-8-9关键路线,期望时间最长的活动与事件序列,55。在该路线上没有松弛时间,沿关键路线的任何延迟都直接延迟整个项目的完成期限。,案例5:项目管理,CPM方法,1、画出网络图,以节点标明事件,由箭头代表作业。这样可以对整个项目有一个整体概观。习惯上自左向右。2、在箭头上标出每项作业的持续时间(T)3、从左面开始,计算每项作业的最早结束时间(EF)。该时间等于最早可能的开始时间(ES)加上该作业的持续时间4、当所有的计算都完成时,最后算出的时间就是完成整个项目所需要的时间。5、从右边开始,根据整个项目的持续时间决定每项作业的最迟结束时间(LF)。6、最迟结束时间减去作业的持续时间得到最迟开始时间(LS)。7、每项作业的最迟结束时间与最早结束时间,或者最迟开始时间与最早开始时间的差额就是该作业的时差。8、如果某作业的时差为零,那么该作业就在关键路线上。9、项目的关键路线就是所有作业的时差为零的路线。,案例5:项目管理,PERT技术,1、确定完成项目必须进行的每一项有意义的活动,完成每项活动都产生事件或结果;2、确定活动完成的先后次序;3、绘制活动流程从起点到终点的图形,明确表示出每项活动及其它活动的关系,用圆圈表示事件,用箭线表示活动,结果得到一幅箭线流程图,我们称之为PERT网络;4、估计和计算每项活动的完成时间;5、借助包含活动时间估计的网络图,管理者能够制定出包括每项活动开始和结束日期的全部项目的日程计划。6、计算关键路线,关键路线是网络中期望时间最长的活动与事件序列。在关键路线上没有松弛时间,沿关键路线的任何延迟都直接延迟整个项目的完成期限。,案例5:项目管理,课程内容梳理,第一章:概述1、软件的概念、特征2、软件危机、原因(成本增加、技术落后于需求)3、软件工程的定义、发展过程(四个阶段),第二章:软件过程1、软件的生命周期、软件过程概念2、常见的几种软件过程模型(瀑布、增量、演化、喷泉、构件、协同开发(并行开发)的基本思想、优缺点)。敏捷开发的基本思想(敏捷过程),课程内容梳理,第三章:需求分析1、需求分析的定义、类型、过程(4个阶段,理解其主要工作)2、结构化分析方法,重点讲解模型:数据流图(会画、会分析、能查错)3、面向对象的分析方法,重点讲解模型:用例图(会画、会分析、能查错)4、需求规格文档编制(基本结构,主要用于实验),第四章:系统设计1、软件设计的定义、过程(架构设计、详细设计的概念)、软件设计的概念和原则2、传统的系统设计方法,重点讲解模型:程序流程图(会画、会分析、能查错)3、面向对象的系统设计方法,重点讲解模型:顺序图(时序图)(会画、会分析、能差错)(放在第三章讲的),课程内容梳理,第六章:质量保证1、质量保证相关概念:软件质量、质量控制(3个内容)、质量保证(原则)、质量成本(3种成本)、软件质量保证(3类活动)、软件评审(3种形式)、软件可靠性(2类评估指标)2、软件测试的策略:V模型及各阶段主要内容、方法3、软件测试的技术:白盒测试(逻辑覆盖)、黑盒测试(等价类划分和边界值分析)(会设计测试用例、会查错),第七章:软件维护1、软件维护的定义、分类(4类)2、软件维护应注意的问题(3个方面基本内容)3、软件维护过程模型4、软件维护技术(程序理解的任务、再工程的定义和模型、逆向工程的定义和主要内容),课程内容梳理,第八章:项目管理1、软件项目管理相关概念:项目管理、四要素(了解)2、软件度量:软件度量定义、决定要素,基于规模测量的基本思想,基于代码行数、功能点度量方法(给定数据计算)、三点期望值法、基本的COCOMO模型(给定数据计算)3、项目计划:关键路径计算,