符合判定覆盖的测试用例(不唯一):
a=5,b=-1,c=4;a=5,b=5,c=0;
8、请说明对象模型的作用是什么?
对象模型:
表示静态的、结构化的系统“数据”性质。
描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。
在面向对象方法中,类图是构建对象模型的核心工具。
9、请说明IPO图的作用,并给出一个IPO图的模板。
数据流程图中的处理本应该放在数据字典中进行定义,但是由于处理与数据是有一定区别的两类事物,它们各自有独立的描述格式,因此在实际项目中通常将处理说明用IPO图标描述。
下面是项目中常用的处理说明模板:
系统名称:
作者:
处理编号:
日期:
输入参数说明:
输出参数说明:
处理说明:
局部数据元素:
备注:
10、什么是耦合?
什么是内聚?
在软件设计中应该保持模块的独立性原则。
反映模块独立性的有两个标准:
内聚和耦合。
内聚衡量一个模块内部各个元素彼此结合的紧密程度;耦合衡量模块之间彼此依赖的程度。
软件设计时追求高内聚、低耦合。
11、请画图说明软件工程的层次化结构,并详细分析中间两层的内容。
软件工程的内容具有层次化结构,最底层是质量保证层,中间是过程层和方法层,最上层是工具层。
见图:
其中过程层定义了一组关键过程域,目的是保证软件开发过程的规范性和可控性。
方法层提供了软件开发的各种方法,包括如何进行软件需求分析和设计,如何实现设计,如何测试和维护等方法。
12、请为下面的程序设计符合判定覆盖的测试用例。
intmain()
{
inta,b,c,x,y,z;
scanf(“d%,d%,d%),&a,&b,&c);
ifa>5x=10elsex=1;
ifb>10y=20elsey=2;
ifc>15z=30elsez=3;
printf(“d%,d%,d%\n”,x,y,z)
}
参考答案:
条件:
a>5
a<=5
b>10
b<=10
c>15
c<=15
判定测试用例(不唯一):
a=6b=11c=16;a=5b=10c=15
13、请说明快速原型化模型的基本思想。
在需求分析的同时,以比较小的代价快速建立一个能够反映用户主要需求的原型系统。
用户在原型系统上可以进行基本操作,并且提出改进意见,分析人员根据用户的意见完善原型,然后再由用户评价,提出建议,如此往复,直到开发的原型系统满足了用户的需求为止。
基于快速原型化模型的开发过程基本上是线性的,从创建系统原型到系统运行,期间没有反馈环。
这是由于开发人员是在原型的基础上进行系统分析和设计,而原型已经通过了用户和开发组的审查,在设计阶段由于有原型作设计参考,所以设计的结果正确率比较高。
14、下面的程序段A被程序员误写成程序段B,请设计合适的测试用例发现其中的错误。
程序段A
程序段B
……
{
T=0;
if(A>=1)&&(B>=2)T=T+1;
elseT=T+2;
if(X>=90)&&(Y>=75)T=T+3;
elseT=T+4;
}
printf(“d%\n”,T);
……
……
{
T=0;
if(A>=1)&&(B>=2)T=T+1;
elseT=T+2;
if(X>=90)&&(Y<75)T=T+3;
elseT=T+4;
}
printf(“d%\n”,T);
……
条件组合:
A>=1B>=2;
A>=1B>2
A<1B>=2
A<1B<2
X>=90Y>=75
X>=90Y<75
X<90Y>=75
X<90Y<75
由此获得测试用例:
A=1B=2;A=1B=1;A=0B=2;A=0B=1;X=90Y=75;X=90Y=1;X=1Y=75;X=1Y=1;其中X=90Y=75能够发现错误。
15、请举例说明用例之间的包含关系和扩展关系的区别?
包含关系用于构造多个用例共同的活动。
例如,在ATM系统中,取钱、查询、更改密码等功能都需要验证用户密码。
这种情况下应该将密码验证功能独立出来,便于复用、减少冗余。
一个用例扩展另一个用例的功能,例如,在图书馆信息管理系统中,读者还书时,系统检查所还图书是否有预订记录,如果有则执行“通知”用例。
16、软件设计中的抽象是什么意思?
所谓抽象就是将事务的相似方面集中和概括起来,暂时忽略它们之间的差异。
或者说,抽象就是抽出事务的本质特性而暂时不考虑它们的细节
17、孩子阅读疲倦时,一定要休息。
如果不疲倦,但是对所阅读的内容不感兴趣,就跳到下一章;如果不疲倦,对内容有兴趣,理解无困难,则继续阅读;如果不疲倦,对内容有兴趣,但理解有困难,则应该重读。
请对上面的描述设计判定表。
参考答案:
疲倦
Y
Y
Y
Y
N
N
N
N
感兴趣
Y
Y
N
N
Y
Y
N
N
糊涂
Y
N
Y
N
Y
N
Y
N
重读
√
继续
√
跳到一下章
√
√
休息
√
√
√
√
化简为:
疲倦
Y
N
N
N
感兴趣
Y
Y
N
糊涂
Y
N
重读
√
继续
√
跳到一下章
√
休息
√
18、活动图与状态图的区别?
(1)描述的重点不同:
活动图描述的是从活动到活动的控制流;状态图描述的是对象的状态及状态之间的转移。
(2)使用的场合不同:
在分析用例、理解涉及多个用例的工作流、处理多线程应用等情况下,一般使用活动图;在显示一个对象在其生命周期内的行为时,一般使用状态图。
19、试分析结构化方法存在的主要问题是什么?
(1)结构化方法分析和设计阶段所应用的模型之间存在鸿沟。
分析阶段的主要模型是数据流程图,设计阶段的主要模型是软件模块结构图,数据流程图和软件模块结构图之间需要进行转换。
不同的人转换出的模块图可能不同,有很大的随意性。
(2)需求分析的细化程度没有标准,只能凭借分析人员的经验自己把握;需求分析的过程是在一种瀑布形式,当需求变更时,功能变化就会导致软件模块结构发生变化,造成了软件结构不稳定。
(3)结构化程序设计将数据定义与处理数据的过程相分离,不利于软件复用。
(4)结构化方法设计的软件结构不稳定,缺乏灵活性,可维护性差。
20、请说明判定表的作用及其结构。
判定表是结构花设计的工具,用于描述多重条件的处理。
分为4各部分:
条件列表、条件组合、操作列表、特定条件下的操作组合。
21、请给出软件工程七条基本原理中的任意三条基本原理。
原理1.用分阶段的生命周期计划严格管理
原理2.坚持进行阶段评审
原理3.实行严格的产品控制
原理4.采用现代程序设计技术
原理5.结果应能清楚地审查
原理6.开发小组的人员应该少而精
原理7.承认不断改进软件工程实践的必要性
22、结构化程序设计的特征是什么?
结构化程序设计的特征如下:
程序模块只有一个入口和一个出口、程序中只包含顺序、条件和循环三种控制结构。
23、软件需求可以分为业务需求、用户需求、功能需求和非功能需求,请分析业务需求与功能需求的区别?
业务需求是用户高层领导机构决定的,它确定软件的目标、规模和范围。
业务需