软件项目管理实例分析1/12软件项目管理实例分析1引言随着信息技术产业的迅速发展,软件越来越受到了人们的关注与重视,越来越多的人把目光投到了充满风险与利益的软件行业。但据资料载,软件业的发展却存在如下的关键性问题:[1]①大的系统,一般常滞后于计划;②只有10%的软件能按时完成并交付使用;③需求比较高的软件有25%无法完成。仅英国,这些原因造成的损失约有20亿英镑之多。实际上,这些问题的出现在很大程度上足由于没有有效地进行软件项目的管理造成的。如果把软件项目的实施简单的认为是把工作分发给每个人员,然后幻想他们将会取得一个预期的结果的话,许多本可能成功的项目也会走向失败!但如果重视项目管理、有效的实施项目管理,即使更复杂的项目也可能成功。早在70年代,“阿波罗”登月计划就采纳并应用了有效的项目管理方法,结果取得了巨大的成功[2]。软件项目管理是传统意义上项目管理的一个应用领域。美国著名杂志《》(即《财富》)预测,项目管理将是后工业时代的首选职业。这对软件业来说更是如此了[4]。但目前,软件行业的项耳管理方法还欠规范且专业化程度不高。本文将探讨如何有效运用传统项目管理的科学方法进行软件项目管理,并将给出一个作者亲历的实例。2项目管理与软件项目管理软件的项目管理在一定程度上借鉴了传统意义上项目管理科学,但又在一定程度上不同于后者。本部分将介绍这方面的理论。2.1项目管理2.1.1项目什么是项目?我们知道,社会的各种工作可分为两大类:一是重复性、持续性的工作,可称为运作,譬如火车的往返运行,在运作中存在若大量的常规性劳动;二是独特性、一次性的工作,可称为项目,譬如高速铁路的研制和建设,每条高速铁路都会有自己独特的地理位置和技术创新,并日只需研制和建造一次,在项目中则存在较多的创新性劳动。由此可知,项目就是以一套独特而相互联系的任务为前提,有效的利用资源,为实现一个特定的目标所作的工作[3]。由于项目的独特性和一次性特征,引伸出它的其他特点,如目标的确定性、过程的渐进性、成果的不可挽回性、组织的临时性和开放性等。一个项目的成功实现通常受4个因素的制约:技术范围、成本、进度控制、客户满意度。软件项目管理实例分析2/12对此的可视化说明见图1。人们也通常称其中的时间、费用和范围因素为项目三角形,如图2示。图1项目如何走向成功图2时间、费用和范围构成的项目三角形项目作为工作的有序集合,也是一种“生命体”,即有它孕育、萌生、成长和死亡的历程。图3所示为项目的生命周期。项目的管理过程是受限于项日的4个因素并依附于项目生命周期的(详见下文)。软件项目管理实例分析3/122.1.2项目管理项目管理是20世纪50年代后期发展起来的一种计划管理方法,它一出世就引起举世瞩目。项目管理运用先进科学的管理方式,能有效解决大型组织的效率低下和小型企业面临的风险增加问题,以组织的机动灵活、面向客户和资源利用率高而被广泛应用。1957年美国的杜邦公司把这种方法应用于设备维修,把维修停工时间由125锐减为78小时;1958年美国人在北极星导弹设计中,应用项目管理技术,竟把设计完成时间缩减了2年。项目管理是指在有限资源和预定时间限定下,拿出满足要求并能令顾客满意的产品的过程。而项目管理的职责就是确保项目目标的实现和确保工作范围在预算内高质量地按时完成,并得到客户的认可。形象的所说,项目经理就如同一场音乐演唱会的指挥师。项目管理工作大多数都涉及一些相同的活动,其中包括将项目分割成便于管理的多个任务、排定任务的日程、在工作组中交流信息以及跟踪任务的工作进展。所有的项目管理实施都包括以下三个主要的阶段:1.创建计划2.跟踪和管理项目3.结束项目这三个阶段进行得越成功,成功完成这个项目的可能性就越大对于项目管理的过程将在软件项目管理中进一步介绍。2.2软件项目管理软件项目管理是对传统项目管理进行鲜明软件工程化的一种扩展与拓延。2.2.1软件项目管理的自身特点软件项目管理一方面它建立在软件工程技术之上,要求管理者有较高的软件工程背景知识;另一方面,它的实施依赖于一群有创造性、高智力者所组成的团队。相对于其他行业来说,软件领域的工程化是一个艰辛而漫长的过程,或者说至今实践上仍不成熟,存在理论和实践脱节的地方。主要表现如下:l.开发领域中的分工体制不完善每个人都成了全能型健将;2.文档的规范作用多被忽视,代码和设计文档严重脱节;3.软件工程师的软件工程意识薄弱,个人英雄主义色彩严重;4.开发人员重代码轻设计,交流往往只限在代码一级。但随着软件规模越来越大,功能也越来越复杂,软件开发走向工程化将是必然趋势。而对应的进行软件产品的项目管理工作也将对一个产品的成功起到越来越重要的作用。2.2.2软件项目管理内容一般而言,软件项目管理的基本范围包括:过程管理和人员管理两部分。这一系列的管理活动体现为:A建立项目的过程框架B建立有效的、可跟踪的项目进度计划C建立项目的质量保证体系D建立项日的配置管理体系和准则E项目变更管理F跟踪、监控和控制项目的进展软件项目管理实例分析4/12G风险管理H团队建设一个通用的项目过程活动框架如图4。图4项目过程活动框架从软件项目管理的角度来说,第一阶段主要是做计划;第二个阶段主要是执行计划;第三个阶段主要是项目的总结。伴随其中的则是项目的团队建设。1.如何进行项目计划项目计划是为实现某一个目标丽对任务进行系统的安排。而通俗的讲,计划决定着做什么、谁去做、花多长时间去做、消耗多少费用。项目管理的首要目标是制定一个构思良好的项目计划,以确定项目的范围、进度和费用。在整个项目寿命周期中,最基本、也可以说最重要的功能之一就是项目计划,特别是在作出影响项目整个过程的主要决策的初始阶段。计划之所以成为项目管理的最重要的功能,是因为它指出了项目组织未来努力的方向和奋斗目标,是经过仔细分析后综合成的对未来的构思,又是当前行动的准则。一个完善的计划可以使失败的概率降至最低,以最大限度地保证在预期的期限内取得预期的效果。但从另一方面来说,如前所述,由于项目管理是一个带有创造性的过程,项目早期的不确定性很大,所以项目计划又不可能在项目一开始就全部一次完成,而必须逐步展开和不断修正。这又取决于能适当地对计划的执行情况作出反馈和控制以及不间断地交流信息。从这里也可看出项目进行过程中控制的重要性。制定一个综合的项目基准计划(),一般按如下步骤进行:①清晰地定义项目目标()。②把项目按项目范围详细分解为工作包(),形成()。③界定对应每个工作包必须执行的各项活动()。④以甘特图()或网络图的形式图示出活动。⑤估算出项目的进度计划和成本预算。2.项目的执行与控制在建立了项目基准计划之后,项目工作就可以开始进行了,即进入项目的执行过程。在这个过程,进行过程的监控,以确保一切按计划行事是必要的。项目控制过程包括定期收集项目绩效的资料,把实际的绩效与计划绩效相比较;如果实际比计划差,则应当采取纠正措施。这里有一个原则:坏消息必须尽快传递[5]。图5说明了项目控制过程的主要活动。软件项目管理实例分析5/12图5项目控制过程3.项目总结项目的最后一个阶段是结束项目并进行总结。它开始于项目工作完成之后,这个阶段的目的是从中学到经验,以便在未来的项目中改进工作绩效。总结的一个重要方式是举行项目后评估会议。项目经理应当讨论项目执行期间发生的事,并确定一些具体的改善建议。一个会议讨论内容的模板如下表l。表1项目评估会议的内容模板(1)技术绩效●工作范围●质量●管理变更软件项目管理实例分析6/12(2)成本绩效(3)进度计划绩效(4)项目计划与控制(5)客户联系(6)团队联系(7)交流(8)识别问题与解决问题(9)对未来项目的建议4.团队建设人员是项目成功的关键。软件不是科学,它只是一门技术,一项与人及组织有着密切联系的技术。尽管软件工程师们是聪敏而才气的,但如果不把他们很好的凝聚到一起、不把它们的激情调动起米的话,项目要成功就难了;正如拿破仑所言,军队战斗力的四分之三是由士气组成的。一支运转良好的团队通常可以产生远远超出单个成员的生产效率,而好的项目团队的标志是“2+24”。如何组建一个和谐的团队是项目经理的职务所在。这方面的进一步信息可参见文[3]、[6]和[7]。3一个软件项目的管理实例这里要分析的实例是作者兼职一家软件公司的项目经理时所做。限于篇幅,仅讨论关键点3.1项目背景简介本项目是要在一家国有中型企业构建产品的远程智能诊断系统。具体的软件体系结构如下流程图6所示:软件项目管理实例分析7/12图6远程智能诊断系统的结构3.2项目计划●项目目标在80天的时间里,用15人的资源,开发出一种能实现x企业产品的远程智能诊断的系统:要求把采集来的产品数据实时可视化和进行诊断,并把数据存于仓库中以进一步更新规则库。●项目管理软件的选择这里主要考虑软件的易用性、功能完备性及与其它系统的互操作性三个标准。2000同其它微软类软件具有统一的界面,能够完成所需的绝大部分功能,更重要的是它与微软的其它软件具有无可比拟的兼容性,因此,本项目选取了2000作为项目管理软件。●项目工作包分解为了分发任务及进行项目的管理,把项目按项目范围详细分解为工作包是必要的步骤。系统的是信息沟通的共同基础同时是系统综合与控制的手段。远程智能诊断系统的如下图7所示。软件项目管理实例分析8/12图7远程智能诊断系统的●项目的进度计划在制定出了系统的之后,就可规划系统的进度安排了。远程智能诊断系统的进度计划如表2。表2远程智能诊断系统的进度计划标识号任务名称工期开始时间完成时间前置任务1项目范围规划2.5工作日2001年6月20日2001年6月22日2确定项目范围4工时2001年6月20日2001年6月20日3项目资源配备2工作日2001年6月20日2001年6月22日24项目范围规划阶段结束0工作日2001年6月22日2001年6月22日35软件需求分析10.38工作日2001年6月22日2001年7月6日6行为需求分析5工作日2001年6月22日2001年6月29日47制定软件规范2工作日2001年6月29日2001年7月3日68制定成本预算2工作日2001年7月3日2001年7月5日79确定进度计划1工作日2001年7月5日2001年7月6目8软件项目管理实例分析9/1210风险分析3工时2001年7月6日2001年7月6日911分析工作阶段结束0工作日2001年7月6日2001年7月6日1012原型设计7.5工作日2001年7月6日2001年7月18日13制定功能规范3工作日2001年7月6日2001年7月11日1114根据功能规范开发原型3.5工作日2001年7月11日2001年7月17日1315根据反馈修改功能规范1工作日2001年7月17日2001年7月18日1416设计工作阶段结束O工作日2001年7月18日2001年7月18日1517开发17工作日2001年7月18日2001年8月1O日18确定模块及接口1.5工作日2001年7月18日2001年7月19日1619分派任务1工作日2001年7月19日2001年7月20日1820编写代码14工作日2001年7月20日2001年8月9日192l开发人员初步测试11工作日2001年7月26日2001年8月10日2075%22开发工作完成O工作日2001年8月1O日2001年8月10日2123测试33工作日2001年7月18日2001年9月3日24制定单元测试计划4工作日2001年7月18日2001年7月24日1625单元测试8工作日2001年8月10日2001年8月22日26单元测试环境构建3工作日2001年8月1O日2001年8月15日24,2227找出异常情况2工作日2001年8月15日2001年8月17日2628修改代码3工作日2001年8月17日2001年8月22日2729单元测试完成O工作日2001年8月22日2001年8月22日2830整体测试8工作日2001年8月22日2001年9月3日31测试模块集成情况3工作日2001年8月22日2001年8月27日