软件工程习题附答案.docx
《软件工程习题附答案.docx》由会员分享,可在线阅读,更多相关《软件工程习题附答案.docx(27页珍藏版)》请在冰豆网上搜索。
![软件工程习题附答案.docx](https://file1.bdocx.com/fileroot1/2022-12/30/532bd038-638e-4e51-be22-be41a758c1f5/532bd038-638e-4e51-be22-be41a758c1f51.gif)
软件工程习题附答案
一、选择填空
1.在面向对象方法中,对象可看成是属性(数据)以及这些属性上的专用操作的封装体。
封装是一种A技术,封装的目的是使对象的B分离。
类是一组具有相同属性和相同操作的对象的集合,类中的每个对象都是这个类的一个C。
类之间共享属性和操作的机制成为D。
一个对象通过发送E来请求另一对象为其服务。
A:
①组装②产品化③固化④信息隐蔽
B:
①定义和实现②设计和测试③设计和实现④分析和定义
C:
①例证(illustration)②用例(use-case)③实例(instance)④例外(exception)
D:
①多态性②动态绑定③静态绑定④继承
E:
①调用语句②消息③命令④口令
2.面向对象型的程序设计语言具有数据抽象、信息隐蔽、A等特征。
作为运算单位的对象应具有下列特性:
B、C、D。
E是面向对象的语言。
A:
①对象调用②对象变换③非过程性④信息继承⑤并发性
B~D:
①对象把数据和处理数据的操作结合为一体
②在程序运行时对象处于活动状态
③接受消息的对象必须给消息发送者以回答
④对象在计算中可向其他对象发送消息
⑤对象的内部状态只根据外部送来的消息才操作
E:
①C++②③④
3.OMT是一种对象建模技术,它定义了三种模型,它们分别是A模型,B模型,和C模型。
其中,A模型描述了系统中对象的静态结构,以及对象之间的联系;B模型描述系统中与时间和操作顺序有关的系统特征,表示瞬时的行为上的系统的“控制”特征,通常可用D来表示;C模型描述了与值的变换有关的系统特征,通常可用E来表示。
A:
①对象②功能③ER④静态
B:
①控制②时序③动态④实时
C:
①对象②功能③变换④计算
D:
①类图②状态图③对象图④数据流图
E:
①类图②状态图③对象图④数据流图
4.在完成概要设计并编写出相关文档后,应当组织对概要设计工作的评审。
评审的内容包括:
分析该软件的系统结构、子系统结构,确定该软件设计是否已经覆盖了所有已确定的软件需求,软件的每一成分是否可A到某一项需求。
分析软件的各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。
模块是否满足B和C的要求。
模块D是否在其E之内。
A:
①覆盖②演化③追溯④等同⑤连接
B:
①多功能②高内聚③高耦合④高效率⑤可读性
C:
①多入口②低内聚③低耦合④低复杂度⑤低强度
D~E:
①作用范围②高内聚③低内聚④取值范围⑤控制范围
5.软件设计中划分程序模块通常遵循的原则是要使各模块间的耦合性尽可能A。
三种可能的模块耦合是:
1).B:
例如,一个模块直接引用另一模块中的数据。
2).C:
例如,一个模块把开关量作为参数传送给另一模块。
3).D:
例如,一个模块把一个数值量作为参数传送给另一模块。
其中,E5的耦合性最强。
A:
①强②适中③弱④不考虑
B~E:
①公共耦合②数据耦合③逻辑耦合④外部耦合
⑤内容耦合⑥控制耦合
6.软件设计中划分模块的一个准则是A。
两个模块之间的耦合方式中,B耦合的耦合度最高,C耦合的耦合度最低。
一个模块内部的内聚种类中D内聚的内聚度最高,E内聚的内聚度最低。
A:
①低内聚低耦合②低内聚高耦合③高内聚低耦合④高内聚高耦合
B:
①数据②非直接③控制④内容
C:
①数据②非直接③控制④内容
D:
①偶然②逻辑③功能④过程
E:
①偶然②逻辑③功能④过程
7.经过需求分析阶段后,已经清楚了目标系统必须“做什么”了,下一步应进入总体设计阶段。
总体设计阶段过程通常由确定系统具体实现方案的A和确定软件结构的B组成。
大致过程可描述如下:
设想可供选择的方案、选取合理方案、推荐最佳方案、功能分解、设计软件结构、数据库设计、制定测试计划、书写文档、审查与复审。
对每个合理的方案,都应该准备C、D、E和实现这个系统的进度计划。
A:
①程序流程图设计②系统设计③操作手册书写④数据流图设计
B:
①结构设计②程序流程图设计③单元测试方案设计④数据字典设计
C:
①系统流程图②可行性报告③数据字典④算法描述
D:
①组成系统的物理元素清单②数据字典③HIPO图④数据流图
E:
①成本/效益分析②测试方案③数据流图④数据字典
8.结构化设计方法在软件开发中用于A,它是一种面向B的设计方法。
该方法使用的图形工具是C,C中矩形表示D。
如果两矩形之间有直线相连,表示它们存在E关系。
A:
①测试用例设计②概要设计③程序设计④详细设计
B:
①对象②数据结构③数据流④控制流
C:
①程序结构图②数据流程序图③程序流程图④实体联系图
D:
①数据②加工③模块④存储
E:
①链接②调用③并列④顺序执行
9.按软件工程的不同层次和适用范围,软件工程的标准可分为五级,A制定的是国际标准,B是行业标准。
GB1526-69对程序流程图等作了明确、具体规定,这种标准程序流程图的特点是:
C、D、E。
A:
①IEEE,GJB②IEEE,ANSI③ISO,IEC④ISO,IEEE
B:
①IEEE,GJB②IEEE,ANSI③ISO,IEC④ISO,IEEE
C~E:
①箭头表示数据的传递方向②允许自定义多种特定的图形符号
③对循环结构规定了一对特定的符号④它和ISO的有关规定有一些差别
⑤允许有两个以上的出口的判定⑥特定方向的流线才用箭头表明方向
⑦不允许在图形符号外加注标识符和描述符
10.国家标准《计算机软件产品开发文件编制指南GB8567-88》中规定,在一项软件开发过程中,一般的说应该产生十四中文件,其中管理人员主要使用的有A2、B3、C4、开发进度月报表、项目开发结报告。
开发人员主要使用的有A、B、D1、数据要求说明书、概要设计说明书、详细说明书、数据库设计说明书、测试计划和E5。
维护人员主要使用的有设计说明书、E、C。
A~E:
①软件需求说明书②项目开发计划③可行性研究报告④模块开发卷宗
⑤测试分析报告⑥操作手册⑦用户手册
11.在众多的设计方法中,SD方法是受人注意的,也是最为广泛应用的一种,这种方法可以用分析阶段的A方法及编程阶段的B方法前后衔接,SD方法是考虑如何建立一个结构良好的程序,它提出了评价模块结构质量的两个标准——块间联系和块内联系。
SD方法的最终目标是C,用于表示模块间调用关系的图被称为D。
另一种比较著名的设计方法是以信息隐蔽为原则划分模块,这种方法叫做E方法。
A~B:
①Jackson②SA③SP④Parnas
C:
①模块间关系大,模块内联系大②模块间关系大,模块内联系小
③模块间关系小,模块内联系大④模块间关系小,模块内联系小
D:
①PAD图②HCP③结构图④SADT⑤HIPO图⑥NS图
E:
①Jackson②Parnas③Turing④Wirth⑤Dijkstra
12.软件工程强调了软件生命周期的各个阶段在进入下一个阶段时必须依据阶段结束标准经行严格的阶段评审。
请回答下列各个阶段的结束标准:
问题定义阶段的结束标准是A;可行性研究阶段的结束标准是:
B和C;需求分析阶段的技术标准是:
C、D和E。
A:
①关于规模和目标的报告书②关于系统的高层逻辑模型
③用户手册④操作手册
B:
①程序流程图②IPO图③成本/效益分析④数据字典
C:
①程序流程图②数据流图③HIPO图④算法描述
D:
①程序流程图②HIPO图③数据字典④成本/效益分析
E:
①程序流程图②算法描述③IPO图④HIPO图
13.软件工程强调了软件生命周期的各个阶段在进入下一个阶段时必须依据阶段结束标准经行严格的阶段评审。
请回答下列各个阶段的结束标准:
总体设计阶段的结束标准是A、B和C;
详细设计阶段的结束标准是:
D或E。
A:
①系统流程图②维护记录③数据流图④操作手册
B:
①程序流程图②IPO图③成本/效益分析④数据字典
C:
①层次图或结构图②数据流图③HIPO图④算法描述
D:
①维护记录②HIPO图③数据字典④成本/效益分析
E:
①维护记录②PDL③IPO图④HIPO图
14.软件工程强调了软件生命周期的各个阶段在进入下一个阶段时必须依据阶段结束标准经行严格的阶段评审。
请回答下列各个阶段的结束标准:
编码与单元测试阶段的结束标准是A、B;
综合测试阶段的结束标准是:
C、D;
维护阶段的结束标准是:
E。
A:
①源程序清单②维护记录③用户手册④IPO图
B:
①综合测试结果②IPO图③单元测试方案与结果④数据字典
C:
①综合测试方案与结果②数据流图③HIPO图④算法描述
D:
①软件配置②HIPO图③数据字典④成本/效益分析
E:
①维护记录②PDL③IPO图④HIPO图
15.软件设计的常用方法有SA方法、Jackson方法、Parnas方法等。
Jackson方法是一种面向数据结构的设计方法,一般在数据处理中,数据结构有A、B、C三类,并根据D来导出程序结构。
Parnas方法的主要思想是E,这是提高可维护性的重要措施。
A~C:
(共有下列15个可选择的答案供选择)
①记录②集合③指针④树⑤图
⑥表⑦顺序⑧选择⑨重复⑩线性表
⑾键表⑿列表⒀数组⒁栈⒂队列
D:
①数据结构②数据间的控制结构③数据流图④IPO图
E:
①结构化②模块化③信息隐藏④信息继承
16.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向A的设计方法,主要适用于规模适中的B系统的开发,其基本步骤依次是C1、D3、E2。
A:
①对象②数据流③数据结构④控制结构
B:
①数据处理②文字处理③实时控制④科学计算
C~E:
①建立数据结构②列出基本操作③建立程序结构④建立控制结构
17.在软件工程的设计阶段中,有三种常用的设计方法:
结构化设计(SD)方法、Jackson方法和Parnas方法。
SD方法侧重于A3,Jackson方法则是B2;Parnas方法的主要思想C4。
从70年代中期到90年代早期,D是最为常用的设计方法。
E方法只提供了重要的设计准则,没有规定出具体的工作步骤。
A~C:
①使用对象、类和继承②由数据结构导出模块结构
③模块要相对独立,且功能单一,使块间联系弱,块内联系强
④将可能引起变化的因素隐藏在某有关模块内部,使这些因素变化时的影响范围受限制
⑤用数据流图表示系统的分解,且用数据词典和小说明分别表示数据和加工的含义
⑥自顶向下、逐步细化,采用顺序、选择和循环三种基本结构,以及限制GOTO语句的使用,设计出可靠的和易维护的软件
D:
①SD②Jackson③Parnas④面向对象
E:
①SD②Jackson③Parnas④以上皆非
18.在编制程序时,应采纳的原则之一是A。
开发软件时对提高开发人员工作效率至关重要的是B。
软件工程中描述生命周期的瀑布模型一般包括计划、C、设计、编码、测试、维护等几个阶段,其中设计阶段通常又可依次分成D和E两步。
A:
①不限制goto语句的使用②减少或取消注解行
③程序越短越好④程序结构应有助于读者理解
B:
①操作系统的资源管理功能②程序开发环境
③程序人员数量④计算机的并行处理能力
C:
①需求分析②需求调查③可行性分析④问题定义
D~E:
①数据结构设计②详细设计③概要设计④数据库设计
⑤方案设计⑥代码设计
19.确定算法是解决问题的关键步骤之一。
算法的计算工作量大小和实现算法所需的存储单元多少,分别称为计算的A和B。
编写程序时,C和D是应采纳的原则之一。
E是调试程序的主要工作之一。
A~B:
①可实现性②时间复杂度③空间复杂度④困难度
⑤高效性⑥计算有效性
C:
①程序的结构化②程序越短越好
③尽可能节省存储单元④尽可能减少注解行
D:
①使用有实际意义的名字②使用长度短而无实际含义的名字
③表达式中尽量少用括号④尽量使用化简了的逻辑表达式
E:
①调度②证明程序正确③人员安排④排错
20.在设计测试用例时,A是用得最多的一种黑盒测试方法。
在黑盒测试方法中,等价类划分方法设计测试用例的步骤是:
①据输入条件把数目极多的输入数据划分成若干个有效等价类和若干个无效等价类;
②设计一个测试用例,使其覆盖B5尚未被覆盖的有效等价类,重复这一步,直至所有的有效等价类均被覆盖;
③设计一个测试用例,使其覆盖C1尚未被覆盖的无效无价类,重复这一步,直至所有的无效等价类均被覆盖。
因果图方法是根据D之间的因果关系来设计测试用例的。
在实际应用中,一旦纠正了程序中的错误后,还应选择部分或全部原先已测试过的测试用例,对修改后的程序重新测试,这种测试称为E。
A:
①等价类划分②边值分析③因果图④判定表
B~C:
①1个②7个左右③一半④尽可能少的
⑤尽可能多的⑥全部
D:
①输入与输出②设计与实现③条件与结果④主程序与子程序
E:
①验收测试②强度测试③系统测试④回归测试
21.设计高质量的软件是软件设计追求的一个重要目标.可移植性、可维护性、可靠性、效率、可理解性和可使用性等都是评价软件质量的重要方面。
可移植性是反映出把一个原先在某种硬件或软件环境下正常运行的软件移植到另一个硬件或软件环境下,使该软件也能正确地运行的难易程度。
为了提高软件的可移植性,应注意提高软件的A。
可维护性通常包括B。
通常认为,软件维护工作包括改正维护、C4维护和D6维护。
其中C维护则是为了扩充软件的功能或提高原有软件的性能而进行的维护活动。
E是指当系统万一遇到未预料的情况时,能够按照预定的方式作合适的处理。
A:
①使用方便②简洁性③可靠性④设备不依赖性
B:
①可用性和可理解性②可修改性、数据独立性和数据一致性
③可测试性和稳定性④可理解性、可修改性和可测试性
C~D:
①功能性②扩展性③合理性④完善性⑤合法性⑥适应性
E:
①可用性②正确性③稳定性④健壮性
22.在结构测试用例设计中,有语句覆盖、条件覆盖、判定覆盖(即分支覆盖)、路径覆盖等,其中A4是最强的覆盖准则。
为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试数据组。
若x,y是两个变量,可供选择的测试数据组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组(如表中给出),则实现判定覆盖至少应采用的测试数据组是B5,8;实现条件覆盖至少应采用的测试数据组是C7;实现路径覆盖至少应采用的测试数据组是D5或E8。
X
y
测试数据组Ⅰ
0
3
测试数据组Ⅱ
1
2
测试数据组Ⅲ
-1
2
测试数据组Ⅳ
3
1
A:
①语句覆盖②条件覆盖③判定覆盖④路径覆盖
B~E:
①Ⅰ组和Ⅱ组②Ⅱ组和Ⅲ组③Ⅲ组和Ⅳ组④Ⅰ组和Ⅳ组
⑤Ⅰ组、Ⅱ组和Ⅲ组⑥Ⅱ组、Ⅲ组和Ⅳ组⑦Ⅰ组、Ⅲ组和Ⅳ组⑧Ⅰ组、Ⅱ组和Ⅳ组
23.软件测试的目的是A。
为了提高测试的效率,应该B。
使用白盒测试方法时,确定测试数据应根据C和指定的覆盖标准。
一般说来与设计测试数据无关的文档是D。
软件的集成测试工作最好由E承担,以提高集成测试的效果。
A:
①评价软件的质量②发现软件的错误
③找出软件中的所有错误④证明软件是正确的
B:
①随机地选取测试数据②去一切可能的输入数据作为测试数据
③在完成编码以后制定软件的测试计划④选择发现错误的可能性大的数据作为测试数据
C:
①程序的内部逻辑②程序的复杂程度
③使用说明书④程序的功能
D:
①需求规格说明书②设计说明书③源程序④项目开发计划
E:
①该软件的设计人员②该软件开发组的负责人
③该软件的编程人员④不属于该软件开发组的软件设计人员
24.A在实现阶段进行,它所依据的模块功能描述和内部细节以及测试方案应在B阶段完成,目的是发现编程错误。
C所依据的模块说明书和测试方案应在D阶段完成,它能发现设计错误。
E应在模拟的环境中进行强度测试的基础上进行,测试计划应在软件需求分析阶段完成。
A:
①用户界面测试②输入输出测试③集成测试④单元测试
B:
①需求分析②概要设计③详细设计④结构设计
C:
①集成测试②可靠性测试③系统性能测试④强度测试
D:
①编程②概要设计③维护④详细设计
E:
①过程测试②函数测试③验收测试④逻辑路径测试
25.软件质量包含多方面的内容,A、B、可移植性、可复用性等是较为重要的质量特性。
在软件开发中,必须采取有利的措施,以确保软件的质量,这些措施至少应包括C、D、E。
A~B:
①稳定性②可靠性③数据一致性④可维护性
⑤可行性⑥数据独立性
C~E:
①在开发初期制定质量保证计划,并在开发中坚持实行
②开发工作严格按阶段进行,文档工作应在开发完成后集中进行
③严格执行阶段评审
④要求用户参与全部开发过程,以监督开发质量
⑤开发前选定或制定开发标准或开发规范,并遵照实施
⑥争取足够的开发经费和开发人力的支持
26.软件维护工作越来越受到重视,因为它的花费常常要占软件生存周期全部花费的A%左右。
其工作内容为
B,为减少维护工作的困难可以考虑采取的措施是C。
而软件的可维护性包含D。
所谓维护管理主要指的是E等。
A:
①10~20②20~40③60~80④90以上
B:
①纠正与修改软件中含有的错误②因环境已发生变化,软件需作相应的变更
③为扩充功能,提高性能而作的变更④包括上述各点内容
C:
①设法开发出无错的软件②增加维护人员数量
③切实加强维护管理,并在开发过程中采取有利于未来维护的措施④限制修改的范围
D:
①正确性、灵活性、可移植性②可测试性、可理解性、可修改性
③可靠性、可复用性、可用性④灵活性、可靠性、高效性
E:
①加强需求分析②重新编码
③判定修改的合理性并审查修改质量④加强维护人员管理
27.软件测试是软件质量保证的主要手段之一,测试的费用已超过A的30%以上。
因此提高测试的有效性非常重要。
“高产”的测试是指B。
根据国家标准GB8566-88计算机软件开发规范的规定,软件的开发和维护分为八个阶段,其中单元测试是在C5阶段完成的;组装测试的计划是在D3阶段制订的;确认测试的计划是在E2阶段制订的。
A:
①软件开发费用②软件维护费用③软件开发和维护费用④软件研制费用
B:
①用适量的测试用例,说明被测试程序正确无误
②用适量的测试用例,说明被测试程序符合相应的要求
③用少量的测试用例,发现被测试程序尽可能多的错误
④用少量的测试用例,纠正被测试程序尽可能多的错误
C~E:
①可行性研究和计划②需求分析③概要设计④详细设计
⑤实现⑥组装测试⑦确认测试⑧使用和维护
28.软件测试的目的是A。
通常B是在代码编写阶段可进行的测试,它是整个测试工作的基础。
逻辑覆盖标准主要用于C。
它主要包括条件覆盖、条件组合(多重条件)覆盖、判定覆盖、条件及判定覆盖、语句覆盖、路径覆盖等几种覆盖,其中除路径覆盖外最弱的覆盖是D5,最强的覆盖标准是E2。
A:
①表明软件的正确性②评价软件质量③尽可能发现软件中错误④判定软件是否合格
B:
①系统测试②安装测试③验收测试④单元测试
C:
①黑盒测试方法②白盒测试方法③灰盒测试方法④软件验证方法
D~E:
①条件覆盖②条件组合覆盖③判定覆盖④条件及判定覆盖⑤语句覆盖
29.在软件开发过程中常用图作为描述工具。
如DFD就是面向A分析方法的描述工具。
在一套分层DFD中,如果某一张图中有N个加工(process),则这张图允许有B张子图。
在一张DFD图中,任意两个加工之间
C。
在画分层DFD时,应注意保持D之间的平衡。
DFD中从系统的输入流到系统的输出流的一连串连续变换形成一种信息流,这种信息流可分为E两类。
A:
①数据结构②数据流③对象④构件(component)
B:
①0②1③0~N④1~N
C:
①有且仅有一条数据流②可以有0或多条名字互不相同的数据流
③至少有一条数据流④可以有0或多条数据流,但允许有若干名字相同的数据流
D:
①父图与子图②同一父图的所有子图③不同父图的所有子图④同一子图的所有父图
E:
①控制流和变换流②变换流和事务流③事务流和事件流④事件流和控制流
30.软件的易维护性是指理解、改正、改进软件的难易程度。
通常影响软件易维护性的因素有易理解性、易修改性和A。
在软件的开发过程中往往采取各种措施来提高软件的易维护性。
如采用B有助于提高软件的易理解性;C有助于提高软件的易修改性。
在软件质量特性中,D是指在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性;
E是防止对程序及数据的非授权访问的能力。
A:
①易使用性②易恢复性③易替换性④易测试性
B:
①增强健壮性②信息隐蔽原则③良好的编程风格④高效的算法
C:
①高效的算法②信息隐蔽原则③增强健壮性④身份认证
D:
①正确性②准确性③可靠性④易使用性
E:
①安全性②适应性③灵活性④容错性
二、简要回答下列问题
1.简要叙述面向对象软件开发方法的基本过程,列出该方法的主要优点,并指出适用于该方法的几个软件开发模