在项目管理过程中,工作量的估算是一个重要的环节,直接关系到项目的成功与失败。
工作量的估算方法有很多,如经验估算法,工作分解法,还有就是数学模型法等等,但在我们实际的项目管理过程中,许多著名的估算方法使用起来并不那么灵活、方便,并不一定适合于我们的实际项目。
很多项目经理对于项目评估、管理、控制的能力基本上是来自于项目经理本身的从业经验,由于各种各样的原因,项目经理更多的是一个全才,这是在当前环境下,保证项目还能正常运行的必然结果。
在实际情况中,项目不但耗时长,而且成功率也很低,其中一个很重要的原因是对于需求的工作量评估没有一个具体的依据,很多时候都是想当然的估算一个数字,当项目开发过程中来自于需求变更后对新需求的工作量估计不足导致产生连锁反应,最后失去对项目的控制。本文的目的在于提出一种对项目总体工作量估算的模型,用于项目经理在面对原始合同进行概要设计,项目进行过程中面对需求变更时计算工作量的一种参考依据。这个模型的目的是要有效的减少工作量,这并不意味着会少做事,而是希望引导多做正确的事情。特别是这个模型也能为提高工作效率指明方向。 要设计一个模型,首先要对日常工作进行全面的分析,抽象出工作的每一个步骤,对每个步骤中所需要用到的知识进行归纳,还需要对每个步骤中的复杂度进行评估。 在一个项目的开发过程中,在面对一个业务功能时首先做的是从需求中设计表结构,然后为表结构定义各种各样的关联,定义完关联后基本上在大脑内形成界面的大致样子,然后就开始写代码。从上面的过程中,大致可以分成下面的两个步骤:
1. 数据结构设计阶段
2. 根据数据结构编写代码阶段 接下来分析下每个步骤所用到的知识。
1. 在数据结构设计阶段所使用的知识分为以下几个部分
1) 数据库设计知识
2) 业务知识
2. 在根据数据结构编写代码阶段所使用的知识分为以下几个部分
1) 数据库操作知识
2) 后台编程语言知识
3) 前台编程语言知识
4) 业务知识
通过以上的分析可以看到,在第一个阶段所需知识单一,更多的源自于经验。由于所使用知识比少,当需求产生变化时,为变化所花费的时间也比较少。
因此可以得出一个简单的结论,当某一个步骤所需知识比较单一时,对该步骤的变更和编码所需时间都比较少。 那么可以看到在第二个阶段,所用知识复杂,所以必须要对第二阶段进行细分。 在第二阶段,通常的做法是,根据业务功能,首先编写关于这个业务表的增删改的代码,再根据表之间的关系写出数据关系代码,最后根据设计的界面样式,编写界面代码。
在这个阶段也分成以下几个步骤:
1. 编写单表的维护代码
2. 编写该表与其他表的业务关系代码
3. 编写界面代码 同样的
再来分析下每个步骤所使用的知识:
1. 在编写单表的维护代码所使用的知识分为以下几个部分
1) 数据库单表操作知识
2) 后台编程语言知识,仅需要知道如何操作数据库
3) 业务知识
2. 在编写该表与其他表的业务关系代码所使用的知识分为以下几个部分
1) 数据库多表查询知识
2) 后台编程语言,这里是根据业务的复杂度来决定所使用的知识范围。
3) 业务知识
3. 在编写界面代码所使用的知识分为以下几个部分
1) html知识
2) javascript知识
3) css知识
4) 后台编程语言,仅使用到与前台界面编写相关的部分知识。