软件工程复习试题及答案
一、填空题(在下划线上填写正确的答案,每题2分,共20分)
1.等价划分是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数。2.数据流图和数据字典共同构成了系统的逻辑模型。
3.盒图也称为N-S图。这种表达式取消了流程线,它强迫程序员以结构化式思考和解决问题。
4.软件有效性,指软件系统的时间和空间效率。
6.数据流图有四种基本成分:源、终点,处理,存储,数据流。7
8.软件工程中的结构化分析SA是一种面向数据流的分析法。
9.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个由下而上的过程。
10.耦合性与聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高聚、低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。1.常用的软件开发模型有瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型。2.软件生存期一般可分为问题定义、可行性研究、需求分析、设计、编码、单元测试、运行与维护阶段。
3.软件测试的步骤:单元、集成、系统、验收。
4.数据流图的基本符号包括加工、数据流、数据存储文件、汇点。5.IPO图由输入、处理和输出三个框组成。这个图的特点是能够直观的显示三者之间的关系。
6.面向对象法是一种运用类、实例、属性、重载、消息传送、多态性等概念来构造系统的软件开发法。
7.分析已有的程序,寻求比源代码更高级的抽象表现形式,这就是软件的逆向工程。
8.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动。
9.为了获得较高的模块独立性,尽量设计出具有高聚和低藕合性能的模块。10.常用的测试法有黑盒测试和白盒测试。
1.可行性研究,应从技术可行性、经济可行性、运行可行性和法律和社会效益
可行性等面研究。
2.构化程序设计中程序主要的3种基本控制结构是顺序结构、选择结构、循环结构。
3.软件生存期中时间最长、花费精力和费用最多的一个阶段是维护阶段。
4.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。7.分析已有的程序,寻求比源代码更高级的抽象表现形式,这就是软件的逆向工程。8.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动进行查找的编码执行活动。
9.为了获得较高的模块独立性,尽量设计出具有低耦合和高聚性能的模块。1.若年利率为i,n年后可得数为F则现在的价值F/(1+N*i) 。
2.在结构化分析中用来描述加工逻辑的主要工具是结构化语言、判定表、判定树。
3.软件测试的步骤:制定测试计划、设计测试用例、实施测试、测试后调试、做测试报告
4.自顶向下结合的渐增测试法,在组合模块时有两种组合策略:
7
1
2
3.HIPO图是由一组IPO图和一H 图组成。
4.在前期需求明确、资料完整的情况下尽量采用瀑布模型。
5.用例图中,如果在完成某个功能时,偶而会执行另一个功能,则用扩展关系来表示。
6.UML
7.类是类图的主要的主要部件,由类名、属性、操作3部分组成。
8.UML中的泛化关系就是通常所说的继承关系。
9
10Rose中对应图形的分类。
1.软件危机具有下列表现(D )。
1、对软件开发成本估计不准确
2、软件产品的质量往往靠不住
3、软件常常不可维护
4、软件成本逐年上升
A、1、2和3
B、1、3 和4
C、2、3和4
D、以上都正确
2.软件生命期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是(A )。
A 运行和维护阶段B、设计阶段C、代码实现阶段D、测试阶段
3.下列属于软件的特点的是( D )。
A、软件是一种逻辑实体,具有抽象性
B、软件在使用过程中没有磨损、老化
C、软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高
D、以上都正确
4.软件开发技术不包含(D )。
A、软件开发法学
B、软件工程环境
C、软件工具
D、软件质量度度量
5.需求分析阶段最重要的技术文档是(B )。
A、设计说明书
B、需求规格说明书
C、可行性分析报告
D、用户手册
6.数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是(C )
A、数据库设计
B、数据通信
C、数据定义
D、数据维护
7.需求分析阶段的研究对象是( C )。
A、系统分析员要求
B、用户要求
C、软硬件要求
D、系统要求
8.结构化法的基本原则是( B )。
A 、模块化B、抽象与分解C、信息隐藏D、逐步求精
9.耦合度最高的是(B )耦合。
A、环境耦合
B、容耦合
C、控制耦合
D、数据耦合
10.画软件结构图时应注意调用关系只能是(B )
A、从下到上
B、从上到下
C、从左到右
D、从右到左
11.软件设计中划分模块的一个准则是(C)
A、低聚低耦合
B、低聚高耦合
C、高聚低耦合D高聚高耦合
12.Jackson设计法是由英国的M.Jackson提出的,它是一种面向(C)的软件设计法。
A、对象
B、数据流
C、数据结构
D、控制结构
13.使用白盒测试法时,确定测试数据应根据(A)和指定的覆盖标准。
A、程序部逻辑
B、程序的复杂程度
C、该软件的编辑人员
D、程序的功能
14.软件维护工作的最主要的部分是(A)。
A、校正性维护
B、适应性维护
C、完善性维护
D、预防性维护
15.PDL是(B)语言。
A、高级程序设计语言
B、伪码式
C、中级程序设计语言
D、低级程序设计语言
16.下列哪个阶段不属于软件生存期的三大阶段( C )。
A、定义阶段
B、开发阶段
C、编码阶段
D、维护阶段
17.可维护性的特性中相互促进的是( A )
A、可理解性和可测试性
B、效率和可移植性
C 、效率和可修改性
D 、效率和结构好
18.软件测试的目标是(B )
A 、证明软件是正确的
B 、发现错误、降低错误带来的风险
C 、排除软件中所有的错误
D 、与软件调试相同
19.软件生命期中所花费用最多的阶段是( D )
A 、详细设计
B 、软件编码
C 、软件测试
D 、软件维护
20.详细设计的基本任务是确定每个模块的(D )设计。
A 、功能
B 、调用关系
C 、输入输出数据
D 、算法
22.下列哪个图不是N-S 图的构件( C )。
23.对于下列各图,有关描述中正确的是( A )。
A 、数据A 和
B 同时输入变成C
B 、数据A 变换成B 和C
C 、数据A 或数据B (不能同时)输入,变换成C
D 、数据A 变换成B 和C
24.下列哪种法不是度量效益的法( B )。
A 、货币的时间价值
B 、算法模型估计
C 、投资回收期
D 、纯收入
25.下列描述错误的是( D )。
A 、数据流图将各种信息流抽象成数据流的形式
B 、数据流图不反映控制关系、调用关系 X Y A 、
WHILE M B
B
、X Y C 、UNTIL N C D 、
B C
B C
C C
C、数据流图不反映处理逻辑的先后顺序
D、数据流图不反映数据的流向
26.软件是(C)
A、处理对象和处理规则的描述
B、程序
C、程序及文档
D、计算机系统
27.软件需求规格说明的不应包括(B)。
A、主要功能B算法的详细描述
C、用户界面及运行环境
D、软件性能
28.程序的三种基本控制结构是(B)。
A、过程、子程序和分程序
B、顺序、选择和循环
C、递归、迭代和回溯
D、调用、返回和转移
29.面向对象的分析法主要是建立三类模型,即(D)。
A、系统模型、ER模型、应用模型
B、对象模型、动态模型、应用模型
B、ER模型、对象模型、功能模型D、动态模型、功能模型、对象模型
30.ER模型中,包含以下基本成分(C)。
A、数据、对象、实体
B、控制、联系、对象
C、实体、联系、属性
D、实体、属性、操作
1.快速原型模型的主要特点之一是( B )A.开发完毕才见到产品B.及早提供工作软件
C.及早提供全部完整软件D.开发完毕才见到工作软件
2.软件工程学的一个重要目标是( D )A.提高程序的执行效率B.降低程序对存储空间的要求
C.定义各种软件开发过程模型D.提高软件的可维护性
3.需求分析最终结果是产生( B )A.项目开发计划B.需求规格说明书
C.设计说明书D.可行性分析报告
4.数据存储和数据流都是处于不同状态的( D )A.分析结果B.事件C.动作D.数据
5.数据字典是对数据定义信息的集合,它所定义的对象都包含于(A )A.数据流图B.程序框图C.软件结构D.框图
6、结构化设计是一种面向( A )的设计法。
A.数据流B.数据库C.数据结构D.程序
7.下列可哪个组件不是用例图的基本组件( D )A.参与者B.用例C.系统D.文档
8.用例图中用例之间存在各种关系,但不包括( B )A.包含B.关联C.泛化D.扩展
9.常用动词或动词词组来表示( C )A.对象B.类C.关联D.属性
10.组件图常不包括下列哪个元素( A )A.对象B.组件C.接口D.依赖
11.好的软件结构应该是( B )A.高耦合、高聚B.低耦合、高聚
C.高耦合、低聚D.低耦合、低聚
12.静态模型不包括( C )
A.类图B.组件图C.状态图D.部署图
13.动态模型不包括( D )
A.交组图B.活动图C.状态图D.部署图
14.Rose模型文件的扩展名为( A )A.mdl B.vsd C.pdf D.swf
15.逆向工程是什么过程( C )
A.模型到代码B.设计到实现
C.代码到模型D.类图到包图
三、判断题(正确的在括号打上“√”,错误的打上“×”。每小题2分,共20分)
1软件开发的主要任务是写程序。( F )
2测试只能证明程序有错误,不能证明程序没有错误。(T )
3模块化程序设计中,模块越小,模块化的优点越明显。一般来说,模块的大小都在10 行以下。( F )
4在编制程序时,首先应该对程序的结构充分考虑,不要急于开始编码,而要写软件文
档那样,很好地琢磨程序具有什么样的功能,这些功能如安排等等。( F )
5程序设计风格指导原则提出,尽量多使用临时变量。( F )
6用黑盒法测试时,测试用例是根据程序部逻辑设计的。( F )
7发现错误多的程序模块,残留在模块中的错误也多。(T )
8为了加快软件维护作业的进度,应尽可能增加维护人员的数目。( F )
9软件维护就是改正软件中的错误。( F )
10质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织
的活动。( T )
11螺旋模型是利用笛卡尔坐标的四个象限分别代表四个面的活动来表示。(F )
12模块越多,开发成本越小。( F )
13聚是指一个软件结构各个模块之间互连程序的度量。( F )
14结构化设计属于面向数据流的设计法。(T )
15详细设计是在概要设计之后进行的。它利用概要设计的结果,对系统中的每个模块给出足够的过程性描述。(T )
16程序运行过程中出现错误叫做容错。( F )
17软件测试的目的是证明程序没有错误。( F )
18白盒测试法是将程序看成一个透明的盒子,不需要了解程序的部结构和处理过程。
( F )
19 PAD图在设置了五种基本的控制结构后,还允递归调用。(T )
20独立编译是指一个大程序的不同程序单元分别编译,然后重新连接整个程序段。
(T )
31开发软件就是编写程序(F)
32 系统测试的主要法是白盒测试法,主要进行功能、性能测试、安全性测试及可靠性测试等(F)
33编程时应尽可能利用硬件特点以提高程序效率(F)。
34软件需求分析的任务是建立软件模块结构图(F)。
35尽可能使用高级语言编写程序(T)。
36以结构化法建立的系统模型就是数据流图(F)。
37进行总体设计时加强模块间的联系(F)。
38编码时尽量多用全局变量(F)。
39用CASE环境或程序自动化生成工具来自动生成一部分程序(T)
40软件测试是要发现软件中所有错误(F)
(T )41、软件开发、设计几乎都是从头开始,成本和进度很难估计。
( F )42、V(G)值越高的程序往往是越不复杂、越不容易出问题的程序。
(F )43、适应性维护是改进软件未来的可维护性和可靠性。
( F )44、软件是逻辑产品,软件质量较容易直接度量。
(T )45、随着软件复杂性的不断提高,软件的维护难度越来越大。
(F )46、软件也会磨损和老化。
( F )47、用穷举法测试是较现实的测试法。
(T )48、面向数据设计法一般都包括下列任务:确定数据结构特征;用顺序、选择和循环三种基本形式表示数据等步骤。
( F )49、测试计划、测试用例,出错统计和有关的分析报告一般不用长期保存。
(F )50、McCabe建议模块规模应满足:V(G)≤20。
(T )61.总体设计阶段要设计软件体系结构。
( F )62、软件即程序。
(T )63.采用对象设计系统时,首先建立系统的物理模型。
(T )64.用例图中,扩展关系表示为虚线箭头加“《extend》”。
(T )65.实现关系指定两个实体之间的一个合同。
(T )66.状态图通常作为对类图的补充。
( F )67.聚集关系是关联的一种形式,表示两个类之间的一般与特殊关系。
(T )68.一个完整的模型必然描述系统的静态和动态两个面。
(F )69.状态图是对多个对象建模。
(T )70.在UML中,组件是指系统中可替换的物理部分。
四简述题(每小题5分,共10分)
1.测试用例
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
2.模块化
模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其部特性。
3.对象
指行动或思考时作为目标的事物
4.软件生命期各阶段的任务是什么?
答:软件生命期分为7个阶段:
1、问题定义:要解决的问题是什么
2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性
3、需求分析:系统必须做什么
4、总体设计:系统如实现,包括系统设计和结构设计
5、详细设计:具体实现设计的系统
6、实现:编码和测试
7、运行维护:保证软件正常运行。
5.软件重用的效益是什么?
答:1、软件重用可以显著地改善软件的质量和可靠性。
2、软件重用可以极大地提高软件开发的效率。
3、节省软件开发的成本,避免不必要的重复劳动和人力、财力的浪费。6.结构化程序设计法的基本要点。
1.采用自顶向下、逐步求精的程序设计法:在需求分析、概要设计中,都采用了自定向
下、逐层细化的法。
2.使用三种基本控制结构构造程序,分别是顺序、选择和循环,这三种基本结构的共同
点是、单入口、单出口,为自顶向下、逐步求精的设计法提供了具体的实施手段。
3.采用主程序员的组织形式:指开发程序的人员组织式应用由一个主程序员、一个后备
程序员和一个程序管理员三人为核心,再加上一些专家、其他技术人员组成小组。7.什么是软件生命期?
8.简述什么是回归测试?
回归测试-----在集成测试过程中每当一个新模块结合进来时,程序就发生了变化:建立了新的数据流路径,可能出现新的I/O操作,激活新的控制逻辑。这样变化有可能使原来正常的功能出现了问题;所谓回归测试是指重新执行已经做过的测试的某个子集,以保证上述变化没有带来非预期的错误。
9.简述软件危机有哪几种表现?
软件开发和维护的过程中常遇到的问题
(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足用户要求。