软件工程基础——个人项目——数独(6)

软件工程基础——个人项目——数独(6)

最终实现结果类图

本代码仅一个类:
在这里插入图片描述
其中方法和数据的调用关系包括:
newone方法实现时使用数据num,sum,moven,move,调用方法write
solveshudu实现时使用数据num,left,trynum,judge方法bittonum,change,restore,standard,solve,writesolve

newone方法性能分析图

newone方法的改进集中在将全排列数的存储从文件形式改为全局变量形式,数据的写入文件仅打开和关闭一次
完全改进后生成1000000个数独终局在测试时的性能分析图:
在这里插入图片描述
根据分析可知对于现阶段的程序,耗时最多的函数是fprintf函数,即像文件的写入操作占用了大约97%的时间

solveshudu方法采用深度搜索,解1000个较为简单的数独问题时的性能分析图为:
在这里插入图片描述其中占用时间最多的为solve方法的递归调用。

集成测试用例的设置

对于命令格式输入的错误,情况包括:
1.sudoku.exe -c(缺少元素)
2.sudoku.exe -x 10(命令不存在)
处理方法为弹出错误信息与正确的输入格式提示
解数独模块测试用例设置:
1.sudoku.exe -s d://shudu.txt(正确形式)
2.sudoku.exe -s d://shud.txt(数独文件不存在)
发现问题,原代码中,先在数独文件尾加标识符-1,则文件不存在时便会创建数独文件不会报错
优化方法为:在加标识符前先通过只读方式打开文件,此时若文件不存在,则fopen返回0,判断后输出错误信息
生成终局模块的测试用例设置:
1.sudoku.exe -c sdaljk(生成数量不为数字)
2.sudoku.exe -c 0(生成数量为0)
3.sudoku.exe -c -1(生成数量为负数)
处理方法,这三种情况下,生成数量m取值均不大于0,判断m值后输出错误信息。
4.sudoku.exe -c 1000000
用于检验模块性能

单元测试相关内容

我的设计方案中,类实现绝对的封装,测试时所能查看的类的方法很少,只能对类的公有方法和全局变量进行测试。目前还未想到更多的单元测试用例
1.运行pailie函数,对生成的pailieshu数组进行测试。
2.调用newone方法,对其进行测试。
3.调用solveshudu方法,对其进行测试。

psp表格

在这里插入图片描述

心路历程与收获

本次项目的设计是学校课程的作业的个人项目,所以项目的算法实现并不复杂,在一开始接触到这一题目时并没有觉得这一项目会耗费多少的时间,所以前期的工作较为懈怠和缓慢。与项目相关的信息的查询和思考并没有太放在心上,但当我真正的投入到项目中的设计中时,才发现对于自己所没有做过的事情充满信心是很错误的。类的设计,相关数据流图的绘制都耗费了超出预期的时间。在实际编码的时候我才发现自己所绘制的类图其实是有很大的缺陷的,无论是设计时没有考虑到的数据的使用,还是方法实现时所需私有方法的缺失都使得我一次又一次的更改设计方案,从而耗费了较多的时间。代码完成后又一次因为时间复杂度较高而使得我寻求更好的解决方法,从而对设计方案又一次进行修改。因此我觉得软件的设计设很复杂的,许多的问题很难在设计阶段就发现的,而是要当我们取实现去测试的时候才会意识到问题的存在和方案的缺陷。因此,在进行软件设计时应当为后期的测试和维护预留出充足的时间才能保证软件最后完成的质量。

github地址:https://github.com/zhuchaojie6/legendary-guide

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值