IT企业项目团队组建和实施流程
作者: 来源: 文字大小:[大][中][小]
由于中小IT企业主要从事应用软件开发和一些特殊行业IT项目的实施,其需求相对复杂,而且经常变化,其开发和实施过程中的可变因素也比较多,因此,如何组织项目团队,既要保证质量、又要提高效率,是项目管理者需要考虑的最重要的问题。。
作为一个软件开发企业,人力资源是一个公司最重要的资源之一,我们需要将技术人员进行分类、尽量作到分工明确;由于公司同时进行的项目很多,应该保证各个项目能共享公司为数不多的“专家”级资源;在设计和开发过程中,尽量保证各个项目的技术、风格、质量基本一致,并且要将项目的质量提升到公司级别,而不仅仅是反映项目组的水平。
以下是本人在项目的实践过程中的一些经验和总结,并根据中小IT企业的实际情况对项目团队组建以及项目实施流程的探索,愿它能给中小IT企业的管理层和项目领导者提供一些参考。
一、橄榄法
橄榄法则是本人在项目实践中总结出的一套人力资源分配方法,也是一套比较实用的项目实施过程方法,它主要是为了解决项目质量控制,项目组间资源共享等问题。其基本思路是:
1、 项目的入口同一起点,即:所有项目售前、需求分析阶段由“专家”团队承担。
2、 系统的设计保证质量,即:系统的设计要汇聚公司的优秀资源,既要考虑系统的需求,又要考虑开发成本,还要结合公司现有的开发技术能力和已有的技术资源。
3、 系统的开发并行实施,即:系统的开发和编码阶段,由开发部门进行全盘考虑和统一安排,根据项目的进度要求灵活组建开发团队。
4、 系统的出口归并统一,即:系统测试必须严格把关,由测试部门承担,保证所有系统质量的一致性。系统的发布通过统一的出口,包括包装(如果需要)和各种附加文档(如:使用手册、系统说明书)。
传统方法是以项目组为单位,项目组人员基本上从开始到最后基本上是固定的,橄榄法是以项目的不同阶段来组织不同的团队,其人员的数量和成员本身随着项目的进程不停的调整。
二、项目角色:
有效的项目团队由担当各种角色的人员所组成。每位成员扮演一个或多个角色,常见的一些项目角色包括:
角色 |
描述 |
来源 |
项目经理 |
项目管理人员,要求具有良好的沟通能力和管理能力 |
开发部或专家库 |
客户经理 |
市场人员 |
市场部 |
技术经理 |
开发过程中负责技术管理的人员 |
开发部或专家库 |
售前工程师 |
知识全面、表达能力优秀 |
专家库 |
需求分析师 |
业务专家 |
专家库 |
系统构架师 |
技术能力突出,有丰富的项目经验 |
专家库 |
界面设计师 |
具有一定的业务知识,能快速设计用户界面 |
专家库 |
系统设计师 |
设计人员 |
专家库 |
数据库设计师 |
数据库设计人员 |
专家库 |
数据库管理员 |
DBA |
开发部 |
技术支持工程师 |
硬件、网络支撑 |
系统集成部 |
程序员 |
包括:界面开发工程师、业务逻辑开发工程师、数据库开发工程师等 |
开发部 |
质量保证工程师 |
质量管理和质量控制人员 |
质量管理部 |
测试人员 |
对业务非常熟悉,能从功能和性能方面测试系统 |
质量管理部 |
产品包装师 |
包装产品,包括各种交付的文档 |
产品部 |
以上每个角色都应该有清晰的工作定位。并要求具有相应的技能,能在项目的各个阶段出色完成任务,这些称为人力资源,是保证项目成功的最基本的条件。
三、项目前期的组织:
项目前期主要指的是项目业务需求调研、包括配合用户制定项目建设方案、技术规范书、配合市场人员进行售前技术交流等环节,此阶段应该组织由售前工程师、需求分析师(业务专家)以及系统构架师等组成一个临时小组,负责跟踪项目。这个小组根据项目的大小和客户的要求确定小组成员,一般由3—5名成员组成。根据客户的要求,既可以是全职的,也可以是兼职的。
项目前期小组的工作是项目的开始,这个小组工作成绩的优劣、工作质量的高低,将直接影响项目的成败。因此,从管理层的角度,一定要重视这个环节。
项目前期小组需要完成的工作包括以下方面:
1、 客户的各种项目前期要求,如:方案介绍、业务需求编写等
2、 提交项目可行性分析报告,包括成本/效益分析
3、 提交项目建议方案
4、 提交业务需求说明书或需求分析说明书
四、系统设计阶段
系统设计是决定项目或软件系统“怎样做”的过程,这个过程回答了系统应该如何实现的问题。从软件工程的角度,设计阶段大约是整个项目开发成本的25%,所以,设计团队以及该团队的工作成绩对于整个系统来说至关重要。
设计团队一般由3—8名设计人员组成,从这个阶段起,项目需要一名项目经理,行使项目组的各种管理职能。设计团队的成员具体包括:
-
1名项目经理
-
包括1—2名项目前期成员
-
1名系统构架师
-
2—4名设计人员
-
1名数据库设计人员
-
1名用户界面设计人员组成
设计团队需要完成的工作包括:
1、 项目开发计划
2、 确定系统软硬件配置最佳方案
3、 确定系统开发平台以及开发工具
4、 确定系统软件结构
5、 确定系统功能模块以及各个模块之间的关系
6、 确定系统测试方案
7、 提交系统数据库设计方案
8、 提交系统概要设计文档
由于应用软件需求经常变化,因此设计需要考虑系统可扩展性,并需要在设计过程中对于重要的环节和用户进行及时沟通。
五、编码和系统实现阶段
将用户的需求变成真正可用的软件系统,是通过编码和系统实现阶段来完成的。虽然软件的质量主要取决于系统设计的质量,但是编码的途径和实现的具体方法对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。
这个阶段要根据用户对项目进度的要求灵活组织开发团队,一般5—15左右。为了工作的连贯性,同时也为了解决在开发过程中用户需求有可能变化的因素,开发团队因该保留1—3名设计团队的成员。
开发过程中,项目经理的角色非常重要,项目经理负责项目组开发人员的日常管理,控制项目的进度,负责和设计部门、市场部门以及客户之间进行必要的沟通。这个阶段通常是多个部门的人员共同组成一个项目组,因此,项目管理的一定要保证统一管理,理想状态是项目经理全权负责项目组人员的人员工作安排、业绩考核、工资奖金等,因为项目经理最了解项目组成员的工作态度和工作业绩。
一般在大型项目开发团队中,应该设立专门的技术经理岗位,负责对项目组的技术方案进行管控,技术经理最好是由设计团队中抽调出来。技术经理在项目开发过程中需要注意程序风格、编码规范等问题,并必须进行有效的代码管理(版本管理)。
开发过程还应该进行系统的单元测试工作,确保各个独立模块功能的正确性和性能满足需求说明书的要求。
开发团队应该完成的工作包括:
1、 系统的实现代码编写
2、 单元测试
3、 提交源代码清单
4、 提交单元测试报告
六、系统测试、软件打包阶段
系统测试阶段在整个软件生存周期中是占据总工作量最大的一个环节,统计资料表明在40%左右,有的时候还可能是其他过程的几倍,因此,必须高度重视软件的测试工作。
软件的测试本身是发现软件中的错误,但是发现错误是为了使开发的系统完全满足用户的需求,因此测试工作还伴随着诊断、改正错误、调试等复杂过程,测试也是软件开发最困难的工作。
测试这个环节,参与人员除了测试人员以外,还应该包括几乎所有的开发人员,同时我们经常可以把这个环节看作是编码工作的延续,直到完成集成测试、通过测试验收,形成最后的发布版本。
经过测试、稳定的软件版本包括相关的文档可以进行打包,作为软件开发的出口。
这个阶段,必须严格把关,确保各个开发组完成的软件都是高质量的、同一个水平层次的软件系统。
这个阶段完成的工作包括:
1、 更改情况说明
2、 集成测试报告
3、 软件发布版本
4、 系统使用说明书
5、 系统安装配置说明书
七、工程施工及软件安装阶段
由于从事的应用软件的开发,因此,在开发完成之后经常会有系统集成、软件的安装等工作。这个阶段还经常伴随着新的业务需求和本地化需求的产生,因此将会有一部分的开发工作需要在这个阶段完成。
工程实施阶段需要的人员包括:
-
1名项目经理
-
多名技术支持工程师(硬件、网络支撑)
-
2—4名软件开发人员
八、技术部门组织建议
过去项目团队组织模式通常是按照项目组为单位,由项目组从头到尾负责整个项目的需求、设计、开发、实施过程。根据以上讨论,由于应用软件开发的特点,这样的组织模式已经不能满足高效率、高质量的要求。但是如果完全实行设计和开发完全分开,又几乎不可能达到设计出完美的设计文档、开发只埋头写代码的理想状态。
根据实际情况,一般公司的技术人员主要集中在系统分析部、软件开发部、系统集成部、测试部。系统分析部应该主抓项目前期、系统设计两个环节。开发部应该主抓系统实现和编码、工程实施等环节。
在开发阶段,系统分析部以设计人员派出方式参与具体开发过程,同时,在开发过程中,系统分析部应该设立对一个非常设技术机构(包括开发部的项目经理),负责对项目的关键开发过程进行评审、并对项目的开发过程进行技术把关。