说明:我们从指定张海藩《软件工程》(第6版)为考研参考书目的名校历年考研真题以及相关教辅习题中挑选具有代表性的真题,并对其进行了详细的解答。通过这一部分的练习,可以帮助学员巩固基础知识、夯实专业基础,从而做到全方位备考。
1.软件工程是采用( )的概念、原理、技术方法指导计算机程序设计的工程学科。 [中国传媒大学2014研]
A.工程
B.系统工程
C.体系结构
D.结构化设计
【答案】 A
【解析】 软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,从而经济地开发出高质量的软件,并且进行有效地维护。
2.随着开发小组人数的( ),因交流开发进展情况和讨论遇到的问题而造成的通信开销也急剧增加。 [中国传媒大学2014研]
A.增加
B.降低
C.稳定
D.不稳定
【答案】 A
【解析】 当开发小组变得更大时,即开发小组人数增加时,每个人需要用更多时间与组内其他成员讨论问题、协调工作,因此,通信开销也随之增加。
3.软件质量必须在( )加以保证。 [中国传媒大学2014研]
A.开发之前
B.开发之后
C.可行性研究过程中
D.分析、设计与实现过程中
【答案】 D
【解析】 保证软件质量的措施包括基于非执行的测试、基于执行的测试、程序正确性证明,这些措施贯穿于软件开发的分析、设计和实现的过程中。
4.包含风险分析的软件工程模型是( )。 [中国传媒大学2014研]
A.螺旋模型
B.瀑布模型
C.增量模型
D.喷泉模型
【答案】 A
【解析】 螺旋模型的基本思想是使用原型及其他方法来尽量降低风险。可以把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,它是风险驱动的软件工程模型。
5.模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的( )。 [中国传媒大学2014研]
A.抽象和信息隐藏
B.局部化和封装化
C.内聚性和耦合性
D.激活机制和控制方法
【答案】 C
【解析】 开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。模块的独立性的度量标准是模块的耦合性和内聚性,内聚性越高模块独立性越强,耦合性越低模块独立性月下,因此,在设计软件时,应尽量做到高内聚、低耦合。
6.详细设计的任务是确定每个模块的( )。 [中国传媒大学2014研]
A.算法
B.功能
C.调用关系
D.输入输出数据
【答案】 A
【解析】 从软件开发的工程化观点来看,在使用程序设计语言编制程序之前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是决定各个模块的实现算法,并精确地表达这些算法。
7.软件复杂性度量的参数包括( )。 [中国传媒大学2014研]
A.效率
B.规模
C.完整性
D.容错性
【答案】 B
【解析】 软件复杂性度量的方法是把程序的复杂程度乘以适当参数即可估算出软件中错误的数量以及软件开发需要用的工作量。定量度量的结果,可以用来比较两个不同设计或两个不同算法的优劣,程序的定量的复杂程度可作为模块规模的精确限度,因此,规模可作为软件复杂性度量的参数。
8.( )定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。 [中国传媒大学2014研]
A.用例图
B.类图
C.合作图
D.状态图
【答案】 A
【解析】 用例模型描述的是外部行为者所理解的系统功能,它不涉及系统内部复杂的功能实现。用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。
9.面向对象分析是对系统进行( )的一种方法。 [中国传媒大学2014研]
A.需求建模
B.程序设计
C.设计评审
D.测试验收
【答案】 A
【解析】 面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程,即对系统进行需求建模的过程,它的主要任务包括:①分析陈述用户需求的文件;②深入理解用户需求,抽象出目标系统的本质属性;③用模型准确地表示。
10.测试的关键问题是( )
A.如何组织软件评审
B.如何选择测试用例
C.如何验证程序的正确性
D.如何采用综合策略
【答案】 B
【解析】 软件测试是发现软件错误和缺陷的主要手段,其目的就是在软件系统交付运行之前,尽可能多地发现系统中的错误和缺陷。一般一个高效的测试是指用少量的测试用例,发现被测软件尽可能多的错误。因此,测试的关键就在对软件测试用例的设计与选择上。
11.提高测试的有效性非常重要,成功的测试是指( )。 [中国传媒大学2013研]
A.证明了被测试程序正确无误
B.说明了被测试程序符合相应的要求
C.未发现被测程序的错误
D.发现了至今为止尚未发现的错误
【答案】 D
【解析】 软件测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。
12.为了解决软件危机,人们提出了用( )的原理来设计软件。 [中国传媒大学2013研]
A.运筹学
B.工程学
C.软件学
D.数学
【答案】 B
【解析】 为了解决软件危机,通过采用软件工程来指导软件的设计。软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护。
13.若有一个计算类型的程序,它的输入量只有一个X,其范围是 [-1.0,1.0] ,现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是( )。 [中国传媒大学2013研]
A.条件覆盖法
B.等价分类法
C.边界值分析法
D.错误推测法
【答案】 C
【解析】 输入值的边界是-1.0和1.0,而设计的测试用例是-1.001、-1.0、1.0、1.001刚好等输入值的边界和刚刚超越边界值,因此,该方法属于边界值分析法。
14.原型化方法需要用户和软件开发人员之间经常交互,适用于( )系统。 [中国传媒大学2013研]
A.需求不确定的
B.需求确定的
C.管理信息
D.决策支持
【答案】 A
【解析】 原型化方法特别适用于需求不确定性较高的软件系统的开发。它的基本思想是根据用户给出的基本需求,通过快速实现构造出一个小型的可执行的模型,满足用户的基本要求,让用户在试用后做出反应和评价,然后开发者根据用户的意见对原型加以改进。
15.程序的三种基本控制结构是( )。 [中国传媒大学2013研]
A.过程、子程序和分程序
B.顺序、选择和重复
C.递归、迭代和回溯
D.调用、返回和转移
【答案】 B
【解析】 程序的三种基本控制结构是顺序、选择(分支)、重复(循环),所有控制结构都能用这三种结构表示。子程序只是程序设计一种方法,递归则是一种算法,都算不上是控制结构。
16.结构化维护与非结构化维护的主要区别在于( )。 [中国传媒大学2013研]
A.软件是否结构化
B.软件配置是否完整
C.程序的完整性
D.文档的完整性
【答案】 B
【解析】 非结构化维护需要付出很大代价,这种维护方式是没有使用良好定义的方法学开发出来的软件的必然结果;结构化维护是在软件开发的早期应用软件工程方法学的结果。因此,结构化维护与非结构化维护的主要区别是软件配置的完整性,有了软件的完整配置能减少精力的浪费并且能提高维护的总体质量。
17.下面是被测模块的流程图。测试数据为:A=1,B=0,X=3;A=2,B=1,X=1。判断符合如下哪个等级的逻辑覆盖:( )。
A.判定覆盖
B.语句覆盖
C.判定/条件覆盖
D.条件覆盖
【答案】 D
【解析】 条件覆盖指使得每个判断中的每个条件的可能值至少执行一次,题中总共有四个条件A>1、B=0、A=2和X>1,测试数据中A=2满足A>1和A=2这两个条件,X=3满足X>1的条件,B=0满足B=0的条件,所以测试数据满足每个判断中的所有条件,符合条件覆盖的要求。
18.模块( )定义为受该模块内一个判断影响的所有模块集合。 [中国传媒大学2013研]
A.控制域
B.作用域
C.宽度
D.接口
【答案】 B
【解析】 模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合;模块作用域定义为受该模块内一个判断影响的所有模块的集合;模块宽度是软件结构内同一个层次上的模块总数的最大位,一般说来,宽度越大,系统越复杂;模块接口的复杂程度影响模块耦合强弱。
19.面向数据结构的设计方法(Jackson方法)是进行( )的形式化的方法。 [中国传媒大学2013研]
A.系统设计
B.详细设计
C.软件设计
D.编码
【答案】 B
【解析】 Jackson方法是一种面向数据结构的设计方法,在完成了软件结构设计之后,可以使用面向数据结构的方法来设计每个模块的处理过程,因此,Jackson方法适合于在详细设计阶段使用。
20.结构化设计方法一般也称为面向( )的设计。 [中国传媒大学2013研]
A.数据流
B.数据编码
C.数据库
D.数据结构
【答案】 A
【解析】 结构化设计方法(也称为面向数据流的设计)把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径。
21.软件详细设计阶段的任务是( )。 [中国传媒大学2013研]
A.算法设计
B.功能设计
C.调用关系设计
D.输入/输出设计
【答案】 A
【解析】 从软件开发的工程化观点来看,在使用程序设计语言编制程序之前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是决定各个模块的实现算法,并精确地表达这些算法。
22.DFD中每个加工至少有( )。 [中国传媒大学2013研]
A.一个输入流
B.一个输出流
C.多个输入输出流
D.一个输入输出流
【答案】 D
【解析】 数据流图(DFD)是一种用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程的图形化技术。每个加工描绘信息流和数据从输入移动到输出的过程中所经受的变换,因此,DFD图中每个加工至少有一个输入流和一个输出流。
23.系统流程图一般用于可行性分析中对( )进行描述。 [中国传媒大学2013研]
A.当前运行系统
B.当前逻辑模型
C.目标系统
D.新系统
【答案】 A
【解析】 系统流程图又称事务流程图,是系统分析时常用的一种描述方法。它描述了计算机事务处理中从数据输入开始到获得输出为止,各个处理工序的逻辑过程,是对当前运行系统的描述。
24.( )工具在软件详细设计过程中不采用。 [中国传媒大学2013研]
A.判定表
B.IPO图
C.PDL
D.DFD图
【答案】 D
【解析】 数据流图(DFD)中没有具体的物理部件,是一种结构化分析方法,只是描绘数据在软件中流动和被处理的逻辑过程,而且设计时只需考虑系统必须完成的基本逻辑功能,不考虑怎样具体地实现这些功能。在详细设计中由于其具有上述特点,因而一般不采用。
25.( )详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。 [中国传媒大学2013研]
A.概要设计说明书
B.详细设计说明书计
C.用户手册
D.用户需求说明书
【答案】 C
【解析】 在软件文档中,概要设计说明书主要说明系统的功能分配、模块划分、程序的总体结构、I/O及接口设计、运行设计、数据结构设计和错误处理设计等内容;详细设计说明书着重描述每个模块是如何实现的;用户手册帮助用户了解软件的使用,需要描述软件的功能、性能和用户界面;用户需求说明书是开发人员和用户经过充分沟通后对软件需求的共同理解,主要说明软件的功能、性能和运行环境等内容。
26.汽车有一个发动机。汽车和发动机之间的关系是( )关系。 [中国传媒大学2013研]
A.一般—具体
B.整体—部分
C.分类关系
D.主从关系
【答案】 B
【解析】 类有两种主要的结构关系,即一般—具体结构关系和整体—部分结构关系。前者称为分类结构,用来描述现实世界中的一般化的抽象关系;后者称为组装结构,用来描述现实世界中的类的组成的抽象关系。汽车有一个发动机,发动机是汽车的一部分,因此,汽车和发动机的关系属于整体—部分关系。
27.面向对象设计是( )的过程。 [中国传媒大学2013研]
A.软件实现
B.需求确立
C.建立问题域模型
D.建立求解域模型
【答案】 D
【解析】 面向对象方法把数据和行为看成是同等重要的,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来建立求解域模型的过程。
28.在变更控制中,( )可以用来确保由不同用户所执行的并发变更。 [中国传媒大学2013研]
A.异步控制
B.同步控制
C.存取控制
D.基线控制
【答案】 B
【解析】 变更控制包括建立控制点和建立报告与审查制度,其过程中的“检出”和“登入”处理实现了存取控制和同步控制,存取控制管理各个用户存取和修改一个特定软件配置对象的权限,同步控制可用来确保由不同用户所执行任务的并发变更。
29.提高软件质量和可靠的技术大致可分为两大类。其中一类就是避开错误技术,但避开错误技术无法做到完美无缺和绝无错误,这就需要( )。 [中国传媒大学2013研]
A.消除错误
B.检测错误
C.避开错误
D.容错
【答案】 D
【解析】 提高软件质量和可靠性的技术大致可分为两类,一类是避开错误技术,即在开发的过程中不让差错潜入软件的技术;一类是容错技术,即对某些无法避开的差错,使其影响减至最小的技术。当避开错误技术无法做到完美无缺时,就需要引入容错技术。
30.面向对象方法有许多特征,如软件系统是由对象组成的;( );对象彼此之间仅能通过传递消息互相联系等。 [中国传媒大学2013研]
A.开发过程基于功能分析和功能分解
B.强调需求分析重要性
C.把对象划分成类,每个对象类都定义一组数据和方法
D.对已有类进行调整
【答案】 C
【解析】 面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它的基本特征有对象唯一性、封装性、继承性和多态性等,它规定软件系统是由对象组成的,将对象划分成类,每个对象类都定义一组数据和方法。
31.软件维护产生的副作用,是指( )。 [中国传媒大学2013研]
A.开发时的错误
B.隐含的错误
C.因修改软件而造成的错误
D.运行时误操作
【答案】 C
【解析】 因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用,包括编码副作用、数据副作用、文档副作用三种。
32.软件详细设计的主要任务是确定每个模型的( )。 [中国传媒大学2013研]
A.算法和使用的数据结构
B.外部接口
C.功能
D.编程
【答案】 A
【解析】 软件详细设计的任务包括四点:①为每个模块确定采用的算法;②确定每一模块使用的数据结构;③确定模块接口的细节;④为每一个模块设计出一组测试用例。其中主要的任务是设计每个模块的实现算法、所需的局部数据结构。
33.为了提高模块的独立性,模块内部最好是( )。 [中国传媒大学2013研]
A.逻辑内聚
B.时间内聚
C.功能内聚
D.通信内聚
【答案】 C
【解析】 衡量模块独立性的两个标准是内聚和耦合,模块耦合性越低,独立性越强,内聚性越高,独立性越强,在几种内聚中,内聚程度最高的是功能内聚,因此,为了提高模块的独立性,模块内部最好是功能内聚。
34.软件结构图中,模块框之间若有直线连接,表示它们之间存在( )。 [中国传媒大学2013研]
A.调用关系
B.组成关系
C.链接关系
D.顺序执行关系
【答案】 A
【解析】 软件结构图也就是为了反映软件系统中组件之间相互关系和约束的体系结构设计图,一般通过分层次或分时间段等方式说明体系结构的各个组成部分的组合关系,软件结构图中的方框表示模块,方框间的直线表示模块间的调用关系。
35.需求分析最终结果是产生( )。 [中国传媒大学2013研]
A.项目开发计划
B.需求规格说明书
C.设计说明书
D.可行性分析报告
【答案】 B
【解析】 需求规格说明书是需求分析阶段的最终产物,也是最重要的的文档资料。对帮助开发人员明确用户实际需求起到了重要作用,是进行软件设计和开发的基础,同时也作为测试时的重要文档,用于比对软件功能是否与用户的需求相一致。
36.可行性研究要进行一次( )需求分析。 [中国传媒大学2013研]
A.深入的
B.详尽的
C.彻底的
D.简化的、压缩的
【答案】 D
【解析】 可行性研究是在项目建议书被批准后,对项目在技术上和经济上是否可行所进行的科学分析和论证,它需要进行一次简化的、压缩的需求分析。
37.软件测试方法中的( )属于静态测试方法。 [中国传媒大学2013研]
A.黑盒法
B.路径覆盖
C.错误推测
D.人工检测
【答案】 D
【解析】 软件测试从需要执行被测试软件的角度,可以分为静态测试和动态测试。静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
38.结构化设计方法在软件开发中,用于( )。 [中国传媒大学2013研]
A.测试用例设计
B.概要设计
C.程序设计
D.详细设计
【答案】 B
【解析】 结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础发展起来的。它的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,可用于软件开发的概要设计。
39.软件按照设计的要求,在规定时间和条件下达到不出故障,持续运行的要求的质量特性称为( )。 [中国传媒大学2013研]
A.可用性
B.可靠性
C.正确性
D.完整性
【答案】 B
【解析】 软件质量特性包括:功能性、可靠性、易使用性、效率性、可维护性和可移植性。其中可靠性是指在规定的一段时间内和规定的条件下,软件维持在其性能水平有关的能力。
40.下列文档与维护人员有关的有( )。 [中国传媒大学2013研]
A.软件需求说明书
B.项目开发计划
C.概要设计说明书
D.操作手册
【答案】 C
【解析】 在进行软件维护时了解原有软件的总体情况是很重要的。概要设计说明书能准确地描述了对软件系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求及将来可能提出的需求,对了解已有软件的总体情况有很大帮助。在对已有软件做重大修改之前仔细阅读、认真研究概要设计说明书,可以避免许多修改错误。
1.在软件项目管理中,按照风险的影响范围可将风险分为:项目风险、_______和_______。 [中国传媒大学2013研]
【答案】 基本风险;特殊风险
2.RUP强调采用_______和_______的方式来开发软件。 [中国传媒大学2013研]
【答案】 迭代;递增
3.能力成熟度模型(CMM)定义的能力成熟度等级包括:初始级、_______、已定义级、和持续_______优化级。 [中国传媒大学2013研]
【答案】 可重复级;已管理级
4.软件生命周期的一种典型的阶段划分为:_______、_______、需求分析、概要设计、详细设计、编码、测试和_______。 [中国传媒大学2013研]
【答案】 问题定义;可行性研究;维护
5.调试可理解为把症状和_______联系起来的智力过程。 [中国传媒大学2013研]
【答案】 原因
6.数据流的类型主要包括_______和。_______ [中国传媒大学2013研]
【答案】 变换型;事务型
7.下图显示了软件配置管理中的访问控制和同步控制,请将图中标号的位置填写完整。
【答案】 (1)登入;(2)检出;(3)软件工程师
1.信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 信息模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据。其中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。可使用E-R图对其包含的信息进行准确的描述。
2.用例模型的基本组成部件是用例、角色和用例之间的联系。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 用例模型是通过用例、角色(系统和行为者)、用例间联系来描述外部行为者所理解的系统功能。
3.面向对象的开发方法将过程作为最基本元素,是分析问题、解决问题的核心。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 面向对象方法是一种以数据或信息为主线,把数据和处理相结合的方法,即把对象作为由数据及可以施加在这些数据上的操作所构成的统一体,因此,面向对象的开发过程最基本的元素是对象。
4.压力测试是检测在极限环境中使用系统时施加在用户上的压力。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 压力测试是在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。
5.若在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 在软件开发过程中,系统变更的代价呈非线性增长。在早期早阶段发现一个错误,解决它需要的代价要比等到设计、编程、测试和维护阶段解决小非常多。
6.软件维护中大部分工作是由于用户的需求改变而引起的。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 为了满足用户的需求,需要进行完善性维护,完善性维护占整个维护过程的50%~60%,比重最大。
7.在白盒测试中,满足条件组合覆盖的测试用例也会满足路径覆盖的要求。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 在白盒测试中,路径测试是覆盖程度最高的测试,因此满足条件组合覆盖的测试用例不一定满足路径覆盖。
8.软件是指用程序设计语言编写的程序,软件开发实际上就是编写程序代码。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 软件开发阶段包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护这几个阶段,而编写程序代码只是软件生命周期的一部分,并不能代表整个软件开发过程。
9.模块化,信息隐藏,抽象和逐步求精的软件设计原则有助于得到高内聚,低耦合度的软件产品。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 在软件生命周期的总体设计阶段,采用模块化,信息隐藏,抽象和逐步求精的软件设计原则,可以为接下来的详细设计、实现、维护阶段提供一个质量较好的软件设计方案,即有助于得到高内聚、低耦合的软件产品。
10.数据字典是对数据流图中的数据流、处理过程、数据存储、数据的源和终点进行详细定义。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 数据字典(DD)是用来定义数据流图中的各个成分具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。数据流图中各成分包括数据流、处理过程、数据存储、数据的源和终点。
11.编程语言应该在软件概要设计时选择。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 概要设计的主要任务是:划分出组成系统的物理元素程序、文件、数据库、人工过程和文档;确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。编程序言需要在实现的时候才考虑。
12.按照风险的影响范围可将风险分为几类,其中项目复杂程度、规模以及结构不确定性属于技术风险。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 技术风险多属于人为风险,受知识水平所限,人们在进行预测、决策、评估和各种技术方案的选择是必然产生相应的不确定。
13.在面向对象的软件开发方法中,对象是类的实例,类是生成对象的模板。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 类是对具有相同数据和相同操作的一组相似对象的定义,即类是生成对象的模板。因此类和对象的关系时抽象和具体的关系。
14.可行性研究进一步研究问题分析阶段所确定的问题是否有可行的解。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 可行性研究是用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法,即它需要对需求分析进行进一步的研究,以确定问题是否有可行解。
15.进行总体设计时应加强模块间的联系。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。模块的独立性的度量标准是模块的耦合性和内聚性,在进行软件设计时,应尽量做到高内聚、低耦合,因此,在进行总体设计时,应尽量减少模块间的联系。
16.在客户机/服务器关系中,服务器需要知道客户机的接口。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 在在客户机/服务器关系中,服务器等待客户机发起连接,故客户机需要知道服务器的接口,主动与其连接,而服务器不需要知道客户机接口,只需要等待有效连接即可。
17.文档是影响软件可维护性的决定因素。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 文档是影响软件可维护性的决定因素。由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更重要。
18.软件维护中大部分工作是由于用户的需求改变而引起的。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 为了满足用户的需求,需要进行完善性维护,完善性维护占整个维护工作的50%~60%,比重最大。
19.一个好的测试用例在于能发现至今未发现的错误。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 一个好的测试可以帮助测试人员发现一直被忽略的、没有被其他方法所检测出来的错误,通过不断的发现错误,改正错误,有助于提高软件的可靠性。
20.一个设计得好的软件系统具有低内聚、高耦合的特征。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 一个优秀的软件,模块的独立性高,和其他模块之间没有过多的相互作用,即具有低耦合、高内聚的特征。
21.面向对象的方法是以类作为最基本的元素,它是分析问题、解决问题的核心。( ) [中国传媒大学2013研]
【答案】 错误
【解析】 面向对象方法是一种以数据或信息为主线,把数据和处理相结合的方法,即把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。
22.UML是一种建模语言,而不是建模方法。( ) [中国传媒大学2013研]
【答案】 正确
【解析】 UML又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持。
1.概要设计 [中国传媒大学2013研]
答: 概要就是回答“概括地说,系统应该如何实现”这个问题。概要设计站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构。
2.问题分析图PAD [中国传媒大学2013研]
答: 问题分析图(PAD)是由程序流程图演化而来,用二维树形结构的图来表示程序的控制流,将其翻译成程序代码比较容易。它既可以用来表示程序逻辑,也可以用来描述数据结构,支持结构化程序设计(SP)方法,仅具有顺序、选择、循环三类基本成分。
3.UML [中国传媒大学2013研]
答: UML又称统一建模语言或标准建模语言,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。
4.多态性 [中国传媒大学2013研]
答: 多态性是指同一消息为不同的对象接受时,可产生完全不同的动作,利用多态性,用户可发送一个通用的消息,而将所有的实现细节都留给接受消息的对象自行决定。另外,多态性也可以指在父类中定义的属性或者服务被子类集成后,可以具有不用的数据类型或者表现出不同的行为。
5.边界值分析法 [中国传媒大学2013研]
答: 边界值分析是选取刚好等于、稍小于和稍大于等价类边界值的数据作为测试数据,而不是选取每个等价类内的典型值或任意值作为测试数据,它是对等价类划分方法的补充。边界值分析法是一种重要的黑盒测试方法。
6.软件再工程 [中国传媒大学2013研]
答: 软件再工程是运用逆向工程、重构等技术,在充分理解原有软件的基础上,进行分解、综合、并重新构建软件,用于提高软件的可理解性、可维护性、可复用性。它指的是对既存对象系统进行调查,并将其重构为新形式代码的开发过程,它的重要特点是能最大限度的重用既存系统的各种资源。
7.信息隐藏 [中国传媒大学2013研]
答: 信息隐藏在信息安全保障体系的诸多方面发挥着重要作用,它指的是在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对不需要这些信息的其他模块来说,是不能访问的,也是不可见的。
8.黑盒测试 [中国传媒大学2013研]
答: 黑盒测试一种单元测试方法,它把被测试的对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依照需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。
9.模块化 [中国传媒大学2013研]
答: 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块化是为了使一个复杂的大型程序能被人的智力所管理。
10.内聚 [中国传媒大学2013研]
答: 内聚是衡量模块独立性的一个标准,指模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。模块内元素联系越紧密,内聚越高;内聚越高,模块独立性越强。
11.抽象 [中国传媒大学2013研]
答: 把在现实世界中一定事物、状态或过程之间的共性集中和概括起来,暂时忽略它们之间的差异,这就是抽象。即抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
12.数据字典 [中国传媒大学2013研]
答: 数据字典(DD)是用来定义数据流图中的各个成分具体含义的。它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。
13.软件项目管理 [中国传媒大学2013研]
答: 软件项目管理是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,保证软件生命周期中的各项活动的正常的进行。软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。
14.文档 [中国传媒大学2013研]
答: 文档是软件开发使用和维护中的必备资料。它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导、帮助、解惑的作用,尤其是在维护工作中,文档是不可或缺的资料。
15.增量模型 [中国传媒大学2013研]
答: 增量模型也称为渐增模型,是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
16.程序的可移植性 [中国传媒大学2013研]
答: 程序的可移植性指程序从某一环境转移到另一个环境下的难易程度。为获取较高的可移植性,在设计过程中采用的程序设计语言和运行支撑环境,尽量不使用与系统底层相关性强的语言。
17.耦合性 [中国传媒大学2013研]
答: 耦合性也称块间联系,是软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
18.重用性 [中国传媒大学2013研]
答: 利用标准化的软件模块快速构建特定的应用系统,不做修改或稍加改动就可以在不同环境中多次重复使用。
19.数据流图 [中国传媒大学2013研]
答: 数据流图(DFD)是结构化分析方法中用于表示系统逻辑模型的一种工具,是一种功能模型。它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。
1.简述文档在软件工程中的作用。 [中国传媒大学2013研]
答: 文档是软件开发使用和维护中的必备资料,在软件工程中的作用如下:
(1)提高软件开发过程的能见度。
(2)提高软件开发的效率。
(3)作为开发人员阶段工作成果和结束标志。
(4)记录开发过程的有关信息,便于使用和维护。
(5)提供软件运行、维护和培训的相关说明性参考资料。
(6)便于用户了解软件功能、性能和相关配置信息。
2.简述瀑布模型的优缺点。 [中国传媒大学2013研]
答: 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。
(1)优点
①可强迫开发人员采用规范的方法。
②严格地规定了每个阶段必须提交的文档。
③要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
④对文档的约束,使软件维护变得容易一些,且能降低软件预算。
(2)缺点
①开发过程一般不能逆转,否则代价太大。
②实际的项目开发很难严格按该模型进行。
③客户往往很难清楚地给出所有的需求。
④软件的实际情况必须到项目开发的后期客户才能看到。
3.什么是α测试和β测试? [中国传媒大学2013研]
答: (1)α(Alpha)测试
α测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,且开发者负责记录发现的错误和遇到的问题。即α测试是在受控的环境中进行的。
(2)β(Beta)测试
β测试由软件的最终用户们在一个或多个客户场所进行。开发者通常不在β测试的现场,即β测试是软件在开发者不能控制的环境中的“真实”应用。主要的实现步骤是:
①用户记录在β测试过程中遇到的问题,并且定期把这些问题报告给开发者;
②开发者在接收到在β测试期间报告的问题之后,对软件产品进行必要的修改;
③开发者向全体客户发布最终的软件产品。
4.软件生命期各阶段的任务是什么? [中国传媒大学2013研]
答: (1)问题定义
问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”。通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
(2)可行性研究
这个阶段要回答的关键问题是:“对于上一个阶段所确定的问题有行得通的解决办法吗?”。可行性研究阶段的任务是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
(3)需求分析
这个阶段的任务是准确地确定“为了解决这个问题,目标系统必须做什么”。这个阶段的一项重要任务是用需求规格说明书准确地记录对目标系统的需求。
(4)总体设计
这个阶段必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”。用适当的表达工具描述和分析每种方案,推荐一个最佳方案并制定出详细计划。另一项主要任务就是设计程序的体系结构。
(5)详细设计
详细设计阶段的任务就是把解法具体化,也就是回答:“应该怎样具体地实现这个系统呢?”。在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。
(6)编码和单元测试
这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员把详细设计的结果翻译成用选定的高级编程语言书写的程序,并且仔细测试编写出的每一个模块。
(7)综合测试
这个阶段的关键任务是通过各种类型的测试使软件达到预定的要求。应该用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,作为软件配置的一个组成部分。
(8)软件维护
维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。
5.什么是抽象类?在建模时有时使用抽象类有什么好处? [中国传媒大学2013研]
答: (1)抽象类的定义
抽象类是指没有实例的类,定义了一些抽象的操作,即不提供实现方法的操作,只提供操作的特征,并标注。
(2)使用抽象类的好处
在建模时使用抽象类使系统结构更加的清晰,增加了系统的可读性和可理解性。
6.为什么要进行软件项目管理? [中国传媒大学2013研]
答: 软件项目管理是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,保证软件生命周期中的各项活动的正常的进行。软件项目管理先于任何技术活动之前开始,并且贯穿于软件的整个生命周期之中。进行软件项目管理的原因如下:
(1)软件项目管理与软件开发的质量、效率、最终成果息息相关。
(2)软件项目管理可以合理分配资源,合理安排人员,避免出现混乱的情况。
(3)运用科学的管理方式,大大的降低了成本的投入和不必要资源的浪费。
(4)更好的对整个软件进行预测和分析,帮助掌握整个生命周期中的各项活动细节。
7.面向对象建模的三种模型是什么,各自的主要功能有哪些,分别可用UML的哪些图来描述? [中国传媒大学2013研]
答: (1)面向对象建模的三种模型是对象模型、动态模型、功能模型。
(2)三种模型的主要功能
①对象模型
表示静态的、结构化的系统的数据性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
②动态模型
表示瞬时的、行为化的系统的控制性质,它规定了对象模型中对象的合法变化序列。
③功能模型
表示软件系统的功能性质,它指明了系统应该“做什么”,更直接地反映了用户对目标系统的需求。
(3)UML图描述
①在UML中,使用类图来建立对象模型。
②在UML中,使用状态图和事件追踪图来建立动态模型。
③在UML中,使用用例图来建立功能模型。
8.什么是数据流图,其作用是什么,有哪些基本符号以及各表示什么含义? [中国传媒大学2013研]
答: (1)数据流图的定义
数据流图(DFD)是一种用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程的图形化技术。它是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
(2)数据流图的作用
数据流图的作用是描绘信息流和数据从输入移动到输出的过程中所经受的变换。
(3)数据流图的基本符号和表示含义
数据流图中的基本符号和表示含义,如图1所示。
图1 数据流图的基本符号
9.试分析瀑布模型的优点和缺点。 [中国传媒大学2013研]
答: 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。
(1)优点
①可强迫开发人员采用规范的方法。
②严格地规定了每个阶段必须提交的文档。
③要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
④对文档的约束,使软件维护变得容易一些,且能降低软件预算。
(2)缺点
①开发过程一般不能逆转,否则代价太大。
②实际的项目开发很难严格按该模型进行。
③客户往往很难清楚地给出所有的需求。
④软件的实际情况必须到项目开发的后期客户才能看到。
10.从软件工程的七条基本定理中任选四条,并对所选的每条定理做简要阐述。 [中国传媒大学2013研]
答: (1)用分阶段的生命周期计划严格管理
在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。
(2)坚持进行阶段评审
软件的质量保证工作不能等到编码阶段结束之后再进行。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。
(3)实行严格的产品控制
当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制,其中主要是实行基准配置管理。一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。
(4)结果应能清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。
11.什么是软件工程?简述软件工程的基本原理及软件工程的目标。 [中国传媒大学2013研]
答: (1)软件工程的定义
①软件工程是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科。
②软件工程采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
(2)软件工程的基本原理
①用分阶段的生命周期计划严格管理。
②坚持进行阶段评审。
③实行严格的产品控制。
④采用现代程序设计技术。
⑤结果应能清楚地审查。
⑥开发小组的人员应该少而精。
⑦承认不断改进软件工程实践的必要性。
(3)软件工程的目标
软件工程的目标是在给定成本和进程的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性、可互操作性并满足用户需要的高质量软件产品。
12.什么是软件配置管理?主要任务是什么? [中国传媒大学2013研]
答: (1)软件配置管理的定义
软件配置管理是在软件的整个生命期内管理变化的一组活动。
(2)软件配置管理的主要任务
软件配置的主要任务是控制变化,同时也负责各个软件配置项(包括程序、文档和数据)、软件各种版本的标识、软件配置审计以及对软件配置发生的任何变化的报告。
13.动态测试的四个阶段分别是什么?请简述各阶段的主要工作? [中国传媒大学2013研]
答: (1)动态测试的四个阶段
动态测试的四个阶段分别是单元测试、集成测试、系统测试、确认测试。
(2)动态测试各阶段的主要工作
①单元测试
把每个模块作为一个单独的实体来测试,检验其正确性。目的是保证每个模块作为一个单元能正确运行。模块测试所发现的是编码和详细设计的错误。
②集成测试
把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通信是这个测试过程中的主要问题,即集成测试着重测试模块的接口。
③系统测试
把经过测试的子系统装配成一个完整的系统来测试。系统测试发现的是软件设计中和需求说明中的错误。
④确认测试
把软件系统作为单一的实体进行测试,它是在用户积极参与下进行的,而且主要使用实际数据进行测试。确认测试的目的是验证系统确实能够满足用户的需要,确认测试发现的是系统需求说明书中的错误。
14.需求分析有哪些特点? [中国传媒大学2013研]
答: (1)用户与开发人员很难进行交流
需求分析是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该“做什么”。但是在开始时,开发人员和用户双方都不能准确地提出系统要“做什么?”。由于用户和开发人员互相不了解对方的工作,又缺乏共同语言,所以在交流时存在着隔阂。
(2)用户的需求是动态变化的
对于一个大型而复杂的软件系统,用户很难精确完整地提出它的功能和需求分析性能要求。一开始只能提出一个大概、模糊的功能,只有经过长时间的反复认识才逐步明确。有时进入到设计、编程阶段才能明确,更有甚者,到开发后期还在提新的要求。
(3)系统变更的代价呈非线性增长
需求分析是软件开发的基础。在该阶段发现一个错误,解决它需要的代价要比等到设计、编程、测试和维护阶段解决小非常多。
15.有哪些主要的软件开发方法? [中国传媒大学2013研]
答: 主要的软件开发方法有以下几种:
(1)结构化开发方法
结构化开发方法是用系统工程的思想和工程化的方法,按用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计的方法。它是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。
(2)Jackson(JSP、JSD)方法
Jackson方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图。它是一种面向数据结构的软件设计方法,对输入、输出结构明确的中小型系统特别有效。
(3)原型化开发方法
原型化开发是软件开发的一种常用方法。开发人员对用户提出的问题进行总结,就系统的主要需求取得一致意见后,开发出一个原型并运行之,然后反复对原型进行修改,使之逐步完善,直到用户对系统完全满意为止。
(4)维也纳开发方法(VDM)
VDM是一个基于模型的方法,它的主要思想是将软件系统当作模型来给予描述,具体说就是把软件的输入/输出看作模型对象,而这些对象在计算机内的状态可看作为该模型在对象上的操作。
(5)面向对象的开发方法
面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
16.根据瀑布模型为下列任务排序:验收测试、项目计划、单元测试、需求复审、成本估计、总体设计、设计复审、市场调研、详细设计、系统测试、实现、编制需求规格说明书。 [中国传媒大学2013研]
答: 根据题意可以把上述任务分为:
A.市场调研
B.项目计划、成本估计、编制需求规格说明书(同时进行)
C.需求复审
D.总体设计
E.详细设计
F.设计复审
G.实现
H.单元测试
I.系统测试
J.验收测试
根据瀑布模型的要求,上述任务正确的排序应为ABCDEFGHIJ。
1.画出下面伪代码对应的PAD图和N-S图。 [中国传媒大学2013研]
答: (1)PAD图,如图1所示。
图1 PAD图
(2)N-S图,如图2所示。
图2 N-S图
2.交通工具分为空中、陆上、水上交通工具,空中交通工具分为客机、货机、专用型机;陆上交通工具分为火车、汽车,火车和汽车又分为客车、货车,水上交通工具有轮船,轮船分为客轮、货轮、客货混合轮。建立交通工具的对象模型。 [中国传媒大学2013研]
答: 交通工具的对象模型,如图3所示。
图3 交通工具对象模型
3.画出下列伪码程序对应的PAD图和N-S图。 [中国传媒大学2013研]
答: (1)PAD图,如图4所示。
图4 PAD图
(2)N-S图,如图5所示。
图5 N-S图
4.根据下列表述回答问题。 [中国传媒大学2013研]
有一个影片租赁店,想要开发一个计算机软件来管理它的日常业务。它每天的主要工作是:接待顾客借出或还回影片。店里有两种影片:喜剧片和恐怖片。当一个顾客要租借影碟时,店员将查找顾客名单,如果找到了,该顾客的姓名以及以往的租赁纪录将显示出来。然后店员查找影碟存货纪录,如果店内还有此影碟,则将生成一个租赁纪录,其中包含影碟号、日期、日租金等信息。然后店员将此租赁纪录记录到此顾客的名下。当顾客归还影碟时,店员找到顾客纪录后,再输入影碟号,如果找到该影碟的一个租赁纪录,则根据借出及归还日期、日租金等信息计算租金。(1)请根据上述软件需求的自然语言描述,确定类和对象;(2)建立完整对象模型(包括类、关联、属性、服务)。
答: (1)根据题目描述,确定类和对象,如图6所示。
(2)对象模型,如图6所示。
图6 对象模型
5.某航空公司规定,乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时,对头等舱的国内乘客超重部分每公斤收费4元,对其他舱的国内乘客超重部分每公斤收费6元,对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定树表示与上述每种条件组合相应的计算行李费的算法。 [中国传媒大学2013研]
答: 用判定树表示航空公司的规定如图7所示。
图7 航空公司规定判定树
6.建立以下有关“微机”的对象模型:一台微机有一个显示器,一个主机,一个键盘,一个鼠标,汉王笔可有可无。主机包括一个机箱,一个主板,一个电源及储存器等部件。存储器又分为固定存储器和活动储存器两种,固定存储器为内存和硬盘,活动存储器为软盘和光盘。 [中国传媒大学2013研]
答: “微机”的对象模型如图8所示。
图8 微机对象模型