我作为项目经理开始参与某航空公司航空票务系统项目的开发,主要负责系统的组织规划实施开发与项目管理,该系统具有严格的安全,稳定,时实高效和可靠性能要求,该系统由票务管理系统和呼叫中心系统两部分组成,呼叫中心系统主要实现电话,传真和短信业务,票务管理系统是整个系统的核心,采用了struts+hibernate+spring主流WEB应用框架,实现了WEB应用服务器websphere与协作应用服务器lotus domino 的高度集成.
项目的成功很大程度上归功于我在项目过程中各阶段对进度的有效管理和控制,本文以该项目为例,结合作者实践,讨论信息系统项目中的进度管理问题 ,主要通过在计划阶段做好工作量估算,在项目的全过程中有效管理和控制风险因素,在实施阶段进行进度跟踪和控制,必要是调整进度表等方法和策略来有效管理和控制项目的进度,目前该系统已正式投入运行,状况良好受到客户一致好评.
我作为项目经理开始参与某航空公司航空票务系统项目的开发,主要负责系统的组织规划实施开发与项目管理,当然还做一些编码工作,主要是公用基础代码和核心代码的编写与维护。航空票务系统是将呼叫中心系统和票务管理系统有效的结合起来,采用先进的CTI技术和语音板卡技术,充分利用电话,短信,传真,因特网等信息化手段,解决航空公司的机票销售问题,规范了业务流程,强化了内部管理,与电子商务的完美结合,使应用系统功能更加完善,提高了整个航空业务的工作效率。 其中,票务管理系统包括:客户管理,机票管理,票证管理,销售管理,财务结算,调度管理,远程营业部(代理商/分销商)管理 ,系统管理八大功能模块,并统一于服务器端软件模块。呼叫中心系统由电话呼叫系统,短信分发系统,传真呼叫系统三部分组成。票务管理系统是整个系统的核心,在本次开发中,我把它视为整个项目的重点。
票务管理系统采用struts+hibernate+spring主流WEB应用框架,使用RUP软件工程方法,开发工具采用了WSAD5.0,WSAD5.0集成并扩展了Eclipse2.0的功能。硬件配置方面,IBMRS/6000用于安装websphere5.0,DELL服务器用于安装DOMINO R6和ORACLE 10g数据库,系统平台采用WINDOWS NT 实现了WEB应用服务器与协作应用程序服务器LOTUS DOMINO 的高度集成,并使用SINGLE SIGN ON (SSO)实现单点登陆。总体架构思想:用spring搭建整个框架,用hibernate取代原始的JDBC操作,并进行持久化管理,在spring 中采用Bean来管理整个持久化层和访问层,与hibernate 相连接进行数据库操作,视图层和控制器层通过STRUTS筐架实现,模型层是数据访问层DAO 和 hibernate的结合,数据库层功能使用ORACLE 数据库实现。在本系统中将订单数据的生成分析采用关系数据库实现,通过webspher架构实现业务逻辑处理,机票订单的生成和审核流程则由DOMINO 进行驱动,将基于业务为主的J2EE服务系统和基于协作为主的DOMINO 流程处理系统有效的结合起来,确保整个业务流程的有效运行和各种数据查询分析统计的有机结合。 由于考虑到寒假和春运期间将会是旅客的高峰期,客户要求系统必须在12月底前交付,项目开发周期为6个月,为此我做了如下安排:前4个月主要集中精力用于开发票务管理系统,后两个月主要完成票务管理系统和呼叫中心系统的集成以及项目收尾工作。
软件的进度管理是软件项目管理中一个非常重要的组成部分,进度管理的目的是通过执行项目进度管理过程和使用一些基本的项目管理工具和技术来控制项目的进度,保证项目如期完成。项目组整体上把按进度和预算交付项目作为我们大的挑战,因此我十分重视项目进度的管理和控制,在本项目中我们借助项目管理软件Microsoft Project 2003来辅助进度和成本的计划与管理,我们主要通过在计划阶段做好工作量估算,在项目的全过程中有效管理和控制风险因素,在实施阶段进行进度跟踪和控制,必要是调整进度表等方法和策略来有效管理和控制项目的进度。
1. 计划阶段做好活动历时(工作量)估 算.
项目需求分析阶段结束,《软件需求说明书》得到客户的正式签字确认后, 我们开始创建工作分解结构WBS和制定详细的进度表,我们认为工作量的估算是制定进度表的基础,对于项目的进度管理十分关键,由于我们对代码行(LOC)估算和功能点(FP)估算等估算方法研究不是很深入,工作量的估算还是主要采用基于公司项目历史绩效数据库和个人经验的估算方法,对于部分涉及流程的活动单位一般很难一次性把握其活动历时,事实上流程调试的工作量一般在页面基本功能(增加/删除/修改)的3倍工作量以上,例如销售模块—机票预定—顶单生成流程页面提交工作量为2日/人,而流程调试要涉及20多个角色和8条路径,对于把握不是很好的估算,我们一般通过一个乐观估算A,一个悲观估算B,一个正常估算M三次估算后利用PERT公式[1(4*M+A+B)/6]计算后取整,每项活动我都先确定具体的人员,然后需要对活动本身进行详细的分析,必要时查看公司项目历史绩效数据库,后需要为各项活动建立依赖关系,明确各项活动的前置任务,活动的开始时间,结束时间。总体上讲活动历时的估算工作量较大,我花了数个工作日.
项目组流动率较底,在J2EE和STRUTS架构下的WEB应用开发已有一定的项目积累和团队合作基础,如项目组自行开发了功能完善的STRUTS-CONFIG..XML统一维护工具,实现了FormBean和AcationBean的方便管理,有大量可供复用的东西,如公用基础代码,权限管理模块等,这些也是我们在工作量估算中应该考虑的因素.
2. 项目全过程有效管理和控制风险因素.
项目中我们对项目进行了必要的风险管理,以避免风险时间的发生导致进度的失控,公司项目管理部门提供了完整的项目风险管理计划模板和风险时间列表模板,为了让项目组在项目各个阶段保持良好的风险意识,我尝试采用了“十大风险事项跟踪”,把项目中各主要的风险时间按照排名张贴在公告栏上,由于当时有部分未明晰的需求包括:客户订票流程,调度管理部分需求,客户方面可能提出新的需求…需求范围界定不清,计划不充分,用户参与不足,缺乏领导支持,技术问题等成为我们项目的主要风险事件,事实表明,这种做法非常有效。特别是客户方面,我定期把风险事件列表EMAIL给客户方负责人李某,为了能尽快落实未明晰的客户需求,我与客户方负责人李某进行了面对面的沟通,通过一番利弊关系的陈述,达成了尽快明晰悬留部分需求的共识,需求问题很快得到解决,项目组整体信心十足,积极性和责任感增强,公司领导方面对项目组也表现出特别的关心,特别是公司胡总开始频繁的出现在项目组每周的进度评审会议上,他们也开始担心因对项目支持不够而导致项目失败。
3. 实施阶段进行进度的跟踪和控制,必要时调整进度表。
实施阶段要进行进度的跟踪和控制,在确定项目开发计划时,我们制定了详细的工作进度表,在确定每项任务时都确定了该任务的工作量,开始时间,结束时间,持续时间,同时要让每个小组成员都知道自己承担的任务时间表,根据自己的任务制定详细的工作计划.
工作日志是了解每个小组成员工作情况的好方式,我要求每个小组成员都要对自己的工作情况做日志,详细记录自己每天的工作。在每周5下班前通过内网B/S项目管理信息系统PMIS 提交《项目周报》,把各自本周内完成的任务进度情况和下周任务计划做出汇报,报告要严格按照百分比量化任务完成的情况,因为PMIS只提供具体的百分比选择,每个小组成员都要对自己的总结报告做出负责,我把各项任务实际完成数据输入到项目进度计划中,Project自动完成甘特图的绘制,通过查看甘特图可以交好的把握项目的总体进度绩效,随时了解项目进度,并确定是否调整下一阶段的进度计划,
在本项目中,为保证项目快速完成,在定义甘特图任务的依赖关系时,我在没个任务的任务信息对话框中“前置任务”一栏中的“延阁时间”我填入10%,也是说当任务完成90%的时候可以结束转入执行下一任务,因为本项目的所有人员几乎是全程参与,我所以不是很担心,每个任务遗留的少量问题,在下一阶段每人去负责解决。
航空票务系统在12月下旬正式上线,提前完成了项目,目前系统运行正常,受到客户和有关部门的一致好评,对项目的满意度较高。项目成功很大程度归功与在项目各阶段的对进度和成本的有效管理和控制,没有进度管理,项目很难如期交付,对项目质量,进度,成本三大目标的实现有巨大的风险。
通过这次开发我也发现了一些问题和不足,实际工作量与计划工作量偏差较大,看来还是受到缺乏经验数据或者经验数据不够精确的影响,所以在以后的工作中要展开有效的度量工作,为公司积累覆盖面广而精确的经验数据,还有是团对成员的协作程度不高,未大限度的发挥团队的凝聚力,在沟通方面我还做的不够,在以后的项目中我会不断的努力和改进。