该帖子同步发自:(qiaodong的博客 访问该博客) 第4章 企业级项目管理体系建设中的几个重要问题
4.1 产品管理与项目管理的关系
4.1.1 产品管理过程与项目管理过程的矩阵式关系 在前一章中,我们已经分析了企业中产品管理、项目管理和资源管理这三条主要管理线的相互关系,同时也强调了产品管理线中所包含的产品工程方法对整个管理模式的影响。单就产品管理和项目管理这两者的关系来说,它们就形成了矩阵式的关系。下面就这两者的关系,作进一步的剖析。 项目管理与产品管理是紧密相关而又不同的管理内容。在企业中,产品管理是主线,而产品生命周期中的具体阶段内容,则可以通过项目实现。产品管理是项目管理的目标,而项目管理是产品管理的实现手段。同时,产品生产工艺特点决定了项目的基本过程,但具体的生产过程组织,只有通过项目管理才能完成。在具体项目中,往往两者会同时存在,特别是在提供服务的项目中,也包含了服务产品的生产过程,项目管理者必须在非常清楚产品管理和项目管理各自的管理内容的前提下,将两者有机的结合起来,才能同时满足各方面的管理要求。 以软件项目为例,看看软件工程方法与项目管理方法之间的关系。一提到软件工程,大家自然就会想到软件开发、项目组、想到新产品开发有关的种种相关的管理内容。现在把项目管理和软件工程联系起来,就更让人想到软件开发中的项目管理、项目组的管理。那么,项目管理和软件工程之间到底应该是什么关系呢? 我们首先来回顾一下软件工程的有关内容。软件工程是针对软件这一具有其特殊性质的产品的工程化方法。它关注的是软件产品的生命周期,包括从需求、设计、编程、测试、到运营和升级维护共六个主要阶段,而且随着软件产品的不断升级维护,还会使同一软件产品经历多次这样的生命周期,软件工程在产品的生命周期中的各个阶段中,提供了一整套的工程化的方法,来指导软件人员的工作。因此可以说,软件工程是一种围绕软件产品生命周期的工程化方法,是软件产品的生产工艺。 我们再来看一下项目管理。项目管理是针对一个项目的管理方法,它关注的是项目的生命周期,包括从项目的启动、计划、执行,到控制和收尾共五个主要的项目过程。在不同的过程中都涉及到对时间、人员、成本、质量、风险等内容的管理,强调的是项目的绩效,通过有效的项目管理来完成对项目提出的需求,这当中也包括提交软件产品。因此,项目管理是关注于项目生命周期的管理方法。 既然软件工程是围绕软件产品管理的,项目管理是围绕项目过程的,那么自然也就容易明确它们之间的关系: 1, 在软件产品的生命周期中,由于软件产品的性质、用途、规模等方面的差异,软件生命周期和项目生命周期可能会重合,一个软件的生命周期在一个项目周期结束时也随之结束。而在更多情况下,一个软件的生命周期会通过多个项目来完成,例如在软件的可行性分析阶段,可以以一个调研项目的方式来实现,在软件的设计、编程阶段,可以通过一个开发项目的方式来管理,在测试阶段也可以单独组织一个测试项目,在运营阶段,则主要通过一般的运营管理而非项目管理的方式来进行,到了升级维护阶段,仍然可以根据具体要求通过组织项目的方式来完成,或者随着软件产品进入下一个生命周期,而又启动新的项目。产品生命周期与项目生命周期之间的这种差别,在项目管理理论中是被特别强调的,在项目管理中应该充分考虑项目的成果与整个产品生命周期的关系,而不应该孤立、片面的强调项目周期的要求。 2, 产品工艺的特点决定着项目的基本过程。软件过程有其自身的科学规律,当项目管理涉及到软件内容时,应该给予充分的重视。项目管理的最终目的还是要提交符合要求的产品,在软件工程中,已经总结了软件产品的许多规律性的内容,并提出了一整套的工程化方法,因此,在软件项目的管理中,也必须遵循这种规律。在项目管理理论中,也一再强调项目管理者在具体应用领域中的专业知识,在项目的不同阶段,也都强调结合产品的要求而制定不同的工作内容,获得相应的资源,采用适当的管理方法。产品自身的规律对项目管理的具体实践有着极其重要的影响,产品是目标,实现过程是手段。要做好软件项目的管理,就必须首先对软件工程具有深刻的理解。 3, 在软件工程中,也涉及到一些管理方面的问题,与项目管理有一些重叠的部分。这是很自然的,既然是一种工程化的方法,就一定要提到工程管理的问题,但是在软件工程中提到的管理要求,只涉及到与工程方法紧密相关的、有针对性的方法,而项目管理知识体系是一个通用的知识框架,在内容上与软件工程中的管理内容是不重复的,而是互相补充的。例如在项目管理知识体系中强调人力资源管理的有关管理方法,而在软件工程中则强调系统分析人员、编程人员、测试人员等不同角色在不同工程阶段的责任。在软件项目管理中,应充分注意这两者的有机结合。 综上所述,在软件开发项目中,需求分析、概要设计、详细设计、编码、测试等工作,都属于产品管理的范畴,这些工作都是由于软件工程的要求而存在的,是由相应的工程规范来约束的,软件工程规范是软件产品的生产工艺,但是项目的计划、组织、控制,项目中的范围管理、时间管理、成本管理、质量管理等工作过程,则是属于项目管理的范畴。也就是说,产品管理关注内容,项目管理关注过程。因此,以软件工程本身的科学规律作为基本出发点,结合通用的项目管理知识体系的基本要求,采用适合软件产品自身特点的管理方法,是真正管理好软件项目和软件产品的最终出路。目前,许多软件企业正在热衷于CMM的评级,其实CMM的各个领域的内容,无不同时反映着软件工程和项目管理的共同要求,它正在试图将两者有机的结合起来,在这个特定的软件开发领域中形成规范的过程方法。 在企业内,必须要协调好产品与项目之间的管理关系。对于同时提供产品和服务的企业,或者企业内部同时提供产品和服务的部门来说,产品管理与项目管理结合,就会产生多对多的关系,即一个项目会涉及多个产品,而一个产品可能会在多个项目中被使用。这种多对多的关系,也是一种矩阵关系:
在这种结构中,项目经理必须能够有效的将多个产品组织起来,达成项目目标,同时保证对每个产品的影响,都能与产品自身发展路线保持一致。而对产品线负责的管理者,则必须在确保对产品的长期发展产生有利影响的前提下,能够积极支持项目的需要。在处理产品管理与项目管理的两者关系时,容易出现的错误主要有两方面:一是产品的设计缺乏灵活性,不能有效支持项目中各种个性化的要求;二是项目只关注项目自身的目标,不考虑产品长期发展的要求,结果影响了产品后续的健康发展。在项目的集成管理这一知识领域中,也强调项目与产品的结合,在项目中也要同时考虑产品的全生命周期的成本,不能只考虑项目中的短期局部成本,例如软件开发项目中,为了绕开一些开发过程中的技术难点,引入了某个开发工具,开发项目的成本降低了,但是在以后的软件销售中,由于必须配套使用该开发工具的支持模块,结果导致客户的成本的增加,削弱了产品的市场竞争能力。 不论在哪个行业、哪个企业中,管理好项目需求与产品功能的对应关系,是协调好矩阵式模式中项目与产品两条管理线的重要环节。如果企业中的产品是由职能部门管理的,那么这种矩阵关系的管理,在企业中就表现为项目过程中各职能部门间的配合,表现为跨部门工作协调。因此,不论企业是否明确的组织了项目组、使用项目管理的方法,实际都存在这种矩阵式关系,它直接关系到企业的基本管理模式,是企业管理中的大问题。
举例 某企业内部的IT部门,负责企业中的各种应用软件的开发和维护。企业中各个生产管理部门都会向IT部门提出自己的应用需求,具体的开发任务都表现为项目需求。因此,该部门在软件开发方面采用了强矩阵的组织方式,成立了一个开发部,负责为项目提供人力资源,具体项目中的管理都是由项目经理负责,同时成立了一个项目管理办公室,负责总体跟踪、监控各个项目,没有单独的负责内部软件系统产品管理的部门。在实际工作当中,该部门所承担的项目开发任务,都是基于以前自己的开发成果,自行开发的各个软件系统都是不断升级、发展的,许多新的应用需求都是在原有应用系统的基础上实现的。这种情况下,软件开发部门就必须自己做好产品管理,控制好各个应用系统的发展路线,保持整体应用架构的合理性,否则就无法从根本上满足不断涌现的具体项目需求,更不能有效支持企业的业务发展。经过一段时期的运行,发现这种方式存在着很大的问题,在整个公司中,形成了重项目管理、轻产品管理的状况,对各个软件系统的整体发展方向、总体技术方向、产品版本演变的控制,都没有形成有效的管理,同一产品出现多个不同的版本分支,给产品版本管理带来了很大的混乱。 随后,该IT部门调整了内部的组织方式,基于主要的应用系统组成了几个系统组,每个系统组都指定了具体负责人,分别负责管理其中的若干软件系统,形成了矩阵结构中的纵向管理线路,当项目涉及多个软件系统时,在部门内专门立项,形成了矩阵结构中的横向的管理线路,既有纵向的产品管理的具体组织方式,又有横向的项目管理方式,在产品管理与项目管理之间取得了一定的平衡,形成了平衡矩阵的组织方式。 这样,在平衡矩阵的组织方式下,项目组从项目需求出发,形成整体的解决方案,基于这样的整体解决方案,将项目需求分解成对各个软件系统的需求,各个软件系统内部的技术解决方案,则由系统组的负责人把关。这样,在项目中就实现了矩阵管理的模式,既有包含各个相关系统的具体技术方案和版本管理的产品管理,又有项目经理负责的满足项目目标要求和对项目过程进行管理的项目管理。 在具体操作过程中,为了保证这种矩阵式管理的一致性,避免分解后的各系统组的工作与整体项目目标的脱节,该部门内设计了项目需求与系统功能的跟踪表,在开发过程中,首先对针对项目需求进行需求分析,然后对应着现有的各个软件系统将需求处理过程进行分解,从而得到对各个系统本身的功能处理要求,再由各系统组根据本系统技术发展方向和版本管理计划,考虑具体的技术实现方案。这样,各系统组的设计保证了产品生命周期发展的需要,同时也能够满足项目的需求。
4.1.2 项目成果与产品管理的集成 项目管理与产品管理的关系中还有一个很重要的问题。在整个产品生命周期中,产品的研发,产品的每一次改进,往往都是以项目的方式来实现的,项目成果形成了新的产品或者是对原有产品的改进,这些新的产品又被纳入企业常规的企业活动当中,例如市场营销、产品销售、服务等,也就是我们在前面曾经提到的,产品生命周期中的许多环节,都是通过项目来推动的,项目的成果必须符合产品生命周期管理的总体要求。在PMBOK中,就特别强调了项目成果与产品管理的集成。因此,无论在以产品为主的企业中,还是以项目为主的企业中,都必须充分关注产品与项目的关系,既能充分发挥产品的功能,又能保证满足项目的具体需求。 在以提供产品为主的企业中,产品管理是主线,必须首先确定产品线的发展规划,明确产品生命周期。这种情况下,产品的规划,不可能因为个别的用户需求而改变,它更关注的是满足市场的普遍需求。另一方面,为了使产品能够更好的被应用于用户的具体环境中,适应用户的多种个性化的要求,通常在产品中会提供多种适应性的功能,例如在DVD机中提供很多定制菜单,允许用户切换不同制式的切换等,还提供了多种输入、输出接口,是用户可以利用不同的连接方式来使用。在软件产品中,通常都会在产品中提供定制功能或客户化开发的应用接口(API),使客户可以在已有产品的基础上,根据自己的特殊需求进行二次加工,从而在具体的环境中运用好产品。 在产品用户一方,项目过程是主要的工作方式。他通常首先关心产品能否满足自身的具体需求,产品的生命周期不是主要关心的问题。但是当产品的使用周期长,而且将来还有升级换代的需求,那么也需要对产品的生命周期加以关注,了解产品发展的方向,考虑将来在产品升级中如何尽可能保护已有投资,降低升级的成本和风险。例如在软件用户当中,通常都会注意到软件产品所提供的二次开发的API,并关注产品升级中的兼容性,这一点通常是由产品厂家要保证的。如果升级过程中不能保证这种兼容,那么对于用户来说,就意味着很大的改造成本。 因此,无论是产品厂家,还是关注项目的用户,都必须明瞭产品与项目的关系,在设计产品的时候,就要考虑产品如何能够在项目中得到很好的应用,在项目中也要关注项目成果与产品的关系。如果这方面出现问题,产品的灵活性、适应性就可能受到限制,项目中的工作范围、工作成果及其以后的使用、维护就可能会受到影响。有些企业同时提供产品和项目实施服务,在项目中对于产品的边界会严格掌握,通常不会对产品本身作任何改动,只是基于产品提供的外部接口进行加工。如果客户的需求对产品的完善具有很大的参考价值,通常也是在项目之外,由负责产品的部门参考用户需求,另行组织产品的升级,通常不会在项目当中直接考虑产品升级的问题,以保证产品的发展不受具体项目需求的影响。 还有一种更为复杂的情况,就是既是产品开发者,同时也是用户。这种情况也是普遍存在的。例如企业中的软件开发部门,通常就是这样的角色,既要根据企业的长远发展来设计、开发应用系统,形成产品提供给企业使用,还要按照企业的要求配合管理各个应用系统的实施项目。既要管理产品规划和产品生命周期,保证系统能够具有很好的灵活性,能够满足不断发展、变化的应用需求,同时还要满足每个项目中具体的应用要求,支持企业的具体业务目标。这种情况的管理复杂度是最高的,往往在项目的过程中,就要同时兼顾产品规划的要求,同时满足产品管理和项目管理两方面的要求。
举例 某公司既提供软件产品,也提供基于产品的实施服务。在该公司内部,将技术部门划分成了产品部门和服务部门。产品部门与服务部门之间的关系,有些类似于两个公司。产品部门主要负责产品的研发,并为服务部门提供产品技术支持,同时也向其他合作伙伴提供类似的支持。而服务部门主要负责客户项目的实施,主要是基于公司自有产品的解决方案,在方案中同时还包括其他的产品,所以实际上类似一个集成商。当客户提出特别需求时,服务部门也提供基于其他厂家产品的解决方案。 产品部门和服务部门在合作过程中,产品部门向服务部门提供产品和相应的技术培训,教会服务部门如何运用其产品编写解决方案,组织技术开发和售后服务。服务部门在项目当中,基于产品的功能,根据客户的具体需求进行二次开发,满足客户的具体要求。服务部门定期总结项目情况,将客户所反映的产品问题、新的需求等,通报给产品部门,帮助产品部门改进产品。 因此,当服务项目完成实施任务后,通常还会有一件任务,就是将客户需求中具有典型代表性的内容进行归纳整理,并将项目中完成的开发成果全部提供给产品部门,向产品部门提出产品升级的需求和参考,产品部门则会经过评估后组织专门的产品升级工作,此项工作与具体项目无关。当然,产品部门也可能不接受服务部门反馈的新需求,或者是升级的内容并不完全针对某个项目的需求,而是综合多方的意见形成的更具有普遍性的需求。
4.1.3 产品、项目矩阵图 为了便于加强对产品开发过程的管理,理清产品发展过程与项目的关系,企业往往需要产品、项目的关系图,目地是明确产品生命周期中各个阶段所对应的项目之间的关系,特别是在同时承担产品管理和项目管理的企业部门中,需要管理好多种产品和许多不同的项目交织在一起的产品、项目矩阵。 在产品、项目矩阵图中,需要包含以下信息: 列出各个产品的产品树,说明产品不同型号、版本的发展演变关系。 建立每次产品版本升级时所对应的项目,注明项目中的基准版本和目标版本,这样就为产品树中的各个版本增加了过程属性。 如果一个项目同时涉及多个产品的升级,还可以通过项目建立相关产品版本的关联关系,以明确不同产品版本之间的配合关系。 因此,产品、项目矩阵图,同时涉及产品管理和项目管理,重点是在两者之间建立关系,这对于企业的生产过程的管理,是非常有帮助的。企业可以利用这一矩阵图,管理产品开发或投放市场的时间进度,管理同时存在的多个项目之间的配合关系,管理多个产品之间的配合关系,并且可以分析新增加的高优先级生产任务对已有项目计划的影响,从而分析出对产品管理计划的影响。 其中关于同时管理多个项目的内容,在项目组合管理中是比较常见的,但是项目往往是为产品管理目标服务的,所以产品之间的关联关系和产品版本演变过程中的依赖关系,是决定项目之间依赖关系的本质因素,这在基于众多自有产品作项目开发的情况下更为突出。因此,只有引入对产品树和产品关联关系的信息,通过产品、项目矩阵图,才能真正做好项目组合管理,为决策分析提供依据。
举例:产品、项目矩阵图 
产品、项目矩阵图,是企业产品管理和项目管理的综合视图,只有保证其内容的全面、准确、及时,才能使其发挥出应有的作用。图中的信息同时涉及产品管理、项目管理的信息,而且项目管理的信息中必然涉及企业资源、成本等信息,涉及的管理环节非常多,而且要求各个环节都能够及时更新信息,这样才能保证矩阵图能够反映真实情况,这对于企业的内部管理提出更高的要求。 为了实现这一矩阵图,通常都需要使用相应的管理工具,通过建立相应的管理信息系统,来采集产品和项目的基本信息,按照矩阵图中的逻辑关系来加工数据,并能以直观的方式呈现出来。当企业提出高优先级的生产任务时,可以利用该工具进行分析,看到对已有的产品、项目计划的影响,为企业内部协调、决策分析,提供有力的依据。
|