笔者涉足项目管理已有一段时间,而且通过CMMI培训和实践,笔者对项目管理中的需求获取、人员配置以及项目管理中需要注意的问题有一些想法,在此与大家共享之。
一. 需求获取
需求开发在CMMI中有一个专门的过程域来描述,它在项目管理过程中也是很重要的一块,因为后续的设计、开发等都是基于需求。如果需求获取不正确或在需求开发过程中很多功能没有挖掘出来的话,那么在后期选择弥补时,将会造成项目延期以及成本的大幅度增加。
需求开发的目的是产生和分析客户、产品和产品组件需求。需求是客户在项目立项时就有的一个远景,在项目管理过程中它得到不断的变更和细化。客户根据需求会决定在整个项目的需求中,要承办方具体要做些什么,即承办方的任务, 承办方具体要实现哪些需求。 承办方在明确了需求后,就会开始后期的设计、开发、测试、部署等工作。
需求获取的目的是通过各种途径获取用户的需求信息,由于在实际工作中,大部分客户是无法完整地讲述其需求,因此需求获取是一件看似简单,做起来很难的一件事情。在需求获取过程中,主要需要弄清楚3个问题,即:明确需要获取的信息(What)、明确所获取信息的来源和渠道(Where)和怎样获取需求(How)。下面我们分别对这三点进行讲述。
1、明确需要获取的信息(What)
需求分析师应在需求获取前明确需要获取的信息,以确保在实施需求获取时有的放矢。
通常需求获取要获取的信息包括三大类:
1)与问题域相关的背景信息(如业务资料,组织结构图,业务处理流程等);
2)与要求解决的问题直接相关的信息;
3)用户对系统的特别期望与施加的任何约束信息。
2、明确所获取信息的来源和渠道(Where)
接着需求分析师还应确定获取需求信息的来源与渠道,以提高需求分析师在需求获取阶段的工作效率,使得所收集的信息更加有价值、更加全面。
需求信息的来源通常包括:
1)来自客户的需求:
a) 旧系统的用户或客户对系统安装、使用、维护、管理等方面的需求;
b) 系统的潜在用户或客户对系统的需求。
2)竞争对手的产品优势与不足;
3)国家政策、业务规则以及相关行业标准;
4)实施产品设计所需满足的需求;
5)执行测试验证工作所需满足的需求;
6)实施系统安装、维护所需满足的需求。
获取需求信息的渠道包括:
1)用户或客户;
2)公司研发管理部门;
3)公司技术管理部门
4)项目实施部门;
5)营销管理部门;
6)旧有系统的研发项目组;
7) 来自项目组内。
3、怎样获取需求(How)
接下来项目经理应选择至少一种需求获取技术获取相关的需求,作为需求分析的依据。需求获取技术包括但不限于:
1) 用户访谈
用户访谈的形式包括结构化和非结构化两种。结构化是指事先准备好一系列问题,有针对性地进行;非结构化是只列出一个粗略的想法,根据访谈的具体情况进行发挥。有效的访谈需要灵活的结合这两种方法。
用户访谈具有很好的灵活性,有较广的应用范围,但实际操作时存在许多困难,例如客户经常很忙,难以获得充足的访谈时间;客户访谈需要需求分析师有很强的沟通能力,同时也要求需求分析师有足够的相关业务领域知识。
2) 用户调查
用户调查是通过精心设计提问问题形成调查问卷,然后下发到相关人员手中,让他们填写答案,来获取用户需求。
用户调查的方法最大的缺点是缺乏灵活性,由于缺乏面多面的交流,所获取的信息量也比较有限。因此在实际工作中,我们建议可以先采用用户调查的方式获取一定量的信息,然后有针对性地开展用户访谈。
3) 现场观摩用户的工作流程,观察用户的实际操