一、个人项目github地址展示
https://github.com/lucky6991/SoftWareTest
用Java编程语言随机产生n个小学生四则运算练习题。
二、个人项目报告展示
1、需求分析
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算。
2、功能设计:输入一个参数n,随机生成n道算式,即当输入生成式子个数为5时,产生五个具有运算符和数字组成的算式如下所示。
3、设计实现
在设计的开始要想随机输出算式就得先了解随机数的定义生成随机数,生成随机数的函数就是math.random,还有运算符的随机产生,要想随机产生运算符就要从加减乘除四个运算符号中产产生,即先对其进行定义再调用,最后将所产生的随机式输出。另外,小学生的概念里没有负数,我将随机数定义为正整数输出。我根据学生学习程度的不同,对算式进行了难易分类,让不同程度的学生得到有效的学习。在随机产生题目做完题后,能判断答案是否正确。并输出错误的项。最后,实现避免产生重复的项的功能。
4、测试运行
我的测试结果如下所示
5、PSP展示
PSP2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 20 | 18 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 30 |
Development | 开发 | 60 | 80 |
Analysis | 需求分析 (包括学习新技术) | 15 | 13 |
Design Spec | 生成设计文档 | 15 | 18 |
Design Review | 设计复审 (和同事审核设计文档) | 6 | 5 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 20 | 20 |
Coding | 具体编码 | 80 | 120 |
Code Review | 代码复审 | 8 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 25 | 20 |
Reporting | 报告 | 10 | 15 |
Test Report | 测试报告 | 10 | 10 |
Size Measurement | 计算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 15 | 20 |
7、实验总结
通过本次实验,主要发现以下主要的两个问题:
1 软件编程必须要先又一个设计以及分析阶段,然后再开始编码,这样效率相比于直接编码会有很大的提升,以前都是拿到题目然后直接动手编码,一边编码,一边更改,有时候因为一些需求的功能没有实现,导致程序到最后全部推翻,然后从头再来,这样完成的时间以及效率都比不上预先进行设计。
2 软件开发之前的设计以及对于每个部分预想的时间,实际开发中所产生的变数太多,实际需要的时间相比于你之前所预留的时间会有很多的变动,可能之前原本想着之需要五分钟就可以解决的事情,可能在实际开发就需要十几二十分钟,所以以后在设计阶段要留够足够的时间做预备,有个反应的时间。
这是第一次软件工程学科的课后实践,这次的开发第一次按照系统的流程来进行,收益匪浅。