成 功
案 例

新闻动态

IT项目管理的工作量估算

发布时间:2014-01-26来源:转载作者:CIO时代网 中国项目管
     在项目管理过程中,项目不但耗时长,而且成功率也很低,其中一个很重要的原因是对于需求的工作量评估没有一个具体的依据,很多时候都是想当然的估算一个数字,当项目开发过程中来自于需求变更后对新需求的工作量估计不足导致产生连锁反应,最后失去对项目的控制。工作量的估算是一个重要的环节,直接关系到项目的成功与失败。工作量的估算方法有很多,如经验估算法,工作分解法,还有就是数学模型法等等,但在我们实际的项目管理过程中,许多著名的估算方法使用起来并不那么灵活、方便,并不一定适合于我们的实际项目。 
     本文提出一种对项目总体工作量估算的模型,这个模型能为提高工作效率指明方向。要设计一个模型,首先要对日常工作进行全面的分析,抽象出工作的每一个步骤,对每个步骤中所需要用到的知识进行归纳,还需要对每个步骤中的复杂度进行评估。 
     在一个项目的开发过程中,在面对一个业务功能时首先做的是从需求中设计表结构,然后为表结构定义各种各样的关联,定义完关联后基本上在大脑内形成界面的大致样子,然后就开始写代码。从上面的过程中,大致可以分成下面的两个步骤: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) 后台编程语言,仅使用到与前台界面编写相关的部分知识。5) 业务知识 
     通过以上分析可以看到,在编写单表的维护代码阶段是使用知识最少的一个步骤,同样的当业务产生变更时,为该处的变化所用的编码时间也比较少,而变化所花费的时间与表结构的调整所花费的时间是正比关系。这个关系将在复杂度分析时进一步说明。接下来看编写该表与其他表的业务关系代码和编写界面代码部分,这个2个阶段所使用的知识繁多,并且涉及的知识面也很广,是项目中花费时间最多的地方。但是在实际项目开发中并没有再对这两个步骤进行更细的分解的过程。 
     现在可以得出一个这样的结论,工作量是与所使用的知识相关的。一个业务所使用的知识点越少,所涵盖的知识面越少,那么所耗费的工作量也会越少。由此,当需要提高工作效率时,尽量少的使用知识是一种有效的手段。但是在实际情况中,并不能有效的减少知识使用种类,只能在使用知识的熟练度上下工夫,一个开发者所掌握的知识熟练度越高,那么相对的工作量也就会越少,一个知识点的入门门槛越低,那么工作量也会越少。因此,设置工作量为G,知识点入门门槛为B,B1为交给新手人员开发的知识点,知识点总数为C,P1为高级开发人数的,P2为新手人数,那么G = ( C - B )/P1 + ( B - B1 ) / P1 + B1 / P2 。 
     对知识点分析完后,再对业务的复杂度进行分析,知识点的应用可以看作是开发中的横切方向的话,那业务的复杂度就是开发中的纵切方向,业务的复杂度贯穿了所有的开发步骤。 
     在本文中,从数据的应用着手,来分析业务的复杂度。在项目开发中,经常要遇到"类型"这样的业务点,例如职务。对于这一类业务,其主要开发时间就花费在"对于单表的增删改查"上。另一种类型的业务,其复杂度高一点,主要应用于该表需要与另一个表进行组合,然后产生一种"所属"的关系,例如权限,角色等,其主要开发时间就花费在"对于多个表的所属关系的增删改查"上。还有一种类型的业务,主要是将多个表的数据进行组合转换后输出,例如报表,CMS的模板解析等,其主要开发时间就花费在"对于多个表数据的监测和重组上",最后一种类型的业务,主要是为数据附加上状态,例如工作流等,其主要开发时间就花费在"对于数据的不同状态的处理上"。 
    (责编:fanwei)  声明:凡注明CIO时代网(www.ciotimes.com)之作品(文字、图片、图表),转载请务必注明出处为CIO时代网(www.ciotimes.com),违者本网将依法追究责任。