软件工程练习题答案.docx
《软件工程练习题答案.docx》由会员分享,可在线阅读,更多相关《软件工程练习题答案.docx(27页珍藏版)》请在冰豆网上搜索。
软件工程练习题答案
软件工程练习题&答案
软件工程练习题
一.选择题(单选或多选)
(1)需求分析阶段最重要的技术文档是(C)。
A)项目开发计划 B)设计说明书 C)需求规格说明书 D)可行性分析报告
(2)在软件工程中,白盒测试法可用于测试程序的内部结构。
此方法将程序看作是(A)
A)路径的集合B)循环的集合C)目标的集合D)地址的集合
(3)在以下模块耦合性类型中,模块之间独立性最差的类型是(D)
A)非直接耦合 B)标记耦合 C)控制耦合 D)内容耦合
(4)软件详细设计的主要任务是对( A )进行的详细设计。
A)算法和数据结构 B)外部接口 C)软件编码 D)功能
(5)Jackson方法是一种面向( C )的结构化方法。
A)数据流 B)对象 C)数据结构 D)控制流
(6)一个成功的测试可以(D)。
A)表明程序没有错误 B)发现所有错误 C)提高软件可靠性 D)发现尚未发现的错误
(7)下述陈述中,哪一个不是软件健壮性的度量指标?
(C)。
A)失败后重新启动所需的时间B)引起失败的时间所占的百分比
C)失败前的平均工作时间D)在一次失败中数据恶化的概率
(8)黑盒技术设计测试用例的方法之一为(A)。
A)因果图B)逻辑覆盖C)循环覆盖
辑C)活动的集合D)软件生存周期模型
(9)软件可用性意指(D)。
A)用户界面友好的程度B)符合用户使用习惯的程度
C)修改软件错误的难易程度D)软件结构、实现及文档为用户可用的程度
(10)软件文档既是软件的重要组成部分,也是软件开发阶段的基础,它还影响到软件的(B)。
A)可复用性B)可维护性C)可扩展性D)可移植性
(11)数据流图是用于软件需求分析的工具,下列元素哪些是其基本元素?
(ABCD)
A)数据流B)加工C)数据存储D)外部实体(源或潭)
(12)软件设计中,设计复审是和设计本身一样重要的环节,其主要目的和作用是(B)。
A)减少测试工作量B)避免后期付出高代价
C)保证软件质量D)缩短软件开发周期
(13)GanttChart和CPM体现对项目进度安排和跟踪的共性有(BDE)。
A)反映出项目的分解情况;B)反映子任务的完成时间;
C)体现人员的配置;D)反映各子任务的启动时间;E)反映子任务的工作量;
(14)下述哪个不是白盒测试法的概念?
(B)
A)应该执行边界条件下的所有循环B)应该执行边界条件下的所有接口
C)应该执行所有逻辑判断的真假情况D)应该至少执行一次模块中的所有独立路径
(15)数据流程图(DFD)是用于描述结构化方法中哪一个工作阶段的工具?
(B)
A)可行性分析B)需求分析C)详细设计D)程序编码
(16)判定树和判定表是用于描述结构化分析方法中哪一环节的工具?
(B)
A)功能说明B)加工逻辑C)流程描述D)结构说明
(17)在结构化方法中,软件功能分解应属于软件开发中的哪一阶段?
(C)
A)详细设计B)需求分析C)总体设计D)编程调试
(18)结构化程序流程图中一般包括三种基本结构,下述结构中哪一种不属于其基本结构?
(D)
A)顺序结构B)重复结构C)选择结构D)嵌套结构
(19)软件评审时其主要的评审对象是(A)。
A)软件结构B)软件文档C)程序编码D)文档标准
(20)软件需求规格说明书不应包含的内容是(BFGH)。
A)系统输入/输出的描述B)质量控制方案C)数据字典D)用户界面需求描述
E)系统可靠性需求描述F)测试方案G)需求分析阶段进度安排H)人员需求
(21)黑盒测试法和白盒测试法用于软件测试阶段,其中白盒测试法主要用于测试软件的(D)。
A)结构合理性B)程序正确性C)程序外部功能D)程序内部逻辑
(22)软件计划是软件开发的早期和重要阶段,此阶段要求交互和配合的是(B)。
A)设计人员和用户B)分析人员和用户C)分析人员和设计人员D)编码人员和用户
(23)结构化程序设计主要强调的是(D)。
A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性
(24)在详细设计阶段,经常采用的工具有(A)。
A)PADB)SAC)SCD)DFD
(25)以下测试方法是白盒测试方法的是(C)。
A)判定覆盖和边界值分析法B)等价划分和错误推测法
C)路径覆盖和判定/条件覆盖法D)条件覆盖和错误推测法
(26)评审是对软件进行静态测试的一种方法,下述结论中哪个是与软件评审无关的内容?
(D)
A)尽量发现错误B)检查软件文档C)根据评审标准D)依靠测试信息
(27)软件维护是软件得以正常运行的重要环节,按照软件工程方法的理解,一般软件维护应该开始于(C)
A)阅读设计文档B)理解程序代码C)分析软件结构D)查阅测试记录
(28)在McCall质量度量模型中,不属于面向软件产品修改的特性是(CD)。
A)可维护性B)可测试性C)可靠性D)适应性
(29)软件需求分析阶段建立原型的主要目地是(C)。
A)确定系统的性能要求B)确定系统的运行要求
C)确定系统是否满足用户需要D)确定系统是否满足开发人员需要
(30)软件过程是(C)。
A)特定的开发模型B)一种软件求解的计算逻辑C)活动的集合D)软件生存周期模型
(31)不能作为项目规模的估算单位的是(D)。
A)LOC(代码行)B)FP(功能点)C)人月D)元/人月
(32)McCall质量度量模型中,不属于面向软件产品运行的特性是( CD )。
A)正确性 B)完整性 C)可重用性 D)效率
二.基本概念与简答题
(1)软件。
软件工程。
软件测试。
1、软件:
在计算机系统中,与硬件相互依存的逻辑部件,它由程序、数据及相关文档组成。
2、软件工程:
是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
3、软件测试:
利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。
执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
(2)什么是软件过程?
ISO软件基本过程及其划分。
1、软件过程是软件生存期中的一系列相关软件工程活动的集合。
活动是任务的一个集合。
任务是
将输入变换为输出的操作,软件过程可分为三类,基本过程、支持过程、组织过程。
2、基本过程类是指那些与软件生产直接相关的过程。
包括:
获取过程、供应过程、开发过程、运行过程、维护过程。
(3)数据流图及其组成和作用。
1、数据流图(DFD)是一种描述数据变换的图形工具,是结构化分析方法最普遍采用的表示手段。
2、组成:
由加工(转换)、数据流、存储文件(数据源)及潭/源组成。
3、作用:
描述数据处理过程的工具,支持功能建模,刻画数据流从输入到输出的变换过程;
(4)软件测试和调试的异同点。
答:
软件测试与调试在目的、技术和方法等方面存在很大的区别,主要表现在如下方面:
1、测试是为了发现软件中存在的错误;调试是为了证明软件开发的正确性。
2、测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
3、测试是有计划的,需要进行测试设计;调试是不受时间约束的。
4、测试经历发现错误、改正错误、重新测试的过程;调试是一个推理的过程。
5、测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。
6、测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。
7、大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。
(5)什么是模块的作用域和模块的控制域?
答:
1、模块的作用域定义为受该模块内一个判定影响的所有模块的集合。
2、模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。
(6)软件详细设计的主要任务是什么?
答:
这一阶段的主要任务有:
1、为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的
详细过程性描述。
2、确定每一模块使用的数据结构,为以后的编写程序做好充分的准备。
3、确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块
的接口,以及模块输入数据、输出数据及局部数据的全部细节。
在详细设计结束时,应该
把上述结果写入详细设计说明书,并且通过复审形成正式文档,交付作为下一阶段(编码阶
段)的工作依据。
4、要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预
定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据、期望
输出等内容。
负责过程设计的软件人员对模块的情况了解得最清楚,由他们完成过程设计
后接着对各个模块进行测试最为合适。
(7)软件工程框架及其内容。
软件工程的框架可概括为:
目标、活动和原则,分别如下:
1、软件工程目标:
生产具有正确性、可用性以及开销合宜的产品。
2、软件工程活动:
生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及支持等活动。
3、软件工程的原则:
1)选取适宜开发范型。
2)采用合适的设计方法。
3)提供高质量的支持过程。
4)重视开发过程的管理过程。
(8)路径测试的基本策略。
路径测试技术的三种基本策略为:
1、路径测试(PX),执行所有可能的穿过程序的控制流程路径;
2、语句测试(P1),至少执行程序中所有语句一次,100%语句覆盖率(C1)的逻辑覆盖程序最弱;
3、分支测试(P2),至少执行程序中每一分支一次(至少每个判定都获得一次“真”和“假”),100%分支覆盖率(C2)比100%语句覆盖在逻辑上要强,条件组合测试,在逻辑上比C1,C2更强。
(9)解释软件过程能力。
软件过程性能。
软件过程成熟度。
软件过程成熟度等级。
1、软件过程能力:
描述(开发组织或项目组)通过遵循其软件过程能够实现预期结果的程度。
2、软件过程性能:
表示(开发组织或项目组)遵循其软件过程所得到的实际结果。
3、软件过程成熟度:
一个特定软件过程被明确和有效定义、管理、测量和控制的程度。
4、软件能力成熟度等级:
软件开发组织在走向成熟的过程中,几个具有明确定义的、可以表征
其软件过程能力成熟度的平台。
(10)CMM的组成结构。
CMM描述了五个级别的软件过程成熟度(初始级 可重复级 已定义级 已管理级 优化级,成熟度反映了软件过程能力(Software Process Capability)的大小,任何一个软件机构的软件过程必定属于其中某个级别。
除了第一级以外,每级成熟度又由若干关键过程域(Key Process Area)构成。
五个成熟度及其关键过程领域如图所示:
(11)解释关键过程域。
关键实践。
1、关键过程域KPA(KeyProcessArea)描述要达到CMM每一级别必须满足的软件工程功能。
互相关联的若干软件实践活动和有关基础设施的一个集合。
2、关键实践:
对关键过程区域的实施起关键作用的方针、规程、措施,活动以及相关基础设施的建立。
关键实践一般只描述“做什么”,而不强制规定“如何做”。
关键过程区域的目标是通过其包含的关键实践的实施来达到的。
(12)什么是基线?
基线的作用是什么?
1、基线:
任一SCI一旦形成文档并复审通过,就成为一个基线。
基线标志软件开发过程中的各个里程碑。
2、基线作用:
使各阶段工作划分明确,使连续的工作在这些点上断开,以便于检查和肯定阶段成果,辅助合理控制变化。
(13)什么是软件质量?
1、软件质量为“与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体”。
2、软件质量反映了以下三方面的问题:
软件需求是度量软件质量的基础,不满足需求的软件就不具备质量;
不遵循各种标准中定义的开发规则,软件质量就得不到保证;
只满足明确定义的需求,而没有满足应有的隐含需求,软件质量也得不到保证。
(14)为什么要进行软件评审?
软件设计质量评审与程序质量评审都有哪些内容?
答:
1、软件评审必要性:
因为软件生存期每个阶段的工作都有可能引入人为错误,如果某一阶段的错误不及时纠正,就会传播到开发的后结阶段,引出更多错误,因此,进行软件评审是必要的,评审可以揭露软件中的缺陷然后加以改正。
2、评审主要内容:
设计质量评审的对象是在需求分析阶段产生的软件需求规格说明、数据需求规格说明,在软件概要设计阶段产生的软件概要设计说明书等。
主要内容有:
(1)评价软件的规格说明是否合乎用户的要求。
(2)评审可靠性。
(3)评审保密措施实现情况。
(4)评审操作特性实施情况。
(5)评审性能实现情况。
(6)评审软件是否具有可修改性、或扩充性、可互换性和可移植性。
(7)评审软件是否具有可测试性。
(8)评审软件是否具有复用性。
程序质量评审的重点在于软件本身的结构、与运行环境的接口、变更带来的影响而进行的评审活动。
(15)简述软件成本估算的主要方法。
答:
包括代码行、功能点、对象点、自上而下(类比)估算法、自下而上估算法、参数法估算法
三.判断题。
试判断下列论述是正确的或错误的?
(1)软件系统中所有的信息流都可以认为是变换流。
√
(2)需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。
×
(3)以结构化分析方法建立的系统模型用数据流图表示。
√
(4)安排软件开发进度常采用关键路径法(CMP)。
若加速关键路径上任一关键任务的完成就能使整个软件开发进度提前。
×
(5)软件测试和程序调试都是发现错误的过程。
×
(6)等价类划分方法是将所有可能的输入数据划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。
√
(7)软件质量保证过程是软件开发过程的一部分。
×(需证实)
(8)α测试是在受控环境下进行的。
√
(9)测试用例应该包括输入值集和输出值集。
√
(10)演化模型支持的软件开发过程是一个迭代过程。
√
(11)测试在软件生命周期中是可选的。
×
(12)软件项目管理核心的三角形是范围、进度和风险。
×(需证实)
(13)螺旋模型、递增模型和喷泉模型具有原型化模型的特点。
√
(14)CMM是直接控制软件质量的一种支持模型。
√
(15)DFD是以图形方式刻划系统内数据流的变换和数据间的关系。
×
(16)修改程序是SCM(软件配置管理)的管理任务。
×
(17)数据流必须起于加工且止于加工。
×
(18)加工不能没有输入或输出。
√
(19)一个软件模块的控制范围应该在其作用范围之内。
√
(20)DFD中的源和(或)潭既可以有输入也可以有输出数据流。
×
四.解答(建模)题。
(1)有下列C程序片段,试画出该程序的流程图,并计算环路复杂度。
for(i=1;i<=n-1;i++)
{k=i;
for(j=i+1;j=n;j++)
ifR[k]>R[j]k=j;
if(i<>k)temp=R[j];
}
解:
流程图如下:
环路复杂度:
V(G)=m-n+2=16-13+2=5
(2)设Y语言的二进制短整型的位数<=4,试用黑盒测试的等价类法为Y语言的二进制短整
型数设计尽可能少的测试用例。
解:
已知短整型位数为<=4,因此可能的位数为1、2、3、4
1)在一位情况下,作为无符号数表示0、1
有效等价类一个:
0或1
无效等价类两个:
负数或大于1的数
2)在两位情况下,作为有符号数,表示范围为-2到1
有效等价类三个:
(-2~-1),0,1
无效等价类两个:
小于-2的负数、大于1的正整数
3)在三位情况下,作为有符号数表示-4~3
有效等价类三个:
(-4~-1),0,(1~3)
无效等价类两个:
小于-4的负数、大于3的正整数
4)在四位情况下,作为有符号数表示-8~7
有效等价类三个:
(-8~-1),0,(1~7)
无效等价类两个:
小于-8的负数、大于7的正整数
(3)将下面给出的伪码,转换为PAD图和程序流程图。
begin为变量X赋值
IFX>0thenS1
ElseS2;
为Y和Z赋值;
whileY>0do
beginIFX>0thenS3;
whileZ>0dobeginS4;S5end
end;
S6
IFZ=0thenS7;
end.
解:
PAD图
(4)给出下面图1和图2父、子图间平衡的条件。
2
14P1图1
3n2
n3
4.14.2
t24.5Q1图2
4.34.4
t3
解:
n1∪n2∪F1=t1∪t2∪t3
P1=Q1∪F2
(5)
将下面给出的变换型数据流图(DFD)转换为初始的结构图(SC图)。
其中虚线表示输入
部分、变换部分、输出部分之间的界面。
解:
主图和子图的SC图如下:
(6)设有一个加工逻辑描述为:
如果申请者的年龄在21岁以下,要额外收费;如果申请者是
21岁以上并是26岁以下的女性,适用于A类保险;如果申请者是26岁以下的已婚男性,
或者是26岁以上的男性,适用于B类保险;如果申请者是21岁以下的女性或是26岁以
下的单身C类保险。
附此之外的其他申请者都适用于A类保险。
请分别用判定表和判定
树表示该加工逻辑的描述。
解:
判定表:
判定树:
(7)将下面的伪码转换为PAD和N-S图。
begin
S1;
Ifx>5thenS2elseS3;
whiley<0dobegin
ifz>3thenS4elseS5;
whilew>0thenS6;
S7
end;
S8;
Ifu>0thenS9;
S10;
End.
解:
PAD图:
N-S图:
(8)
对于下面给出的程序控制图,请分别按下述要求设计最少的测试用例:
(1)实现语句和判定覆盖
(2)实现条件覆盖
解:
通过流程图,可知程序有三个判断,从上至下命名为P1、P2、P3,程序共有8条路径,分别是abdefh、abdefgh、abdfh、abdfgh、acdefh、acdfh、acdefgh、acdfgh
备注:
本题中假设X和x是不是同一变量,不知道老师是写错了还是咋地☹
(1)语句覆盖
基于语句覆盖目标设计的用例,要求通过用例运行程序时,每条可执行语句至少执行一次,通过流程图分析,所有的可执行语句都位于abdefg、acdefg两条路径上,所以选择这两条路径设计测试用例。
本题中测试用例设计格式为[输入(x,y,z,X)],由于数据处理不明确,因此不要涉及输出
具体用例为:
[(3,3,2,3)]覆盖abdefgh
[(0,1,0,3)]覆盖acdefgh
只设计两个用例,即可实现语句覆盖测试。
(2)判定覆盖
基于判定覆盖目标设计的用例,要求通过用例运行程序时,程序中每个判断的取真、取假分支至少经历一次。
用例格式为[输入(x,y,z,X)]
如果不考虑组合关系,每个判断取值各经历一次,通过两个用例,可以覆盖每个判定的真假情况。
即三个判断P1、P2、P3取(T,T,T)、(F、F、F)
具体用例为:
[(1,1,2,2)]abdfh三个判断均为真的情况
[(0,3,2,1)]acdefg三个判断均为假的情况
考虑组合关系,则需要八个用例,如下表:
P1
P2
P3
用例
覆盖路径
1
F
F
F
[(0,2,2,3)]
acdefgh
2
F
F
T
[(0,2,2,2)]
acdefh
3
F
T
F
[(0,1,2,3)]
acdfgh
4
F
T
T
[(0,1,2,1)]
acdfh
5
T
F
F
[(1,2,2,3)]
abdefgh
6
T
F
T
[(1,2,2,2)]
abdefh
7
T
T
F
[(1,1,2,3)]
abdfgh
8
T
T
T
[(1,1,2,2)]
abdfh
(3)条件覆盖
基于条件覆盖目标设计的用例,要求每个条件可能值至少执行一次。
第一个判断:
x>0取真值为T1,取假值为T1
第二个判断:
y<2取真值为T2,取假值为T2
z>1取真值为T3,取假值为T3
第三个判断:
X=2取真值为T4,取假值为T4
用例格式为[输入(x,y,z,X)]
考虑组合关系,最少需要16个用例,实现条件覆盖
x>0
y<2
z>1
X=2
用例
覆盖路径
1
T1
T2
T3
T4
[(0,2,1,3)]
acdefgh
2
T1
T2
T3
T4
[(0,2,1,2)]
acdefh
3
T1
T2
T3
T4
[(0,2,2,3)]
acdefgh
4
T1
T2
T3
T4
[(0,2,2,2)]
acdefh
5