华东交通大学软件工程实验报告.docx

上传人:b****2 文档编号:23496960 上传时间:2023-05-17 格式:DOCX 页数:32 大小:900.57KB
下载 相关 举报
华东交通大学软件工程实验报告.docx_第1页
第1页 / 共32页
华东交通大学软件工程实验报告.docx_第2页
第2页 / 共32页
华东交通大学软件工程实验报告.docx_第3页
第3页 / 共32页
华东交通大学软件工程实验报告.docx_第4页
第4页 / 共32页
华东交通大学软件工程实验报告.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

华东交通大学软件工程实验报告.docx

《华东交通大学软件工程实验报告.docx》由会员分享,可在线阅读,更多相关《华东交通大学软件工程实验报告.docx(32页珍藏版)》请在冰豆网上搜索。

华东交通大学软件工程实验报告.docx

华东交通大学软件工程实验报告

华东交通大学软件学院

上机实验报告

课程名称:

软件工程

指导老师:

唐怀琴

专业班级:

12软件+交通设备信息工程2班

姓名:

徐锦陶学号:

20122110120214

学期:

大二下学期

实验一:

数据流图实验

一、实验目的

通过绘制数据流图掌握数据流图的基本原理,并能对简单问题进行数据流图的分析,独立地完成数据流图的分析与设计。

此外,学会使用Case工具完成数据流图和系统流程图的分析与实现。

、实验内容

实验内容如下:

a)用visio绘制出如下定货系统的SFD(系统流程图)的模型

图1某定货系统SFD

b)用visio绘制教材中分别绘制出定货系统的DFD的顶层模型、

第一层模型和第二层模型。

(具体参考课本上P69~P70的图

3.4,图3.5和图3.6)

c)用visio绘制如下图所示的取款手续的数据流图。

帐卡

图2取款手续

d)请结合目前的银行柜台取款手续,对图2的取款数据流图进行改进,绘制当前银行柜台取款过程的顶层和第一层数据流图。

三、实验结果

(a)、定货系统的SFD(系统流程图)的模型

(b)、图3.4DFD的顶层模型

管理员

事务

to-

订货

系统

订货报表

(b)、图3.5DFD的第一层模型

采购员

 

库存信息

库存清单

管理员

事务

处理

事务

订货

信息

(b)、DFD的第二层模型

产生订货报表

报表

订货

信息

采购员

 

 

 

(C)、取款手续的数据流图

 

帐卡

检验岀的问题

取款单

取款

存折

信息

储户

现款

检验

存折

付款信息

登录

付款

年月日

日历

 

/■、

客户

账户信息

1

信息

处理结果

处理

(d)、当前银行柜台取款过程的顶层数据流图

客户

当前银行柜台取款过程的第一层数据流图

现款

客户

 

实验二、软件设计实验

一、实验目的

学会使用Case工具完成描述软件结构的软件结构图和软件层次图的设计,并熟练地掌握几种常用的软件详细设计的工具,如程序流

程图、盒图、PAD图和判定表,并能把给定的软件问题描述转化为过程设计结果。

二、实验内容

1、软件结构设计:

(1)采用visio绘制教材的图4.26中的软件结构图;

(2)采用visio绘制教材的图4.41的软件层次图。

(3)分析如下所示的数据流图,并把它转换成软件结构图,然后用visio把结果画出来。

(注意,请用结构图)

f9

图1某系统的数据流图

2、软件的详细设计:

某航空公司规定,乘客可以免费托运重量不超过20公斤的行李,当行李重量超过20公斤,对头等舱的

国内乘客超重部分每公斤收费6元,对其他舱的国内乘客超重部

分每公斤收费8元,对外国顾客超重部分每公斤收费比国内乘客多1.5倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。

实验包含三部分的内容:

e)用word设计描述其详细设计结果的PAD图、判定表。

f)用viso画出它的程序流程图,并计算它的Mccabe程序复杂

度。

(要求把计算过程写到实验报告中)

三、实验结果

1、

(1).采用visio绘制教材的图4.26中的软件结构图;

(2).采用visio绘制教材的图4.41的软件层次图

(3).分析如下所示的数据流图,并把它转换成软件结构图,然后用visio把结果画出来。

2、PAD图

 

输入行李重量X

Y=0

X>20

T

/

Y=9*(X-20)

头T

国外乘客等

Y=12*(X-20)

 

 

Y=6*(X-20)

头/等\

Y=8*(X-20)

普通乘客

舱—F

 

输出托运费Y

 

判定表

行李重量X

X<20

Y

Y

Y

Y

--

--

--

--

X>20

--

--

--

--

Y

Y

Y

Y

外国人

Y

N

N

Y

Y

N

Y

N

乘客类别

普通人

N

Y

Y

N

N

N

N

Y

残疾人

N

N

N

N

N

Y

N

N

乘坐规格

头等舱

Y

N

Y

Y

N

Y

N

N

普通舱

N

Y

N

N

Y

N

Y

Y

Y=0

Y=12*(X-20)

Y=9*(X-20)

Y=8*(X-20)

Y=6*(X-20)

Y=4*(X-20)

Y=3*(X-20)

程序流程图

求McCabe程序复杂度步骤:

步骤1:

将程序流程图退化成有向图,将程序流程图的每个处理框退化成一个节点,将控制流箭头退化成连接各节点的有向弧。

步骤2:

在有向图中,由程序出口到入口连接一条虚有向弧,使有向图达到强连通。

步骤3:

计算V(G)二m-n+1

V(G)是有向图的G中的环数,m是有向图G中的弧数,n是有向图

G中的节点数因此环形复杂度为:

V(G)=17-13+5=9,所以McCabe

程序复杂度为9。

实验三、软件测试实验

一、实验目的

学会使用CASE工具完成软件测试用例的设计以及初步完成对单元测试,深刻理解单元测试的基本原理及CASE工具的基本使用。

二、实验内容

1、单元测试的逻辑覆盖测试验证实验:

运用工具完成对如下例

子的单元测试,要求分别完成语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖测试的测试用例编写以及测试。

要求首先按格式编写出该测试所需要的测试用例,然后

编写测试程序,对其进行测试,最后把你写的测试用例按格式记录到实验报告中。

测试用例的格式如下:

{[输入],[期望结果]},对于本例请遵循如下格式:

{[A,B,X],[X]}

a

图1单元测试逻辑覆盖的验证实验

此外,请测试如下情况:

(1).如果将第1个判定中的“AND”错写成了“OR”,用数据{[2,0,3],[2.5]}(首先,该组数据满足何种逻辑覆盖)对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中。

⑵.如果将第2个判定中的“x>1”错写成了“x<=1”,贝V用数据{[2,0,3],[2.5]}对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中

⑶.如果将第1个判定中的“AND”错写成了“OR”,贝V用数

据{[3,0,1],[1/3]}和{[2,1,2],[3]}(首先,该组数据满足何种逻辑覆盖)对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中。

⑷.如果将第2个判定中的“x>1”错写成了“x<=1”,贝V用数据{[3,0,1],[1/3]}和{[2,1,2],[3]})对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中。

⑸.如果将第2个判定中的“x>1”错写成了“x<=1”,贝V用数据{[2,0,3],[2.5]}和{[1,1,1],[1]}(首先,该组数据满足何种逻辑覆盖)对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中。

⑹.如果将第1个判定中的“a>1”错写成了“a<=1”,且把

“b=0”错写成了“b<>0”,则用数据{[2,1,1],[2]}和

{[1,0,2],[3]}对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中。

⑺.如果将第1个判定中的“a>1”错写成了“a<=1”,且把

“b=0”错写成了“b<>0”,则用数据{[2,1,1],[2]}、{[2,0,2],[2]}、{[1,1,1],[1]}和{[1,0,2],[3]}对程序进行测试,可否发现错误?

为什么?

请先测试,然后把结论记录到实验报告中。

2、循环结构测试

现有一个简单循环,需要对其进行测试,其程序伪代码如下:

Inti,a;

Input(i,a);

While(i<=10)

{

a+=2;

if(a>4)

{

a*=2;

a+=3;

}

Else

{

If(a>1)

a-=4;

else

a+=5;

}

}

a*=4;

Output(a);

要求为该程序设计满足简单循环的所有测试用例,记录到实

验报告中。

3、等价类划分及边界值测试的验证实验:

有如下算法A和B均是非负整型变量(注:

int型),如果10vAv100,则B=A*20-5,如果0=100,则B=A*100-200,请分别用等价类划分方法和边界值分析方法设

计测试用例,然后编写测试程序完成测试。

并把测试结论写入到

实验报告中。

三、实验结果

1、

(1)语句覆盖

不能发现错误,因为and比or要求的要严格一些,故and可以满足的数据or也一定可以满足

(2)

i青输入规里值趴2.5输岀X的值’2.500000

Pressan9keyptocontinue

不能发现错误,第二个判定or只要满足一个条件即可,因为A=2必然成立,故第二个条件

定为真,所以不能发现错误。

(3)语句覆盖和判定覆盖

k,:

\users\xujsktop\u&Dug\^.exe

请输人氛町朕

212

请输入醴值氏3

输出5{的值72-000000

PressQnykeytocontinue

第一组测试数据不能发现错误,因为第一组数据可以满足第一个判定的and判定,肯

定可以通过or判定条件。

而第二组测试数据可以发现错误,因为A=2,B=1,只有A满足条件而B不能满足条件,痛多AND返回0。

又由于把and错写成了or,返回值为1,影响了X的值,所以能发现错误。

第一组测试数据能发现错误。

经过第一个阿婆那段,执行c操作结果得到X=1/3,第二个

判定条件是X<=1,判定成功返回值为1,进行e操作,最后得到结果X=4/3。

与期望结果不同,系统想、提示错误,故能发现错误。

请输入H,B界:

輪治痒值V

输岀X的值;3.000000

Pi*essanvkeytocontinue

第二组测试数据不能发现错误。

他、因为第一个判定条件是B=0,而B实际值为1判

定不成功,将进行操作b,进行第二个判定时,因为判定条件为A=2,此时X=2,故

判定成功返回1,进行e操作,最后得结果X=3与期望结果相同,不能发现“x>1”错写成了“x<=1”。

故不能发现错误。

(5)判定覆盖条件、语句覆盖、判定覆盖和条件覆盖

■■jJ.PJIIIIWMV電

请输A.航叫x:

293

请够入題星值Y;2.5

输出X的值:

2.500000

Pressanvkei/tocontinue

第一组测试数据不能发现错误,在第2个判定时,因为A==2正确,满足条件,进行

e操作。

最后x=2.5,与期望结果相同。

所以不能发现“x>1”错写成了“x<=1

对于第二组测试数据,因为对于第二个判定A=2,而A的实际值为1,此时后面的判定X>1或者X<=1对结果就有影响了,错写之后由于X=1,对于X<=1判定成立,返回1,影响

X的值,故能发现错误。

(6)

由青输入A,町裁

f青输入囉值丫:

2師出*的值:

2.000000

Pi'essani/keytocontinue

第一组测试数据不能发现错误,因为原本执行路径是abe。

出错后执行路径仍为abe,

所以不能发现错误。

 

第二组测试数据也不能发现错误,因为原本执行路径是abe。

出错后执行路径仍为abe,

所以也不能发现错误。

(7)

4C:

\Users\xujintao\Desktop\Debug\89.e

 

:

2

000000

tocontinue

第一组测试数据不能发现错误,因为原本执行路径是

abe。

出错后执行路径仍为

 

abe,所以不能发现错误

"C:

\LIsersVcujintao\Desktcp\Debug\89

请输入仏B,X:

值门2

输岀*的值;3-000000

Pi'essanykevtocontinue

出错后执行路径仍为

第二组测试数据可以发现错误,因为原本执行路径是ace

abe,所以能发现错误。

请输入餌

111

请詢入関星值典1

输岀X的值’1-0W0000

Pressanykeytocontinue

出错后执行路径仍为

第三组测试数据不能发现错误,因为原本执行路径是abdacd,所以不能发现错误

C:

\User5\xujint^o\Desktop\Debug\S9.?

xe,'

请输入他

102

请鐵入整值人3

输岀X的值:

3.000000

Ppessanvtocontinue

出错后执行路径仍为

第四组测试数据不能发现错误,因为原本执行路径是abe

abe,所以也不能发现错误

程序代码:

#include

voidmain()

{

intA,B;

floatX,Y;

printf(”请输入A,B,X:

\n");scanf("%d%d%f",&A,&B,&X);printf("请输入期望值Y:

");

scanf("%f",&Y);

if(A>1&&B==0)

{

X=X/A;if(A==2||X>1)X=X+1;

}

else

{

if(A=2||X>1)X=X+1;

else

{printf("输出X的值:

");

}

}

printf("输出X的值:

");

printf("%f\n",X);

}

2、循环结构

程序:

#include

voidmain()

{

inti,a;

cout<<"请输入i和a:

"<

cin»i>>a;

while(i<=10)

{

a=a+2;

if(a>4)

{

a=a*2;

a=a+3;

}

else

{

if(a>1)a=a_4;

elsea=a+5;

}

i++;

}

a=a*4;

cout<

测试用例:

(i,a)%(11,2)(1,5)(1,1)(1,-3)

3、验证实验

实验程序:

#include

voidmain()

{

intA,B;

printf(”请输入A的值:

”);

scanf("%d",&A);

if(A>10&&A<100)B=20*A-5;

if(A>0&&A<=10)B=15*A+20;

if(A>=100)B=100*A-200;

printf("请输出B的值:

");

printf("%d\n",B);

输入条件的等价类划分

ID

输入

期望结果

备注

1

50

输入有效

覆盖有等价类1

2

5

输入有效

覆盖有等价类2

3

150

输入有效

覆盖有等价类3

有效等价类测试用例

ID

输入

期望结果

备注

1

50

输入有效

覆盖有效等价类1

2

5

输入有效

覆盖有效等价类2

3

150

输入有效

覆盖有效等价类3

无效等价类测试用例

ID

输入

期望结果

备注

1

-1

输入无效

覆盖无效等价类4

2

Abe

输入无效

覆盖无效等价类5

边界值分析:

根据题意可以取:

-1,0,1,9,10,11,99,100,101,

102

实验四:

软件动态模型建模实验

一、实验目的

运用Visio和Powerdesigner等Case工具完成软件问题的时序图、状态图以及活动图的绘制,真正理解这些动态模型的含义,并能熟练的使用Case工具。

二、实验内容

1、Powerdesigner完成教材图3.15的状态图设计

2、Powerdesigner完成如下软件问题的状态图设计。

复印机的工作流程大致如下:

未接到复印命令时处于闲置状态,一旦接到复印命令后则进入复印状态,完成一个复印命令规定的工作后

又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没有纸张,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接受复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告,等待维修人员来排除故障,故障排除后回到闲置状态。

3、Powerdesigner完成如下所示的时序图设计

图1某系统时序图

4、完成如下用户身份验证功能的活动图设计:

用户首先输入其个人信息,如果确认其输入则向系统提交用户信息,并在数据库中查询用户信息,比较用户信息,同时进行验证,验证通过,该用户获得授权可以进入系统的主界面,否则,验证失败重新回到输入用户信息界面。

如果用户放弃输入,则结束程序。

5、综合题。

综合运用所学00A和00D方法和技术完成教材

P263习题8的第10题。

三、实验结果

1、图3.15

2、打印机

 

3、时序图

储户

总行

分行

播卡

要求霜码

输入密码

滴求验证账户

账户有敷

 

P要求事势类型

输入类型

»

沽求处理事势

十要求输人取款额输入取藏额.

事势咸功

请求处理分行事务卜

I分行事奔威功

 

T吐出现全

.清求拿走现金

拿走现金

-i青求继续此事努

结束

印胀单

弋清求拿走卡

拿走卡

显示主屏幕

4、用户身份验证功能活动图

o

o

诙彈验证

结束槿序

 

 

5、习题8.10

虹系縫孵面基本信息处俚AS

生鹼師

辦入庫

1►

i/

L物品箱售-

k•

涓售徹

£

L/

1

'■|'

k

kd

■1

F

癥新

r

对象模型

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1