A.X=11,X=29
B.X=9,X=10,X=30,X=31
C.X=10,X=30
D.X=9,X=31
参考答案:
B
参考解析:
边界值分析法是对各种输入、输出范围的边界情况设计测试用例的方法。
使用边界值分析法设计测试用例,确定边界情况应考虑选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,这样发现程序中错误的概率较大。
边界值分析法的使用要注意以下几点:
①如果输入条件规定了取值范围或数据个数,则可选择正好等于边界值、刚刚在边界范围内和刚刚超越边界外的值进行测试。
②针对规格说明的每个输入条件,使用上述原则。
③对于有序数列,选择第一个和最后一个作为测试数据。
[单项选择题]
11、以下关于软件构件及其接口的叙述,错误的是()
A.构件是软件系统中相对独立且具有一定意义的构成成分
B.构件在容器中进行管理并获取其属性或者服务
C.构件不允许外部对所支持的接口进行动态发现或调用
D.构件可以基于对象实现,也可以不基于对象实现
参考答案:
C
参考解析:
本题考查软件构件的基本概念。
软件构件是软件系统中具有一定意义的、相对独立的可重用单元。
与对象相比,构件可以基于对象实现,也可以不作为对象实现。
构件需要在容器中管理并获取容器提供的服务;客户程序可以在运行状态下利用接口动态确定构件所支持的功能并调用。
[单项选择题]
12、对OO系统的技术度量的识别特征,Berard定义了导致特殊度量的特征。
其中()抑制程序构件的操作细节,只有对访问构件必需的信息被提供给其他希望访问的构件。
A.局部化
B.封装
C.信息隐藏
D.继承
参考答案:
C
参考解析:
面向对象的软件和用传统方法开发的软件有本质性不同,为此,对OO系统的技术度量必须调整以适应那些区别OO和传统软件的特征。
Berard定义了5个导致特殊度量的特征,分别是局部化、封装、信息隐蔽、继承和对象抽象技术。
①局部化。
局部化是软件的一个特征,它指明信息在程序中被集中的方式,例如,针对功能分解的传统方法围绕功能局部化信息,它们典型地以过程模块来实现。
数据驱动方法围绕特定的数据结构局部化信息。
在OO语境中,信息是通过封装数据和处理在类或对象的边界内而集中的。
因为传统软件强调函数为局部化机制,软件度量着重于函数的内部结构或复杂性(如模块长度、内聚性或环路复杂性等)或函数间相互连接的方式(如模块耦合)。
因为类是OO系统的基本单位,所以,局部化是基于对象的,因此,度量应该应用于作为一个完全实体的类(对象)。
此外,在操作(函数、方法)和类间的关系没必要是一对一的。
因此,反应类协作方式的度量必须能够适应一对多和多对一的关系。
②封装。
Berard定义封装为"一组项的包装(或捆绑在一起),(对传统软件的)低层封装例子包括记录和数组,而子程序(例如,过程、函数、子例程和段落)是封装的中层机制。
"对OO系统,封装包含了类的责任,包括其属性(和针对聚合对象的其他类)和操作,以及由特定的属性值定义的类的状态。
封装通过将测度的焦点从单个模块改变到数据(属性)和处理模块(操作)包而影响度量。
此外,封装鼓励在高抽象层的测度。
将此层次的抽象同传统的度量相比较,传统的着重于布尔条件的计数或代码行数。
③信息隐蔽。
信息隐蔽隐瞒(或隐藏)程序构件的操作细节,只将对访问该构件必需的信息提供给那些希望访问它的其他构件。
良好设计的OO系统应该鼓励信息隐蔽,因此,指明隐蔽所达到程度的度量应该提供了对OO设计质量的一个指标。
④继承。
继承是使得某对象的责任能够传播到其他对象的机制,继承出现在类层次的所有层面上,通常,传统的软件不支持该特征。
因为继承是很多OO系统的关键特征,所以很多OO度量是关注于它的。
⑤抽象。
抽象是使得设计者能够关注程序构件(数据或过程)的本质性细节而不需考虑低层细节的机制。
如Berard所说,抽象是一个相对概念,当我们移向更高的抽象级别时,我们忽略了越来越多的细节,即我们提供了对概念或项的更一般化的视图;当我们移向抽象的低层时,我们引入了更多的细节,即我们提供了概念或项的更特定的视图。
因为类是一种抽象,它可以在很多不同的细节级别上并以一系列不同的方式(例如,作为一个操作列表、作为一个状态序列、作为一系列协作)来观察,所以OO度量用类的测度(例如,每个应用的每个类的实例数、每个应用的参数化类数,以及参数化类和非参数化类的比率)来表示抽象。
[单项选择题]
13、系统输入设计中应尽可能考虑人的因素,以下关于输入设计的一般原理中,错误的是()
A.只让用户输入变化的数据
B.使用创新的模式吸引用户的眼球
C.表格中各个数据项应有提示信息
D.尽可能使用选择而不是键盘输入的方式获取数据
参考答案:
B
参考解析:
本题考查软件界面设计中的系统输入设计。
人的因素在系统输入设计中扮演了很重要的角色。
输入应该尽可能地简单,以降低错误发生的可能性,如对于范围可控的数据,使用选择的方式替代用户输入;只输入变化的数据等。
输入应该尽可能使用已有含义明确的设计,需要采用模仿的方式而非创新。
为了避免用户理解的二义性,应该对表格中输入的数据给出提示信息。
[单项选择题]
14、软件需求分析产生软件操作特征的规格说明,指明软件和其他系统元素的接口,建立软件必须满足的约束。
下面对于软件需求分析的描述,不正确的是()
A.分析员研究系统规约和软件项目计划,并在系统语境内理解软件和复审,从而生成计划软件范围的估算
B.需求分析使得系统工程师能够刻画出软件的功能和性能、指明软件和其他系统元素的接口、并建立软件必须满足的约束
C.经过仔细的需求分析活动,分析员能够得到详细的系统规约
D.需求分析能够为软件设计者提供可被翻译成数据、体系结构、界面和过程设计的模型
参考答案:
C
参考解析:
需求分析使得系统工程师能够刻画出软件的功能和性能、指明软件和其他系统元素的接口、并建立软件必须满足的约束。
需求分析能够为软件设计者提供可被翻译成数据、体系结构、界面和过程设计的模型。
分析员研究系统规约和软件项目计划,并在系统语境内理解软件和复审,从而生成计划软件范围的估算。
[单项选择题]
15、博学网软件开发团队欲开发一套管理信息系统,在项目初期,用户提出了软件的一些基本功能,但是没有详细定义输入、处理和输出需求。
在这种情况下,该团队在开发过程应采用()
A.瀑布模型
B.增量模型
C.原型开发模型
D.快速应用程序开发(RAD)
参考答案:
C
参考解析:
瀑布模型也称为生命周期法,是生命周期法中最常用的开发模型,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。
瀑布模型主要用于需求明确或很少变更的项目。
原型法适合于用户没有肯定其需求的明确内容的时候。
它是先根据已给的和分析的需求,建立一个原始模型,这是一个可以修改的模型(在生命周期法中,需求分析成文档后一般不再进行修改)。
在软件开发的各个阶段都把有关信息相互反馈,直至模型的修改,使模型渐趋完善。
在这个过程中,用户的参与和决策加强了,最终的结果是更适合用户的要求。
这种原型法成败的关键及效率的高低,关键在于模型的建立及建模的速度。
增量模型融合了瀑布模型的基本成分(重复地应用)和原型的迭代特征。
采用随着日程时间的进展而交错的线性序列。
每一个线性序列产生软件的一个可发布的"增量"。
当使用增量模型时,第一个增量往往是核心的产品,即实现了基本的需求,但很多补充的特性还没有发布。
核心产品交用户使用,使用和/或评估的结果是下一个增量的开发计划。
该计划包括对核心产品的修改,使其能更好地满足用户的需要,并发布一些新增的特点和功能。
这个过程在每一个增量发布后不断重复,直到产生最终的完善产品。
RAD是一个线性顺序的软件开发模型,强调极短的开发周期和可复用程序构件的开发。
RAD模型是瀑布模型的一个高速变种,通过使用基于构件的建造方法获得了快速开发。
如果需求理解得很好,且约束了项目范围,RAD模型使得一个开发组能够在很短时间内创建出功能完善的系统。
RAD方法主要用于信息系统应用软件的开发,它包含业务建模、数据建模、处理建模、应用生成、测试及反复5个阶段。
[单项选择题]
16、敏捷软件过程强调:
让客户满意和软件尽早增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品,以及整体精简开发。
()不是采用这种软件开发过程的原因。
A.难以提前预测哪些需求是稳定的和哪些需求会变化
B.对于软件项目开发来说,设计和实现可以做到基本分离
C.从制订计划的角度来看,分析、设计、实现和测试并不容易预测
D.可执行原型和部分实现的可运行系统是了解用户需求和反馈的有效媒介
参考答案:
B
参考解析:
敏捷软件过程主要有四大价值观:
个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;客户合作胜过合同谈判;响应变化胜过遵循计划。
这种价值观的前提是软件需求是难以提前确定的,而是会不断地发生变化,可以采用可执行原型和部分实现的可运行系统来了解用户需求,通过用户的反馈来明确需求。
从制订计划的角度来看,分析、设计、实现和测试并不容易预测。
[单项选择题]
17、软件的逆向工程是一个恢复设计的过程,从现有的程序中抽取数据、体系结构和过程的设计信息。
逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述,在大多数情况下,抽象层次越高,完备性就越低。
下列可以通过逆向工程恢复的制品中,完备性最低的是()
A.过程的设计模型
B.程序和数据结构
C.对象模型、数据和控制流
D.UML状态图和部署图
参考答案:
D
参考解析:
逆向工程过程及用于实现该过程的工具的抽象层次是指可从源代码中抽取出来的设计信息的精密程度。
理想地,抽象层次应该尽可能高,即逆向工程过程应该能够导出过程的设计表示(一种低层的抽象);程序和数据结构信息(稍高一点层次的抽象);数据和控制流模型(一种相对高层的抽象);以及实体关系模型(一种高层抽象)。
随着抽象层次增高,软件工程师获得更有助于理解程序的信息。
在试题给出的4个选项中,UML状态图和部署图可以用来描述实体之间的关系,因此,其层次最高,完备性最低。
[单项选择题]
18、下列关于不同软件开发方法所使用的模型的描述中,正确的是()
A.在进行结构化分析时,必须使用数据流图和软件结构图这两种模型
B.采用面向对象开发方法时,可以使用状态图和活动图对系统的动态行为进行建模
C.实体联系图(E-R图)是在数据库逻辑结构设计时才开始创建的模型
D.UML的活动图与程序流程图的表达能力等价
参考答案:
B
参考解析:
结构化分析方法是一种面向数据流的需求分析方法,其基本思想是自顶向下逐层分解。
数据流图是进行结构化分析时所使用的模型,其基本成分包括数据流、加工、数据存储和外部实体。
在进行结构化设计时,通过对数据流图进行变换分析和事务分析可以导出程序结构图。
数据库设计可以分为4个主要阶段:
①用户需求分析。
数据库设计人员采用一定的辅助工具对应用对象的功能、性能、限制等要求所进行的科学分析。
②概念设计。
概念结构设计是对信息分析和定义,如视图模型化、视图分析和汇总。
对应用对象精确地抽象、概括而形成的独立于计算机系统的企业信息模型。
描述概念模型的较理想的工具是E-R图。
③逻辑设计。
将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模型,它是物理设计的基础。
包括模式初始设计、子模式设计、应用程序设计、模式评价及模式求精。
④物理设计。
逻辑模型在计算机中的具体实现方案。
UML是面向对象软件的标准化建模语言,其中状态图、活动图、顺序图和通信图可以用来对系统的动态行为进行建模。
活动图展现了在系统内从一个活动到另一个活动的流程。
活动图强调对象之间的控制流程。
在活动图上可以表示分支和汇合。
活动图与传统的程序流程图是不等价的。
[单项选择题]
19、()是一个独立可交付的功能单元,外界通过接口访问其提供的服务。
A.面向对象系统中的对象(Object)
B.模块化程序设计中的子程序(SubroutinE)
C.基于构件开发中的构件(Component)
D.系统模型中的包(PackagE)
参考答案:
C
参考解析:
在基于构件的开发中,构件包含并扩展了模块化程序设计中子程序、面向对象系统中对象或类和系统模型中包的思想,它是系统设计、实现和维护的基础。
构件定义为通过接口访问服务的一个独立可交付的功能单元。
平时我们所看到的DLL文件就是封装好的构件。
[单项选择题]
20、系统输入设计中,采用内部控制方式以确保输入系统数据的有效性,()用于验证数据是否位于合法的取值范围。
A.数据类型检查
B.自检位
C.域检查
D.格式检查
参考答案:
C
参考解析:
系统输入设计中,通常通过内部控制的方式验证输入数据的有效性。
数据类型检查确保输入了正确的数据类型;自检位用于对主关键字进行基于校验位的检查;域检查用于验证数据是否位于合法的取值范围:
格式检查按照已知的数据格式对照检查输入数据的格式。
[单项选择题]
21、博学公司欲开发一个在线交易系统。
为了能够精确表达用户与系统的复杂交互过程,应该采用UML的()进行交互过程建模。
A.类图
B.顺序图
C.部署图
D.对象图
参考答案:
B
参考解析:
显然,为了能够精确表达用户与系统的复杂交互过程,应该使用交互图。
在UML中,交互图包括顺序图、通信图、定时图和交互概览图。
顺序图强调消息的时间次序,通信图强调消息流经的数据结构,定时图强调