软工个人项目——数独(四)

Github项目地址:数独
本次博客记录代码功能测试结果及代码性能分析和改进。

测试结果

生成测试

在cmd界面输入sudoku.exe -c 20 生成结果如下:在这里插入图片描述输入 sudoku.exe -c 1000生成1000个数独终局:
在这里插入图片描述可以看到生成时间为118ms,在项目要求的60s范围内。

解题测试

cmd终端输入sudoku.exe -s problem.txt。problem.txt中有8个数独题面:
在这里插入图片描述

性能分析

vs自带性能分析工具显示:
在这里插入图片描述在这里插入图片描述可以看到输出函数占用时间最多。很多同学在做这个项目时都遇到了这个问题,我也询问了其他同学有没有什么好的方法改进。经过改进我将输出部分改为如下:

FILE* fp;
	//ofstream OutputFileSolveSudoku("solve.txt",ios::app);
	int pos = 0;
	if (Is_First_Task == true) //如果是第一个问题,就在求解之前输出一行空行 
	{
		fp = fopen("solve.txt", "w");
	}
	else
		fp = fopen("solve.txt", "a+");
	if (Is_First_Task == false)
		fprintf(fp, "\n");
	for (int i = 0; i < 9; i++)
	{
		for (int j = 0; j < 9; j++)
		{
			char x = sudoku[i][j];
			fputc(x, fp);
			if (j != 9)
			{
				fprintf(fp, " ");
			}
		}
		fprintf(fp, "\n");//存入换行符
	}
	fclose(fp);
	if (Is_First_Task == true)
		Is_First_Task = false;

改进后的性能分析:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

感悟总结

这次项目前期节奏过慢,因为各种复习等因素一直拖到最后才做完,时间的把控上没有做到位。但进行项目的过程中我的的确确感受到上课时老师讲述的软件工程的实现过程,并自己实践了一番。在这个过程中我体会到软件工程的确是一个需要综合考虑的过程,而不仅仅是写完代码这么简单。比如我考试前写了大部分代码,但是没有养成仔细写注释的习惯,导致我考完试想要继续进行时花费了很多时间研究我之前的代码。而且之前写的时候思路很混乱,bug百出,最后只能重新写。
除此之外这个项目由于时间原因一些更细化的测试也还没有做到位,比如代码覆盖率测试;优化的代码仍有改进的余地,虽然到了ddl但之后还是要将这个项目进行修正完善。

完整PSP表格

PSP2.1Personal Software Process Stages计划用时(min)实际用时(min)
Planning计划/
Estimate估计任务运行时长105
Development开发60120
Analysis需求分析(包括学习新技术)9080
Design spec生成设计文档12060
Design Review设计复审(和同事复审设计文档)3090
Coding Standard设置代码规范3020
Design具体设计180360
Coding具体编码14401500
Code Review代码复审120180
Test测试300300
Reporting报告6060
Test Report测试报告240180
Size Measurement计算工作量3020
Postmortem &Process Improvement Plan回顾总结6030
/合计27703005
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值