[摘要]:众所皆知,项目管理的三大主要任务就是:计划、组织和控制。在这三大任务中,组织是其中的核心和钮带。所以要使一个项目获得成功,良好、高效的组织环境是成功的第一要素。据统计,在我们软件开发项目中,项目失败有一个很主要的原因就是由于项目组织结构设计不合理,责任分工不明确,组织运作效率不高等造成的。然而在大型的软件开发项目中,要如何才能设计和营造一个良好的组织环境呢?是每一位项目经理和项目管理人员必须首先要解决的问题。[关键字]:PM(项目经理)、CSA(软件架构师)、SA(设计师)、TestManager(测试经理)、Tester(测试员)、Developer(程序员)、Customer(客户代表)、Consultant(咨询顾问)一、项目组织概述项目组织是保证项目正常实施的组织保证体系,就项目这种一次性任务而言,项目组织建设包括从组织设计、组织运行、组织更新到组织终结这样一个生命周期。项目管理要在有限的时间、空间和预算范围内将大量物资、设备和人力组织在一起,按计划实施项目目标,必须建立合理的项目组织。1、项目组织结构设置原则(1)目的性原则项目组织机构设置的根本目的,是为了产生组织功能实现项目目标。从这一根本目的出发,就应因目标设事,因事设岗,因职责定权力。(2)精于高效大多数项目组织是一个临时性组织,项目结束后就要解散,因此,项目组织应精干高效,力求一专多能,一人多职,应着眼于使用和学习锻炼相结合,以提高人员素质。(3)项目组织与企业组织一体化原则项目组织往往是企业组织的有机组成部分,企业是它的母体,项目组织是由企业组建的,项目管理人员来自企业,项目组织解体后,其人员仍回企业,所以项目的组织形式与企业的组织形式密切有关。2、常见的项目组织结构类型有:(1)职能组织型:该结构呈金字塔形,高层管理者位于金字塔的顶部,中层和底层管理者则沿着塔身向下分布。公司的经营活动按照设计、生产、营销和财务等职能划分成部门;一个项目可以作为公司中某个职能部门的一部分,这个部门应该是对项目的实施最有帮助或最有可能使项目成功的部门,例如开发一个新产品项目可以被安排在技术部门的下面,直接由技术部门经理负责。(2)矩阵组织型:现代大型项目中应用最广泛的新型组织形式,它是职能组织型和项目组织型的结合,将职能组织型的纵向优势和项目组织型的横向优势有效结合起来。一个矩阵组织型由垂直的职能部门和水平的不同项目组结合而成一个矩阵,把集权和分权结合起来,从而加强了各职能部门同各项目之间的协作关系。(3)项目组织型:在这种组织形式中,每个项目就如同一个微型公司那样运作,项目组的成员来自不同的部门,完成每个项目所需的资源完全分配给这个项目,专门为该项目服务。这种组织在大型软件开发中应用较多。下面,我们将三种常见组织类型进行一个全面比较(见表一),以便更好地根据自己企业和项目的特点,选择和设计项目的组织结构。3、项目组织结构类型的选择前面介绍的是项目组织经常采用的几种组织结构形式,除了这几种常见的组织结构之外,还可能存在其他组织结构形式。通过前面的介绍,大家可以看出,每一种组织结构形式都有其优点、缺点和适用条件,没有一种万能的,最好的组织结构形式。对不同的项目,应根据项目具体目标、任务条件、项目环境等因素进行分析、比较,设计或选择最合适的组织结构形式。一般来说,部门控制式(职能式)的组织结构适用于项目规模小、专业面窄、以技术为重点的项目;如果一个组织经常有多个类似的、大型的、重要的、复杂的项目,应采用项目式的组织结构;如果一个组织经常有多个内容差别较大、技术复杂、要求利用多个职能部门资源时,比较适合选择矩阵式组织结构。下图为影响项目组织类型选择的因素对照表。二、大型软件项目的组织类型选择1、大型软件项目的特点对于大型应用软件开发项目,如中国移动的BI系统(见附件一),中国电信的BSS系统,中国移动的BOSS系统、中国联通的运营支撑系统等,尤其是中国移动BI项目。都有几个非常明显的特征:(1)、需求不确定性,客户早期对项目的认知比较低,不同用户对项目目标有不同意见,对项目的人员投入较少。(2)、应用目前国际先进新技术多:数据仓库技术(DataWarehouse)、多维分析(OnLineAnalysisProcess)、数据挖掘(DataMining)、系统稳定性要求高。(3)、系统结构复杂、工作量大、风险大、项目周期长、投资效益周期长。(4)、项目规模大,涉及的项目干系人多,如湖北移动经营分析系统项目相关的项目有:湖北移动经营分析系统与BOSS系统接口项目,新疆移动BI工程项目、青海移动BI工程项目,湖北移动BOSS扩容改造项目,湖北移动经营分析系统系统集成项目,硬件厂商,中间件提供商,客户各部门单位。(5)、项目组人数多且流动性大,新员工较多,技术风险大。(6)、项目时间紧迫。2、大型软件项目组织类型的选择根据自身项目的特点,在大型软件开发项目中一般都有用户需求不明确,技术日新月异,时间紧迫(一般是限定工期)、复杂度高等特点。要完成项目的目标。这就要求项目组织要能高效运作,对外部需求要能做出迅速响应,对关健问题要能准确决策。所以项目型组织是优先选择。项目型组织示意图如下:三、大型软件项目的组织设计项目组织类型选择完了以后,只能说是从理论上选定了一个组织的方向,但并不能马上生硬的运用到项目中。这里就需要对项目组织进行合理的设计了。特别对于参与人数和参与方都比较多的项目,项目组织设计的优劣,直接影响到项目的进度、费用和质量。乃至项目的成功与否。在大型软件项目组织设计中,例如,在湖北移动BI项目组织设计中,我们充分结合了该项目的管理特点(详见附件二)。基于此我们要考虑以下几个原则:1、组织结构扁平化原则,以利于项目组内的相互沟通;2、组织划分要专业化原则,以利于技术问题的解决;3、组织设计灵活性原则,以利于人员的正常流动;3、整体组织与内部组织相结合原则,以利于统筹兼顾。在大型应用软件开发项目组织设计中,我们首先要从整体考虑项目组织的组成,然后再重点考虑项目内部组织的结构。从整体上考虑,可分分为若干个按项目小组,如:用户代表组,管理组、开发组、质量保证组、支持组等。如下图所示:*用户组中一般包括:用户方的项目经理、用户方技术工程师、最终使用用户、咨询顾问等。如下图所示:图四:用户组角色组成图说明:在较大型的软件开发项目中,用户一般都会聘请一些有经验的咨询顾问,以提供项目指导。咨询顾问包括技术顾问和管理顾问。如在2002年福建移动和江苏移动的BOSS项目中,就请了HP作为该项目的咨询顾问。*管理组中一般包括:高层经理(或项目总监)、项目经理、项目管理人员等。如下图如示:例如:2003年,中国移动公司的BI项目中,开发组中的小组设置就是在架构师的统一规划下,编码实现分为四个开发小组:数据仓库小组、联机分析小组、数据挖掘小组、元数据开发小组。*质量保证组一般包括:测试经理、QA经理、测试员等。如下图如示:那么,从项目实际运作的角度来考虑,项目组织更多指项目实施方的组织,在项目实施方组织结构必需包含项目组内部的管理层次和工作的汇报关系等信息,即我们通常所说的项目内部组织结构图。如下图所示:图九:项目内部组织结构图项目组织结构设计完成后,相当于人的一个基本骨架基本形成。紧接着还必须为项目组织中各种角色的岗位职责进行清晰描述,这样才能构成一个完整的机体。在软件项目中,主要角色和职责描述如下:高层经理:审核批准项目实施计划;负责项目实施过程中的重大事件的决策;根据项目过程中的进度、质量、技术、资源、风险等实行宏观监控;协调项目组织中各相关方的工作关系。项目经理:根据项目进展及工作要求整合工作计划,并监督实施,控制进度;协调项目组内人员的分工合作,资源分配;向公司汇报项目状况,提出建议及改进措施;与用户进行有效的沟通协调,并争取关健用户的支持。软件架构师:负责用户需求汇总和分析;负责系统总体设计;指导设计师的详细设计;配合系统的集成测试。测试小组:负责计划和实施对软件的单独系统测试,以确定其软件产品是否满足其需求;质量小组:负责计划和实施项目的质量保证活动,以确保软件开发活动遵循软件过程规程和标准。配置经理:负责计划、协调和实施项目的正规配置管理活动。系统工程师:负责说明系统需求,分配系统需求到硬件、软件和其他部件,规格说明硬件、软件和其他部件之间的接口,并监督这些部件的设计和开发,以确保符合规格。客户代表:负责项目原始需求的收集;参与需求评审和需求变更控制;负责系统确认测试的实施。注:在中型、小型的软件项目组织中,部分角色可以兼任,但是SQA和系统测试小组应保持其独立运行。SQA组(质量小组)可越过项目经理向高层经理直接进行报告;测试小组也可不依赖软件开发人员,来计划和准备系统验收测试用例以及测试规程。另外,角色种类还要依据具体项目而定,例如在有的软件开发项目中,还有设置有产品经理角色。四、软件项目生命周期及参与角色软件开发项目中,有几种常见的生命周期模型,如瀑布模型、增量模型,螺旋模型、原型开发、倒V模型等。不同生命周期的应用要根据项目所处的环境而定。在本文中,将以倒V模型为例进行说明。倒V模型按软件生命周期共分为10个阶段,分别为:需求搜集;需求分析;系统分析;概要设计;详细设计;编码和单元测试;组件测试;集成测试;系统测试;验收。示例图如下:图十:软件生命周期-倒V型图从上图中可以出倒V型图中的左边活务与右边活务是有着一种对应关系,也即左边的输出为右边的输入条件。从投入产出角度来分析,左边为投入,右边为产出。整个过程就构成了一个完整的生命周期模型图。项目组织结构的设置,首先依赖于软件项目各阶段的活动类型及参与人员。下面就将各阶段的主要活动,及所需角色归类如下:表二:软件开发周期与角色对照表从上面的表格中,我们可以清晰的看出,软件开发中不同角色分工是不一样的。对于一个软件开发项目来说,前四个阶段是至关重要的,所以总体架构师CSA一般都要参加,在第四、五、六阶段一般程序员参加较多,在后面测试阶段测试员参加较多。从整体来看PM和CSA是项目中的两个重要角色,在项目前和项目收尾时都有参加。这也正体现了软件开发过程中开头和收尾是两个控制重点。另外,项目经理要要按不同阶段适时运用人员,恰当掌握用人标准。一般来说,软件项目不同阶段不同层次技术人员的参与情况是不一样的。下图是典型的软件开发人员参与情况曲线:五、项目经理(PM)与总体架构师(CSA)的职责区别作为软件项目管理中的两个重要角色PM与CSA两者缺一不可。从管理上应该是CSA服从PM的领导,CSA应该给PM提供技术支持。从技术上来说,CSA是项目的总负责,同时CSA也行使部分管理权力,如对开发小组长的管理。CSA可以理解为技术经理的角色。但PM与CSA在软件项目实施过程当中到底分工如何呢?我们将用下面一个表格进行说明。六、大型软件项目的公司组织体系和项目组织建设(一)、公司项目管理组织体系任何项目组织的有效实施均离不开公司组织的支持体系。就湖北移动BI项目的组织建设和管理,与公司的组织体系的设置相关紧密。我公司的项目管理组织体系为:项目管理部以分管领导为核心,项目管理部经理及项目经理、项目信息管理员、项目成本管理员组成。A、具体组织支持体系分工与职责如下:1.项目分管领导负责项目经理任命,项目基准计划变更的审批。2.项目管理部经理2.1执行行业公司内各项目的具体工作:由销售经理发起销售项目的立项,合同签订后经项目分管领导批示实施项目立项,确定项目经理的项目立项工作并报送公司运营管理中心审批备案;2.2监督项目经理、项目管理部成员的日常各项工作;(审核周报、月报等工作,及时协调项目实施出现的问题,发现异常情况要及时处理并向分管领导汇报)2.3对外沟通工作,建立和保持对外接口,上、下级信息承上启下沟通;2.4员工沟通工作,要深入项目,同项目成员交流,了解员工心态,做好项目成员的思想工作,帮助解答员工在工作上的困惑和难题,营造健康积极工作氛围;2.5项目管理中的临时事件,对工作中非程序化