Cooperate with Myself
(一)
第一周的第一批作业们。
且不说一周之内要看完我们的300多页的教材,也不说需要在维基的大批量的文献中海底捞针,单是这个四则运算的生成程序就让我从假期的迷糊状态中幡然觉悟了:哦!惊险刺激的新的学期开始了~!
第一周的作业是和自己合作的,或者说得明白一点就是和过去的自己合作,将自己以前的面对project的激情和动力重拾,将自己的以前的所学的知识和得到的技能重用,来为这学期的软件工程的项目好好做个热身。其实说实话,这个热身我觉得其实还是蛮充分的~
首先,来介绍一下本次作业里面的几个难点和要点吧~:
(1)需求中要求能支持分数的运算,即类似于1/7 + 5/6 = ?这种的式子。(针对这一点,我想大部分的人的代码中都要涉及到类和重载了吧)
(2)需求中要求实现括号参与运算的功能。(针对这一点,我想大部分的人的代码中都要涉及到中缀表达式,后缀表达式以及利用堆栈求解表达式的值了吧)
(3)需求中要求实现任意两个expression之间的相减不能有被减数小于减数的情况存在。(针对这一点,我想大部分的人的代码中都要涉及到边生成边计算的策略了吧)
(4)需求中要求任意生成的两个表达式不能相同,也不能经过有限次变换成为同样的表达式。(针对这一点,我想不同的人该有不同的策略了,但是无论如何都是要在这一点上费一些功夫了)
(5)接下来的难点应但属于选择C++作为开发语言的人群的了。(由于需求中的乘除法是中文的字符,于是编码的问题也成为了实现中的一个难点)
(二)丰满的理想和骨感的现实
丰满的理想
PSP2.1 |
Personal Software Process Stages |
Time |
Planning |
计划 |
|
· Estimate |
· 估计这个任务需要多少时间 |
40小时 |
Development |
开发 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
6小时 |
· Design Spec |
· 生成设计文档 |
1小时 |
·Design Review |
· 设计复审 (和同事审核设计文档) |
0小时 |
·Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
半小时 |
· Design |
· 具体设计 |
2小时 |
· Coding |
· 具体编码 |
18小时 |
· Code Review |
· 代码复审 |
2小时 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10小时 |
Reporting |
报告 |
|
· Test Report |
· 测试报告 |
1小时 |
· Size Measurement |
· 计算工作量 |
半小时 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1小时 |
|
合计 |
42小时 |
骨感的现实
PSP2.1 |
Personal Software Process Stages |
Time |
Planning |
计划 |
|
· Estimate |
· 估计这个任务需要多少时间 |
40小时 |
Development |
开发 |
|
· Analysis |
· 需求分析 (包括学习新技术) |
8小时 |
· Design Spec |
· 生成设计文档 |
半小时 |
·Design Review |
· 设计复审 (和同事审核设计文档) |
0小时 |
·Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
1小时 |
· Design |
· 具体设计 |
2小时 |
· Coding |
· 具体编码 |
20小时 |
· Code Review |
· 代码复审 |
1小时 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
12小时 |
Reporting |
报告 |
|
· Test Report |
· 测试报告 |
半小时 |
· Size Measurement |
· 计算工作量 |
半小时 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
半小时 |
|
合计 |
47小时 |
程序性能分析
命令行运行时的状态
生成的答案算数表达式和相应的答案文件
待检测的算术表达式文件和待检测的答案文件以及检测的结果