文章目录
- 考试题
-
- 选择题
- 填空题
- 简答题
- 应用题
- 参考答案
-
- 一、单项选择题
- 二、填空题
- 三、简答题
- 四、应用题
- 参考资料
考试题
张海藩,吕云翔. 软件工程(第4版)学习辅导与习题解析
试卷(一)(满分100 分)
考试时间: 120 分钟( 可根据具体情况适当调整)
选择题
一、单项选择题(每题2 分,共20 分)
-
CMM 表示()。
A. 软件过程成熟度模型
B. 软件配置管理
C. 软件质量认证
D. 软件重用
选A,CMM(Capability Maturity Model)是能力成熟度模型的缩写,CMM是国际公认的对软件公司进行成熟度等级认证的重要标准。
基本概念:
CMM由低至高共分为5个级别:初始级、可重复级、定义级、管理级和优化级,在每一级中,定义了达到该级过程管理水平所应解决的关键问题和关键过程。每一较低级别是达到较高级别的基础。其中五级是最高级,即优化级,达到该级的软件公司过程可自发地不断改进,防止同类问题二次出现;四级称为已管理级,达到该级的软件公司已实现过程的定量化;三级为已定义级,即过程实现标准化;二级为可重复级,达到该级的软件公司过程已制度化,有纪律,可重复;一级为初始级,过程无序,进度、预算、功能和质量等方面不可预测。
CMM致力于软件开发过程的管理和工程能力的提高与评估。该模型在美国和北美地区已得到广泛应用,同时越来越多的欧洲和亚洲等国家的软件公司正积极采纳CMM,CMM实际上已成为软件开发过程改进与评估事实上的工业标准。 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)
将各种能力成熟度模型,即:Software CMM、Systems Eng-CMM、People CMM和Acquisition CMM,
整合到同一架构中去,由此建立起包括软件工程、系统工程和软件采购等在内的诸模型的集成,
以解决除软件开发以外的软件系统工程和软件采购工作中的迫切需求。
-
在E-R 模型中,包含以下基本成分(
A . 数据、对象、实体
B. 控制、关系、对象
C. 实体、关系、属性
D.实体、属性、控制
选C。 E-R模型的特点为:实体、属性和关系 ,E-R图在数据库设计中被广泛用作数据建模的工具。
-
软件工程管理的对象是( )。
A. 软件开发人员
B. 软件工程项目
C. 软件开发过程
D. 软件开发成本
选B,软件项目管理的对象是软件工程项目,它所涉及的范围覆盖了整个软件工程过程。 为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。 这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止。
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。
软件项目管理的根本目的是为了让软件项目尤其是大型项目的整个软件生命周期(从分析、设计、编码到测试、维护全过程)都能在管理者的控制之下,以预定成本按期,按质的完成软件交付用户使用。而研究软件项目管理为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则,方法,同时避免前人的失误。
- 软件需求分析的任务不包括( )。
A. 确定逻辑结构
B. 信息域分析
C. 结构化设计
D. 问题分析
选C,软件需求分析的任务不包括结构化设计的。
-
进行需求分析有多种描述工具,但不包括( )。
A. 数据流图
B. 状态转换图
C. PAD 图
D. 数据词典
选C,需求分析工具软件是生存周期中需求定义阶段所使用的工具,包括描述工具和分析工具。前者协助开发人员编制完整、清晰、规范的说明和文档。后者可分析项目实现难度、开发周期、人员配置以及经费安排等。需求分析描述工具不包括PAD(问题分析图),结构化分析常用工具:数据流图(DFD),状态转换图,数据字典(DD),判定表,判定树等。
-
软件测试的目的是( )。
A. 证明软件是正确的
B. 发现软件的错误
C. 找出软件中的所有错误
D.评价软件的资料
选B,IEEE给出软件测试的定义:
(1)在特定的条件下运行系统或构件,观察或记录结果,对系统的某方面作出评价
(2)分析某个软件项以发现现存的和要求的条件之差别,并评价此软件项的特性。
软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能,不是为了评估软件或改正错误。
-
面向对象的开发方法的工作模型是()
A. 瀑布模型
B. 喷泉模型
C. 智能模型
D. 估算模型
选B,喷泉模型(fountain model)是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。
1.瀑布模型
这个特点有两重含义:
1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作;
2.前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。
瀑布模型每个阶段都应坚持两个重要做法:
1.每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。
2.每个阶段结束前都要对所完成的文档进行评审,以便迟早发现问题,改正错误。事实上越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。
2.快速原型模型
所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型的本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用作是获知用户的真正需求,一旦需求确定了,原型系统将被抛弃。
快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建一个可在计算机上运行的原型系统,让用户试用原型系统并收集用户反馈意见的办法,获取用户的真实需求。
3.增量模型
增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。
4.螺旋模型
螺旋模型的基本思想就是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作每个阶段之前都增加了风险分析过程的快速原型模型。
螺旋模型主要适用于内部开发的大规模软件项目(很多企业应各种业务需求对软件系统的要求,都形式不同地建立了自己的软件开发团队)。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上项目越大,风险也越大,因此进行风险分析的必要性也越大。此外只有内部开发的项目,才能在风险过大时方便中止项目。
-
UML 中,包是一种( )。
A. 算法
B. 数据结构
C. 分组机制
D.对系统的动态描述
选C, 包(Package)
包是一种常规用途的组合机制,如果在软件开发的设计阶段使用UML,可以将包理解为 表达一种功能的完整性和层次性,而对类,用例进行的组合。包的用法非常灵活,可以将包看作系统设计中模块,可以将各模块都用的到的功能抽取出来形成单独的包。一句话,包体现了系统设计的层次性,不失为进行系统整体设计时的很好的工具。包图用于描述系统的分层结构,由包或类组成,表示包与包之间的关系。
9 . 白盒法又称为逻辑覆盖法,主要用于( )。
A. 确认测试
B. 系统测试
C. 阿尔法测试
D. 单元测试
选D,单元测试以白盒为主,黑盒为辅,单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
黑盒测试也称为功能测试,将软件看成黑盒子,在完全不考虑软件内部结构和特性的情况下,测试软件的外部特性。白盒测试也称为结构测试,将软件看成透明的白盒,根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试,检查是否满足设计的需要。白盒测试又叫逻辑覆盖法,分析程序内部的逻辑结构,注意选择适当的覆盖标准。设计测试用例,对主要的路径进行尽可能多的测试。可以把盒子理解为程序,白盒,指的是程序对测试而言是透明的,我们可以知道程序的内部逻辑结构,常用的白盒测试方法有静态分析测试以及逻辑覆盖测试。逻辑覆盖分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
1 0. 结构化分析方法(SA 法)使用的主要描述工具有( )。
A. 数据库B. 用例图C. PAD 图D. 分层的DFD 图
选D,结构化分析SA 方法以数据流图(DFD)、数据字典和加工说明等描述工具,即用直观的图和简洁的语言来描述软系统模型。
填空题
二、填空题(每题2 分,共20 分)
1、软件工程由方法、工具和过程三部分组成,称为()的三要素。
软件工程
软件工程的三要素方法、工具、过程。
2、使用类创建对象的过程实际上是类的()过程。
实例化
3、调试的目的是确定错误的位置和引起错误的原因,并加以()。
改正
4、被继承的类我们称之为基类或(),在基类的基础上新建立的类我们称之为派生类或子类。
父类
5、动态测试有两种测试方法: 黑盒测试和()测试。
白盒
6 、为改正软件系统中潜藏的错误而进行的维护活动称为()。
纠错性维护
7、从事物的组成部件及每个部件的属性、功能来认识事物,这种方法被称为()的方法。
面向对象
8 、单元测试的测试对象是()。
程序模块
9、类的静态成员属于()所有,非静态成员属于类的实例所有。
类
静态数据成员属于类, 即所有对象共有的, 非静态成员函数也可访问。
I0. UML 是一种可视化的、用于绘制软件蓝图的()。可以用UML 对软件系统的各种制品( 包括程序、文档等) 进行描述。
标准建模语言
简答题
三、简答题(每题5 分,共20 分)
1、请简述等价类划分法的基本思想。
等价类划分是把程序的输入域划分为若干子集,然后从每个子集中选取少数具有代表性的数据用作测试用例,所选取的输入数据对于揭露程序中的错误都是等效的。对于测试来说,某个等价类的代表值与该等价类的其他值是等价的,因此可以把所有的输入数据划分为若干等价类,在每一个等价类中取少部分数据进行测试。等价类分为有效等价类和无效等价类。
2 、测试面向对象软件时, 主要有哪些设计单元测试用例的方法?
对面向对象的软件来说,小型测试着重测试单个类和类中封装的方法。测试单个类的方法主要有随机测试、划分测试和基于故障的测试3 种。
3 、软件危机产生的原因是什么?
产生软件危机的原因如下。
- 软件的规模越来越大,结构越来越复杂。
- 软件开发管理困难而复杂。
- 软件开发费用不断增加。
- 软件开发技术落后。
- 软件生产方式落后。
- 软件开发工具落后,生产率提高缓慢。
4、请简述面向对象的基本概念。
面向对象的基本概念包括对象、类、封装、继承和多态。对象可以是客观世界中存在的事物,也可以是概念化的实体,它由一组属性和操作组成。属性是用来描述对象静态特征的数据项,是对客观世界实体所具有性质的抽象。操作是用来描述对象的动态特征。类是对对象的抽象,是对具有相同属性和相同操作的一组相似对象的定义。封装是指把对象的属性和操作结合在一起,组成一个
独立的单元。继承表示类之间的层次关系,它使得某类对象可以自动拥有另外一个或多个对象的全部属性和操作。多态是一种使父类中定义的属性或操作被子类继承后,可以有不同的实现的机制。
应用题
四、请画出10 ! 的程序流程图,并将其转换为N-S 图。(共10 分)
五、某公安报警系统在一些公安重点保护单位( 如银行、学校等)安装了报警装置, 其工作过程如下: 一旦发生意外事故,事故发生单位只需按报警按钮,系统立即向公安局发出警报信息、自动显示出报警单位的地址、电话号码等。110 警车立即出动前往出事地点。值班人员可以接通事故单位的电话、问清情况,需要时再增派公安人员到现场处理。请根据以上情况进行分析,确定本系统应建立哪几个对象类, 画出其UML 顺序图。(共15 分)
六、对于下面的程序,假设输入的取值范围是1000 <year< 2001 , 使用基本路径测试法为变量year 设计测试用例,使其满足基本路径覆盖的要求。( 共15 分)
IntisLeap (int year){
if (year % 4 ==0){
if (year % 100 == 0){
if(year % 400 == 0){
leap = 1;
}else{
leap = 0;
}
}else{
leap=1;
}
}else{
leap = 0;
}
return 0;
}
根据源代码绘制程序的控制流图如图C.3 所示。
通过控制流图,计算环路复杂度V (G ) =区域数=4
线性无关的路径集为:
( 1 ) 1-3-8
( 2 ) 1-2-5-8
( 3) 1-2-4-7-8
( 4 ) 1-2-4-6-8
设计测试用例:
路径1:输入数据: year= 1999 预期结果: leap=0
路径2:输入数据: year= l996 预期结果: leap=1
路径3:输入数据: year= 1800 预期结果: leap=0
路径4:输入数据: year= 1600 预期结果: leap=1
参考答案
一、单项选择题
1-5: ACBCC 6-10: BBCDD
二、填空题
-
软件工程 2. 实例化 3 .改正 4. 父类 5. 白盒
6. 纠错性维护 7. 面向对象 8.程序模块 9 . 类 10. 标准建模语言
三、简答题
- 等价类划分是把程序的输入域划分为若干子集,然后从每个子集中选取少数具有代表性的数据用作测试用例,所选取的输入数据对于揭露程序中的错误都是等效的。对于测试来说,某个等价类的代表值与该等价类的其他值是等价的,因此可以把所有的输入数据划分为若干等价类,在每一个等价类中取少部分数据进行测试。等价类分为有效等价类和无效等价类。
- 对面向对象的软件来说,小型测试着重测试单个类和类中封装的方法。测试单个类的方法主要有随机测试、划分测试和基于故障的测试3 种。
- 产生软件危机的原因如下。
- 软件的规模越来越大,结构越来越复杂。
- 软件开发管理困难而复杂。
- 软件开发费用不断增加。
- 软件开发技术落后。
- 软件生产方式落后。
- 软件开发工具落后,生产率提高缓慢。
-
面向对象的基本概念包括对象、类、封装、继承和多态。对象可以是客观世界中存在的事物,也可以是概念化的实体,它由一组属性和操作组成。属性是用来描述对象静态特征的数据项,是对客观世界实体所具有性质的抽象。操作是用来描述对象的动态特征。类是对对象的抽象,是对具有相同属性和相同操作的一组相似对象的定义。封装是指把对象的属性和操作结合在一起,组成一个
独立的单元。继承表示类之间的层次关系,它使得某类对象可以自动拥有另外一个或多个对象的全部属性和操作。多态是一种使父类中定义的属性或操作被子类继承后,可以有不同的实现的机制。
四、应用题
四、10! 的程序流程图及其所转换的N-S 图,如图C.1所示。
五、本题中,对象主要包括报警单位、报警系统和公安局3 种,所以包括3 条对象生命线。在报警单位按下报警按钮后,信息就会传送到报警系统中。
报警系统会向公安局发出警报并显示报警单位信息。
公安局会在接到报警系统的通知后,会向报警单位派出110 警车并了解现场情况。
报警单位会传递反馈情况给公安局, 告知现场情况。
如果有必要,公安局会向报警单位增派警力。
公安报警系统的顺序图如图C.2 所示。
六、根据源代码绘制程序的控制流图如图C.3 所示。
通过控制流图,计算环路复杂度V (G ) =区域数=4
线性无关的路径集为:
( 1 ) 1-3-8
( 2 ) 1-2-5-8
( 3) 1-2-4-7-8
( 4 ) 1-2-4-6-8
设计测试用例:
路径1:输入数据: year= 1999 预期结果: leap=0
路径2:输入数据: year= l996 预期结果: leap=1
路径3:输入数据: year= 1800 预期结果: leap=0
路径4:输入数据: year= 1600 预期结果: leap=1
参考资料
[1] 张海藩,吕云翔. 软件工程(第4版)学习辅导与习题解析[M]. 北京: 人民邮电出版社,2013