软工题第四章

合集下载

软件工程第四章习题

软件工程第四章习题

第四章习题1、设计下列伪码程序的语句覆盖和路径覆盖测试用例:START INPUT(A,B,C)IFA>5 THENX=10 ELSEX=1 ENDIF IFB>10 THENY=20 ELSEY=2 ENDIF IFC>15 THENZ=30 ELSEZ=3 ENDIF PRINT(X,Y,Z)STOP 2、设计下列伪码程序的分支覆盖和条件组合覆盖测试用例:START INPUT(A,B,C,D)IF(A>0)AND(B>0)THENX=A+B ELSEX=A-B END IF(C>A)OR(D<B)THENY=C-D ELSEY=C+D END PRINT(X,Y)STOP 3、使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例:1:START INPUT(A,B,C,D)2:IF(A>0)3:AND(B>0)4:THEN X=A+B 5:ELSE X=A-B 6:END 7:IF(C>A)8:OR(D<B)9:THEN Y=C-D 10: ELSE Y=C+D 11: END 12: PRINT (X ,Y )STOP 4、设计测试下列函数的测试方案:、设计测试下列函数的测试方案: 函数SEARCH (somearay ,size ,value )的功能是,在一个整数数组somearay 中搜索一个值为value 的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1。

数组的长度由参数size 指定。

假定数组第一个元素的下标为1。

5、一个折半查找程序可搜索按字母顺序排列的名字列表,如果查找的名字在列表中则返回真,否则返回假。

为了对它进行功能测试,应该使用哪些测试用例?真,否则返回假。

为了对它进行功能测试,应该使用哪些测试用例?6、航空公司A 向软件公司B 订购了一个规划飞行路线的程序。

假设你是软件公司C 的软件工程师。

《软件工程案例教程软件项目开发实践》第四章练习题

《软件工程案例教程软件项目开发实践》第四章练习题

第四章练习题:一、填空题1.C/S、B/S、SOA、BPM等都是不同的体系结构。

2.数据字典包括数据项、数据流、数据存储和基本加工。

3.高内聚、松耦合是模块设计的基本原则。

4.软件设计把已确定的软件需求转换成特定形式的设计表示,使其得以实现。

5.设计模型是从分析模型转化而来的,主要包括四类模型:体系结构设计模型、数据设计模型、接口设计模型、构件设计模型。

6.面向对象设计的主要特点是建立了四个非常重要的软件设计概念:抽象性、信息隐藏、功能独立性和模块化。

7.模块层次图和模块结构图是模块功能划分的重要方法。

8.UML设计中主要采用的图示有类图、对象图、包图等。

9.软件模块设计,包括模块划分、模块独立性、模块的调用关系、每个模块的功能等。

10.数据库的设计一般要进行三个方面的设计:概念结构设计、逻辑结构设计和物理结构设计。

11.结构化程序设计方法的主要原则可以概括为自顶向下,模块化,逐步求精。

二、判断题1.软件设计是软件工程的重要阶段,是一个把软件需求转换为软件代码的过程。

(×)2.软件设计说明书是软件概要设计的主要成果。

(√)3.软件设计中的设计复审和设计本身一样重要,其主要作用是避免后期付出高代价。

(√)4.应用程序框架结构是一个可以重复使用的、大致完成的应用程序,可以通过对其进行定制,开发成一个客户需要的真正的应用程序。

(√)5.面向对象设计(OOD)是将面向对象分析(OOA)的模型转换为设计模型的过程。

(√)6.在进行概要设计时应加强模块间的联系。

(×)7.复用原则也是软件设计的一个重要原则。

(√)8.以对象、类、继承和通信为基础的面向对象设计方法也是常见的软件概要设计方法之一。

(√)三、选择题1.内聚是从功能角度来度量模块内的联系,按照特定次序执行元素的模块属于(D)方法。

A.逻辑内聚B.时间内聚C.过程内聚 D.顺序内聚2.概要设计是软件工程中很重要的技术活动,下列不是概要设计任务的是(B)。

软件工程思考题答案

软件工程思考题答案

第一章根本概念1.软件的特点是什么?软件的定义:软件=程序+数据+文档软件的特点:1)软件是逻辑实体;具有抽象性;软件的形态不可见;--必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。

2〕软件是人脑思维的产物,其生产过程与硬件不同。

--开发过程的质量控制及软件产品保护问题。

3〕软件的开发和运行受计算机系统限制。

--软件移植问题。

4〕软件的开发技术落后,手工开发方式仍占统治地位。

--开发效率低。

2.2006年发布的国家分类标准是什么?1〕按功能:系统软件、支撑软件、应用软件2〕按规模:微型软件、小型软件、大型软件、甚大型软件、极大型软件3〕按工作方式:实时处理软件、分时软件、交互式软件、批处理软件4〕按效劳对象:工程软件、产品软件5〕按使用频度:使用频度低、使用频度高6〕按失效影响:不良影响、严重影响3.软件危机的表现有哪些?1)软件开发进度难以预测2)软件开发本钱难以控制3)用户对产品功能难以满足4)软件产品质量无法保证5)软件产品难以维护4.产生软件危机的原因?1)用户需求不明确2)缺乏正确的理论指导3)软件开发规模越来越大4)软件开发复杂度越来越高5.什么是软件工程三要素?软件工程的三要素:方法、工具和过程。

6.软件工程的根本目标是什么?①付出较低的开发本钱②到达要求的软件功能③取得较好的软件性能④开发的软件易于移植⑤需要较低的维护费用⑥能按时完成开发工作,及时交付使用7软件工程的根本原那么是什么?①抽象:采用分层次抽象,自顶向下、逐层细化的方法控制软件开发过程的复杂性。

②信息隐蔽:将模块设计成“黑箱〞,实现的细节隐藏在模块内部,不让模块的使用者直接。

这就是信息封装,使用与实现别离的原那么。

③模块化:如C语言程序中的函数过程,C++ 语言程序中的类。

模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。

④局部化:要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。

软件工程综合复习题连答案

软件工程综合复习题连答案

《软件工程》综合复习资料第一章软件工程概述一、选择题1、瀑布模型本质上是一种()。

A、线性迭代模型B、顺序迭代模型C、线性顺序模型D、及早见产品模型2、计算机辅助软件工程,简称()。

A、SAB、SDC、SCD、CASE3、以下判断正确的是()。

A、所谓软件开发就是编写程序。

B、利用软件工程的思想,已成功的解决了软件危机。

C、完成软件测试工作以后,为了缩短程序的长度应删除程序中的注释。

D、一般来说,程序中存在错误的概率与在该段程序中已发现的错误数成正比。

4、_____是以提高软件质量为目的的技术活动。

A.技术创新B.测试C.技术创造D.技术评审5、瀑布模型的存在问题是()。

A.用户容易参与开发B.缺乏灵活性C.用户与开发者易沟通D.适用可变需求6、软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护7、计算机系统就是()A.主机,显示器,硬盘,软驱,打印机等。

B.CPU,存储器,控制器,I/O接口及设备。

C.计算机硬件系统和软件系统。

D.计算机及其应用系统。

8、产生软件危机的原因主要与两个方面的问题有关:A.软件在计算机中很难识别,存在磁盘中也看不到。

B.软件设计对人的智商要求很高,也要求很高的资金投入。

C.软件产品本身的特点与其它工业产品不一样,而且在软件的开发和维护过程中用的方法不正确。

D.软件很难理解,硬件也很复杂。

9、软件开发瀑布模型中的软件定义时期各个阶段依次是()A.可行性研究,问题定义,需求分析。

B.问题定义,可行性研究,需求分析。

C.可行性研究,需求分析,问题定义。

D.以上顺序都不对。

10、下列选项中()是软件开发中存在不正确的观念、方法。

A.重编程、轻需求B.重开发,轻维护C.重技术,轻管理D.以上三条都是二、填空题1、软件工程的三个基本要素包括()、()和()。

2、一般软件应该有三部分组成:()、()和()。

3、按软件的功能可将软件分成()、()和()等三类。

软件工程导论第六版课后习题答案完整版

软件工程导论第六版课后习题答案完整版

软件工程导论第六版课后习题答案完整版首先,感谢您对软件工程导论课后习题答案的需求。

以下是软件工程导论第六版课后习题的完整答案。

第一章:软件工程概述1.1 问题1. 什么是软件工程?答:软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的学科。

1.2 问题1. 什么是软件?答:软件是一系列按照特定顺序组织的计算机数据和指令。

第二章:软件过程模型2.1 问题1. 软件过程模型有哪些类型?答:常见的软件过程模型包括瀑布模型、迭代模型、螺旋模型和敏捷开发模型等。

2.2 问题1. 瀑布模型的特点是什么?答:瀑布模型是一种线性顺序模型,以阶段划分为基础,每个阶段的任务在进入下一个阶段前必须完成。

第三章:需求分析与规格说明3.1 问题1. 软件需求描述包括哪些方面的内容?答:软件需求描述需要包括功能性需求、非功能性需求、用户需求和系统需求等。

3.2 问题1. 什么是需求跟踪?答:需求跟踪是指在软件开发过程中,通过建立需求和软件项目中其他相关工件之间的关联,确保需求的准确实现和变更的有效管理。

第四章:软件设计4.1 问题1. 软件设计的目标是什么?答:软件设计的目标是通过确定软件的整体结构和组成部分,确保软件满足需求并具有良好的可维护性和可重用性。

第五章:软件测试与维护5.1 问题1. 什么是软件测试?答:软件测试是一种评估和改进软件质量的过程,目的是发现错误并提高软件的可靠性和可用性。

5.2 问题1. 什么是软件维护?答:软件维护是指在软件交付后的整个生命周期中对软件进行修改和改进,以满足用户需求和修复错误。

第六章:软件配置管理6.1 问题1. 软件配置管理的目标是什么?答:软件配置管理的目标是确保软件在开发和维护过程中的可控性和可追踪性,以及保持软件配置的稳定性和一致性。

6.2 问题1. 软件版本控制是什么?答:软件版本控制是指对软件的不同版本进行管理,包括版本的创建、检出、合并和更新等操作。

至此,我们完成了软件工程导论第六版课后习题的完整答案。

软件工程题库 多选

软件工程题库 多选

软件工程题库多选多选题题库第一章:软件开发过程模型1.在软件工程中,所谓软件开发过程模型是指()A.一个开发软件的通用流程,用于指导软件项目的进行B.一个具体的软件项目开发流程,包括需求分析、设计、编码、测试等阶段C.一个软件开发团队的组织结构和分工D.一个软件开发工具的集合2.瀑布模型是一种()A.迭代开发模型B.敏捷开发模型C.渐进开发模型D.串行开发模型3.敏捷开发模型的重要特点是()A.强调大量的分析和设计工作B.响应变化和面对风险的能力C.严格按照计划执行工作流程D.一次性开发出最终产品第二章:需求分析与规格说明4.在需求分析阶段,以下哪个活动是不可或缺的()A.需求收集和文档撰写B.需求验证和确认C.需求设计和构建D.需求分析和建模5.在需求分析中,用例是用来()A.描述系统的具体功能B.确定软件的开发成本C.分析项目进度和资源配备D.确定软件所需硬件设备6.用例图是用来()A.描述用例和角色之间的关系B.分析用户需求的技术工具C.确定系统的功能点和业务流程D.对软件工程进行过程图表建模第三章:软件设计7.在软件设计中,以下哪个是不正确的()A.结构化设计是一种自顶向下的设计方法B.面向对象设计强调数据和行为的封装C.设计模式是一种常见的软件设计实践D.可行性分析是软件设计的主要目标8.在面向对象设计中,以下哪个概念是不正确的()A.继承是用于创建类的机制B.封装是隐藏对象的内部实现细节C.多态性指的是对象具有多个状态D.抽象是对一组类的共同特征进行抽象9.设计模式中的单例模式是指()A.一个类只能有一个实例对象B.通过继承和多态实现对象的复用C.将类的行为分布在多个接口和类中D.使用接口和抽象类进行对象的创建第四章:软件测试10.在软件测试中,以下哪个是不正确的()A.单元测试是对软件的最小功能单元进行测试B.集成测试是测试各个模块之间的接口和关联C.系统测试是验证整个软件系统的功能和性能D.用户验收测试是由开发人员进行的测试11.在黑盒测试中,以下哪个是不正确的()A.用例执行的结果不关心内部的实现细节B.测试人员只关心系统的输入和输出C.着重测试系统的错误处理和边界条件D.需要了解系统的内部结构和算法12.黑盒测试中的等价类划分是指()A.将测试用例划分为若干个等价的类别B.使用随机数测试数据C.验证系统的错误处理功能D.着重测试系统的边界条件附件:无法律名词及注释:1.软件工程:指将系统化、规范化和可量化的方法应用于软件的开发、运行和维护过程的一门工程学科。

南京工程学院软件工程复习题答案

南京工程学院软件工程复习题答案

复习题第一章选择题:1,2,3,4,6,7,8,9 判断题:1,2,3,4,5第二章选择题:1,2,3,4,5,7,8 判断题:1,2,3,4,5,6第三章选择题:1,2,3, 5,6 ,7 判断题:1,2,3,4,5第四章选择题:5,6,7 ,8,9 判断题:5,6,7,8, 9,10第五章选择题:4,5,6,7,8,9,10 判断题:1,2,3,4,5,6,7,8第八章选择题:1,2,3,4,5第九章选择题:1,2,3,4第十二章选择题:1,2,3简答题:1.什么是软件危机其产生的主要原因是什么2.结构化程序设计的指导原则是什么它有哪三种基本控制结构红色为没有答案的3.什么是软件生存周期模型软件生命周期分为哪六个阶段并对每个阶段作简要说明.4.如何画分层数据流图5.简述UML.实际建模过程.6.在UML中的状态图、协作图、活动图、序列图在系统分析中各起到了什么作用7.什么是软件复用8.单元测试的功能是什么主要采用什么方法列举一个常用单元测试的工具. 9.什么是α测试和β测试10.自顶而下增值与自底而上增值各有何优、缺点11.请简单的谈一下安全测试12.为什么要进行软件维护13.提高软件可维护性的方法有哪些14.影响软件质量的因素有哪些15.什么是CMMCMM将软件过程的成熟度分为哪几个级别案例分析题1.画出给定实例的数据流图.并能给出其数据流条目,及对其中某一文件给出文件条目,对某数据项给出数据项条目,对某加工加工给出加工条目.2.画出某系统的用例图,及子用例图,对用例图作简要说明;用UML状态图说明状态的变迁情况及说明.习题答案习题一答案一、选择题1. 软件的主要特性是A B C.A 无形B 高成本C 包括程序和文档D 可独立构成计算机系统2. 软件工程三要素是B.A 技术、方法和工具B 方法、工具和过程C 方法、对象和类D 过程、模型、方法3. 包含风险分析的软件工程模型是A.A 螺旋模型B 瀑布模型C 增量模型D 喷泉模型4. 软件工程的主要目标是C.A 软件需求B 软件设计C 风险分析D 软件实现5. 下列属于面向对象开发方法的是A B C D.A BoochB UMLC CoadD OMT6. 软件危机的主要表现是B D.A 软件成本太高B 软件产品的质量低劣C 软件开发人员明显不足D 软件生产率低下7. 软件开发方法的主要工作模型有A B CA 螺旋模型B 循环模型C 瀑布模型D 专家模型8. 软件工程的目标有A B C.A 易于维护B 低的开发成本C 高性能D 短的开发期9. 软件工程学的目的和意义是A D.A 应用科学的方法和工程化的规范管理来指导软件开发B 克服软件危机C 作好软件开发的培训工作D 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序.×2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰.×3. 结构化方法的工作模型是使用螺旋模型进行开发.×4. 结构化方法和OO方法都是一种面向过程的软件开发方法.×5. 原型化开发方法包括生成原型和实现原型两个步骤.×习题二答案一、选择题1. 需求分析的主要目的是B C.A 系统开发的具体方案B 进一步确定用户的需求C 解决系统是“做什么”的问题D 解决系统是“如何做”的问题2. 需求分析的主要方法有C D.A 形式化分析方法B PAD图描述C 结构化分析SA方法D OOA法3. 面向对象的分析方法主要是建立三类模型,即D.A 系统模型、E-R模型、应用模型B 对象模型、动态模型、应用模型C E-R模型、对象模型、功能模型D 对象模型、动态模型、功能模型4. SA法的主要描述手段有B.A)系统流程图和模块图B DFD图、数据词典、加工说明C 软件结构图、加工说明D 功能结构图、加工说明5. 画分层DFD图的基本原则有A C D.A 数据守恒原则B 分解的可靠性原则C 子、父图平衡的原则D 数据流封闭的原则7. 画DFD图的主要目的是A D.A 作为需求分析阶段用户与开发者之间交流信息的工具B 对系统的数据结构进行描述C 对目标系统的层次结构进行描述D 作为分析和设计的工具8. 数据字典是数据流图中所有元素的定义的集合,一般由 C 四类条目组成.A 数据说明条目、控制流条目、加工条目、数据存储条目B)数据流条目、数据项条目、文件条目、加工条目C 数据源条目、数据流条目、数据处理条目、数据文件条目D 数据流条目、数据文件条目、数据池条目、加工条目二、判断题1. 在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案.×2. SA法是面向数据流,建立在数据封闭原则上的需求分析方法.√3. 需求管理主要是对需求变化的管理,即如何有效控制和适应需求的变化.√4. 在面向对象的需求分析方法中,建立动态模型是最主要的任务.×5. 加工小说明是对系统流程图中的加工进行说明.×6. 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件.×习题三答案一、选择题1. 模块的基本特征是A C.A 外部特征输入/输出、功能B 内部特征输入/输出、功能C 内部特征局部数据、代码D 外部特征局部数据、代码2. SD方法的设计总则是C D.A 程序简洁、操作方便B 结构清晰、合理C 模块内聚性强D 模块之间耦合度低3. 软件设计的主要任务是A B D.A 将分析阶段获得的需求说明转换为计算机中可实现的系统;B 完成系统的数据结构和程序结构设计C 完成模块的编码和测试D 对模块内部的过程进行设计5. 从工程管理的角度来看,软件设计分D两步完成.A 系统分析、模块设计B 详细设计、总体设计C 模块设计、详细设计D 总体设计、详细设计6. 模块独立性准则定性指标B D来衡量.A 分解度B 耦合度C 屏蔽性D 内聚性7. 用户界面设计的任务包括A B C.A 确定用户界面类型B 建立任务模型C 建立用户模型D 建立功能模型二、判断题1. 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好.×2. 在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用.×3. 信息隐蔽原则有利于提高模块的内聚性.√4. 中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块结构图.×5. SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应. ×习题四答案一、选择题5. 一个类属性依其特征划分,其类型有ABCD.A 描述型B 定义型C 派生型D 参考型6. 在进行面向对象分析时,所采用的模型有ABC.A 对象模型B 动态模型C 静态模型D 功能模型7. 状态是对象属性的值的一种抽象,它的性质有AB.A 时间性B 持续性C 有序性D 有穷性8. 数据流图中的处理必须用对象中的操作来实现,常见的操作有ABCD.A 查询B 动作C 活动D 访问9. 建立继承关系时所采用的方式有AC.A 自顶向下B 从内到外C 自底向上D 从复杂到简单二、判断题5. 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程.√6. 面向对象设计的主要目标是提高生产效率,提高质量和提高可维护性.√7. 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系.√8. 面向对象的分析是用面向对象的方法对目标系统的问题域空间进行理解、分析和反映.通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构.√9. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系.√10. 复用也叫重用或再用,面向对象技术中的“类”是比较理想的可重用软构件,它有三种重用方式:实例重用、继承重用、多态重用.√习题五答案一、选择题4. 下列各种图可用于动态建模的有ACD.A 状态图B 类图C 序列图D 活动图5. 下列属于状态的组成部分的有AB.A 名称B 活动C 条件D 事件6. UML中包括的事件有ABCD.A 条件为真B 收到另一对象的信号C 收到操作调用D 时间表达式7. 属性的可见性有ABD.A 公有的B 私有的C 私有保护的D 保护的8. 用例之间的关系有BCD.A 友元B 扩展C 使用D 组合9. 应用于通用化约束的方式有ABCD.A 完整B 不相交C 不完整D 覆盖10. 消息的类型有ABCA 同步B 异步C 简单D 复杂二、判断题1. UML建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的. √2. UML是一种建模语言,是一种标准的表示,是一种方法. ×3. 泳道是一种分组机制,它描述了状态图中对象所执行的活动. ×4. 同步消息和异步消息的主要区别是:同步消息的发送对象在消息发送后,不必等待消息处理,可立即继续执行,而异步消息则发送对象必须等待接收对象完成消息处理后,才能继续执行.×5. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的. √6. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述.×7. 用例模型的基本组成部件是用例、角色和用例之间的联系. √8. 用例之间有扩展、使用、组合等几种关系. √习题七答案5.什么是软件复用答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的.在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等.将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理.习题八答案一、选择题1. 软件测试的主要特点是A C.A 软件测试的开销大B 软件测试要依靠工具C 软件不能进行“穷举”测试D 软件测试要依靠人工2. 整体测试又称为组装测试,其主要内容包括C D.A 对整体的性能进行测试B 用白盒法设计测试用例进行测试C 确定组装策略和次序D 对组装过程进行测试3. 渐增式是将模块一个一个地连入系统,每连入一个模块C.A 只需要对新连入的模块进行测试B 都不需要再进行测试C 要对新子系统进行测试D 都要进行回归测试4. 静态测试是以人工的、非形式化的方法对程序进行分析和测试.常用的静态测试方法有 B C D.A 运行程序并分析运行结果B 桌前检查与代码会审C 数据流分析图D 调用图5. 集成过程的原则是B C.A 按照模块的大小集成B 尽早测试包含I/O的模块C 尽早测试关键模块D 按照“输入—处理—输出”的次序进行集成习题九答案一、选择题1. 软件维护的类型有A B C D.A 完善性维护B 纠错性维护C 适应性维护D 预防性维护2. 各种软件维护的类型中最重要的是A B.A 完善性维护B 纠错性维护C 适应性维护D 预防性维护3. 以下属于完善性维护的有B D.A 解决开发时未能测试各种可能条件带来的问题B 增加联机求助命令C 缩短系统的应答时间,使其达到特定要求D 为软件的运行增加监控设施4. 进行系统修改时可能会产生维护的副作用,它们可能有A B C.A 修改数据的副作用B 修改错误后,又引入了新的错误C 修改代码的副作用D 文档资料的副作用习题十二答案一、选择题1. CMM表示 A .A 软件能力成熟度模型B 软件过程工业化控制C 国际软件质量认证D 软件统一性标准2. 软件过程和产品质量有详细的度量标准,并且得到了定量的认识和控制.以下具有上述特征.A 可重复级B 已定义级C 已管理级D 优化级3. CMM是开发高效率、高质量和低成本软件时,普遍采用的软件生产过程标准,它的主要用途不包括 C .A 软件过程评估B 软件过程改进C 软件过程控制D 软件能力评价简答题1.什么是软件危机其产生的原因是什么答:“软件危机”Software Crisis的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大.而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要.致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折.软件危机主要表现在两个方面:1 软件产品质量低劣,甚至开发过程就夭折.2 软件生产率低,不能满足需要.2. 如何画分层数据流图有哪些基本原则答:总的原则是:至顶而下,逐层分解画分层数据流图.逐层分解的画法可以控制每一层的复杂度.顶层:将整个系统作为一个加工,描述系统边界输入与输出.中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解.底层:由不再进行分解的基本加工组成.画分层数据流图的基本原则有:①数据守恒与数据封闭原则.②加工分解的原则.③子图与父图“平衡”的原则.④合理使用文件的原则.3. 简述UML实际建模过程.答:UML建模过程是一个迭代过程.每次迭代都建立相应的模型.分为以下几个阶段:①分析阶段.建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系.常以用例图为首选模型.②设计阶段.建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案.常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等动态模型.③实现阶段.主要工作就是进行编码,同时对已构造的模型作相应的修正.④配置阶段.通过模型描述所开发系统的软硬件配置情况建立配置模型.⑤测试阶段.使用前几个阶段所构造的模型来指导和协助测试工作.4. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用答:状态图State Diagram用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件.一个状态图包括一系列的状态以及状态之间的改变.例如订单的状态变化等,在实时系统中用得较多,还可以用于辅助设计用户界面.顺序图Sequence Diagram 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用.当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图Collaboration Diagram从另一个角度来更好地描述相互协作的对象间的交互关系和链接Link关系.着重体现交互对象间的静态链接关系和协作关系.协作图也可以从顺序图生成.活动图Activity Diagram是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的.活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML 图.5. 什么是软件复用答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的.在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等.将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理.6. 什么是α测试和β测试答:α测试是在开发机构的监督下,在确认测试阶段后期由个别用户对软件进行测试,目的是评价软件的FLURPS功能、局域化、可使用性、可靠性、性能和支持性,注重界面和特色.β测试是在进行了α测试的基础上,由支持软件预发行的客户对FLURPS进行测试,主要目的是测试系统的可支持性,是在软件产品正式发布前的测试.7.单元测试的功能是什么主要采取什么方法例举一个常用单元测试的工具单元测试.完成每个模块的测试,尽可能发现模块内部的错误.单元测试主要采用白盒测试法.工具:自己看下书呢8. 为什么要进行软件维护答:软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程.一个中等规模的软件,如果其开发过程需要一两年时间,则它投入使用以后,其运行时间可能持续5~10年之久.在这个维护阶段中,人们需要着手解决开发阶段尚未解决的问题,同时,还解决维护工作本身所产生的问题.做好软件的维护工作不仅能够排除软件中存在的错误,使它能够正常工作,而且还可以使它扩充功能,提高性能,为用户带来新的效益.维护阶段的花费约占整个软件生存周期花费的67%.因此,应充分认识到维护现有软件的重要意义.9. . 提高可维护性的方法有哪些答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审.在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明.在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面.在软件设计的复审中,应从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备.在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素.在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示.在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审.为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术.10. 影响软件质量的因素有哪些答:影响软件质量的因素如下表所示.11.什么是CMMCMM将软件过程的成熟度分为哪几个级别答:1看下书.2初始级、可重复级、已定义级、已管理级和优化级.12. 自顶向下渐增与自底而上渐增各有何优、缺点答:①自顶向下渐增优点:能够尽早发现系统主控方面的问题,并尽早测试系统结构的问题.缺点:需要编写桩模块,由于下属模块往往不止一个,也不止一层,加之模块接口的复杂性,桩模块很难模拟各下层模块之间的调用关系,也无法验证桩模块是否完全模拟了下属模块的功能.因此很难尽早查出底层容易出错的复杂模块中的错误,所以导致过多的回归测试.②自底向上渐增优点:需要编写驱动模块.驱动模块是模拟主程序或者调用模块的功能,处于被测试模块的上层,所以驱动模块只需模拟向被测模块传递数据,接收或打印从被测模块返回的数据等功能,比编写桩模块容易.还能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误.缺点:只有当系统所有模块全部组装完成,才能看到系统完整的结构,才能测试系统的主控功能.。

软件项目管理第四章课后习题答案

软件项目管理第四章课后习题答案

四、项目进度管理1.简述时间管理包括哪些内容。

答:项目时间管理(也称进度管理)管理包括进度管理规划、活动定义、活动排序、活动资源估算、活动历时估算、制定进度计划和进度控制等管理过程。

在某些小的软件项目中,定义活动、排列活动顺序、估算活动资源、估算活动历时及制定进度计划等过程之间的联系非常密切,以至于可视为一个过程,由一个人在较短时间内完成。

2.如何理解项目进度管理的重要性,以及其他管理过程对进度管理的影响。

答:按时、保质完成项目是对项目的基本要求,但软件项目工期拖延的情况却时常发生,因而合理地安排项目时间是项目管理中的一项关键内容。

项目进度管理就是采用科学的方法确定项目进度,编制进度计划和资源供应计划,进行进度控制,在与质量、费用目标协调的基础上,实现项目的进度目标。

(1)范围、质量因素对进度的影响软件开发项目比其他任何建设项目都会有更经常的变更,大概是因为软件程序是一种“看不见”又“很容易修改”的东西吧,用户是想改就改,造成需求的蔓延,项目经理有时还不知如何拒绝,加上要说“我能”的心理因素,一般都会答应修改。

这样集少成多,逐渐影响了项目进度。

如果某项工作在进度上表面上达到目标了,但经检验其质量没有达到要求,则必然要通过返工等手段,增加人力资源的投入,增加时间的投入,实际上是拖延了进度。

不管是从横向或纵向来看,部分任务的质量会影响总体项目的进度,前面的一些任务质量中会影响到后面的一些任务质量。

(2)资源、预算变更对进度的影响资源,最主要的还是人力资源,有时某方面的人员不够到位,或者在多个项目的情况下某方面的人员中途被抽到其他项目、或身兼多个项目、或在别的项目不能自拔无法投入本项目。

还有一个很重要的资源,就是信息资源,如某些国家标准、行业标准,用户可能提供不了,而是需要去收集或购买,如果不能按时得到,就会影响需求分析、设计或编码的工作。

其他资源,如开发设备或软件没有到货,也会对进度造成影响。

预算其实就是一种资源,它的变更会影响某些资源的变更,从而对进度造成影响。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章习题一、选择题1. 从供选择的答案中选出应填入下列( )中的字句。

软件测试的目的是( A )。

为了提高测试的效率,应该( B )。

使用白盒测试方法时,确定测试数据应根据( C )和指定的覆盖标准。

与设计测试数据无关的文档是( D )。

软件的集成测试工作最好由( E )承担,以提高集成测试的效果。

供选择的答案:A. ①评价软件的质量②发现软件的错误③找出软件中的所有错误④证明软件是正确的B. ①随机地选取测试数据②取一切可能的输入数据作为测试数据③在完成编码以后制定软件的测试计划④选择发现错误的可能性大的数据作为测试数据C. ①程序的内部逻辑②程序的复杂程度③使用说明书④程序的功能D. ①该软件的设计人员②程序的复杂程度③源程序④项目开发计划E. ①该软件的设计人员②该软件开发组的负责人③该软件的编程人员④不属于该软件开发组的软件设计人员2. 请从供选择的答案中选出应填入下列()中的字句。

程序的三种基本控制结构是( A )。

它们的共同点是( B )。

结构化程序设计的一种基本方法是( C )。

软件测试的目的是( D )。

软件调试的目的是( E )。

供选择的答案:A. ①过程,子程序,分程序②顺序,条件,循环③递归,堆栈,队列④调用,返回,转移B. ①不能嵌套使用②只能用来写简单的程序③已经用硬件实现④只有一个入口和一个出口C. ①筛选法②递归法③归纳法④逐步求精法D. ①证明程序中没有错误②发现程序中的错误③测量程序的动态特性④检查程序中的语法错误E. ①找出错误所在并改正之②排除存在错误的可能性③对错误性质进行分类④统计出错的次数3. 从下列关于软件测试的叙述中,选出5条正确的叙述。

(1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。

(2) 尽量用公共过程或子程序去代替重复的代码段。

(3) 测试是为了验证该软件已正确地实现了用户的要求。

(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。

(5) 尽量采用复合的条件测试,以避免嵌套的分支结构。

(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。

(7) 发现错误多的程序模块,残留在模块中的错误也多。

(8) 黑盒测试方法中最有效的是因果图法。

(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。

(10) 程序效率的提高主要应通过选择高效的算法来实现。

4. 从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。

(1) 对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查。

(2) 已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。

因此,对变更的软件进行测试是必要的。

(3) 在意识到被测试模块的内部结构或算法的情况下进行测试。

(4) 为了确认用户的需求,先做出系统的主要部分,提交给用户试用。

(5) 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。

此时,有必要用一些模块替代尚未测试过的下层模块。

供选择的答案:A ~ E:①仿真器②代码审查③模拟器④桩模块⑤驱动器⑥域测试⑦黑盒测试⑧原型⑨白盒测试⑩退化测试5. 从供选择的答案中选出应填入下面有关软件测试的叙述的()内的正确答案。

软件测试方法可分为黑盒测试法和白盒测试法两种。

黑盒测试法是通过分析程序的( A )来设计测试用例的方法。

除了测试程序外,它还适用于对( B )阶段的软件文档进行测试。

白盒测试法是根据程序的( C )来设计测试用例的方法。

除了测试程序外,它也适用于对( D )阶段的软件文档进行测试。

白盒法测试程序时常按照给定的覆盖条件选取测试用例。

( E )覆盖比( F )覆盖严格,它使得每一个判定的每一条分支至少经历一次。

( G )覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。

( H )覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。

单元测试一般以( I )为主,测试的依据是( J )。

供选择的答案:A, C:①应用范围②内部逻辑③功能④输入数据B, D:①编码②软件详细设计③软件总体设计④需求分析E, F, G, H:①语句②判定③条件④判定/条件⑤多重条件⑥路径I:①白盒法②黑盒法J:①模块功能规格说明②系统模块结构图③系统需求规格说明6. 从供选择的答案中选出应该填入下列关于软件测试的叙述的( )内的正确答案。

软件测试中常用的静态分析方法是( A )和( B )。

( B )用于检查模块或子程序间的调用是否正确。

分析方法(白盒方法)中常用的方法是( C )方法。

非分析方法(黑盒方法)中常用的方法是( D )方法和( E )方法。

( E )方法根据输出对输入的依赖关系设计测试用例。

供选择的答案:A ~ B:①引用分析②算法分析③可靠性分析④效率分析⑤接口分析⑥操作分析C ~ E:①路径测试②等价类③因果图④归纳测试⑤综合测试⑥追踪⑦深度优先⑧调试⑨相对图二、简答题1.编程时使用的程序设计语言,对软件的开发与维护有何影响?2.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微妙可进行一次测试,那么对所有可能的输入进行测试需要多长时间?3.假设有一个由5000行FORTRAN语句构成的程序(经编译后大约有25000条机器指令),你估计在对它进行测试期间将发现多少个错误?为什么?4.设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IF A>5THEN X=10ELSE X=1END IFIF B>10THEN Y=20ELSE Y=2END IFIF C>15THEN Z=30ELSE Z=3END IFPRINT(A,B,C)STOP5.设计下列伪码程序的分支覆盖和条件组合覆盖测试用例:STARTINPUT(A,B,C,D)IF (A>0) AND (B>0)THEN X=A+BELSE X=A-BENDIF (C>A) OR (DTHEN Y=C-DELSE Y=C+DENDPRINT(X,Y)STOP6.使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例:1:STARTINPUT(A,B,C,D)2:IF (A>0)3: AND (B>0)4:THEN X=A+B5:ELSE X=A-B6:END7:IF (C>A)8: OR (D9:THEN Y=C-D10:ELSE Y=C+D11:END12:PRINT(X,Y)STOP7.设计测试下列函数的测试方案:、函数SEARCH(somearray,size,value)的功能是,在一组整数数组somearray中搜索一个值为value的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1.数组的长度由参数size指定。

假定数组第一个元素的下标为1.8.一个折半查找程序可搜索按字母顺序排列的名字列表,如果查找的名字在列表中则返回真,否则返回假。

为了对它进行功能测试,应该使用哪些测试用例?9.某图书馆有一个使用CRT终端的信息检索系统,该系统有下列四个基本检索命令,如表4.1所示。

表4.1 检索命令要求:(1)设计测试数据以全面测试系统的正常操作;(2)设计测试数据以测试系统的非正常操作。

10.航空公司A向软件公司B订购了一个规划飞行路线的程序。

假设你是软件公司C的软件工程师。

A公司已雇用你所在的公司对上述程序进行验收测试。

你的任务是,根据下述事实设计验收测试的输入数据。

领航员向程序输入出发地点和目的地,以及根据天气和飞行型号而初步确定的飞行高度。

程序读入途中的风向风力等数据,并且制定出三套飞行计划(高度,速度,方向及途中的五个位置校核点)。

所制定的飞行计划应该做到燃料消耗和飞行时间都最少。

11.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h.要求:(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间t的关系曲线。

在画这条曲线时你做了什么假设?(2)为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?12.在测试一个长度为48000条指令的程序时,第一个月由甲、乙两名测试员各种独立测试这个程序。

经一个月测试后,甲发现并改正了20个错误,使MTTF达到8h。

与此同时,乙发现24个错误,其中的6个甲也发现了。

以后由甲一个人继续测试这个程序。

问:(1)刚开始测试时程序中总共有多少潜藏的错误?(2)为使MTTF达到240h,必须再改正多少个错误?第四章习题解答一、选择题1. A. ② B. ④ C. ① D. ④ E. ④软件测试的目的是软件中的错误。

因为不可能把所有可能的输入数据都拿来测试(时间花费不起),为了提高测试的效率,应该选择发现错误的可能性大的数据作为测试数据。

使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准,可以不考虑程序的功能。

与设计测试数据无关的文档是项目开发计划。

软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。

2. A. ② B. ④ C. ④ D. ② E. ①1966年,Bohm与Jacopini提出任何单入口单出口的没有“死循环”的程序都能由三种最基本的控制结构构造出来。

这三种基本控制结构就是“顺序结构”、“选择IF-THEN-ELSE结构”、“重复DO-WHILE或DO-UNTIL结构”。

它们的共同点是只有一个入口和一个出口。

E.W.Dijkstra提出了程序要实现结构化的主张,并将这一类程序设计称为结构化程序设计。

这种方法的一个重要原则就是采用自顶向下、逐步求精的方法编写程序。

N.Wirth 曾做过如下说明:“我们对付一个复杂问题的最重要的方法就是抽象。

因此,对于一个复杂的问题,不要急于马上用计算机指令、数字和逻辑符号来表示它,而应当先用较自然的抽象的语句来表示,从而得到抽象的程序。

抽象程序对抽象的数据类型进行某些特定的运算,并用一些合适的记号(可以是自然语言)来表示。

下一步对抽象程序再做分解,进入下一个抽象的层次。

这样的细化过程一直进行下去,直到程序能被计算机接受为止。

此时的程序已经是用某种高级语言或机器指令书写的了。

”软件调试则是在进行了成功的测试之后才开始的工作。

它与软件测试不同,软件测试的目的是尽可能多地发现软件中的错误,但进一步诊断和改正程序中潜在的错误,则是调试的任务。

相关文档
最新文档