软件工程练习题.docx
《软件工程练习题.docx》由会员分享,可在线阅读,更多相关《软件工程练习题.docx(18页珍藏版)》请在冰豆网上搜索。
软件工程练习题
《软件工程》练习题
一、填空题
1.软件主要包括程序、数据和文档三部分内容。
2.目前使用最广泛的软件工程方法学是传统(结构化方法)方法和面向对象方法。
3.软件可行性研究的任务是从技术、经济和社会可行性三个方面分析软件项目的可行性。
4.软件测试的目的是找出软件潜在的错误和缺陷;通常把软件测试方法分为黑盒测试(功能测试)和白盒测试(结构测试)两大类。
5.软件测试中,测试用例由输入数据和预期的输出结果两部分组成。
6.典型的软件生命周期模型(软件过程模型)包括瀑布模型、快速原型模型和增量模型、螺旋模型、喷泉模型等。
7.模块A调用模块B以查询学生成绩,模块A通过参数向模块B传送所查询学生的学号,模块B
通过参数向模块A返回学生的考试成绩。
模块A和模块B之间的耦合类型属于数据耦合。
8.在类的继承结构中,不同层次的类共享同一个行为名称,但各个类可以按照自己的需要为同名行为设计不同的算法,此性质称为类的重写。
9.测试软件中的模块时,通常需要为被测模块设计辅助模块,辅助模块的名称分别是驱动模块
和桩模块。
10.软件生存期中时间最长的是_软件维护阶段。
11.结构化分析方法中,功能模型用DFD描述;数据模型用E-R描述。
12.过程设计(详细设计)中,常用的描述工具有图形、表格和语言三类。
13.在模块结构图中,直接调用某一模块的其他模块数称为该模块的扇入数。
14.面向对象分析(OOA)方法中,必须定义对象间的通信机制,对象间通信是通过消息传递机制来实现的。
15.面向对象方法用对象分解取代了结构化方法的功能分解。
16.写出下列各对事物之间的关系(继承、聚集、一般关联):
交通工具——汽车的关系是:
继承;书——读者的关系是:
一般关联;
班级——学生的关系是:
聚集;多边型——线段的关系是:
聚集。
17.面向对象设计(OOD)阶段,可以将面向对象的设计内容划分为四部分,分别是:
人机界面部
分、问题域部分、任务管理部分和数据管理部分。
18.UML的中文含义是统一建模语言;CASE的中文含义是用例。
二、选择题
1.需求分析阶段,开发人员需从用户那里获得的最重要信息是()。
A.用户能接受的开发费用B.用户能接受的开发周期
C.用户要让软件做什么D.软件应具有何种结构
2.数据流图中的每个处理至少有()。
A.一个输入流或一个输出流B.一个输入流和一个输出流
C.一个输入流D.一个输出流
3.软件测试中,白盒法是通过分析程序的()来设计测试用例的。
A、应用范围B、内部逻辑C、功能D、输入数据
4.有一个计算程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:
-1.001,-1.0,1.0,1.001。
设计这组测试用例的方法是()
A、条件覆盖法B、等价分类法C、边界值分析法D、错误推测法
5.关于单元测试,正确的是()。
A.单元测试的依据是概要设计说明书B.单元测试中不需要使用白盒测试法
C.单元测试包括模块接口测试D.单元测试时不需要辅助模块
6.银行计算机储蓄管理信息系统中,根据客户提出的要求(如存款、取款、查询、挂失、咨询等)进行相应的业务处理的该层数据流图是()
A.变换型B.事务型C.既不是A也不是BD.不一定
7.软件详细设计的主要任务是确定每个模块的()。
A.算法和使用的数据结构 B.外部接口 C.功能 D.编程语言
8.()表示了类之间的“一般__特殊”关系。
A.聚集 B.关联 C.消息传递 D.继承
9.面向对象开发方法定义了三种模型来描述系统,()可以用状态图来表示。
A.对象模型 B.功能模型 C.动态模型 D.类模型
10.对象的内部实现与外部可访问性的分离体现了对象的();
A.继承性B.共享性C.封装性D.抽象性
11.结构化分析方法用数据流图描述()。
A.系统的控制流程B.系统的数据结构C.系统的基本加工D.系统的功能
12.在面向数据流的设计方法中,一般把数据流图划分为()两种类型。
A.数据流和事务流 B.变换流和数据流 C.变换流和事务流 D.控制流和事务流
13.产生软件危机的主要原因有()。
软件本身的特点
用户使用不当
硬件可靠性差
程序员水平
缺乏好的开发方法和管理手段
A.
B.
C.
D.
14.软件测试中,黑盒法是根据程序的()来设计测试用例的。
A、应用范围B、内部逻辑C、功能D、输入数据
15.OOA模型规定了一组对象如何协同才能完成软件系统所指定的工作。
这种协同在模型中是以表明对象通信方式的一组()连接来实现的。
A.消息B.记录C.数据D.属性
16.用黑盒法设计测试用例时采用的方法包括()。
A.判定覆盖法B.条件覆盖法C.等价分类法D.路径分析法
17.有关集成测试的叙述中,()是正确的。
A.测试底层模块时不需要桩模块B.自底向上测试方法有利于提前预计测试结果
C.驱动模块的作用是模拟被调模块D.自顶向下测试方法易于设计测试用例
18.现有一个程序,它的输入只有一个整型数Y,其范围是-50≤Y≤50。
现从输入角度考
虑设计了一组测试用例:
-100,100,0。
设计这组测试用例的方法是()。
A.条件覆盖法B.等价分类法C.边界值分析法D.错误推测法
19.在面向对象软件方法中,“类”是()。
A.具有同类数据的对象的集合B.具有相同操作的对象的集合
C.具有同类数据的对象的定义D.具有同类数据和相同操作的对象的定义
20.面向对象开发方法定义了三种模型来描述系统,()可以用数据流图来表示
A.对象模型 B.功能模型 C.动态模型 D.数据模型
21.软件开发中,阶段评审是非常重要的环节,其主要目的和作用是()。
A.减少测试工作量B.避免后期付出高代价
C.保证软件质量D.缩短软件开发周期
22.在综合瀑布模型和快速原型模型优点的同时,螺旋模型还增加了新的阶段——()。
A.风险分析B.用户评价C.版本控制D.成本估算
23.数据流是数据流图的基本成分,下列关于数据流的叙述中,()是正确的。
A.某加工的输入是一个数据流,该加工的输出也必定是一个数据流
B.多个不同的数据流可以流向一个加工,也可从一个加工中流出。
C.数据流只能从加工流向数据存储,但不能从数据存储流向加工
D.一个数据流可以从一个数据存储流向另一个数据存储
24.在分层数据流图中,若某层的加工K分解成下层的数据流图L,则()。
A.K与L的输入、输出数据流不一定相同
B.K与L的输入数据流必须相同、输出数据流不一定相同
C.K与L的输入、输出数据流必须相同
D.K与L的输入数据流可以不同、输出数据流必须相同
25.数据流图所描述的是实际系统的()。
A.逻辑模型B.物理模型C.程序流程D.数据结构
26.为了提高模块的独立性,模块内部最好是()。
A.逻辑内聚 B.时间内聚 C.功能内聚 D.通信内聚
27.由变换型数据流图转换成模块结构图,其中包括变换模块,则()。
A.变换模块就是主模块B.变换模块的功能是将逻辑输入变换为逻辑输出
C.变换模块没有下层模块D.变换模块只能有一个输入量、一个输出量
28.为了提高软件测试的效率,应该()。
A、在完成编码以后制定软件的测试计划B、取一切可能的数据作为测试数据
C、选择发现错误可能性大的数据作为测试用例D、随机地选取测试数据
29.只有当(),才是结束测试的时候。
A.测试阶段结束后B.设计阶段完成后
C.集成测试阶段结束后D.软件产品停止使用后
30.从下列叙述中,选择能够与软件需求分析、设计、编码阶段相对应的软件测试:
()。
A.集成测试、确认测试、单元测试B.单元测试、集成测试、确认测试
C.单元测试、确认测试、集成测试D.确认测试、集成测试、单元测试
31.面向对象分析(OOA)的主要活动不包括()。
A.确定对象B.确定属性C.确定关联D.确定方式
32.面向对象分析(OOA)中,动态建模的内容不包括()。
A、设计脚本B、划分主题C、画事件追踪图D、画状态转换图
33.软件生存周期中时间最长的是()阶段。
A.需求分析B.概要设计C.测试D.维护
三、概念解释
1.软件:
程序、数据、和相关文档的集合;用于实现计算机系统所需要的逻辑方法、过程和控制。
2.软件危机:
计算机软件开发和维护过程中遇到的一系列严重问题
3.软件生命周期:
软件从定义、开发、运行维护,直到最终被废弃要经过一个漫长的时期
4.需求分析:
发现、求精、建模、规格说明和复审的过程。
5.概要设计:
通过仔细分析软件需求规格说明,确定组成系统的模块及各模块之间的关系,设计出完成预定功能的模块结构(软件结构),并建立接口。
详细设计:
详细的设计每个模块,即确定完成每个模块功能所需要的算法和数据结构
6.模块化:
将程序划分成独立命名且可独立访问的若干模块,每个模块完成一个子功能;将模块集成起来构成一个整体,完成指定的系统功能。
信息隐藏:
一个模块内柏寒的信息对于不需要这些信息的模块来说,是不能访问的。
7.耦合:
一个软件结构内不同模块家之间的互连程度。
内聚:
一个模块内各个元素彼此结合的紧密程度。
8.对象:
是客观世界中事物的抽象表示;是其属性(状态、数据)和相关操作(行为、方法或服务)的封装体
类:
是对具有相同属性和相同操作的一组相似对象的抽象描述。
9.消息:
是对象之间进行通信的机制;是要求某个对象执行其操作的规格说明
消息传递:
一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制称为消息传递。
10.继承:
子类(新类)自动的共享父类(已有类)中定义的数据和操作的机制。
多态性:
在一个类层次中,不同对象对相同消息做出的不同响应。
11.软件重用:
在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。
12.软件测试:
根据软件开发各阶段的规格说明和程序的内部结构而设计一批测试用例,并利用这些测试用例去运行程序,以法现设计和程序错误的过程。
13.黑盒测试:
在程序接口进行的测试,他它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,病保持外部信息(如数据库或文件)的完整性。
白盒测试:
按照程序内部的逻辑测试,检查程序中的每条通路是否能按照预定要求工作。
14.单元测试:
集中对源代码实现的每一个程序模块进行测试;
集成测试:
把模块装配(即集成)在一起形成完整的软件包,在装配的同时进行测试,同时解决程序验证和程序构造这两个问题;
确认测试:
在软件集成完成之后,必须测试在需求分析阶段确定下来的确认标准,确认测试是对软件满足所有功能的、行为的和性能的需求的最终保证。
15.驱动模块:
相当于被测试模块的上级调用模块;接收测试数据并传给被测模块;输出实测结果。
存根模块(桩模块):
代替被测试模块调用的子模块;桩模块使用被它代替的模块的接口,可能做最少量的数据操作。
四、简答题
1.什么是软件危机?
其产生的原因是什么?
如何消除软件危机?
答:
计算机软件开发和维护过程中遇到的一系列严重问题。
原因:
(1)客观原因:
①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难
②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护
③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)
(2)主观原因:
①开发无计划
②忽视软件需求分析的重要性
③轻视软件维护
④无过硬评测手段
⑤缺乏有力的开发方法和工具
⑥不重视开发文档
消除软件危机的途径:
1)使用先进的开发技术(方法和工具)
①推广使用成功的技术和方法,并且研究探索更好更有效的技术和方法。
②开发和使用更好的软件工具(软件工程支撑环境)
2)对软件开发过程和产品进行严格的管理
软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
2.什么是软件生命周期?
、简述软件生命周期的组成阶段及各阶段基本任务。
答:
一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。
(1)问题定义阶段:
通过调研,提出关于问题的性质、工程目标和工程规模的书面报告,并且需要得到客户的确认。
●回答“要解决的问题是什么?
”
●文档:
问题定义报告
(2)可行性研究阶段:
用最小的代价在尽可能短的时间内确定问题是否能够解决。
①进一步了解用户需求
②提出若干种可能的系统实现方案
③分析每种方案的技术、经济、社会可行性
④最终确定这项工程的可行性
●回答“是否有行得通的解决方法?
”
●文档:
可行性研究报告,项目开发计划
(3)需求分析阶段:
对目标系统提出完整、准确、清晰、具体的要求。
①得出经过用户确认的系统需求
②用正式文档(需求规格说明)准确表达系统需求
●回答“系统必须做什么?
”
●文档:
需求分析规格说明书
(4)概要设计阶段:
①设计系统实现方案
②设计程序的体系结构,即确定程序由哪些模块组成以及模块间的关系。
概括地回答“怎样实现目标系统?
”
文档:
概要设计说明书
(5)详细设计阶段:
设计实现每个模块功能所需要的算法和数据结构
回答“应该怎样具体地实现这个系统?
”
文档:
详细设计说明书
(6)编码和单元测试:
写出正确的、易理解、易维护的程序模块代码;测试编写出的每一个模块
文档:
经过测试的程序源代码、程序开发记录(模块开发卷宗)
(7)综合测试阶段:
通过各种类型的测试(及相应的调试)使软件达到预定的要求。
①集成测试(组装测试)。
②验收测试
测试文档:
测试计划、详细测试方案、实际测试结果
(8)软件维护阶段:
通过各种必要的维护活动使系统持久地满足用户的需要。
3.作为某软件公司的工程师,你将采用结构化方法开发一套适用于住宅小区的智能家庭保安系统。
简述开发步骤和每个步骤完成的主要任务。
答:
结构化方法的基本要点:
自顶向下、逐步求精、模块化设计、结构化编码。
结构化案发按软件生命周期划分:
结构化分析(SA)、结构化设计(SD)、结构化实现(SP)
(1)结构化分析:
①分析当前的情况,做出反映当前物理模型的DFD;②推导出等价的逻辑模型的DFD;③设计新的逻辑系统,生产数据字典和基元描述;④建立人机接口,提出可供选择的目标系统物理模型的DFD;⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;⑥选择一种方案;⑦建立完整的需求规约
(2)结构化设计:
①评审和细化数据流图;②确定数据流图的类型;③把数据流图映射的软件模块结构,设计出模块结构的上层;④基于数据流图逐步分解高层模块,设计中下层模块;⑤对模块结构进行优化,得到更为合理的软件结构;⑥描述模块接口
(3)结构化实现
4.什么是软件生命周期模型?
典型的软件生命周期模型有哪些?
答:
描述了把软件生命周期划分成哪些阶段及各个阶段的执行顺序。
瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型。
5.什么是需求分析?
简述需求分析的基本任务。
答:
需求分析是发现、求精、建模、规格说明、和复审的过程。
(1)准确了解用户情况和需要解决的问题
(2)对需求反复求精和细化
(3)需求建模
(4)编制需求规格说明书
(5)进行需求分析的评审
6.为什么说只有合理划分模块才能保证软件的开发成本达到最小?
答:
当模块数目增加时每个模块的规模将减小,开发单个模块需要的成本减少了,但随着模块数目增加,设计模块间接口所需的工作量也将增加,根据这两个因素知每个程序都相应的有一个适当多的模块是软件开发成本最低。
7.什么是模块独立性?
如何度量和设计模块独立性?
答:
模块独立性是指模块内部各部分及模块之间关系的一种度量标准。
其度量标准:
模块之间耦合尽可能弱,每个模块的内聚尽肯能强。
8.什么是耦合性?
软件设计中应该如何设计耦合性?
答:
(1)耦合表示一个软件结构内部不同模块之间的互连程度。
(2)耦合应该尽量采取如下准则:
尽量数据耦合,少用控制耦合和特征耦合, 限制使用公共环境耦合的范围,完全不用内容耦合。
9.什么是内聚性?
软件设计中应该如何设计内聚性?
答:
(1)内聚标志着一个软件模块内部各个元素之间的结合的紧密程度。
(2)设计时候应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和
高内聚相差不多。
10.面向数据流方法进行概要设计的步骤是什么?
答:
(1)根据数据流图决定问题类型
(2)根据问题类型,进行变换分析或事务分析,导出系统结构图
(3)改进系统结构图
11.简述变换分析设计方法的步骤。
答:
(1)分析具有变换特征的数据流图,确定输入流和输出流的边界,孤立出变换中心
(2)完成一级分解,设计软件结构的顶层和第二层
(3)完成二级分解,把数据流图中每个处理映射成软件结构中一个适当模块
(4)精化软件结构
(5)简要描述每个模块
12.结构化程序的基本特征是什么?
可以用什么工具描述?
答:
(1)一个程序的代码块仅仅通过顺序、选择和循环三种控制结构进行连接;并且每个代码块只有一个入口和一个出口
(2)图形:
程序流程图,N-S图,PAD图
表格:
判定树,判定表
语言:
PDL
13.简述对象和类的概念,二者关系如何?
答:
(1)对象是客观世界中事物的抽象表示;是其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。
类是具有相同属性和操作和一组相似对象的抽象描述。
(2)类是对象的模板,对象是类的实例。
14.三种面向对象模型及其主要功能是什么?
答:
三种面向模型分别是:
对象模型、动态模型、功能模型
对象模型:
是对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构。
动态模型:
它规定了对象模型中的对象的合法变化序列。
功能模型:
表示变化的系统的功能性质,它指明系统应该做什么,直接的反映了用户对目标系统的系统。
15.简述面向对象分析的基本步骤。
答:
(1),确定类和对象
(2)识别结构
(3)划分主题
(4)定义属性
(5)建立动态模型
(6)建立功能模型
(7)定义服务
16.从面向对象分析过程出发,讨论对象模型、动态模型和功能模型三者之间的关系。
答:
三种模型分别从三个不同的侧面描述了所要开发的系统,这三种模型相互补充,相互配合,使得我们队系统的认识更加全面,功能模型指明了对象做什么,动态模型规定了什么时候做,对象模型则定义了做事情的实体,对象模型是最基本的也是最重要的,为其它模型奠定了基础。
17.简述继承的含义,并通过一个具体例子加以说明。
答:
(1)继承是子类(新类)自动地共享父类(已有类)中定义的数据和操作的机制。
(2)子类可继承父类的属性和操作;同时子类可定义自己独有的属性和操作。
(3)子类复用父类的定义,而不修改父类。
(4)继承具有传递性
18.什么是白盒测试?
白盒测试中的逻辑覆盖法包括哪些覆盖类型?
答:
按照程序内部的逻辑测试程序,检查程序中的每条通路是否都能按预定要求正确工作。
包含
(1)语句覆盖
(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖
19.什么是黑盒测试?
属于黑盒测试的主要方法有哪些?
答:
对程序接口进行的测试,检查程序功能是否能按照规格说明书的规定正常使用。
包含
(1)等价类划分
(2)边界值分析(3)错误推测
20.什么是等价类划分法?
该方法设计测试用例的主要步骤是什么?
答:
定义:
把程序的可能的输入数据(或输出数据)划分成若干部分(等价类),然后从每一部分中选取少数有代表性的数据作为测试用例。
步骤:
(1)确定等价类(包括合理等价类和不合理等价类)并顺序编号;
(2)确定测试用例:
一个测试用例可以覆盖多个合理等价类;一个测试用例只能覆盖一个不合理等价类
21.软件测试要经过哪几个阶段?
各阶段与前期的哪些文档有关?
答:
阶段:
(1)单元测试(详细设计说明书)
(2)集成测试(概要设计说明书)(3)确认测试(需求规格说明书)(4)系统测试
22.软件测试过程如何体现“测试应该从小规模开始,并逐步进行大规模测试”的测试准则?
答:
通常,首先重点测试单个程序模块,然后把测试重点转移到在集成的模块簇中寻找错误,最后在整个系统中寻找错误。
23.从自己理解和认识角度出发,谈谈“软件工程”这门学科:
(1)包括哪些内容?
(2)解决什么问题?
答:
软件工程包含技术和管理两个方面的内容,是管理与技术的紧密结合。
管理:
所谓管理就是通过计划、组织和控制等一系列活动,合理的配置和使用各种资源以达到既定目标的过程。
技术:
通常把软件生命周期全过程中使用的一整套技术的集合成为方法学,也成为范型。
解决了什么问题:
五、应用题
1.某运动会管理系统的功能为:
接受来自运动员的报名单,并产生运动员号码单发送给运动员、产生参赛人员报表发送给裁判;接受来自裁判的比赛项目及成绩,产生比赛结果报表发送给发布台。
用分层数据流图表示上述系统的功能。
2.某商品进销存管理系统的部分功能如下:
(1)仓库管理员负责输入商品的入/出库清单、维护商品库存信息;定时统计、打印商品库存的月报表给商品销售经理。
(2)销售员负责输入商品销售、退换信息,并打印购货清单给客户; 商品销售的相关信息要存入相应文件。
请画出描述上述功能的分层数据流图。
(画出顶层、1层和2层数据流图)
◆画DFD的思路(注意图形符号使用规范):
(1)顶层:
确定系统与外界的信息流(即系统的输入流、输出流)
(2)一层:
将系统的几个主要功能分解成几个相应的处理
(3)二层:
继续细化系统功能(分解一层图中的处理)
……
3.设有下列语句序列:
read(x,y);
if(x>1)and(y<=5)
thenz=x*y
elsez=x+y;
ifz=12thenz=2*z;
write(z).
分别使用语句覆盖、判定覆盖、条件覆盖方法设计测试用例
◆逻辑覆盖法设计测试用例的思路:
(1)测试目的是什么?
(覆盖类型?
)
(2)为了达到相应测试目的,应该满足什么条件?
(分析、设计过程?
)
(3)给出一组测试用例:
满足
(2)中条件的输入数据、相应的预期输出结果
4、请结合等价类和边界值的方法,设计关于租船记