应该尽量避免,而第二种情况一般是难以估计的。需求变更时需重新估算,和客户签订需求变更协议。
我们一般会充分估计前期需求调研工作量以及需求细化工作量,对于需求变更则暂不考虑,因为一旦变更我们会和客户确认需求变更的费用。但有些项目有很特殊,项目报价中预留了少量的需求变更费用,这时估算中就需要适当考虑需求变更了。
4.软件设计方面的工作。
不少项目为了“赶”进度,设计文档很少,然则项目真的很简单、不需要仔细考虑设计的情况是非常少的!
软件设计工作包括:
1)系统架构设计。
2)技术方案选择。
3)关键模块设计。
4)数据库设计。
5)用户体验设计。
以上内容具体项目可以有所取舍,但不可能全部都不用考虑。
另外不要忘记了以下两方面的工作:
1)各类设计工作产品的讨论、确认、评审工作。
2)设计细化与优化工作。设计是需要持续改进的,不要忘记这些工作。
5.编码方面的工作。
要注意不要遗漏代码返工、代码评审、代码调试、修复缺陷的工作量。
需求、设计没有做好,编码质量不过关,这些会严重增加代码返工、代码调试、修复缺陷的工作量。代码首次完成的时间如果是100小时,那么后面代码调试、修复缺陷等所需要的时间可能是200小时以上,往往我们估算时只考虑了前面的100小时。
6.测试方面的工作。
测试工作包括测试计划、测试用例、测试文档评审、测试环境准备、测试数据准备、执行测试、回归测试等内容。
软件测试一般要经历多轮,我们估算往往只考虑了第一轮,就好象软件只需要测试一回就不用再测试了。而测试环境准备、测试数据准备这些工作也很容易在估算时“忘记”了。
7.实施方面的工作。
实施工作包括实施计划、实施方案的准备,编写管理员手册、用户手册,熟悉系统,搭建实施环境并进行演练,在客户现场安装、部署、调试系统,培训客户,协助系统上线,推动验收等工作。
我们公司通常的做法是:
1)系统在客户处部署后,会推动客户进行初步验收,初验标准是系统的所有功能跑就可以了。初验成功,客户需要支付相应的项目款项。
2)初验后要协助客户让系统正式上线,让客户真正用上这套系统,推动最终验收。
影响终验主要有两个因素,一个是客户在使用系统过程中会提出各式各样的问题,如果在需求范围内应该都予以满足;而另外一个影响因素是客户会因为各种各样的原因推迟使用系统,或者是使用不充分,让项目终验遥遥无期。估算时需要充分考虑这两个影响因素。
8.维护方面的工作。
项目终验后,一般都要提供半年到一年的维护服务,维护器后项目还会有最后一笔款项。
维护期比较长,事情繁杂,一个不小心就很容易估算不足。
维护的工作一般有:
1)用户培训;
2)协助客户录入资料;
3)修复被破坏的数据以及数据库;
4)修改客户或内部发现的软件缺陷;
5)代码重构,提高部分程序的性能与可靠性;
6)修改一些界面文字或显示风格;
7)回答客户反馈的一些安装与操作疑难问题;
8)提供合同中所要求的其它特殊软件维护服务。
在维护期,往往还需要发布数个小版本来解决客户的问题。
9.项目管理方面的工作。
项目管理工作主要有编制项目计划、持续更新项目计划、跟踪计划执行、各种工作协调、指导项目组成员完成工作等等。
项目管理工作量一般占整个项目工作量的10-20%,项目不明确的东西越多、项目组成员水平越不足、项目组成员之间工作磨合度越不好,管理工作量就越大。
项目管理在项目进行整个过程都需要持续进行,一般来说前期工作量会比较大,版本发布前后阶段工作量也会比较大。项目管理前期工作抓得