相信对很多业内人士来说,领导一个新的项目是一种激动人心的经历,也是公司管理层对其专业水平的肯定。当然,这也是一种让人感到有些紧张的经历。突然要处理一些自己可能并不很了解的事情,这的确会让人感到不知所措。这里我想根据我的经历谈谈我对项目管理的一点看法。
6月份,烟台港客运售票信息系统的项目正式开始。这是一个实时性非常强的项目,而且功能模块较多(500个左右),但从获取需求信息到正式运行却只有4个月的时间。其中包括基于因特网的远程售票系统,这一部分要涉及到分布式多层应用技术,而这对我们来说还很陌生。此外,还包括公司的网站和Web在线售、订票系统,涉及到在线支付。不得不说这是一个不小的挑战,能不能在限定的时间内按质量要求完成开发任务,我没有确切的把握。
一、需求调研&总体设计
这是我第一次接触这种规模比较大的软件项目,以至于一开始就出现了一些失误。比如,整个项目是在悄无声息中进行的,没有要求管理层召开正式的项目启动会议,开发小组的人员也没有全部到位,甚至于连一份简单的项目计划都没有!部门从别的项目组临时抽调了一位项目总监参加我们的需求分析与总体设计,他对业务比较熟悉,参与多个类似项目的研发工作,精通数据模型设计,算是我们中间的内行。初期主要就是依靠他一个人的工作,我们调研小组的其他成员(我和另外一名项目经理)只是协助做一些事情,主要是整理一下材料,与客户做一些简单的沟通。需求调研工作一共进行了三天!现在想起来都觉得不可思议,这个阶段工作结束的时候形成了一份非常简单的《用户需求说明书》,其实只是一份功能清单,连功能描述都没有。当时项目总监出差,我们负责项目的另一个项目经理也被调去参加其他项目的实施工作,实在没有人力来完成规范的需求文档。 很快我们进入总体设计阶段,项目总监开出了一份数据模型设计文档,包含了基本表和另外十几个核心业务相关的表和视图,罗列了几个关键的存储过程和触发器。此时,我也根据与用户的沟通做出了关键模块的用户界面,对功能也做了第一次大的调整。然后我们召开了一次正式的用户沟通会议,在功能设计上与用户取得了一致意见,此时项目已经进行了一个多月的时间(40天),人员基本到位,项目逐步进入正规。
二、详细设计与编码
根据公司的ISO9001文件,我们必须做出比较详细的《详细设计说明书》,这样的一份文档起码要有几百页。但是,由于我们是第一次接触客运售票这种业务,我个人认为不可能做出非常好的详细设计,因为我们对业务的认识程度不够,设计上可能会存在很大的不确定性。因此我不支持在详细设计的文档上花费太多的时间,我们把更多的精力放在核心功能模块的分析设计上。我们不断的围绕航班、售票的数据流进行讨论,同时对售票的并发、实时控制进行详细设计,对装车的算法反复论证,做优化设计。设计结束的时候,我们得到了一份核心模块的功能设计文档,开发人员对他负责的功能模块相关的业务也基本熟悉了。这就是敏捷设计,在兼顾规范的同时,更注重实用性,更注重核心功能的把握。 一切顺利,在大家的艰苦努力下,我们顺利完成了本地网售票系统基本框架的编码工作。太令人高兴了,我告诉团队的成员,我们可以休息一下了。但是,麻烦就在这时候出现了。
三、迭代开发阶段与项目的延期
9月份,终于完成了售票系统的“毛坯”,我们抢了整整两个周的进度,这是前个阶段辛苦的结果。 按照计划,我约请客户代表来看程序,提意见。我们每天接待一批客户派