大学课程软件工程测试.doc
三、简答题:1、 什么是软件危机?产生软件危机的原因?怎样消除?答:软件危机:是计算机软件在它的开发和维护过程中所遇到的一系列严重问题,研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。软件危机产生的原因是由于软件产品本身的特点以与开发软件的方式、方法、技术和人员引起的:软件的规模越来越大,结构越来越复杂。软件开发管理困难而复杂。软件开发费用不断增加。软件开发技术落后。生产方式落后。开发工具落后,生产率提高缓慢。包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。软件危机典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成的”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普与深入的趋势。2、 什么是软件工程?包括哪些容?答:软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。软件工程的容:)软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。)软件开发管理:软件管理学、软件经济学、软件心理学。软件工程的目标:是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:付出较低的开发成本;面到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,与时交付使用;开发的软件可靠性高;软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以与维护等活动。软件工程的框架可概括为:目标、过程和原则。软件工程的原则:是指围绕工程设计、工程支持以与工程管理在软件开发过程中必须遵循的原则。基本原理:用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性;(工程化的方法开发软件基本原理)软件工程方法学:软件工程包括技术和管理两方面的容,是技术与管理紧密结合所形成的工程学科。软件工程方法学包括:传统方法学(结构化型)和面向对象方法学。面向对象的要点:把对象作为融合了数据与在数据上的操作行为的统一的软件构件。把所有对象都划分成类。按子类与父类的关系,把类组成一个层次结构。对象彼此之间仅能通过传递消息互相联系。软件工程方法学三要素是:方法;工具;过程。3、 软件生命周期由哪三个时期组成,又划分为哪8个阶段?答:软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。软件生命周期是由:软件定义时期;软件开发时期;软件维护时期三个时期组成的。又划分为:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、维护八个阶段。1、问题的定义与规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标与其可行性。2、需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。3、软件设计此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。4、程序编码此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规。以保证程序的可读性,易维护性,提高程序的运行效率。5、软件测试在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以与系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。6、运行维护软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。4、 什么是白盒测试法?什么是黑盒测试法?答:白盒测试:所谓白盒测试就是在知道产品部工作过程或程序部结构和处理过程的前提下,检验产品部动作是否按照规格说明书的规定正常进行或按照程序部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作的测试方法.因此白盒测试又称为结构测试或逻辑测试。从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;点覆盖;边覆盖;路径覆盖。黑盒测试:所谓黑盒测试是指在完全不考虑程序的部结构和处理过程的前提下,在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接受输入数据产生正确的输出信息,并且保持外部信息的完整性.因此,又称为功能测试。特点:等价类划分、边界值分析、因果图、错误推测。优点 1. 基本上不用人管着,如果程序停止运行了一般就是被测试程序crash了 2. 设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因缺点 1. 结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴 2. 没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作 3. 就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的testcase造成的问题。这些在堆的问题中表现的更为突出。5、 什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?答:将模块组合起来成为一个完整的系统对其进行测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以与时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。渐增式组装模块有自顶向下和自底向上两种组装方式。6、 什么是确认测试?该阶段有那些工作?答:调试的目的是发现错误的位置并改正错误。简单调试、演绎调试、递归调试、回溯调试。7、 面向对象方法学与传统方法学有何区别?答:面向对象方法学注重的是软件的重用性,而传统的方法学则在这一问题解决上不理想。面向对象方法学和传统的方法学在问题分析上的切入点不同。面向对象里面,系统是长出来的,传统的方法学里面,系统是放进去的。传统方法:结构化开发方法,注重的是系统功能,自顶向下,从大到小的功能分解,从DFD到MSD,往往系统需求变化最大就是功能,一段较长的时间,商业的流程可能已经发生了很大的变化,这样基于功能和过程的方法显然难以维护的,代码重用率可想而知,而商业过程中的数据可能变化不会很大,信息工程法,注重的是数据,事件流信息流,(资金流,物流)数据流,数据的输入和转化输出,数据流程图,状态转化图,事件顺序图,过程依赖图,两者都是由事件驱动面向的是问题,是为了要解决某一个具体问题,其观察事物的方法不是本体客体本身,而是对本体客体相互作用过程抽象,转化成逻辑模型。面向对象方法学:其切入点是客观世界的主体和客体,通过封装实现了信息交流的安全,抽象和继承使得事物的一完整表述和容易修改新的变化,聚合,关联反映事物间的相互作用和关系,通过关联类管理,这样把事物和事物间的关系分开减少了复杂度,便于维护,大大提高了代码重用率。8、 软件开发模型有几种?各有什么特点?软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。(模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。)主要模型:瀑布模型;增量模型;螺旋模型;喷泉模型;变换模型;基于知识的模型等瀑布模型:它提供了一个摸板,这个摸板使分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导;虽然有不少缺陷但比在软件开发中随意的状态要好得多。快速原型模型:开发速度快,质量有保证。对信息系统特别有效。增量模型:人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。当配备的人员不能在设定的期限完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。具有一定的市场。螺旋模型:对于大型系统与软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足所带来的风险。9、 可行性研究:系统流程图;数据流程图;系统流程图:系统流程图是概括地描绘物理系统的传统工具。基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。其表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。数据流程图:简称DFD,是描述数据处理过程的工具。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,是一种功能模型。作用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。基本符号有四种:,箭头,表示数据流;,圆或椭圆,表示加工; =,双杠,表示数据存储;,方框,表示数据的源点或终点。可行性研究的任务: (1)经济可行性。确定待开发系统是否值得投资开发。(2)技术可行性。对待开发的系统进行功能、性能和限制条件的分析,确定在现有资源的条件下技术风险有多大,系统是否能实现。 (3)法律可行性。确认待开发系统可能会涉与的任何侵犯、妨碍、责任等问题。(4)抉择。对系统开发的不同方案进行比较评估。10、 什么是字据字典?其作用是什么?它有哪些条目?字据字典:简称,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计与维护提供了有关元素的一致的定义和详细的描述。作用:为系统的分析设计与维护提供了有关元素的一致的定义和详细的描述.为分析人员查找数据流图中有关名字的详细定义而服务的.它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分.条目:数据流、数据项、数据存储、基本加工。11、 需求分析的任务是什么?答:需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。需求分析的主要任务:正确地确定对系统综合要求,充分理解和表达用户的需求。通过结构分析的方法对系统进行分解,以确定软件系统的主要成分或软件系统的构成。是对以上已进行的两项工作进行描述,以形成需求文档。编写用户手册;编写验收计划;修正可行性研究阶段所制订的软件项目开发计划。12、 结构化分析方法:结构化分析方法就是用抽象模型的概念,按照软件部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。主要工具:数据流图、数据词典、结构化英语、判定表和判定树。3种模型:数据模型、功能模型和行为模型。验证软件需求:一致性;完整性;现实性;有效性;结构化分析方法步骤:了解当前系统的工作流程,获得当前系统的物理模型。抽象出当前系统的逻辑模型。建立上标系统的逻辑模型。作进一步补充和优化。结构化程序设计基本要点:采用自顶向下、逐步求精的程序设计方法;使用三种基本程序控制结构构造程序(顺序方式;选择方式;循环方式;)。主程序员组的组织形式。13、 总体设计过程由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。模块:软件系统的层次结构正是模块化的具体体现。将整个软件划分成若干单独命名和可编址的部分,称之为模块。模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块是构成程序的基本构件。模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。14、 衡量模块独立性的两个标准是什么?它们各表示什么含义?两个定性的度量标准:耦合与聚性。耦合:是模块之间的相对独立性(互相连接的紧密程度)的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。按耦合度从低到高依次有7种耦合方式:非直接耦合(独立运行);数据耦合(用参数表传递简单数据);标记耦合(传递数据结构或者一部分);控制耦合(传递的信息包括控制模块的信息);外部耦合(模块与软件之外的环境有关);公共耦合(多个模块引用同一全局的数据区);容耦合(访问部数据,代码重叠或者多个入口)。聚:是模块功能强度(一个模块部各个元素彼此结合的紧密程度)的度量。一个模块部各个元素之间的联系越紧密,则它的聚性就越高。按聚度从低到高依次有7种聚种类:偶然聚(模块完成的多个任务,任务之间的关系松散);逻辑聚(模块完成逻辑相关的一组任务);瞬时聚(模块的所有任务必须在同一时间间隔执行);过程聚(模块的处理元素相关而且按照特定的次序执行);通信聚(模块的所有元素集中在一个数据结构区域上);顺序聚(模块的处理元素相关,必须顺序执行);功能聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)耦合和聚的关系:一般说来,在系统中各模块的聚越大,则模块间的耦合越小。但这种关系并不是绝对的。耦合小使得模块间尽可能相对独立,从而各模块可以单独开发和维护。聚大使得模块的可理解性和维护性大大增强。因此,在模块的分解中应尽量减少模块的耦合,力求增加模块的聚。15、 Jackson方法的步骤:(1)实体动作分析:从问题的描述中,提取软件系统要产生和运用的实体,以与现实世界作用于实体上的动作。(2)实体结构分析:把作用于实体的动作或由实体执行的动作,按时间发生的先后次序排序,构成进程,并用一个层状的Jackson结构图表示。(3)定义初始模型:把实体和动作表示成一个进程模型,定义模型与现实世界的联系。(4)功能描述:说明与已定义的动作相对应的功能,为已定义的动作加入功能函数。(5)决定系统时间特性:对进程加入时间因素,对进程调度特性进行评价和说明。(6)实现:设计组成系统的硬件和软件,实现系统的原型。16、 测试阶段的信息流:这个阶段的输入信息有两类: (1)软件配置,包括需求说明书、设计说明书和源程序清单等;(2)测试配置,包括测试计划和测试方案。自顶向下集成:从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于主控制模块的那些模块组装到程序结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。深度优先的结合方法先组装在软件结构的一条主控制通路上的所有模块。选择一条主控制通路取决于应用的特点,并且有很大任意性。而宽度优先的结合方法是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。集成测试的策略:当使用渐增方式把模块结合到程序中去时,有自顶向下和自底向上两种集成策略。17、 决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性;软件维护:是指在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.软件维护是软件生命周期的最后一个阶段,也是持续时间最长代价最大的一个阶段。软件的可维护性可以定义为:维护人员理解,改正和改动软件的难易程度。18、 对象:是对现实世界实体的正确抽象,它是由描述部状态表示静态属性的数据,以与可以对这些数据施加的操作,封装在一起所构成的统一体。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。对象的特点:以数据为中心;对象是主动的;实现了数据封装;本质上具有并行性;模块独立性好;类:类是对具有一样属性和行为的一个或多个对象的描述。通常在这种描述中也包括对怎样创建该类的新对象的说明。类是支持继承的抽象数据类型,而对象就是类的实例:类结构:类的结构通常有一般-具体(分类结构)整体-抽象(组装结构)消息:对象之间通信的构造。实例:实例就是由某个特定的类所描述的一个具体的对象。类是对具有一样属性和行为的一组相似的对象的抽象,类在现实世界中并不能真正存在。在面向对象的程序中,把数据和实现操作的代码集中起来放在对象部。封装:从字面上理解,所谓封装就是把某个事物包起来,使外界不知道该事物的具体容。继承:广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。多态性:多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。面向对象建模:描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。对象模型:对象模型表示了静态的、结构化的、系统数据性质,描述了系统的静态结构,表现了对象间的相互关系,模型主要关心系统中对象的结构、属性和操作使用对象图来描述。动态模型:动态模型描述了与时间和变化有关的系统性质,描述的是系统的控制结构,表示了瞬间的系统控制性质,它关心系统的控制,操作顺序,从对象的状态角度出发表现对象的相互行为。三种模型的关系:功能模型描述发生了什么,动态模型确定什么时候发生,对象模型确定发生的客体。19、 对比瀑布模型和增量模型,指出增量模型的新思路。答:瀑布模型是一种整体的开发模型,开发的每一阶段必须按线性的顺序来进行,前一阶段的工作没有完成后一阶段的工作就不能开始。由于需求分析的易变性使的软件开发工作不顺利,同时瀑布模型的每个阶段有不可避免的错误出现,那么延伸到以下的各个阶段错误就会放大。增量模型是非整体开发的模型它采用渐增模型和原形模型,软件的开发是用增量开发和增量提交。20、 渐增模型有那几种?特点?答:增量构造和演化提交。增量构造是瀑布模型的基础上在一些的阶段中采用增量开发一些阶段整体开发。演化提交是在瀑布模型的基础上所有阶段都使用增量开发也就是不紧使用增量开发也使用增量提交。21、 在结构化设计过程中,要将数据流图(DFD)映射成系统结构图(SC),画出变换型数据流和事物型数据流的映射方式。答:变换型 事务型22、 COCOMO2模型:COCOMO2给出了3个层次的软件开发工作量估算模型,这3个层次的模型在估算工作量时,对软件细节考虑的详尽程度逐级增加。这些模型既可以用于不同类型的项目,也可以用于同一个项目的不同开发阶段。这3个层次的估算模型分别是:(1)应用系统组成模型:主要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件。(2)早期设计模型。这个模型适用于体系结构设计阶段。(3)后体系结构模型。这个模型适用于完成体系结构设计之后的软件开发阶段。Gantt图和工程网络图:23、 产生最佳解的一般结构:24、 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请写出问题定义,并且分析开发这个系统的可行性。答:从问题述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。为了分析病人生理信号是否超出了医生规定的安全围,应该存储“患者安全围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存储。25、 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人、住址(或)、存款类型、存款日期、到期日期、利率与密码(可选)等信息,并印出存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。请用数据流图描绘本系统的功能,并用实体-联系图描绘系统中的数据对象。ER模型 本问题中共有两类实体,分别是“储户”和“储蓄所”,在它们之间存在“存取款”关系。因为一位储户可以在多家储蓄所存取款,一家储蓄所拥有多位储户,所以“存取款”是多对多(M:N)关系。 储户的属性主要有、住址、和,储蓄所的属性主要是名称、地址和,而数额、类型、到期日期、利率和密码则是关系类型存取款的属性。26、复印机的工作过程:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。用状态转换图描绘复印机的行为。解:从问题述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。12、 画出下列伪码程序的程序流程图和盒图。STARTIF p THEN WHILE q DO f END DOELSE BLOCK g n END BLOCKEND IFSTOP13、 对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10H;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误)MTTF=15H. 要求:(1)确定MTTF与测试时间之后的函数关系,画出MTTF与测试时间的关系曲线,在画这条曲线时做了什么假设? (2)为做到MTTF=100H,必须要多长时间的集成测试?结束时总共改正了多少个错误?还有多少个错误潜伏? 解:假设在程序的平均无故障时间MTTF和测试时间t之间存在线性关系,即:MTTF=a+bt;根据题意可知,当t=1时,MTTF=10h;当t=2时,MTTF=15h;把这些已知数据代入上列方程得:a + b=10 ;解此方程得:a=5; b=5;a + 2b=15;因此MTTF与t之间有下列关系:MTTF=5 +5t;根据上列方程式画出平均无故障时间MTTF与没试时间t的关系曲线,如图:自已画为使MTTF=100h,需要的测试时间由方程式得出:100=5+5t; 解得:t=19; 即:需进行19个月的集成测试.已知平均无故障时间与单位长度程序中剩余的错误数成反比, 则:MTTF=10000k(EtEc(t)根据题意可知,改正了15个错误后MTTF=10,改正了25个错误后MTTF=15;把此数据代入上式得:10=10000k(Et15) 15=10000k(Et25)解方程式得:Et=45; k=33.33;已知当集成测试结束时MTTF=100h,即:100=1000033.33(45Ec(19) 所以Ec(19)=42则,当集成测试结束时总共改正了42个错误,还有4542=3个错误潜伏在程序中。14、 对下列子程序进行调试:procedure example(y,z: real; var x: real)beginif(y>1) and (z=0) then x:=x/y;if(y=2) or (x=l) then x:=x+l; end.该子程序接受x, y, z的值,并将计算结果x的值返回给调用程序。答题要求:(1) 画出流程图。(2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以与路径。答:(1)流程图;(2)用白盒法中条件组合覆盖设计测试用例: y=2, z=0, x=4; y=2, z=1, x=1; y=1, z=0, x=2; y=1, z=1, x=1.15、 问题性质:教学事务管理系统是一个应用于校所有学生各种信息的管理系统。工程目标:要在两个礼拜的时间分别从问题定义,可行性研究,需求分析,概要设计,详细设计,调试,以与用户使用说明八个方面对整个教学事务管理系统进行软件设计,此教学管理系统中要求能够输入信息和输出表格,具体分为注册信息,选课信息,成绩,课程不与格人的,选课所有人的以与年级前5名,学生和单科课程成绩单,以与每个班单科总平均分等等。工程规模:此系统中应包含接受模块和信息处理与输出模块。可能的解决方案与其评价从三方面研究每种解决方法的可行性: (1).技术可行性使用现在的技术完全可以实现该系统 (2).经济可行性这个系统的开发成本不高,节省的经济资源以与经济消息能够超过该系统的开发成本 (3).操作可行性该教学事务管理系统在校院的各个办公室都可以实现,操作人员为在校师生,所以不存在技术、能力问题。推荐行动方针通过从技术,经济,可操作三方面的研究,分析的出结论,此系统是可行的。16.构成E-R图的基本要素是实体型、属性和联系,其表示方法为:·实体型(Entity):用矩形表示,矩形框写明实体名;比如学生三丰、学生寻欢都是实体。如果是弱实体的话,在矩形外面再套实线矩形。·属性(Attribute):用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的、学号、性别、都是属性。如果是多值属性的话,再椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。·联系(Relationship):用菱形表示,菱形框写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。如果是弱实体的联系则在菱形外面再套菱形。(猜考画图,或25题)第一章 软件工程介绍l 软件的特性1 软件是设计开发的,而不是传统意义上的生产制造的。2 软件不会“磨损”。3 虽然整个工业向着基于构件的构造模式发展,然而大多数软件扔是根据实际的顾客需求定制的。l 计算机软件的七大分类:系统软件、应用软件、工程/科学软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。l 遗留系统发生系统演化的原因:1.软件需要修改其适应性,从而满足新的计算环境或者技术的需求;2.软件必须根据新的业务需求进行升级;3.软件必须扩展以具有与更多现代系统和数据库的协作能力;4.软件架构必须进行改建以适应多样化的网络环境。l 软件神话:管理者,用户,从业者l 软件的定义:程序、数据和文档。l 软件工程的目的就是为开发高质量的软件产品提供一个工程框架。第二章 过程综述l 软件工程的三个要素:工具,过程,方法。l 通用软件过程框架:沟通,策划,建模,构建,部署。l 能力成熟度模型:第0级,不完全级;第1级,已执行级;第2级,已管理级;第三级,已定义级;第4级,已定量管理级;第5级,优化级。第三章 过程模型l 简述惯例框架包含的主要活动:沟通、策划、建模、构建、部署。l 简述瀑布模型所包含的主要框架活动:策划、建模、构建、部署。l 简述瀑布模型在实际运用中所面临的问题(缺点):“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。演化过程模型产生的背景:业务和产品需求经常变化、严格的交付时间、了解了核心产品和系统需求后没有定义产品或系统扩展的细节问题l 简述基于原型开发模型的软件开发过程:在用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。 沟通-快速策划-建模快速设计-构建模型-部署交付品与反馈l 简述原型开发的缺点:1.为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。2.为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。3.开发过程不便于管理l 统一过程的三个特点:用例驱动,以架构为核心,迭代并增量l 简述统一过程(UP)的5个阶段的主要容:起始,细化,构建,转换和生产l 螺旋模型强调了其他模型均忽略了的(风险分析)l 横切关注点的定义:一个信用卡处理系统的核心关注点是借贷/存入处理,而系统级的关注点则是日志、事务完整性、授权、安全与性能问题等许多关注点,我们叫它横切关注点第四章 敏捷视角下的过程l 软件工程的敏捷理念强调4个关键问题:1.具有控制力的自我组织团队对所开展工作的重要性;2.团队成员之间、开发参与者与客户之间的交流与合作;3.对“变更代表机遇”的认识;4.以与强调快速软件交付以让客户满意。l 简述极限编程(XP)过程模型所包含的4个主要框架活动:策划,设计,编码,测试第五章 系统工程l 计算机系统的6个系统要素:软件,硬件,人员,数据库,文档,规程l Hatley-Pirbhai建模方法:用户界面,输入,系统功能和控制,输出,维护和自检l 系统环境图(System Context Diagram)的表示方法(实例)第六章 需求工程l 需求工程的过程:起始,导出,精化,协商,规格说明,确认和管理l 在项目(起始)阶段,软件工程师会询问一些似乎与项目无直接关系的问题,目的是对问题、方案需求方、期望方案的本质、客户和开发人员之间初步的交流和合作的效果建立基本的谅解。l 为什么导出需求这么困难:围问题,理解问题,易变问题。l 用例的定义:讲述了能表达主题场景的故事:最终用户如何在一特定环境下和系统交互l 在需求工程的导出阶段,三个主要的需求收集活动是:主持人会议、QFD和用户场景开发第七章 构建分析模型l 分析模型在系统描述和设计模型之间建立桥梁。l 分析模型必须实现的目标:1。描述客户需要什么;2。为软件设计奠定基础;3。定义在软件完成后可以被确认的一组需求。l 分析模型的所有元素都可以直接跟踪到设计模型。l 分析模型的4个元素:基于场景的元素,面向信息流的元素,基于类的元素,行为元素l UML泳道图是活动图的一种变形,可以让建模人员表示用例所描述的活动流,同时指示哪个参与者或分析类对活动矩形所描述的活动负责。l UML状态图为每个类表现活动状态和导致这些活动状态变化的事件l UML顺序图说明事件如何引发一个对象到另一个对象的转移l 简述CRC建模的容:CRC提供了一个简单方法,可以识别和组织与系统或产品需求相关的类。l 使用UML类图来举例说明组合和聚合之间的区别l 使用UML类图举例说明关联和依赖之间的区别系统分析的经验原则(1) 系统开发是面向客户的,应从客户的角度考虑。(2) 诸如系统开发生命周期之类的产品更新换代机构应该在所有的信息系统开发项目中建立起来。(3) 信息系统开发的过程并不是一个顺序的过程,它允许步骤的重叠和倒转等。(4) 如果系统的成功可能性受到很大限制时,应取消整个项目。(5) 文档材料是系统开发生命周期中重要的可递交成果,应加以重视第八章 设计工程l 简述良好设计的三个特征:1。设计必须实现所有包含在分析模型中的明确需求,而且必须满足客户期望的所有隐含需求;2。对于那些生成代码的人和那些进行测试以与随后维护软件的人而言,设计必须是可读的、可理解的指南;3。设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。l 设计模型包含的四种元素是什么:数据/类设计、体系结构设计、接口设计、构建级设计l 软件体系结构的定义:软件的整体结构和这种结构为系统提供概念上完整性的方式l 模块应该详细说明且精心设计以求在某个模块中包含的信息不被不需要这些信息的其他模块访问l 重构的定义:是使用这样一种方式改变软件系统的过程:不改变代码设计的外部行为而是改进其部结构l 举例说明逐步求精l 框架和设计模式之间的区别:框架能使应用程序的开发简单,价格低廉,但是开发框架不是一件容易的事。它是一个需要领域和设计经验的反复过程。设计模式可以简化这个过程,因为它提供了对过去经验的抽象。框架能高度抽象同一领域的问题,进而降低开发难度和强度。因此,在软件开发过程中把框架和模式配合起来使用,可以极提高软件的重用。框架是软件,而设计模式是软件的知识第九章 进行体系结构设计l 简述软件体系结构的作用:1。软件体系结构的表示有助于对计算机系统开发感兴趣的各方(共利益者)开发交流;2。体系结构突出了早期设计决策,这些决策对随后的所有软件工程工作有深远的影响,同时对系统作为一个可运行实体的最后成功有重要作用。3。体系结构“构建了一个相对小的,易于理解的模型,该模型描述了系统如何构成以与其构建如何一起工作”l 软件体系结构的典型分类:以数据为中心,数据流体系结构,调用和返回体系结构,面向对象体系结构,层次体系结构(以图例来说明)l 体系结构环境图所包含的要素,以图例来说明第十二章 软件测试策略l 简述软件测试策略的螺旋模型:单元测试,集成测试,确认测试,系统测试l 简述单元测试中驱动程序和桩程序的作用:驱动程序只是一个“主程序”,它接收测试用例数据,将这些数据传递给(将要测试的)构件并打印相关结果。桩程序的作用是替换那些从属于将要测