软件工程复习题及参考答案3(EF)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件工程》课程复习资料
一、填空题:
1.基于计算机系统总体可靠性与以下三个方面紧密关联:硬件可靠性、软件可靠性和。
2.面向对象的软件过程是以为基础,利用特定的软件工具直接完成从对象客体的描述到软件
结构之间的转换。
3.需求分析的任务主要有两个:通过对问题及环境的理解、分析和综合,建立分析模型;在完全弄清用
户对软件系统的确切要求的基础上,用把用户的需求表达出来。
4.需求开发又分为可行性研究、需求导出和分析、和需求验证。
5.对象包含两个基本的因素,和方法。
6.数据流图包括以下两种类型:变换型数据流图和。
7.系统设计阶段的输出结果是适应应用软件要求的、类间关系以及子系统的规格说明。
8.软件测试是为了发现而执行程序的过程。
9.软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批,并
利用它们去运行程序,以发现程序错误的过程。
10.软件变更可以是修改代码错误的简单变更、更正设计错误的较大范围的变更、对描述错误进行修正或
者增加新需求的重大改进。
软件变更可以考虑以下几个策略:、体系结构转换、软件再工程等策略。
11.软件维护性是软件的内在固有属性,它是的重要组成部分。
12.质量评审和自动化的软件评估是质量控制的两种方式。
评审活动主要包括、
进展评审和质量评审等几种不同类型。
二、单项选择题:
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.Grenford J.Myers就软件测试目的提出的观点不包括以下哪项? [ ]
A.测试是程序的执行过程,目的在于发现错误
B.证明软件的功能和性能与需求说明相符合
C.一个好的测试用例在于能发现至今未发现的错误
D.一个成功的测试是发现了至今未发现的错误的测试
9.黑盒测试又称为 [ ]
A.结构测试
B.代码测试
C.功能测试
D.路径测试
10.纠错技术主要是指定位程序错误采用的工具和手段,常用的定位错误方法不包括 [ ]
A.插入打印语句
B.设置断点
C.根据结果推理
D.掩蔽部分程序
11.为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错
误的过程,就叫做 [ ]
A.完善性维护
B.适应性维护
C.改正性维护
D.预防性维护
12.( )和自动化的软件评估是质量控制的两种方式,其中前者是由一组人员对软件、文档编制和软件制
作过程进行评审。
[ ]
A.质量评审
B.质量保证
C.质量标准
D.质量规划
13.UML 定义了五类十种模型图,下列哪个不是其定义的模型图? [ ]
A.用例图
B.静态图
C.行为图
D.动态图
14.从系统设计的角度出发,软件设计方法可以分为三大类,下列哪种不是? [ ]
A.根据系统的数据流进行设计
B.根据系统的需求分析进行设计
C.根据系统的数据结构进行设计
D.面向对象的设计
15.软件设计的过程中,遵循一些基本原则,下列哪个不是其应遵循的原则? [ ]
A.模块独立性原则
B.一致性的原则
C.抽象的原则
D.信息隐藏和局部化的原则
16.随着计算机的飞速发展,外部环境或数据环境可能发生变化,为了使软件适应这种变化,而去修改软
件的过程就叫做 [ ]
A.完善性维护
B.适应性维护
C.改正性维护
D.预防性维护
三、名词解释:
1.软件
2.软件工程
3.数据流图
4.对象
5.消息
6.封装性
7.模块的耦合性
8.模块的扇入数
9.程序流程图
10.程序编码风格
11.功能性注释
12.白盒测试
13.系统测试
14.完善性维护
15.软件重用
16.E-R图
17.分析结果重用
18.代码重用
19.软件测试
四、简答题:
1.与硬件相比,软件具有哪些特点?
2.软件系统需求分为哪三类?每类主要包含哪些内容?
3.从系统设计的角度出发,软件设计方法分为哪三大类?
4.结构图中主要有哪四种类型的模块?
5.按照Rumbaugh等人提出的对象建模技术,面向对象设计过程主要由哪些步骤组成?
6.对象的实现描述中包括主要包括哪些信息?
7.结构化程序设计的主要原则有哪些?
8.编程阶段主要完成的三大任务是什么?
9.软件测试时应注意和遵循哪些原则?
10.单元测试的主要内容由哪些?
11.何谓软件的维护性?
12.影响维护代价的技术因素主要有哪些?
13.数据流图具有哪些特性?并作简单说明。
14.软件重用是提高软件生产率的重要手段,它主要有哪几种类型?
15.将模块组装成为系统主要有哪些方式?
16.需求的获取主要有何方法?简要说明之。
17.对象具有哪些基本特点?
18.组装测试的主要内容有哪些?
五、应用题:
1.试举例说明,黑盒测试时不可能把所有可能的输入数据都拿来进行穷举测试。
2.分别举例说明C++中对象操作的两种调用方式。
3.比较下列两段语句,从编码风格的角度分析哪一段好些,并说明好在哪些方面。
程序段一:
if a>b
then
if x>y
then
b=y
else
a=x
end if
else
a=b
end if
程序段二:
/ position_x is the position x of object; position_y is the position y of object; / if a>b then
a=b
else
if position_x>position_y then
b=position_y
else
a=position_x
end if
end if
4.根据下列描述,画出教材征订系统的第一层数据流图。
学生入学后到教材科订书,教材科根据教材库
存情况分析是否需要买书,如需购买,则向书店购买。
各种资金往来通过学校的会计科办理。
5.一本书的组成有一个封面,一个目录,一个前言,若干章,每章有若干节,每节有若干段,每段有若
干句子,每节有0个或多个插图,还有0个或多个表格,最后有一个附录。
试建立该书的对象模型。
6.执行下列语句后,
int i,s;
for(i=s=0; i<5; i++) s+=i;
while (--i>1) s+=i;
求S的值(写出必要的中间值)。
7.分析以下数据流图,试分别说明(a)、(b)、(c)、(d)中A、B、C之间的关系。
8.某旅馆的电话服务如下:
可以拨分机号和外线号码。
分机号是从7201至7299。
外线号码先拨9,然后是市话号码或长话号码。
长话号码是以区号和市话号码组成。
区号是从100到300中任意的数字串。
市话号码是以局号和分局号组成。
局号可以是455,466,888,552中任意一个号码。
分局号是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据条目的定义(即组成)。
9.用判定树描述下例:在铁路货运票价系统中,如果里程数大于1千km(含),且货运量超过500吨(含),则货运价为0.05元/公里·吨;500吨以下,货运价为0.06元/公里·吨。
如果里程数小于1千km,且货运量超过500吨(含),则货运价为0.07元/公里·吨;500吨以下,货运价为0.08元/公里·吨。
参考答案
一、填空题:
1.操作员可靠性
2.对象
3.软件需求规格说明书
4.编写规格说明书
5.属性
6.事务型数据流图
7.类
8.错误
9.测试用例
10.软件维护
11.软件质量
12.设计或程序检查
二、单项选择题:
1~5:CBCBA; 6~10:BABCC; 11~16:CADBBB
三、名词解释:
1.软件:软件是能够完成预定功能和性能的可执行指令,使得程序能够适当地操作信息的数据结构同时
也是描述程序的操作和使用的文档。
2.软件工程:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术
和当前能够得到的最好的技术方法结合起来,这就是软件工程。
3.数据流图:数据流图是结构化系统分析的基本工具。
一个数据流图确定了系统的转化过程、系统所操
纵的数据或物质的收集(存储),还有过程、存储、外部世界之间的数据流或物质流。
4.对象:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。
对象是现实世界中的实体、实物、事物等。
它可以是有形的、无形的,也可以是一种抽象思维。
对象包含两个基本的因素:属性和方法。
5.消息:对象引用一个服务(方法)的过程称之为向该对象发送一个消息,消息是对象之间交互的手段,
是要求某个对象执行类中定义的某个操作的规格说明。
6.封装性:封装性是面向对象技术的一个重要机制,封装意味着把属性和服务捆绑在一起形成一个相对
独立的基本构件(对象)。
7.模块的耦合性:是模块之间的相对独立性(互相连接的紧密程度)的度量。
它取决于各个模块之间接
口的复杂程度,取决于如何进入或访问一个模块,以及哪些数据将通过该接口。
8.模块的扇入数:多个模块可以有同一个下属模块,该下属模块的上级模块的个数称为扇入数。
9.程序流程图:把一个构件的内部执行过程用流程图描述,也就是用各种几何图形、流线及文字说明来
描述模块的执行过程的框图叫程序流程图。
10.程序编码风格:程序编码风格就是程序员在编码时在源程序文件、语句结构、程序注释等方面表现出
的一贯的特点的总和。
11.功能性注释:功能性注释说明下面的语句或程序段是做什么,或执行下面的语句或程序段会发生什么
事情。
12.白盒测试:根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计
规格要求,所有内部成分是否已经过检查。
这种测试方法就是白盒测试,白盒测试又称为结构测试。
13.系统测试:系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、
外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。
14.完善性维护:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。
为了满足这些要求,
需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
这种情况下进行的维护活动叫做完善性维护。
15.软件重用:软件重用是指软件的某一部分在不做修改或稍做修改的情况下重复使用。
软件重用可降低
软机成本、提高软件生产率和软件质量,即重复使用软件资源的过程。
16.E-R图:E-R图是数据分析和数据建模的主要工具,它描绘了系统的数据关系。
E-R图包括3种互相关
联的信息,即数据对象、描述对象的属性、描述对象间相互连接的关系。
17.分析结果重用:分析结果的重用是指对问题空间描述的重用,例如对面向对象分析结果或其它一些分
析描述方法结果的重用,这是一种重用性更高的重用方法。
这种重用尤其适应于用户需求未变,而计算机系统结构发生了变化的情况。
18.代码重用:代码重用就是对程序库中的某个模块进行子程序调用,它包括源代码的拼接、源代码的拷
贝、继承、对目标码的拼接、运行时连接几种形式。
这是一种重用性低的重用方法。
19.软件测试:软件测试是在软件正式投入运行前,对软件的需求分析、设计规格说明和编码的最终复审,
是质量保证工作最为关键的一个环节。
软件测试是为了发现错误而执行程序的过程。
四、简答题:
1.与硬件相比,软件具有哪些特点?
解答:与硬件相比,软件具有以下不同的特点:
(1)软件是逻辑的,而不是物理的产品。
逻辑往往实际只存在于人的头脑当中,软件的开发过程极难加以控制。
(2)软件是由开发或工程化而形成的,没有明显的制造过程。
软件成本集中于"开"上,意味着软件项目不能象硬件制造项目那样来管理。
(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。
(4)大多数软件是自定的,而不是通过已有构件组装而成的。
迄今为止,软件的开发尚未完全摆脱手工的方式。
(5)软件成本相当昂贵。
IBM360操作系统的研制人员最多时可达1000多人,从1963年到1966年共花了四年时间才完成,总计耗费了5000多人年,以后又进行不断的修改和补充。
该系统的整个研制费用为5亿美元,其中近一半花在软件上。
(6)软件本身是复杂的。
软件比任何其他人类制造的结构更复杂,甚至硬件的复杂性和软件相比也是微不足道的。
软件本质上的复杂性是软件产品难以理解,影响软件过程的管理,并使维护过程十分复杂。
2.软件系统需求分为哪三类?每类主要包含哪些内容?
解答:软件系统需求可以分为功能需求、非功能需求和领域需求:
(1)功能需求描述系统所预期提供的功能或服务。
即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。
它由开发的软件类型、软件未来的用户以及开发的系统类型决定。
(2)非功能需求是指那些不直接与系统具体工作相关的一类需求。
主要涉及系统的总体特性,如可靠性、反映时间和储存空间等。
(3)领域需求是来自系统的应用领域的需求,反映了该领域的特点,它可能是一个新的特有的功能需求,对已存在的功能需求的约束或者是需要实现的一个特别计算。
3.从系统设计的角度出发,软件设计方法分为哪三大类?
解答:从系统设计的角度出发,软件设计方法可以分为三大类。
(1)第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法(Structured Design, SD)为代表。
(2)第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP (程序逻辑构造)方法、Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代表。
(3)第三类设计方法即面向对象的设计。
4.结构图中主要有哪四种类型的模块?
解答:结构图中可能出现以下四种类型的模块:
(1)传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。
(2)传出模块:从上级模块取得数据,进行某些处理,传送给下属模块。
(3)变换模块:从上级模块取来数据,进行特定处理后,送回原上级模块。
(4)协调模块:对其下属模块进行控制和管理的模块。
5.按照Rumbaugh等人提出的对象建模技术,面向对象设计过程主要由哪些步骤组成?
解答:按照Rumbaugh等人提出的对象建模技术(Object Modeling Technique,OMT),面向对象设计过程主要由以下步骤组成:
(1)系统设计。
主要完成系统整体结构的设计,包括将子系统分配到处理器和任务中,选择实现数据管理、界面支持和任务管理的设计策略,为系统设计合适的控制机制。
(2)对象设计。
对OOA模型中的类对象模型具体化、详细化,包括用传统设计方法中过程设计的方法设计对象的每个操作,定义实现系统所需的内部类,为类属性设计内部数据结构等。
(3)消息设计。
使用对象间的协作和对象-关系模型,设计消息模型。
(4)复审设计模型。
设计过程是递进的,从需求和实现两个角度对设计模型进行复审,并伴随着附加的OOA活动。
6.对象的实现描述中包括主要包括哪些信息?
解答:对象的实现描述中包括以下信息:
(1)对象名及所属对象类;
(2)私有数据结构的每一数据项及其类型;
(3)每个操作的过程性描述或指向这样一个过程性描述的指针。
7.结构化程序设计的主要原则有哪些?
解答:结构化程序设计的主要原则如下:
(1)使用语言有限的基本控制表示逻辑;
(2)选用的控制结构只准许有一个入口和一个;
(3)程序语句组成容易识别的块,每块只有一个入口和一个出口;
(4)复杂结构应该用基本控制结构进行组合嵌套来实现;
(5)语言中没有的控制结构,可用一段等价的程序段来模拟,但要求该程序在整个系统中应前后一致;(6)严格控制GOTO语句,仅在下列情形下才可使用:①用一个非结构化的程序设计语言去实现一个结构化的构造;②某种可以改善而不是损害程序可读性的情况下。
8.编程阶段主要完成的三大任务是什么?
解答:编程阶段主要完成的三个任务为:明确程序的控制结构、确定程序所使用的算法、制定程序所需的数据结构。
(1)明确程序的控制结构
编码阶段无论采用哪种控制结构来实现,都要严格遵从以下原则:代码应避免使用跳转语句;保持设计所制定的模块性;模块应具有通用性,即不应将只调用一次的代码放在模块中。
(2)确定程序所使用的算法
在算法的使用上,人们往往一味地追求运行的速度而采用复杂的算法,这时取得的运行速度特性是以下列付出为代价的:在实现这样的代码时需要付出比普通算法更多的时间;检验代码的正确性需要时间;代码读者可能是读懂代码需要很长时间;修改代码需要的额外时间。
因此,在为程序选择算法时应在开发时间与运行时间上进行充分的比较。
(3)制定程序所需的数据结构
编写程序时,需要考虑如何安排数据的组织和存储形式,即数据结构。
9.软件测试时应注意和遵循哪些原则?
解答:软件测试的原则:
(1)把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。
不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。
坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。
(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。
测试以前应当根据测试的要求选择测试用例(Test case),用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。
(3)程序员应避免检查自己的程序。
程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的程序。
如果条件允许,最好建立独立的软件测试小组或测试机构。
这点不能与程序的调试(debuging)相混淆。
调试由程序员自己来做可能更有效。
(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。
软件系统处理非法命令的能力必须在测试时受到检验。
用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。
(5)充分注意测试中的群集现象。
在被测程序段中,若发现错误数目多,则残存错误数目也比较多。
这种错误群集性现象,已为许多程序的测试实践所证实。
根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。
(6)严格执行测试计划,排除测试的随意性。
测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测程序的功能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、测试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回归测试的规定,以及评价标准等。
对于测试计划,要明确规定,不要随意解释。
(7)应当对每一个测试结果做全面检查。
有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地全面地检查测试结果,就会使这些错误被遗漏掉。
所以必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住征侯,暴露错误。
(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
10.单元测试的主要内容由哪些?
解答:单元测试的内容有:
(1)模块接口测试:对通过被测模块的数据流进行测试。
为此,对模块接口,包括参数表、调用子模块的参数、全程数据、文件输入/输出操作都必须检查。
(2)局部数据结构测试:设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响。
(3)路径测试:选择适当的测试用例,对模块中重要的执行路径进行测试。
对基本执行路径和循环进行测试可以发现大量的路径错误。
(4)错误处理测试:检查模块的错误处理功能是否包含有错误或缺陷。
例如,是否拒绝不合理的输入;出错的描述是否难以理解、是否对错误定位有误、是否出错原因报告有误、是否对错误条件的处理不正确;在对错误处理之前错误条件是否已经引起系统的干预等。
(5)边界测试:要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。
对这些地方要仔细地选择测试用例,认真加以测试。
11.何谓软件的维护性?
解答:软件的维护性是一种与软件维护有关的属性,国标GB/T 11457-89对软件的维护性作了以下定义:(1)软件进行维护的难易程度。
(2)按照预定的需要对某一功能部件进行维护的难易程度.
(3)在规定的使用条件下,在给定时间间隔内一个软件保持在某一指定状态或者恢复到某一指定状态的能力。
软件维护性是软件的内在固有属性,它是软件质量的重要组成部分。
在软件的质量特性中,维护性与可靠性、可重用性的关系尤为密切。
12.影响维护代价的技术因素主要有哪些?
解答:影响维护代价的技术因素主要有:
(1)软件对运行环境的依赖性。
(2)编程语言。
(3)编程风格。
良好的编程风格意味着良好的可理解性,可以降低维护的代价。
(4)测试和改错工作。
如果测试和改错工作做得好,后期的维护代价就能降低。
(5)文档的质量。
清晰、正确和完备的文档能降低维护的代价。
13.数据流图具有哪些特性?并作简单说明。
解答:数据流图具有抽象性、概括性和层次性等特性。
(1)抽象性:数据流图中只有四种基本符号组成,没有任何具体的物理部件,只描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的表示,这种抽象性有助于系统的功能分析和进一步的总体设计。
(2)概括性:数据流图作为信息交流的工具,由简单的符号组成,不包含任何物理实现的细节,便于用户理解和评价它。