【深圳大学软件工程】实验五 模块过程设计

实验目的

1. 了解模块过程分析方法

2. 掌握程序流图绘制方法

3. 了解程序流程图绘制工具的使用

4. 掌握程序流图及其绘制方法

实验内容

(一)实验内容

请选择附件中给出的C++程序源代码或者Java程序源代码(两个文件选一个,其中java需在isLeapisValid选一和在incDaysdecDays选一),根据下列要求完成实验内容:

1. 绘制程序流程图:分析程序的模块(以函数为单位),并使用Visio等工具完成该程序的程序流程图。

2. 绘制程序流图:根据程序流程图,绘制程序流图(见第5ppt)。

3. 计算程序流图的环形复杂度

注意程序流程图与程序流图的差异:(1)合并连续的无分支节点(2)分解条件表达式。

(二)要求:

1. 请按要求完成上述实验内容,在实验报告中要详细描述实验的各个步骤,图文并茂。

2. 请大家按照指定的软件工程实验报告模板,高质量的完成实验报告内容。

实验分析及过程

1.分析附件中给出的C++程序源代码

这段C++代码的主要思路是计算给定整数的阶乘。

用户输入: 获取用户输入的整数,限制在0到1000之间。

结果数组初始化: 创建一个用于存储计算结果的数组,初始化为全零。

初始值设置: 将结果数组的第一个元素设置为1,作为初始值。

阶乘计算: 使用嵌套循环,外循环控制乘法操作的次数,内循环执行每个元素与新数字的相乘。

处理进位: 在每次乘法后,检查数组元素是否大于等于10,若是,则将进位加到高位。

打印结果: 从数组的最高位开始,逆序打印计算结果。

核心算法:

从最高位开始往后推算,如果满10,就向后进位

2.使用Visio等工具完成该程序的程序流程图

3.绘制数据流图。

4. 计算流图的环形复杂度。

环形复杂度可定量度量程序的逻辑复杂性。

利用流图计算环形复杂度的方法 :

流图中的区域数等于环形复杂度V(G)=6。

流图G的环形复杂度V(G)=E – N + 2=22-18+2=6,其中E是流图中边的条数,N是流图中的节点数。

流图G的环形复杂度V(G)= P + 1=5+1=6,其中P流图中判定节点的数目。

5.设计一些测试用例(程序输入),使得所有程序块都至少被执行一次

程序输入一:1(正确)

程序输入二:0(正确)

程序输入三:8(错误)(正确答案应为40320)。

程序输入四:10(错误)(正确答案应为3628800)

程序输入五:7(错误)(正确答案应为5040)

经测试发现,仅0,1,2,3,4的阶乘计算结果正确。

6.执行这些测试用例,并分析语句覆盖率

显然除了以下代码段,其他语句均无判断分支,覆盖率均为100%。

所以仅对于以下语句进行语句覆盖率测试。

测试代码如下:

理论运行次数为num*STORE_SIZE,实际运行次数为cnt

因此语句覆盖率为cnt / num / STORE_SIZE

通过自动化测试进行1-1000的语句覆盖率测试:

 

 

可以看到,随着num的增大,语句覆盖率也在随之增大

如下图所示

实验结论

通过本次实验了解模块过程分析方法,掌握了程序流图绘制方法。

了解了程序流程图绘制工具的使用,掌握了基于图覆盖的测试方法。

(by 归忆)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归忆_AC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值