软件工程考试试题含答案文档格式.docx
《软件工程考试试题含答案文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程考试试题含答案文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
2.Jackson设计方法是由英国的M.Jackson提出的,它是一种面向()的软件设计方法。
A、对象
B、数据流
C、数据结构
D、控制结构
3.试判断下列叙述中,哪个(些)是正确的(
)。
a、软件系统中所有的信息流都可以认为是事务流
b、软件系统中所有的信息流都可以认为是变换流
c、事务分析和变换分析的设计步骤是基本相似的
A、a
B、b
C、cD、b和c
4.()是用户和设计交换最频繁的方法。
A、原型化方法B、瀑布模型方法
C、螺旋模型方法D、构件组装模型
5.软件工程方法学的目的是:
使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(
A、硬件环境
B、软件开发的环境
C、软件开发工具和软件开发的环境
D、开发人员的素质
6.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言(
A、PASCAL
B、VISUALBASIC
C、C++
D、汇编语言
7.软件测试的目的是?
(
)
A、证明软件的正确性
B、找出软件系统中存在的所有错误
C、证明软件系统中存在错误
D、尽可能多的发现软件系统中的错误
8.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。
A、程序的内部逻辑B、程序的复杂程度
C、该软件的编辑人员D、程序的功能
9.软件维护工作的最主要部分是(
A、校正性维护
B、适应性维护
C、完善性维护
D、预防性维护
10.PDL是()语言。
A、高级程序设计语言B、伪码式
C、中级程序设计语言D、低级程序设计语言
三、判断题(正确的在括号内打上“√”,错误的打上“×
”。
每题2分,共20分)
1.用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
()
2.发现错误多的程序模块,残留在模块中的错误也多。
3.为了加快软件维护作业的进度,应尽可能增加维护人员的数目。
4.软件维护就是改正软件中的错误。
5.质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动。
6.软件开发的主要任务是写程序。
()
7.测试只能证明程序有错误,不能证明程序没有错误。
8.模块化程序设计中,模块越小,模块化的优点越明显。
一般来说,模块的大小都在10行以下。
9.在编制程序时,首先应该对程序的结构充分考虑,不要急于开始编码,而要像写软件文档那样,很好地琢磨程序具有什么样的功能,这些功能如何安排,等等。
10.程序设计风格指导原则提出,尽量多使用临时变量。
四、简答题(每题5分,共20分)
1.什么是软件工程?
2.耦合性和内聚性有几种类型?
其耦合度、内聚强度的顺序如何?
3.简述需求分析工作可以分成哪四个方面?
软件需求分析的有哪三个基本原则?
4.什么是黑盒测试法?
五、程序设计与算法描述题(共15分)
1.根据下面的伪代码程序,完成相应要求。
(8分)
START
IFC1
THEN
WHILEC2DO
f
ENDDO
ELSE
BLOCK
g
p
ENDBLOCK
ENDIF
REPEATUNTILC3
q
r
ENDREP
STOP
1)画出程序流程图(4分)
2)用N—S图描述(4分)
2.有下列伪码程序:
START
INPUT(M,N)
IFM>
=10
THENX=10
ELSEX=l
ENDIF
IFN>
=20
THENY=20
ELSEY=2
PRINT(X,Y)
STOP
设计该程序的语句覆盖和路径覆盖测试用例。
(7分)
软件工程—A答案及评分标准(仅供参考)
二、填空题(每空1分,共25分)
三、单项选择题(每小题2分,共20分)
四、判断题(正确的在括号内打上“√”,错误的打上“×
1—5:
×
√×
√6—10:
×
五、简答题(每题5分,共20分)
1、答:
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
2、答:
低:
非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合:
高
强:
功能内聚信息内聚通信内聚过程内聚时间内聚逻辑内聚巧合内聚:
弱
3、答:
需求分析阶段分成四个方面:
对问题的识别、分析与综合、制定规格说明和评审。
三个基本原则:
必须能够表达和理解问题的数据域和功能域;
必须按自顶向下、逐步分解的方式对问题进行分解和不断细化;
要给出系统的逻辑视图和物理视图。
4、答:
黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据,产生正确地输出信息。
六、分析设计题(共15分)
1、
(1)程序流程图如下:
4分
(2)N-S图如下:
2、(7分)
1M=9(或<
l0),N=l9(或<
20);
2M=l0(或>
=10),N=20(或>
=20)
路径覆盖的测试用例为
1M=9,N=19;
2M=9、N=20;
3M=l0,N=l9;
4M=10,N=20
要目标是提高软件质量,减少软件维护代价。
一、
二、软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型)
三、可行性研究:
1、任务:
用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、四个方面:
技术、经济、操作可行性
3、数据流图四种成分:
1、源点/终点2、处理3、数据存储4、数据流
四、需求分析:
确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。
2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
3、实体联系图:
1、数据对象2、属性3、联系(1:
1、1:
N、M:
N)
五、总体设计:
1、任务:
回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。
2、系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构)
3、模块独立:
内聚和耦合
耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统
内聚(Cohesion):
一个模块内各元素结合的紧密程度
4、面向数据流的设计方法:
变换流和事务流
六、详细设计:
确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
2、过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树)
3、面向数据结构的设计方法(jackson方法):
4、程序复杂程度的定量(McCabe方法):
1、V(G)=E-N+2(E是流图中边的条数,N是结点数)2、V(G)=P+1(P是流图中判定结点的个数)3、流图中的区域数等于环形复杂度。
七、编码
八、单元测试:
又称模块测试。
每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。
由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。
九、集成测试:
在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。
这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。
一十、白盒测试技术(逻辑覆盖、基本路经测试)
白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部结构和处理过程。
所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。
白盒测试又称为结构测试。
1、语句覆盖就是设计足够的调试用例,使得程序中的每个语句至少执行一次。
2、判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖
3、条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。
4、判定/条件覆盖就是设计足够的测试用例,使得判定中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
5、条件组合覆盖就是设计足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次。
6、基本路经测试:
一十一、黑盒测试技术(等价划分)
黑盒测试时完全不考虑程序内部的结构和处理过程,只按照规格说明书的规定来检查程序是否符合它的功能要求。
黑盒测试是在程序接口进行的测试,又称为功能测试。
1、黑盒测试检查的主要方面有:
程序的功能是否正确或完善;
数据的输入能否正确接收,输出是否正确;
是否能保证外部信息(如数据文件)的完整性等。
用黑盒法设计测试用例时,必须用所有可能的输入数据来检查程序是否都能产生正确的输出
2、等价类划分
等价类的划分在很大程度上依靠的是测试人员的经验,下面给出几条基本原则:
(1)如果输入条件规定了取值范围,则可划分出一个有效的等价类(输入值在此范围内)和两个无效的等价类(输入值小于最小值、输入值大于最大值)。
(2)如果输入条件规定了输入数据的个数,则可相应地划分出一个有效的等价类(输入数据的个数等于给定的个数要求)和两个无效的等价类(输入数据的个数少于给定的个数要求、输入数据的个数多于给定的个数要求)。
(3)如果输入条件规定了输入数据的一组可能的值,而且程序对这组可能的值做相同的处理,则可将这组可能的值划分为一个有效的等价类,而这些值以外的值划分成无效的等价类。
(4)如果输入条件规定了输入数据的一组可能的值,但是程序对不同的输入值做不同的处理,则每个输入值是一个有效的等价类,此外还有一个无效的等价类(所有不允许值的集合)。
(5)如果输入条件规定了输入数据必须遵循的规则,则可以划分一个有效的等价类(符合规则)和若干个无效的等价类(从各种角度违反规则)。
一十二、维护(改正性维护、适应性维护、完善性维护、预防性维护)
一十三、决定软件可维护性因素(可理解性、可测试性、可修改性、可移植性、可重用性)
一十四、面向对象方法学优点:
1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好
一十五、对象模型1、关联2、聚集3、泛化4、依赖和细化
贰软件工程
1.1软件危机
1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
(熟记)
2、了解软件危机主要的一些典型表现。
(P2)
3、出现软件危机的原因:
4、消除软件危机的途径:
首先,我们要对计算机软件有一个正确的认识;
更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严格、各类人员协同配合、共同完成的工程项目;
最后,应该开发和使用更好的软件工具。
总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
1.2软件工程
1、软件工程:
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
2、了解软件工程的本质特征:
1)、软件工程关注于大型程序的构造
2)、软件工程的中心课题是控制复杂性
3)、软件经常变化
4)、开发软件的效率非常重要
5)、和谐的合作是开发软件的关键
6)、软件必须有效地支持它的用户
7)、在软件工程的领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
3、缺乏应用领域地相关知识,是软件开发项目出现问题的常见原因。
4、软件工程的基本原理:
1)、用分阶段的生命周期计划严格管理
2)、坚持进行阶段审评
3)、实行严格的产品控制
4)、采用现代程序设计技术
5)、结果应能清楚地审查
6)、开发小组的人员应该少而精
7)、承认不断改进软件工程实践的必要性
5、方法学(范型):
在软件生命周期全过程中使用的一整套技术方法的集合。
6、软件工程方法学3要素:
方法、工具和过程。
7、目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学
8、传统方法学也成为生命周期方法学或结构化范型。
9、面向对象方法学具有的4个要点。
(P10)
1.3软件生命周期
1、概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
2、软件定义时期的任务
3、软件定义时期通常进一步划分成3个阶段:
问题定义、可行性研究、需求分析
4、维护时期的主要任务是使软件持久地满足用户的需要。
5、软件开发时期通常分成4个阶段:
总体设计、详细设计、编码和单元测试、综合测试。
前两个阶段又称为系统设计,后两个阶段又称为系统实现。
6、软件生命周期每个阶段的基本任务:
问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试。
1.4软件工程
生命周期模型(过程模型):
瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
(对各种模型要了解)
1.5小结(熟读,对本章系统地了解)
第2章可行性分析
可行性分析的目的:
2.1可行性研究的任务
1、研究解法的可行性的三个方面:
技术可行性、经济可行性、操作可行性。
2、可行性研究最根本的任务:
对以后的行动方针提出建议。
3、可行性研究需要的时间长短取决于工程的规模。
2.2可行性研究过程
1、复查系统规模和目标
2、研究目前正在试用的系统
3、导出新系统的高层逻辑模型
4、进一步定义问题
5、导出和评价供选择的解法
6、推荐行动方针
7、草拟开发计划
8、书写文档提交审查
2.3系统流程图
1、系统流程图:
概括地描绘物理系统的工具。
2、系统流程图的基本思想:
用图形符号以黑盒子形式描绘组系统的每个部件(程序、文档、数据库、人工过程等)。
3、P39符号
4、系统流程图的习惯画法:
使信息在图中从顶向下或从左向右流动。
5、面对复杂的系统时,一个比较好的方法时分层次地描绘这个系统。
2.4数据流图
1、数据流图(DFD):
一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
2、数据流图的四种基本符号P41
3、数据存储(静止状态)和数据流(运动)都是数据。
4、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”。
5、星号(*)是数据流之间的“与”关系;
加号(+)表示“或”关系;
⊕号表示只能从中选一个(互斥关系)。
6、画数据流图的基本目的是利用它作为交流信息的工具。
2.5数据字典
1、数据字典应由对下列4类元素的定义组成:
数据流、数据流分量(即数据元素)、数据存储、处理。
2、由数据元素组成数据的方式的三种基本类型:
顺序、选择、重复。
+可选
3、用以下符号描述由数据元素组成数据的关系:
=意思是等价于(或定义为)、+意思是和(即连接两个分量)、[}意思是或(通常用“|”号隔开供选择的分量)、{}意思是重复、()意思是可选。
4、数据字典最重要的用途是作为分析阶段的工具。
2.6成本/效益分析
1、成本/效益分析的目的:
从经济角度分析开发一个特定的新系统是否划算,从而帮助客户组织的负责人正确地作出是否投资于这项开发工程的决定。
2、软件开发成本:
主要表现为人力消耗。
3、成本估算技术:
代码行技术、任务分解技术、自动估计成本技术。
4、货币的时间价值:
用利率的形式。
假设年利率为i,如果现在存入P元,则n年后的价值:
F=P(1+i)^n
5、衡量一项开发工程的价值:
投资回收期。
6、纯收入
7、投资回收率
2.7小结
三需求分析
4、需求分析是软件定义时期的最后一个阶段。
5、基本任务:
准确地回答“系统必须做什么?
”这个问题。
6、用于需求分析的结构化分析方法必须遵守下述准则:
(1)、必须理解并描述问题的信息域,根据这条准则应该应该建立数据模型。
E-R图
(2)、必须定义软件应完成的功能,这条准则要求建立功能模型。
数据流图
(3)、必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。
状态图
(4)、必须对描述信息、功能和行为的模型进行分解,用层次的方式展开细节。
3.1需求分析的任务
5、对软件系统的综合要求:
功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。
6、需求分析的任务:
确定对系统的综合要求
分析系统的数据要求
导出系统的逻辑模型
修正系统开发计划
3.2与用户沟通获取需求的方法
8、访谈、面向数据流自顶向下求精、简易地应用规格说明技术,快速建立软件原型。
9、结构化分析方法就是面向数据流自顶向下求精进行需求分析的方法。
10、快速建立软件原型是最准确、最有效、最强大的需求分析技术。
3.3分析建模与规格说明
9、需求分析过程应建立3种模型:
数据模型、功能模型、行为模型。
10、数据流图是建立功能模型的基础。
11、状态转换图是行为建模的基础。
3.4实体-联系图(E-R)
E-R图中包含着实体(即数据对象)、关系和属性3种基本成分。
3.5数据规范化
第一范式:
每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。
第二范式:
满足第一范式的条件,而且每个非关键字都由整个关键字决定(而不是由关键字的一部分来决定)。
第三范式:
符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)。
3.6状态转换图
E、状态转换图(简称状态图):
通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
F、在状态图中定义的状态主要有:
初态(即初始状态)、终态(即最终状态)和中间状态。
在状态图中只能有一个初态,而终态则可以有0至多个。
G、事件就是引起系统做动作或(和)转换状态的控制信息。
H、
在状态图中,初态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示。
如图:
I、活动表的语法格式:
事件名(参数表)/动作表达式
J、在活动表中通常使用的3种标准事件:
Entry事件指定进入该状态的动作
Exit事件指定退出该状态的动作
Do事件制定在该状态下的动作
K、状态转换:
箭头指明的转换方向。
L、事件表达式的语法:
事件说明【守卫条件】/动作表达式
事件说明与守卫条件同时使用时,则当且仅当事件发生且布尔表达式为真时,状态转换才发生;
如果只有守卫条件没有事件说明则只要守卫条件为真,状态转换就发生。
M、守卫条件是一个布尔表达式。
N、动作表达式是一个过程表达式,当状态表达式开始时执行该表达式。
3.7其他图形
层次方框图、warnier图、IPO图(输入、处理、输出图的简称)
3.8验证软件需求
从四个方面进行验证:
一致性、完整新、现实性、有效性
3.9小结
五总体设计
5.1设计过程
第3章总体设计过程通常有两个主要阶段组成:
系统设计阶段,确定系统的具体实现方案;
结构设计阶段,确定软件的结构。
第4章典型的总体设计过程包括下述9个步骤:
1)、设想宫选择的方案
需求分析阶段得出的数据流程图是总体设计的极好的出发点。
2)、选择合理的方案
对每个合理的方案,分析员都应准备下列四份材料:
A.系统流程图
B.组成系统的物理元素清单
C.成本/效益分析
D.实现各个系统的进度计划
3)、推荐最佳方案
4)、功能分解
5)、设计软件结构
软件结构可以用层次图或结构图来描绘。
6)、设计数据库
7)、制定测试计划
8)、书写文档
这个阶段完成的文档有:
系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。
9)、审查和复查
5.2设计原理
1、模块化、抽象、逐步求精、信息隐藏和局部化、模块独立
2、模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。
3、模块是构成程序的基本构件。
4、模块化就是把程序分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。