13.2项目计划
里程碑(Milestone),或者说项目的阶段,是软件计划的具体单位。说穿了,就是分阶段控制软件项目。我们管理项目的方法,就是决定并安排一个里程碑里要实现的功能,如果在里程碑内不能完成所有的任务,我们必须考虑把任务挪到下一个里程碑中。
在软件项目的初期,由于团队并没有得到具体和清晰的功能需求,因此不能指望能简单地根据一个数学公式:
项目长度 = f(功能需求)
来决定整个项目的长度。
正如前面提到的,软件项目有日期驱动和功能驱动两种,对于功能驱动的项目,可以采用这样的步骤:
(1)从功能需求说明中,得到场景的大致数量,把场景分解为任务,估计任务的时间,除以团队开发人员的数量,得到T1;
(2)从功能需求说明中得到服务质量需求的数目(Quality of Service),把QoS分解为任务,估计任务的时间,除以团队开发人员的数量,得到T2。
(3)规划解决缺陷的时间(稳定阶段),S。
(4)规划测试QoS 的时间(因为大部分的QoS测试都要在大部分功能完成或稳定时才能进行),Q。
项目的总时间 = T1 + T2 + S + Q
然后可以根据时间的要求(即使项目是功能驱动,也要有时间要求),决定项目需要多少个里程碑,以及里程碑的长度。一个里程碑可以持续2~6个星期,少于2个星期,人员刚刚启动,就要结束,没办法做很多事情。多于6个星期,很多功能完成了之后没有得到及时的测试。
另一方面,对于日期驱动的项目,我们必须从软件发布之日倒推回去,如果我们要10月1日交货,那我们9月1日要达到什么状态;如果9月1日要达到这样的状态,那我们8月1日要如何如何。我们对于场景、任务、QoS的估计还是很有意义的,只不过在这一类的项目中,日期起到了决定性的作用。
里程碑(Milestone),或者说项目的阶段,是软件计划的具体单位。说穿了,就是分阶段控制软件项目。我们管理项目的方法,就是决定并安排一个里程碑里要实现的功能,如果在里程碑内不能完成所有的任务,我们必须考虑把任务挪到下一个里程碑中。
在软件项目的初期,由于团队并没有得到具体和清晰的功能需求,因此不能指望能简单地根据一个数学公式:
项目长度 = f(功能需求)
来决定整个项目的长度。
正如前面提到的,软件项目有日期驱动和功能驱动两种,对于功能驱动的项目,可以采用这样的步骤:
(1)从功能需求说明中,得到场景的大致数量,把场景分解为任务,估计任务的时间,除以团队开发人员的数量,得到T1;
(2)从功能需求说明中得到服务质量需求的数目(Quality of Service),把QoS分解为任务,估计任务的时间,除以团队开发人员的数量,得到T2。
(3)规划解决缺陷的时间(稳定阶段),S。
(4)规划测试QoS 的时间(因为大部分的QoS测试都要在大部分功能完成或稳定时才能进行),Q。
项目的总时间 = T1 + T2 + S + Q
然后可以根据时间的要求(即使项目是功能驱动,也要有时间要求),决定项目需要多少个里程碑,以及里程碑的长度。一个里程碑可以持续2~6个星期,少于2个星期,人员刚刚启动,就要结束,没办法做很多事情。多于6个星期,很多功能完成了之后没有得到及时的测试。
另一方面,对于日期驱动的项目,我们必须从软件发布之日倒推回去,如果我们要10月1日交货,那我们9月1日要达到什么状态;如果9月1日要达到这样的状态,那我们8月1日要如何如何。我们对于场景、任务、QoS的估计还是很有意义的,只不过在这一类的项目中,日期起到了决定性的作用。