|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Part·6 附录
|
|
|
|
|
|
|
|
|
|
## 6.1 PSP表格
|
|
|
|
|
|
|
|
|
|
PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。
|
|
|
|
|
|
|
|
|
|
| **PSP2.1** | **Personal Software Process Stages** | **预估耗时(分钟)** | **实际耗时(分钟)** |
|
|
|
|
|
| :-------------------------------------- | --------------------------------------- | -------------------- | -------------------- |
|
|
|
|
|
| Planning | 计划 | 30 | 50 |
|
|
|
|
|
| · Estimate | · 估计这个任务需要多少时间 | 30 | 50 |
|
|
|
|
|
| Development | 开发 | 1400 | 1550 |
|
|
|
|
|
| · Analysis | · 需求分析 (包括学习新技术) | 300 | 450 |
|
|
|
|
|
| · Design Spec | · 生成设计文档 | 100 | 50 |
|
|
|
|
|
| · Design Review | · 设计复审 | 30 | 30 |
|
|
|
|
|
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 60 |
|
|
|
|
|
| · Design | · 具体设计 | 400 | 350 |
|
|
|
|
|
| · Coding | · 具体编码 | 450 | 500 |
|
|
|
|
|
| · Code Review | · 代码复审 | 60 | 60 |
|
|
|
|
|
| · Test | · 测试(自我测试,修改代码,提交修改) | 300 | 50 |
|
|
|
|
|
| Reporting | 报告 | 100 | 50 |
|
|
|
|
|
| · Test Repor | · 测试报告 | 20 | 20 |
|
|
|
|
|
| · Size Measurement | · 计算工作量 | 20 | 10 |
|
|
|
|
|
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 20 |
|
|
|
|
|
| | · 合计 | 1530 | 1750 |
|
|
|
|
|
|
|
|
|
|
一个功能完备的程序不是一蹴而就的。可将一个大任务划分为可操作的小任务,同时最好按照任务难度或紧急程度指定各个任务的完成次序。因此,在动手开发之前,要先估计将在程序各模块开发所需耗费的时间,以及完成整个项目所需的时间,将这个[估计值]记录下来,写成PSP 的形式。
|
|
|
|
|
PSP的目的是:记录工程师如何实现需求的效率,和我们使用项目管理工具(如微软的Project Professional,或者禅道等)进行项目进度规划类似。
|
|
|
|
|
有关PSP的更多内容,请自行阅读[邹欣老师的博客:现代软件工程讲义 2 工程师的能力评估和发展](http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html)
|
|
|
|
|
|
|
|
|
|
## 6.2 https://code.educoder.net/projects
|
|
|
|
|
|
|
|
|
|
请阅读邹欣老师的博客:源代码管理,了解源代码管理的10个实践问题。
|
|
|
|
|
本次作业要求使用https://code.educoder.net/projects进行源代码管理,**代码有进展即签入https://code.educoder.net/projects**。签入记录不合理的项目会被助教抽查询问项目细节。
|
|
|
|
|
对代码签入的具体要求如下:根据需求划分功能后,每做完一个功能,编译成功后,应至少commit一次。本例中,至少应区分基本功能和扩展功能,即分别针对基本功能、扩展功能,编译成功后,总共至少应commit两次。具体的功能划分,请自行定义,并在撰写博客时体现出来,遵循自己对需求的功能划分来提交代码即可。
|
|
|
|
|
对Commit不是很熟悉的话,请阅读[阮一峰的博客:Commit message 和 Change log 编写指南](http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html),了解更多细节。
|
|
|
|
|
|
|
|
|
|
## 6.3 单元测试
|
|
|
|
|
|
|
|
|
|
请根据自己以往积累的测试经验,在编码完成之后,提交产品之前,设计测试用例,并编写单元测试,对自己的项目进行测试。
|
|
|
|
|
首先,至少应采用白盒测试用例设计方法来设计测试用例,其他测试方法不限。其次,要设计至少10个测试用例,确保你的程序能够正确处理各种情况。最后,结合测试评估的要求,对自己的测试设计进行评价,这些测试用例能满足该程序测试的要求吗?
|
|
|
|
|
另一个重要的措施是要把单元测试自动化,这样每个人都能很容易地运行它,并且可以使单元测试每天都运行。每个人都可以随时在自己的机器上运行。团队一般是在每日构建中运行单元测试的,这样每个单元测试的错误就能及时被发现并得到修改。
|
|
|
|
|
推荐阅读[邹欣老师的博客:现代软件工程讲义 2 开发技术 - 单元测试 & 回归测试](http://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html)
|