软工个人项目

  由于之前请假一个星期,没能及时提交作业。。。这个个人项目主要实现一个关于小学四则运算的程序,这个程序有两个功能,一个是自动生成表达式和答案,分别存到两个文件中,另一个是读取两个文件,一个是表达式文件,另外一个是答案文件,并且判断对应条目的答案是否正确,控制台输出正确的个数与错误的个数,还有编号。具体要求详见:http://www.cnblogs.com/jiel/p/4810756.html

  个人觉得这个项目有两个关键点,一个是判断表达式是否重复,另外一个是运算。对于查重我采用的方法是,将表达式中的数字抽取出来按照从小到大排序,将他们拼成一个字符串再将运算符按照先后顺序接在其后面,这样就生成了一个伪ID(有可能是不同表达式,但是id相同,这种情况的概率是比较小的),判断是否重复只需判断id是否相等。对于运算,我构建了一个分数类,封装了加减乘除四种操作,再采用调度场算法就能计算了。

  项目开始前psp估计

  

PSP2.1

Personal Software Process Stages

Time

Planning

计划

 

  · Estimate

  · 估计这个任务需要多少时间

 

Development

开发

 25小时

  · Analysis

  · 需求分析 (包括学习新技术)

 1小时

  · Design Spec

  · 生成设计文档

 1小时

  · Design Review

  · 设计复审 (和同事审核设计文档)

 0.5小时

  · Coding Standard

  · 代码规范 (为目前的开发制定合适的规范)

 0.5小时

  · Design

  · 具体设计

 2小时

  · Coding

  · 具体编码

 15小时

  · Code Review

  · 代码复审

 1小时

  · Test

  · 测试(自我测试,修改代码,提交修改)

 4小时

Reporting

报告

 5小时

  · Test Report

  · 测试报告

 1小时

  · Size Measurement

  · 计算工作量

 1小时

  · Postmortem & Process Improvement Plan

  · 事后总结, 并提出过程改进计划

 3小时

 

合计

 30小时

 

  项目完成后psp

PSP2.1

Personal Software Process Stages

Time

Planning

计划

 

  · Estimate

  · 估计这个任务需要多少时间

 0小时

Development

开发

 20.5小时

  · Analysis

  · 需求分析 (包括学习新技术)

 2小时

  · Design Spec

  · 生成设计文档

 0小时

  · Design Review

  · 设计复审 (和同事审核设计文档)

 0小时

  · Coding Standard

  · 代码规范 (为目前的开发制定合适的规范)

 0小时

  · Design

  · 具体设计

 0.5小时

  · Coding

  · 具体编码

 9小时

  · Code Review

  · 代码复审

 0小时

  · Test

  · 测试(自我测试,修改代码,提交修改)

 9小时

Reporting

报告

 1小时

  · Test Report

  · 测试报告

 0.5小时

  · Size Measurement

  · 计算工作量

 0小时

  · Postmortem & Process Improvement Plan

  · 事后总结, 并提出过程改进计划

 0.5小时

 

合计

 21.5小时

 

  性能测试

     通过vs2015的性能分析工具可以看出,执行生成10000个范围在30以内的表达式耗时6.235秒,其中最耗时的方法是Expression.newInstance()即产生一个表达式。

 

测试

运行 personal_work.exe -r 30 -n 10 的结果:

exercisefile.txt中的内容为

1. 27 - 17 =
2. 22 - 20 + 14 =
3. 20 / 15 * 14 + 9 =
4. 19 - 16 + 22 =
5. 26 - 10 =
6. 10 / 21 + 25 - 23 =
7. 3 + 16 - 2 - 10 =
8. 29 - 4'3/7 =
9. 3 * 10 - 29 =
10. 28 / 6 =

answerfile.txt中的内容为

1. 10
2. 16
3. 27'2/3
4. 25
5. 16
6. 2'10/21
7. 7
8. 24'4/7
9. 1
10. 4'2/3

e.txt中的内容为

1. 27 - 17 =
2. 22 - 20 + 14 =
3. 20 / 15 * 14 + 9 =
4. 19 - 16 + 22 =
5. 26 - 10 =
6. 10 / 21 + 25 - 23 =
7. 3 + 16 - 2 - 10 =
8. 29 - 4'3/7 =
9. 3 * 10 - 29 =
10. 28 / 6 =

a.txt中的内容为

1. 10
2. 16
3. 27'2/3
4. 25
5. 16
6. 2
7. 6
8. 24'4/7
9. 1
10. 4'2/3

运行 personal_work.exe -a a.txt -e e.txt的结果为

Correct: 8(1,2,3,4,5,8,9,10)
Wrong: 2(6,7)

总结

这个项目是我第一次用c#开发,感觉跟java很像用起来也很顺手,在开发中很多小细节耽误了很长时间,比如随机数的生成、调度场算法中判断符号优先级等,我觉得假如能够在编码过程中仔细认真些,想全所有的可能性,尽量把这些小bug扼杀在摇篮里就不用在测试投入那么多时间和精力了。

 

posted @ 2015-09-23 00:31  Terminator1306  阅读(135)  评论(2编辑  收藏  举报