软件工程复习

发布 2022-01-11 22:37:28 阅读 5532

q2.4.6 + q1.3.5.7 选2)

q1 ==p141-4. p125-126

下图给出的程序流程图代表一个非结构化的程序,请问:

1)为什么说它是非结构化的?

2)设计一个等价的结构化程序。

3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。

a:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,以下给出了等价的结构化程序的盒图。

3)不使用flag的等价结构化程序盒图:

q2 ==p54-5 p48

北京某高校可用的**号码有以下几类:校内**号码由4位数字组成,第一位数字不是0.校外**又分为本市**和外地**两类。

拨校外**需要先拨0,若是本市**则接着拨8位数字(第一位不是0),若是外地**则拨3位区码后再拨8位**号码(第一位不是0)。

a:**号码= [校内**号码|校外**号码]

校内**号码= 非零数字+ 3位数字。

校外**号码= [本市号码|外地号码]

本市号码= 数字零+ 8位数字。

外地号码= 数字零+ 3位数字+ 8位数字。

非零数字。数字零= 0

位数字= 3数字}3

位数字= 非零数字+ 7位数字。

位数字= 7数字}7

数字。其中,[ 意思是或,从校内**号码或校外**号码中选择一个;表示重复,两边的数字表示重复次数的下限和上限;=意思是定义为;+意思是和,连接两个分量。

q3 ==p73-6 p65-66

q4 ==p187-9 p180-181

如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:

a)7月1日:集成测试开始,没有发现错误。

b)8月2日:总共改正100个错误,此时mttf=0.4h

c)9月1日:总共改正300个错误,此时mttf=2h

根据上列数据完成下列各题。

估计程序中的错误总数。

为使mttf达到10h,必须测试和调试这个程序多长时间?

画出mttf和测试时间τ之间的函数关系曲线。

a:(1)据估算平均无故障时间mttf的公式有:

1/k(et/100000-100/100000)=0.4

1/k (et/100000-300/100000)=2

得:k=1000,et=350 即程序中的错误总数达350。

2)当mttf=10h时,有。

1/k (350/100000- ec/100000)=10

得:ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。

3)mttf和测试时间τ之间的函数关系曲线如下:

q5 ==p142-8 p137

画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗?

c example

loop:do while x>0

a=b+1if a>10

then x=a

else y=z

end if

if y<5

then print x,y

else if y=2

then goto loop

else c=3

end if

end if

g=h+rend do

if f>0

then print g

else print k

end if

stopa:(1)该伪码程序的流程图及程序流图如下:

环形复杂度v(g)=流图中的边数-流图中的结点数+2=19-14+2=7

流图中的区域数。

流图中判定结点数目+1=6+1=7

2)有问题, 算法中控制最外层循环的变量z没有初始化,且在该循环内部未出现任何改变z取值的语句。将导致程序中的while循环部分要么不执行,要么死循环。

q6p162-164

分析下列程序, 请画出该伪**的程序流程图,并标注abc……等路径号,设计该程序的条件覆盖测试用例和组合覆盖的白盒测试用例。

void dowork (int x,int y,int z)

int k=0,j=0;

if ( x>3)&&z<10) )

{ k=x*y-1;

j=sqrt(k);

语句块1 if ( x==4)||y>5) )

{ j=x*y+10语句块2

j=j%3语句块3

1)对于第一个判定( (x>3)&&z<10) )

条件x>3 取真值记为t1,取假值记为-t1

条件z<10 取真值记为t2,取假值记为-t2

对于第二个判定( (x==4)||y>5) )

条件x==4 取真值记为t3,取假值记为-t3

条件y>5 取真值记为t4,取假值记为-t4

根据条件覆盖的基本思想,要使上述4个条件可能产生的8种情况至少满足一次,设计测试用例如下:

2)组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。

对dowork函数中的各个判定的条件取值组合加以标记:

1、x>3, z<10 记做t1 t2,第一个判定的取真分支。

2、x>3, z>=10 记做t1 -t2,第一个判定的取假分支。

3、x<=3, z<10 记做-t1 t2,第一个判定的取假分支。

4、x<=3, z>=10 记做-t1 -t2,第一个判定的取假分支。

5、x==4, y>5 记做t3 t4,第二个判定的取真分支。

6、x==4, y<=5 记做t3 -t4,第二个判定的取真分支。

7、x!=4, y>5 记做-t3 t4,第二个判定的取真分支。

8、x!=4, y<=5 记做-t3 -t4,第二个判定的取假分支。

根据组合覆盖的基本思想,设计测试用例如下:

q7 ==p141-5 p124

研究下面的伪**程序:

loop: set i to (start+finish)/2

if table(i)=item goto found

if table(i)if table(i)>item set finish to (i-1)

if (finish-start )>1 goto loop

if table(start)=item goto found

if table(finish)=item goto found

set flag to 0

goto done

found: set flag to 1

done:exit

画出程序流程图。

程序是结构化吗?说明理由。

若程序是非结构化的,设计一个等价的结构化程序并且画出流程图。

此程序的功能是什么?它完成预定功能有什么隐含的前提条件。

a:(1)该程序流程图:

2)结构化的程序是单入口单出口,而该程序的流程图有两个出口, 是非结构化程序。

3)其等价的结构化程序流程图:

4)该程序有二分查找的功能,它完成预定功能的隐含前提条件是:表数据是。

由小到大已作好排序的有序序列。

1.模块( )定义为受该模块内一个判断影响的所有模块集合。

a. 控制域 b、 作用域 c、 宽度 d、 接口。

2.大型系统的对象模型包含五个层次:

a.主题层类与对象层结构层**层服务层

b、主题层设计层结构层**层服务层

c、主题层设计层结构层属性层服务层

d、主题层类与对象层结构层属性层服务层

3.在进行软件测试时, 首先应当进行( )然后再进行组装测试,最后再进行有效性测试。

a. 单元测试 b、 集成测试 c、 确认测试 d、 组合测试。

4.产生软件危机的原因主要与两个方面的问题有关:

a. 软件在计算机中很难识别,存在磁盘中也看不到。

b. 软件设计对人的智商要求很高,也要求很高的资金投入。

c. 软件产品本身的特点与其它工业产品不一样,而且在软件的开发和维护过程中用的方法不正确。

d. 软件很难理解,硬件也很复杂。

5.为保持类的简单性,需注意:

a.尽可能简化对象间合作关系 b、有明确的定义

c、尽量提供更多的公共服务 d、避免包含过多属性。

6.软件测试的目的是。

a. 评价软件的质量b. 发现软件的错误。

c. 找出软件的所有错误d. 证明软件是正确的。

软件工程复习

单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...

软件工程复习

软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...

软件工程 复习

1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...