华东交通大学软件工程实验报告.docx
《华东交通大学软件工程实验报告.docx》由会员分享,可在线阅读,更多相关《华东交通大学软件工程实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
华东交通大学软件工程实验报告
华东交通大学软件学院
上机实验报告
课程名称:
软件工程
指导老师:
唐怀琴
专业班级:
12软件+交通设备信息工程2班
姓名:
徐锦陶学号:
214
学期:
大二下学期
实验一:
数据流图实验
一、实验目的
通过绘制数据流图掌握数据流图的基本原理,并能对简单问题进行数据流图的分析,独立地完成数据流图的分析与设计。
此外,学会使用Case工具完成数据流图和系统流程图的分析与实现。
二、实验容
实验容如下:
a)用visio绘制出如下定货系统的SFD(系统流程图)的模型
b)用visio绘制教材中分别绘制出定货系统的DFD的顶层模型、
第一层模型和第二层模型。
(具体参考课本上P69~P70的图
3.4,图3.5和图3.6)
c)用visio绘制如下图所示的取款手续的数据流图。
帐卡
图2取款手续
d)请结合目前的银行柜台取款手续,对图2的取款数据流图进行改进,绘制当前银行柜台取款过程的顶层和第一层数据流图。
三、实验结果
(b)、图3.4DFD的顶层模型
管理员
事务
订货
订货报表
系统
L,1
采购员
(b)、图3.5DFD的第一层模型
库存信息
库存清单
管理员
事务
处理
事务
)
订货
信息
(b)、DFD的第二层模型
产生订货报表
报表
订货
信息
采购员
库存清单
库存清单
库存处理信息事务
订货
信息
(C)、取款手续的数据流图
检验岀的问题
检验
取款单
存折
储户
取款
信息
现款
付款信息
付款
帐卡
订货信息
登录
存折
年月日*日历
(d)、当前银行柜台取款过程的顶层数据流图
帐户余额
余额信息"
客户Rjf检查]取款”登录户
L__)取款枕丿
\信息,
取款•..
信息-►储户文件
实验二、软件设计实验
一、实验目的
学会使用Case工具完成描述软件结构的软件结构图和软件层次图的设计,并熟练地掌握几种常用的软件详细设计的工具,如程序流程图、盒图、PAD图和判定表,并能把给定的软件问题描述转化为过程设计结果。
二、实验容
1、软件结构设计:
(1)采用visio绘制教材的图4.26中的软件结构图;
(2)采用visio绘制教材的图4.41的软件层次图。
(3)分析如下所示的数据流图,并把它转换成软件结构图,然后用visio把结果画出来。
(注意,请用结构图)
图1某系统的数据流图
2、软件的详细设计:
某航空公司规定,乘客可以免费托运重量不超过20公斤的行,当行重量超过20公斤,对头等舱的国乘客超重部分每公斤收费6元,对其他舱的国乘客超重部分每公斤收费8元,对外国顾客超重部分每公斤收费比国乘客多1.5倍,
对残疾乘客超重部分每公斤收费比正常乘客少一半。
实验包含三部分的容:
e)用word设计描述其详细设计结果的PAD图、判定表。
f)用viso画出它的程序流程图,并计算它的Mccabe程序复杂
度。
(要求把计算过程写到实验报告中)
三、实验结果
1、
(1).采用visio绘制教材的图4.26中的软件结构图;
.X*
好输入
好
输
解
入
/
1
得到好输入
计算最佳解
产生最佳解
读输入编辑输入
(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)
程序流程图
X3?
“
・¥,
求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]}对程序进行测试,可否发现错误?
为什么?
请先测试,然后把结论记录到实验报告中
(3).如果将第1个判定中的“AND”错写成了“OR”,则用数据{[3,0,1],[1/3]}和{[2,1,2],[3]}(首先,该组数据满足何种逻辑覆盖)对程序进行测试,可否发现错误?
为什么?
请先测试,然后把结论记录到实验报告中。
(4).如果将第2个判定中的“x>1”错写成了“x<=1”,则用数据{[3,0,1],[1/3]}和{[2,1,2],[3]})对程序进行测试,可否发现错误?
为什么?
请先测试,然后把结论记录到实验报告中。
(5).如果将第2个判定中的“x>1”错写成了“x<=1”,则用数据{[2,0,3],[2.5]}和{[1,1,1],[1]}(首先,该组数据满足何种逻辑覆盖)对程序进行测试,可否发现错误?
为什么?
请先测试,然后把结论记录到实验报告中。
(6).如果将第1个判定中的“a>1”错写成了“a<=1”,且把“b=0”错写成了“b<>0”,则用数据{[2,1,1],[2]}和{[1,0,2],[3]}对程序进行测试,可否发现错误?
为什么?
请先测试,然后把结论记录到实验报告中。
(7).如果将第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;
}
i++;
}
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)
请输入飢证
203
请WAO值典2.5输出X的值72.500000
Pr'css比口蚩keytocontinue
不能发现错误,第二个判定or只要满足一个条件即可,因为A=2必然成立,故第二个条件
定为真,所以不能发现错误。
(3)语句覆盖和判定覆盖
'C%User&\xujint曰o\Desktep\Debjg'\4・exc"
■,53HllA.fi,BrK:
301
请輸■厚值*S
憾岀*的值T9-333333
Fpeesankeptocontinue
j:
\users^xujinrao\L^esKro-p\ueoug.exe
i青输入仏田畀=
212
请审入孵值讥3
辅岀X的值二2.000000
Press已n即R巳野tocaintinue
第一组测试数据不能发现错误,因为第一组数据可以满足第一个判定的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。
与期望结果不同,系统想、提示错误,故能发现错误。
b,x:
耙i岀*的值?
3-000000
Pi*essanykeyt:
oconitInuie
第二组测试数据不能发现错误。
他、因为第一个判定条件是B=0,而B实际值为1判
定不成功,将进行操作b,进行第二个判定时,因为判定条件为A=2,此时X=2,故
判定成功返回1,进行e操作,最后得结果X=3与期望结果相同,不能发现“x>1”错写成了“x<=1”。
故不能发现错误。
(5)判定覆盖条件、语句覆盖、判定覆盖和条件覆盖
—jiij■%.*w~shB兀—1
|:
*基也:
TTZZa*
L冃领人口,B^X=
203
i脚入惡星值典2-&
输岀K的值72-500000
PressaLnykejjtocoritj-nue
第一组测试数据不能发现错误,在第2个判定时,因为A==2正确,满足条件,进行
e操作。
最后x=2.5,与期望结果相同。
所以不能发现“x>1”错写成了“x<=1
1
ssanyke^tocontinue
'C:
\U5ers\xujintao\De空ktop\Oebug\4.exe
对于第二组测试数据,因为对于第二个判定A=2,而A的实际值为1,此时后面的判定X>1或者X<=1对结果就有影响了,错写之后由于X=1,对于X<=1判定成立,返回1,影响
X的值,故能发现错误。
(6)
211
请松磐值趴2
输岀X的值:
2-000000
Pi*essanykey*bocon七inu圧
出错后执行路径仍为abe,
第一组测试数据不能发现错误,因为原本执行路径是abe
所以不能发现错误。
'C:
Wse巧'沁jjintm口心半ktop\DebLig\39.exeF
出错后执行路径仍为abe,
第二组测试数据也不能发现错误,因为原本执行路径是abe所以也不能发现错误。
(7)
abe,所以不能发现错误
■'C\User^\xujintdo\Dssktcp\Debug\8S
出错后执行路径仍为
第二组测试数据可以发现错误,因为原本执行路径是ace
abe,所以能发现错误。
请输人*,H川
111
逆输入讲崖值¥:
1
输岀的值=1.000000
Press战nytocontinue^
出错后执行路径仍为
第三组测试数据不能发现错误,因为原本执行路径是abdacd,所以不能发现错误
*C:
\UsgrsViujint曰口\*?
ktop\DebugXS&.ese"
幘输入鮎R用
1B2
斜入瞻值珀3師岀£的值’3.0S0000
Ppessan即keytocontinue
出错后执行路径仍为
第四组测试数据不能发现错误,因为原本执行路径是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;
}
{
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完成如下所示的时序图设计
7输人谱码「
"输人类也;
输ARSM6
甘吋出现金
■请抽蹶此車虬
r皓車r
2请或味逬背
孝底卡-
见小卞屏幕
AlM
请求酯汀毗户
请求赴理專务
击务或/
账户仃效
■
请求处理廿ff唏巻分行师务威功■
图1某系统时序图
4、完成如下用户身份验证功能的活动图设计:
用户首先输入其个人信息,如果确认其输入则向系统提交用户信息,并在数据库中查询用户信息,比较用户信息,同时进行验证,验证通过,该用户获得授权可以进入系统的主界面,否则,验证失败重新回到输入用户信息界面。
如果用户放弃输入,则结束程序。
5、综合题。
综合运用所学00A和00D方法和技术完成教材
P263习题8的第10题。
三、实验结果
1、图3.15
!
■
!
■
!
■
闲直
桂甌电送
1三匸三
-.1—.2—.J1―斗
._^1—L—4—』
・H
广披号音
tLmei=O
(WPfite号者
-且眉加血⑴工,
超时
IjidI
H-
—Hf-——H]H1——1
妥话人回逢
II■I■
■・■・・・!
!
■■■■■ir|i■■■■■■■■■■・
2、打印机
3、时序图
总行
分行
L
要求密码
输入密码
一要求事务类型
输入类型
要求输入取款额「
输入取款额
吐出珊金
请求拿走规金
学走现金-
一请求龜幾曲事势
结康■
印账单
T退卡
丫请求韋迄卡
拿走卡
一显示主屏幕
插卡
请求噓证喘户
赃户有效
请求处理事劳
4、用户身份验证功能活动图
请求分行验证赌户l
账户有数
请求处理分行事势卜
分行事劳砺功
5、习题8.10
o
o
虹系缱嚼面基擁崽惬入岸籍
物品"
柳品%
库存嘉
生斓+軀
对象模型