软件工程考试题
一、选择题:
1. 瀑布模型的关键不足在于( A )。
A. 过于简单
B. 各个阶段需要进行评审
C. 过于灵活
D. 不能适应需求的动态变更
2. 以下哪一项不是软件危机的表现形式( C )。
A. 开发的软件不满足用户需要
B. 开发的软件可维护性差
C. 开发的软件价格便宜
D. 开发的软件可靠性差
3. 结构化设计是一种面向( A )的设计方法。
A. 数据流
B. 模块
C. 数据结构
D. 程序
4. 软件开发的需求活动,其主要任务是( D )。
A. 给出软件解决方案
B. 给出系统模块结构
C. 定义模块算法
D. 定义需求并建立系统模型
5. 一个项目是否开发,从经济上来说是否可行,归根结底是取决
于( A )。
A. 成本估算
B. 项目计划
C. 工程管理
D. 工程网络图
6. 在面向对象的设计中,我们应遵循的设计准则除了模块化、抽
象、低耦合、高内聚以外,还有( B )。
A. 隐藏复杂性
B. 信息隐蔽
C. 经常类的复用
D. 类的开发
7. 在考察系统的一些涉及时序和改变的状况时,要用动态模型来
表示。动态模型着重于系统的控制逻辑,它包括两个图:一个
是事件追踪图,另一个是( B )。
A. 数据流图
B. 状态图
C. 系统结构图
D. 用例图
8. 软件维护产生的副作用,是指( C )。
A、开发时的错误
B、隐含的错误
C、因修改软件而造成的错误
D、运行时误操作
9. 若有一个计算类型的程序,它的输入量只有一个X,其范围是
[-1.0,1.0],现从输入的角度考虑一组测试用
例:-1.001,-1.0,1.0,1.001,设计这组测试用例的方法是(
C )。
A、条件覆盖法
B、等价分类法
C、边界值分析法
D、错误推测法
10. 经过严密的软件测试后所提交给用户的软件产品中( B )
A、软件不再包含任何错误
B、还可能包含少量软件错误
C、所提交给用户的可执行文件不会含有错误
D、文档中不会含有错误。
11. 需求分析的任务不包括( B )。
A. 问题分析
B. 系统设计
C. 需求描述
D. 需求评审
12. 软件可行性研究实质上是要进行一次( A )需求分析、设计过
程。
A. 简化、压缩的
B. 详细的
C. 彻底的
D. 深入的
13. 下列属于维护阶段的文档是( C )。
A.软件规格说明 B.用户操作手册
C.软件问题报告 D.软件测试分析报告
14. 软件维护产生的副作用,是指( C )。
A.开发时的错误
B.隐含的错误
C.因修改软件而造成的错误
D.运行时误操作
15. 研究开发所需要的成本和资源是属于可行性研究中的( B )研究
的一方面。
A. 技术可行性
B. 经济可行性
C. 社会可行性
D. 法律可行性
16. 软件是一种( C )。
A.程序
B.数据
C.逻辑产品
D.物理产品
17. 从心理学角度看,对数据流程图的数据处理泡进行分解,一次
分解为多少个泡为宜。( B )
A.3±1
B.7±2
C.15±1
D.18±2
18. 下列模型属于成本估算方法的有( A )。
A.COCOMO模型
B.McCall模型
C.McCabe度量法
D.时间估算法
19. 下面关于PDL语言不正确的说法是( D ) 。
A. PDL是描述处理过程怎么做
B. PDL是只描述加工做什么
C. PDL也称为伪码
D. PDL的外层语法应符合一般程序设计语言常用的语法规则
20. 在软件开发中,( A )是指对将要开发的系统的开发成本进行估
算,然后与可能取得的效益进行比较和权衡。
A. 成本—效益分析
B. 可行性分析
C. 结构化分析
D. 软件需求分析
2、 填空题:
1. 在信息处理和计算机领域内,一般认为软件是 程序、文档 和_
数据 。
2. 划分模块时尽量做到 高内聚 、 低耦合 ,保持模块的独
立性,尽量使用公共模块。
3. 类的实例化是 对象。
4. 将得到软件的总开发量。这种成本估算方法称为 自底向上
。
5. 如果一个模块被 n 个模块调用,其中直接的上级模块的个数是
m 个( m<=n )那么该模块的扇入数是 N 个。
6. 从结构化程序设计到 面向对象程序设计 ,是程序设计方法的
又一次飞跃。
7. 在单元测试时,需要为被测模块设计___测试用例_____
8. 可行性研究的目的是用最小的代价在尽可能短的时间内确定该
软件项目 是否值得开发 。
9. .需求分析阶段,分析人员要确定对问题的综合需求,其中最主
要的是__功能需求 。
10. 软件生存周期中时间最长、花费的精力和费用最多的一个阶段
是 维护 阶段
11. 增量模型适合于 软件需求 不明确、设计方案有一定风险的
软件项目
12. Jackson方法是一种面向 数据结构 的设计方法
13. 软件项目管理的范围主要集中于3个P上,即:People人员、
Problem问题和 过程process
14. 软件工程管理的主要内容有:项目经费管理, 软件质量管
理, 项目进度管理 和 人员管理
15.
3、 名词解释:
1、 软件可靠性:指在给定的时间内,程序按照规定的条件成功地运行的概率
2、 数据词典:是描述数据信息的集合,它对数据流图中的各个元素按规定格式进行详细的描述和确切的解释,是数据流图的补充工具。
3、 软件再工程:运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合、并重新构建软件,用于提高软件的可理解性、可维护性可复用性或演化性。
4、 完善性维护:为了适应用户业务和机构的发展变化而对软件的功能、性能进行修改、扩充的过程称为完善性维护。因为各种用户的业务
和机构在相当长的时期内不可能是一成不变的,所以功能、性能的增加是不可避免的,而且这种维护活动在整个维护工作中所占的比重很大5、 数据流图:他以图形的方式反映系统的数据流程
6、需求分析:是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要计算机“做什么”,要达到什么样的效果。可以说需求分析是做系统之前必做的。
7、面向对象设计:是“好的面向对象设计”,所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达,如Visual Basic、.NET、C++/CLI等
8、软件概要设计:是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。
9、β测试:是由软件的最终用户(多个)在一个或多个用户场所来进行。由用户负责记下遇到的所有问题,包括主观认定的和真实的问题,定期向开发者报告,开发者在综合用户的报告之后进行修改,最后将软件产品交付给全体用户使用。
10、系统流程图:是描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。
4、 简答题:
1、 简述软件危机产生的原因?
答:软件危机产生的原因有:(每点1分) (1)软件的规模越来越大,结构越来越复杂。
(2)软件开发的管理困难。由于软件规模大,结构复杂,又具有无形性,导致管理困难,进度控制困难,质量控制困难,可靠性无法保证。
(3)软件开发费用不断增加。软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升很快。
(4)软件开发技术、开发工具落后,生产率提高缓慢。 (5)生产方式落后。软件仍然采用个体手工方式开发。
2、 简述建立对象模型的过程?
答:建立对象模型的步骤如下:(每点1分) (1)确定类:标出来自问题域的相关对象类。
(2)准备数据字典:为所有建模实体准备一个数据字典,准确描述各对象类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制; (3)确定关联:确定二个或多个类之间的相互依赖; (4)确定属性:只考虑与具体应用直接相关的属性
(5)使用继承来细化类:使用继承来共享公共结构,以此来重新组织类
3、 软件生存周期分为几个阶段?每个阶段的提交物是什么?
答:(1)可行性研究和项目开发计划,提交项目开发计划和可行性分析报告; (2)需求分析,提交软件需求说明书; (3)概要设计,提交概要设计说明书; (4)详细设计,提交详细设计说明书; (5)编码,提交源程序清单; (6)测试,提交测试报告; (7)维护,提交维护报告。
4、 软件的复杂性主要体现在哪些方面?减少软件复杂性有哪些优点?答:软件复杂性主要表现在程序复杂性,而程序的复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少、开发周期长短和软件潜伏错误的多少。(3分)减少程序的复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜伏错
误减少。(2分)
5、软件工程的七条基本原理是什么?
答:软件工程的七条基本原理是:
(1) 用分阶段的是的生存周期计划严格管理;
(2) 坚持进行阶段评审;
(3) 严格实施的产品控制;
(4) 采用现代程序技术;
(5) 结果应能清楚地审查;
(6) 开发小组的成员应该少而精;
(7) 承认不断改进软件工程的必要性。
6、一般面向对象分析建模的工具(图形)有哪些?
答:用例图、类/对象图、对象关系图、实体—关系图(E—R)、事件轨迹图(时序图)和状态转换图(STD)等
7、可行性研究包括哪几方面的内容?
答:(1)经济可行性:是否有经济效益,多长时间可以收回成本;
(2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;
(3)运行可行性:系统操作在用户内部行得通吗?
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
8、 什么是模块化?模块设计的准则是什么?
答:模块化是按规定的原则将一个大型软件划分为一个个较小的、相对独立但又相关的模块。
模块设计的准则:
(1) 改进软件结构, 提高模块独立性:在对初步模块进行合并、分
解和移动的分析、精化过程中力求提高模块的内聚,降低藕合。
(2) 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中。
(3) 软件结构图的深度、宽度、扇入和扇出要适当。一般模块的调用个数不要超过5个。
(4) 尽量降低模块接口的复杂程度;
(5) 设计单入口、单出口的模块。
(6) 模块的作用域应在控制域之内。