在软件工程中,PSP是指个体软件工程,并且其中针对项目估算提供了很多有益处的帮手手段。试想,我们经常接到一个新的项目,
常常都困扰如何评估项目的时间进度,总不能老拍脑袋吧。因此,下文小结一下PSP中对项目时间估算的一些心得,这些都不拘泥于
书本,都是平常工作学习中的一些小结,不足之处敬请指教
首先,顺便提下PSP个体软件工程。个体软件过程是由美国Carnegie Mellon大学软件工程研究所(CMU/SEI)的Watts s. Humphrey领导开发的,于1995年推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP是一种可用于控制、管理和改进个人工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段, PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。根据对参加培训的104位软件人员的统计数据表明,在应用了 PSP后,软件中总的差错减少了58.0%,在测试阶段发现的差错减少了71.0%,生产效率提高了20.0%。PSP的研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3一5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
PSP的优秀读物推荐的是《个体软件过程(英文版)——软件工程系列教材》。
平时,我们可以制定如下的一个表格,当我们的每个项目中的每个模块做完时(记得是每个模块),都将其时间情况记录下来,那么当一个项目
做完后,这个项目的耗费时间的情况就一目了然了。比如下面是个例子
XXX项目时间情况总结表
项目名称:
项目简介:
项目负责人:
项目接手时间:
项目立项时间:
项目开始时间:
项目时间评估记录者:
(第一部分是简单的介绍,注意项目接受时间,是指你作为项目经理,接手这个项目的开始时间,而不是这个项目的立项时间,因为有的情况下,接手时间可能
跟立项时间相同,也有可能不同;项目开始时间就是立项后,可以正式由你开始调度资源进行一系列软件工程的时间了,这个时间也有可能不一定跟立项时间相同,
分开来是为了更好能跟踪)
项目/模块名 |
需求 |
设计 |
编码 |
测试 |
预计用时 |
实际用时 |
历史库该类型模块用时 |
模块1….. |
|
|
|
|
|
|
|
模块功能说明: | |||||||
模块编写者:XXXX (职别:高级,中级,初级程序员) | |||||||
模块编写情况备注: | |||||||
时间偏差简要分析: | |||||||
|
只需要把模块换成项目名,就可以看到整个项目的具体情况了。其中预计时间,实际用时,历史库中同类型模块时间都是十分重要的,这样可以很清楚,
以前的项目中,做同样的这个模块,大概用了多长时间.
模块编写者中一栏中,特别注明了编写者的级别,这样可以很清楚看到,那些程序员编写这类型的模块,用的时间是比较合适的,由此可以派生出这样的表格,比如:
XXX程序员项目耗时表
项目名称 |
模块1 |
….. |
预计用时 |
实际用时 |
偏差 |
XXXXXX |
|
|
|
最后,还应该建立标准功能模块库的用时统计库,比如如下:
项目/模块 |
简介 |
统计库平均用时 |
同行平均用时 |
偏差 |
典型的CMS发布系统 |
|
|
|
|
这里的项目或者模块名,可以列出一些项目或者模块中,你们公司根据平均统计的用时,比如"一个struts2+hibernate3+spring2的带权限管理,使用EXTS,带JFREECHART...",就是把这个模块中用到的一些技术都尽可能写上去,让到时一看这个表格,就知道以后大概做这样一个CMS系统,大概要用多少时间;
统计库平均用时,就是把你们公司的历史时间统计的数据不断进行修正平均;而同行平均用时,可以借助参考同行做这样的系统,大概用多久(当然这个要靠你们
去积累和跟同行交流了).
最后,在实际中,要执行好时间管理也的确不容易,往往项目做完了,最后忘记填这些时间表,下次又忘记了上次具体每个模块到底用了多少时间;
因此最好的经验就是让程序员做好某个模块,项目经理评审后,分阶段的去填时间,比如A模块做到测试阶段,用了多少时间,做到用户试用阶段,又用了多少时间,
这些都要求程序员和项目经理一起去配合去做.在PSP中,甚至针对程序员有更细化的时间统计工具,表格及方法,这些就要再参考PSP了