软件工程复习题看完必过.docx
《软件工程复习题看完必过.docx》由会员分享,可在线阅读,更多相关《软件工程复习题看完必过.docx(38页珍藏版)》请在冰豆网上搜索。
软件工程复习题看完必过
复习题
填空题
1.在信息处理和计算机领域内,一般认为软件是_程序____、_文档____和_数据____。
2.数据流图的基本组成部分有_数据的源点与终点____、数据流_____、加工_____、数据文件_____。
3.数据流图和数据字典共同构成了系统的_逻辑____模型,是需求规格说明书的主要组成部分。
4.划分模块时尽量做到__高内聚、低耦合______,保持模块的独立性,尽量使用公共模块。
5.类的实例化是_对象_______。
6.人们常用硬件可靠性的定量度量方法来度量软件的可靠性和可用性,常用的度量软件可
7.靠性的两个指标是_成功地运行的概率_______和_平均故障时间_______。
8.将待开发的软件细化,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,
9.将得到软件的总开发量。
这种成本估算方法称为_自底向上_______。
10.如果一个模块被n个模块调用,其中直接的上级模块的个数是m个(m<=n)那么该模块的扇入数是____N_______个。
11.结构化设计以__数据流图_________为基础,按一定的步骤映射成软件结构。
12.软件的风险分析可包括风险识别、风险预测和风险驾驭(或风险管理)等3项活动。
13.软件著作权登记的3种主要类型:
(1)著作权登记;
(2)著作权延续登记;(3)权利转移备案登记。
14.软件工程管理的主要内容有:
项目经费管理,软件质量管理,项目进度管理和人员管理。
15.面向对象分析的目的是对客观世界的系统进行___建模_______________。
16.软件维护工作的生产性活动包括分析评价、修改设计和____编写程序代码_______等。
17.为了使应用软件适应计算机环境的变化而___修改软件_______________的过程称为适应性维护。
18.一个进行学生成绩统计的模块其功能是先对学生的成绩进行累加,然后求平均值,则该模块的内聚性是__________顺序内聚________。
19.投资回收期就是使累计的经济效益等于__最初的投资费用______________所需的时间。
20.软件生存周期是指一个软件从提出开发要求开始直到__软件废弃____为止的整个时期。
21.曾被誉为“程序设计方法的革命”的结构化程序设计,使程序设计从主要依赖于程序员个人的自由活动变成为有章可循的一门科学。
22.从结构化程序设计到面向对象程序设计,是程序设计方法的又一次飞跃。
23.在单元测试时,需要为被测模块设计___测试用例_______。
一、判断题(每题2分,共30分)
1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。
(对)
2.数据字典是对数据流图中的数据流,加工、数据存储、数据的源和终点进行详细定义。
(错)
3.JAVA语言编译器是一个CASE工具。
(对)。
4.软件是指用程序设计语言(如PASCAL,C,VISUALBASIC等)编写的程序,软件开发实际上就是编写程序代码。
(错)
5.软件模块之间的耦合性越弱越好。
(对)
6.数据库设计说明书是一个软件配置项(对)
7.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是生成类的模板。
(错)
8.过程描述语言可以用于描述软件的系统结构。
(错)
9.如果通过软件测试没有发现错误,则说明软件是正确的。
(错)
10.快速原型模型可以有效地适应用户需求的动态变化。
(对)
11.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。
(对)
12.集成测试主要由用户来完成。
(错)
13.确认测试计划应该在可行性研究阶段制定(错)
14.白盒测试无需考虑模块内部的执行过程和程序结构,只要了解模块的功能即可。
(错)
15.软件概要设计包括软件系统结构设计以及数据结构和数据库设计。
(对)
16.在可行性研究中最难决断和最关键的问题是经济可行性。
(╳)
17.耦合是指一个模块内各个元素彼此结合的紧密程度。
(╳)
18.一笔交易、一个动作、甚至操作人员按一个按钮都可以看做是一次事物。
(√)
19.概要设计阶段完成的主要文档是概要设计说明书。
(√)
20.过大的模块可能是由于分解不充分造成的,即使降低模块独立性也必须继续分解。
(╳)
21.程序设计语言中应绝对禁止使用GOTO语句。
(╳)
22.类是关于对象性质的描述,由方法和数据组成。
(√)
23.随着软件技术的发展,人们逐渐认识到编码不仅要强调效率还要强调清晰。
(√)
25.为保证程序的安全,必须做到程序中没有任何错误存在,即容错。
(╳)
26.如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。
(√)
名词解释
1.数据词典——是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细的描述和确切的解释,是数据流图的补充工具。
2.数据流图——他以图形的方式反映系统的数据流程
3.白盒测试——按照程序内部的结构测试程序,检验程序中的每条路径是否都能按预定要求正确工作。
有两种测试法既逻辑覆盖测试法和路径测试法
4.黑盒测试——按照程序的功能测试程序,检验与程序功能有关的输入、输出与程序执行是否正确。
有四种方法既等价分类法、边界值分析法、错误猜测法和因果图法
5.完善性维护——为了适应用户业务和机构的发展变化而对软件的功能、性能进行修改、扩充的过程称为完善性维护。
因为各种用户的业务和机构在相当长的时期内不可能是一成不变的,所以功能、性能的增加是不可避免的,而且这种维护活动在整个维护工作中所占的比重很大
6.软件可靠性——指在给定的时间内,程序按照规定的条件成功地运行的概率
7.软件配置——是一个软件在生存周期内,他的各种形式、各种版本的文档与程序的总称
8.软件再工程——运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合、并重新构建软件,用于提高软件的可理解性、可维护性可复用性或演化性。
9.α测试——是在一个受控的环境下,由用户在开发者的“指导”下进行的的测试,由开发者负责记录错误和使用中出现的问题。
10.β测试——是由软件的最终用户(多个)在一个或多个用户场所来进行。
由用户负责记下遇到的所有问题,包括主观认定的和真实的问题,定期向开发者报告,开发者在综合用户的报告之后进行修改,最后将软件产品交付给全体用户使用。
11.聚集关系——表示类或对象之间的整体与部分的关系
12.泛化关系——表示类或对象之间的一般与特殊的关系
13.内聚——一个模块内部各个元素彼此结合的紧密程度的度量。
14.耦合——一一个软件结构内不同模块之间互连程度的度量。
简答题
1.软件工程的七条基本原理是什么?
答:
软件工程的七条基本原理是:
(1)用分阶段的是的生存周期计划严格管理;
(2)坚持进行阶段评审;
(3)严格实施的产品控制;
(4)采用现代程序技术;
(5)结果应能清楚地审查;
(6)开发小组的成员应该少而精;
(7)承认不断改进软件工程的必要性。
2.良好的编码风格应具备哪些条件?
答:
应具备以下条件:
(1)使用标准的控制结构;
(2)有限制地使用GOTO语句;
(3)源程序的文档化(应具备以下内容)
①有意义的变量名称——“匈牙利命名规则”。
②适当的注释——“注释规范”。
③标准的书写格式:
——用分层缩进的写法显示嵌套结构的层次(锯齿形风格);
——在注释段的周围加上边框;
——在注释段与程序段、以及不同程序段之间插入空行;
——每行只写一条语句;
——书写表达式时,适当使用空格或圆括号等作隔离符。
(4)满足运行工程学的输入输出风格。
3.简述文档在软件工程中的作用。
答:
(1)提高软件开发过程的能见度
(2)提高开发效率
(3)作为开发人员阶段工作成果和结束标志
(4)记录开发过程的有关信息便于使用与维护;
(5)提供软件运行、维护和培训有关资料;
(6)便于用户了解软件功能、性能。
4.可行性研究包括哪几方面的内容?
答:
(1)经济可行性:
是否有经济效益,多长时间可以收回成本;
(2)技术可行性:
现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;
(3)运行可行性:
系统操作在用户内部行得通吗?
(4)法律可行性:
新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
5.结构化的需求分析描述工具有哪些?
答:
有数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制说明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等。
6.一般面向对象分析建模的工具(图形)有哪些?
答:
用例图、类/对象图、对象关系图、实体—关系图(E—R)、事件轨迹图(时序图)和状态转换图(STD)等
7.UML统一建模语言有哪几种图形?
用例图、类图、对象图、构件(组件)图、部署(配置)图、状态图、活动图、顺序(时序)图、合作(协作)图等九种图。
8.在面向对象分析时类和对象的静态关系主要有哪几种?
答:
类和对象的静态关系主要有关联、聚集、泛化、依赖等四种关系。
9.什么是模块化?
模块设计的准则?
模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。
模块设计的准则:
(1)改进软件结构,提高模块独立性:
在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。
(2)模块大小要适中:
大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。
(3)软件结构图的深度、宽度、扇入和扇出要适当。
一般模块的调用个数不要超过5个。
(4)尽量降低模块接口的复杂程度;
(5)设计单入口、单出口的模块。
(6)模块的作用域应在控制域之内。
10.什么是模块独立性?
用什么度量?
答:
模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。
独立性可以从两个方面来度量:
即模块本身的内聚和模块之间的耦合。
11.变换型数据流由哪几部分组成?
变换型结构由三部分组成:
传入路径、变换(加工)中心和传出路径。
12.变换分析设计的步骤?
(1)区分传入、传出和变换中心三部分,划分DFD图的分界线;
(2)完成第一级分解:
建立初始SC图的框架;
(3)完成第二级分解:
分解SC图的各个分支;
(4)对初始结构图按照设计准则进行精化与改进。
13.事务型数据流由哪几部分组成?
事务型结构由至少一条接受路径、一个事务中心与若干条动作路径组成。
14.事务分析设计的步骤?
(1)在DFD图中确定事务中心、接收部分(包含全部接收路径)和发送部分(包含全部动作路径);
(2)画出SC图框架,把DFD图的三部分,分别映射"为事务控制模块,接收模块和动作发送模块.一般得到SC图的顶层和第一层(如果第一层简单可以并入顶层);
(3)分解和细化接收分支和动作分支,完成初始的SC图;
(4)对初始结构图按照设计准则进行精化与改进。
15.数据字典包括哪些内容?
数据字典是描述数据流图中数据的信息的集合。
它对数据流图上每一个成分:
数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。
16.给出一组数从小到大的排序算法,分别用下列工具描述其详细过程:
(1)流程图;
(2)N-S图;(3)PDL语言。
17.欲开发一个银行的活期存取款业务的处理系统:
储户将填好的存/取款单和存折交给银行工作人员,然后由系统作以下处理;
(1)业务分类处理:
系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;
(2)存款处理:
系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;
(3)取款处理:
系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。
绘制该系统的数据流图和软件结构图。
18.什么是软件生存周期?
把生存周期划分为阶段的目的是什么?
答:
一个软件从开始计划起,到废弃不用止,成为软件的生存周期。
把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理。
19.详细设计的目的?
为软件结构图(SC图或HC图)中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述.
20.详细设计的任务是什么?
(1)为每个模块确定采用的算法;
(2)确定每一模块使用的数据结构;
(3)确定模块接口的细节;
(4)编写过程设计说明书;
(5)设计每一模块的测试用例。
21. 编码的任务?
使用选定的程序设计语言,把模块的过程性描述翻译为用语言书写的源程序(源代码)。
22.软件测试的基本任务?
软件测试是按照特定的规则,发现软件错误的过程;好的测试方案是尽可能发现迄今尚未发现错误的测试;成功的测试方案是发现迄今尚未发现错误的测试;
23.什么是黑盒测试?
黑盒测试主要采用的技术有哪些?
黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。
测试者把被测程序看成一个黑盒,不用关心程序的内部结构。
黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试主要采用的技术有:
等价分类法、边界值分析法、错误推测法和因果图等技术。
24.什么是白盒测试?
白盒测试主要采用的技术有哪些?
白盒测试是测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:
路径测试技术和事务处理流程技术,对包含有大量逻辑判断或条件组合的程序采用基于逻辑的测试技术。
25.路径测试技术中几种主要覆盖的含义?
举例说明?
语句覆盖:
至少执行程序中所有语句一次。
判定覆盖:
使被测程序中的每一个分支至少执行一次。
故也称为分支覆盖。
条件覆盖:
执行所有可能的穿过程序的控制路流程。
条件组合测试:
设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。
(例略)
26.等价分类法的测试技术采用的一般方法?
举例说明?
(1) 为每个等价类编号;
(2) 设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。
(3) 设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类,重复这一步骤,直到所有无效等价类被覆盖为止。
(例略)
27.如图显示某程序的逻辑结构。
试为它设计足够的测试用例,分别实现对程序的判定覆概、条件覆概和条件组合覆概。
YN
N
设计测试方案
覆盖种类
需满足的条件
测试数据
期望结果
判定覆盖
A>0,B=0
A=2,B=0
执行S1
A>0,B≠0或
A≤0,B=0或
A≤0,B≠0
A=2,B=1或
A=1,B=0或
A=1,B=1
执行S2
条件覆盖
以下四种情况各出现一次
A>0
B=0
A=2,B=0
执行S1
A≤0
B≠0
A=1,B=1
执行S2
条件组合
覆盖
A>0,B=0
A=2,B=0
执行S1
A>0,B≠0
A=2,B=1
执行S2
A≤0,B=0
A=1,B=0
执行S2
A≤0,B≠0
A=1,B=1
执行S2
28.某城市电话号码由三部分组成。
它们的名称和内容分别是:
地区码:
空白或三位数字;
前缀:
非‘0’或‘1’的三位数字;
后缀:
4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
根据该程序的规格说明,作等价类的划分,并设计测试方案。
划分等价类
输入条件
有效等价类
无效等价类
地区码
1.空白;
2.三位数;
1. 有非数字字符;2.少于三位数字;
3.多于三位数字。
前缀
3.从200到999之间的三位
4.有非数字字符;5.起始位为‘0’;
6.起始位为‘1’;7.少于三位数字;
8.多于三位数字。
后缀
4.四位数字。
9.有非数字字符;10.少于四位数字;
11.多于四位数字。
设计测试方案
方案
内容
输入
预期
输出
地区码
前缀
后缀
1
空白
200~999之间的三位数字
四位数字
()276-2345
有效
2
三位数字
四位数字
(635)805-9321
有效
3
有非数字字符
(20A)723-4567
无效
4
少于三位数字
(33)234-5678
无效
5
多于三位数字
(5555)345-6789
无效
6
有非数字字符
(345)5A2-3456
无效
7
起始位为‘0’
(345)012-3456
无效
8
起始位为‘1’
(345)132-3456
无效
9
少于三位数字
(345)92-3456
无效
10
多于三位数字
(345)4562-3456
无效
11
有非数字字符
(345)342-3A56
无效
12
少于四位数字
(345)342-356
无效
13
多于四位数字
(345)562-34567
无效
29.为什么说软件的维护是不可避免的?
因为软件的开发过程中,一般很难检测到所有的错误,其次软件在应用过程中需要随用户新的要求或运行环境的变化而进行软件的修改或完成功能的增删等,为了提高软件的应用水平和使用寿命,软件的维护是不可避免的。
入口
A>1
B=0
A=2
X>1
出口
X=X/A
X=X+1
1
2
3
8
4
5
6
7
9
22.试由程序流程图导出程序图
F
TT
F
T
F
T
F
(a)程序流程图(b)导出程序图
30.软件的维护一般分为哪几类?
完善性维护:
满足用户在使用过程中提出增加新的功能或修改已有功能,以满足用户日益增长的需要而进行的工作;
适应性维护:
是软件适应新的运行环境而进行的工作;
纠错性维护:
纠正开发期间未发现的遗留错误,即在程序使用期间发现的程序错误进行诊断和改正的过程;
预防性维护:
为了改善未来的可维护性或可靠性而修改软件的工作。
31.决定软件可维护性的因素?
(1)软件的可理解性、可测试性、可修改性;
(2)文档描述符合要求、用户文档简洁明确、系统文档完整并且标准。
32.分析软件危机产生的主要原因有哪些?
答:
导致软件危机的主要原因有:
(1)软件日益复杂和庞大
(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加
1个要点1分,只要答上5个要点得5分!
33.说明结构化程序设计的主要思想是什么?
答:
(1)自顶向下、逐步求精的程序设计方法(2分)
(2)使用3种基本控制结构、单入口、单出口来构造程序。
(3分)
34、软件测试的基本任务是什么?
测试与纠错有什么区别?
答:
软件测试的基本任务是通过在计算机上执行程序,暴露程序中潜在的错误。
测试和纠错目的和任务都不相同,测试是为了发现程序的错误,纠错是为了定位和纠正错误,从而消除软件故障,保证程序的可靠运行。
35.软件测试包括哪些步骤?
同时说明这些步骤的测试目的是什么?
答:
(1)单元测试,目的是代码达到模块说明书的要求
(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的完整的程序(3)确认测试,目的是确认程序系统是否满足软件需求规格说明书的要求(4)系统测试,目的是检查能否与系统的其余部分协调运行,并且完成SRS对他的要求。
36.需求分析与软件设计二个阶段任务的主要区别是什么?
答:
需求分析定义软件的用户需求,即定义待开发软件能做什么(2.5分)
软件设计定义软件的实现细节以满足用户需求,即研究如何实现软件。
(2.5分)
37.说明软件测试和调试的目的有何区别?
答:
测试的目的是判断和发现软件是否有错误(2。
5分)调试的目的是定位软件错误并纠
38.根据以下被测试的流程图,选择相应的答案。
(8分)
(1)A=2,B=0,X=4
(2)A=2,B=1,X=1(3)A=2,B=0,X=1
A=1,B=1,X=1A=3,B=0,X=3A=1,B=1,X=2
①在1-3的答案中满足判定覆盖的测试用例是___1_____(2分)
②在1-3的答案中满足条件覆盖的测试用例是___3_____(2分)
③在1-3的答案中满足判定/条件覆盖的测试用例是______2__(2分)
39.工资计算系统中的一个子系统有如下功能:
(1)计算扣除部分—由基本工资计算出应扣除(比如水电费、缺勤)的部分;
(2)计算奖金部分—根据职工的出勤情况计算出奖励金;
(3)计算工资总额部分—根据输入的扣除额及奖金计算出总额;
(4)计算税金部分—由工资总额中计算出应扣除各种税金;
(5)生成工资表—根据计算总额部分和计算税金部分传递来的有关职工工资的详细信息生成工资表。
试根据要求画出该问题的数据流程图。
40.用自顶向下结构化程序设计方法编写直接选择排序从小到大排列的程序。
要求保持良好的程序风格,加上必要的注释()。
用C语言编写:
/*程序名称:
直接选择排序;*/
/*作者:
陈明锐;*/
/*完成日期:
2006年6月9日;*/
/*过程头:
selectsort(int*A;intN)*/
/*输入参数:
N为元素个数(N<=1000);A整型数组,从1到N存放待排序元素;*/
/*返回结果:
数组A为指针,由它返回排序结果;*/
voidselectsort(int*A;intN)
{
inti,j,k,x;
for(i=1;i{
k=i;/*先假设I位置上的值最小*/
for(j+=i;j<=N;j++)/*求I到N位置上的最小值*/
if(A(j)if(k<>i)/*需要交换A(K)和A(I)的值*/
{/*交换A(K)和A(I)*/