软件项目管理案例教程(第5版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 项目管理与软件项目管理

项目普遍存在于人们的工作和生活中,如何管理这些项目是一项需要研究的任务。项目管理起源于美国,20世纪四五十年代主要应用于国防和军工项目,后来广泛应用于工商、金融、信息等产业及行政管理领域。目前,项目管理已经成为综合多门学科的新兴研究领域,其理论来自工作实践。项目管理是指把各种系统、方法和人员结合在一起,在规定的时间、预算和质量目标范围内完成项目的各项工作。对于一个组织的管理主要包括3个部分,即战略管理、运作管理、项目管理。战略管理(strategy management)是指从宏观上帮助企业明确和把握发展方向。运作管理(operation management)是指对日常的、重复性工作的管理。项目管理(project management)是指对一次性、创新性工作的管理。项目是企业的最小盈利单位,项目管理自然成为构筑企业利润的基石,从这种意义上说,项目管理是企业的核心竞争力所在。由于项目管理具有效率高、反应灵敏的优点,因此更多企业希望采取项目式管理(management by project)的方式,从而可以更及时地处理用户的需求,使管理更高效,提高企业的管理质量。实施项目管理可以提高项目的效益,这里所指的项目的效益是一个综合性指标,包括低风险、高产出等。因此,不难得出在实施项目管理时应该掌握的度,即引入项目管理后所产生的效益减去项目管理的成本后必须大于未引入项目管理时的效益。由于引入项目管理后所产生的效益与项目管理的复杂度(项目管理的成本)并非线性相关的,因此项目管理的复杂度必然存在一个最优值,这就是我们应该掌握的度,这个度能够被大家认可并且被准确地理解和实施。

1.2.1 项目管理背景

随着世界由工业时代进入信息时代,时空概念的根本改变增加了项目的复杂性和可变性。项目涉及的范围和时间、空间跨度都在以空前的速度扩大。而随着行业竞争的加剧,项目只有在最少时间、最低成本的情况下完成才有意义。项目本身的复杂性和巨大风险以及在分工合作中个人经验的不确定性,使个人经验已无法确保项目的成功或按时完成。项目管理是20世纪50年代后期发展起来的一种计划管理方法,它一出现就引起了人们的广泛关注。1957年,美国杜邦公司把这种方法应用于设备维修,把维修停工时间由125h锐减为78h;1958年,美国人在北极星导弹设计中应用项目管理技术,把设计完成时间缩短了两年。由于项目管理在运作方式和管理模式上最大限度地利用了内外资源,从根本上改善了管理人员的工作程序,提高了效率,降低了风险,因此自20世纪60年代以来,它被广泛运用于航空航天、国防、信息、建筑、能源、化工、制造、环保、交通运输、金融、营销、服务、法律等行业。项目管理不仅适用于大公司,而且适用于小型企业。目前,在全球发达国家的政府部门和企业机构,项目管理已成为运作的中心模式。

1.2.2 项目管理

项目管理是指一定的主体,为了实现其目标,利用各种有效的手段,对执行中的项目周期的各阶段工作进行计划、组织、协调、指挥、控制,以取得良好经济效益的各项活动的总和。通过项目各方干系人的合作,把各种资源应用于项目,以实现项目的目标,使项目干系人的需求得到不同程度的满足。因此,项目管理是伴随着项目的进行而进行的一系列管理行为,目的是确保项目能够达到期望结果。要想满足项目干系人的需求和期望,达到项目目标,需要在以下相互之间有冲突的要求中寻求平衡:范围、时间、成本和质量;有不同需求和期望的项目干系人;明确表达的要求(需求)和未明确表达的要求(期望)。项目管理有时被描述为对连续性操作进行管理的组织方法。这种方法应该被更准确地称为“由项目实施的管理”,它是将连续性操作的许多方面作为项目来对待,以便可以对其采用项目管理的方法。所以,对于一个通过项目实施管理的组织而言,对项目管理的认识显然是非常重要的。项目管理是要求在项目活动中运用知识、技能、工具和技术,以便达到项目目标的活动。项目管理类似导弹发射的控制过程,需要一开始设定好目标,然后在飞行中锁定目标,同时不断调整导弹的方向,使之不能偏离正常的轨道,最终击中目标。软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。

1.2.3 软件项目管理

软件项目管理是软件工程的重要组成部分,用于确保软件项目满足预算、成本等约束,从而提交高质量的软件产品。好的项目管理不能保证项目成功,但是不好的项目管理一定会导致项目失败:软件可能会延迟交付,成本可能会超支,软件可能无法满足客户的要求。

当前社会的特点是“变化”,而这种变化在信息产业中尤为突出,技术创新速度越来越快,用户需求与市场不断变化,人员流动也大大加快。在这种环境下,企业需要应对的变化及由此带来的挑战大大增加,这也给项目管理带来了很多问题和挑战。目前软件开发面临很多的问题,例如:

• 在有限的时间、资金条件下,要满足不断增长的软件产品质量要求。

• 开发环境日益复杂,代码共享日益困难,需跨越的平台增多。

• 程序的规模越来越大。

• 软件的重用性需要提高。

• 软件的维护越来越困难。

因此,软件项目管理显得更为重要。软件项目管理是在20世纪70年代中期由美国提出的,当时美国国防部专门研究了软件项目不能按时提交、预算超支和软件质量达不到用户要求的原因,结果发现70%是由管理不善引起的,而非技术原因。于是软件开发者开始逐渐重视起软件开发中的各个项目的管理。

软件项目管理和其他项目管理相比具有以下特殊性。

• 软件是纯知识产品,其开发进度和质量难以估计和度量,生产效率也难以预测和保证。与普通的项目不同,软件项目的交付成果事先“看不见”,并且难以度量,特别是很多应用软件项目涉及业务流程再造或业务创新。因此,在项目早期,客户很难描述清楚需要提交的软件产品,但这一点对软件项目的成败又是至关重要的。与此矛盾的是,公司一般安排市场销售人员来谈判,目的是迅速签约,甚至为了尽早签约而“过度承诺”,遇到模糊性问题时也怕节外生枝,所以避而不谈,而甲方为了保留回旋余地,也不愿意说得太清楚,更不愿意主动提出来(因为甲方还有最终验收的主动权)。项目经理一旦接手项目,所有这些没有说清楚的隐患和口头承诺都将暴露出来,并最终由项目经理承担。

• 项目周期长,复杂度高,变数多。软件项目的交付周期一般比较长,一些大型项目的周期可以达到2年以上,这样长的时间跨度内可能发生各种变化。软件系统的复杂性导致了开发过程中难以预见和控制各种风险。从外部因素来看,商业环境、政策法规的变化会对项目范围、需求造成重大影响,例如,作者曾经参与的金融项目临近上线时,国家推出了“利息税”政策,造成整个系统的大幅变更。从内部因素来看,组织结构、人事变动等对项目的影响更加直接,有时新领导到任后,其思路的变化,甚至对项目的重视程度的变化,都可能直接影响项目的成败。

• 软件需要满足一群人的期望。软件项目提供的实际上是一种服务,服务质量不仅仅在于最终交付的质量,更重要的是客户的体验。实际上,项目的“客户”不是一个人,而是一群人,他们可能来自多个部门,并且对项目的关注点不同,在项目中获得的利益也不同。所以,当我们谈到满足“客户需求”时,实际是指满足一群想法和利益各不相同的人的需求。所以,进行软件项目管理是必要的。

软件项目管理的根本目的是让软件项目尤其是大型软件项目的生命周期能在管理者的控制之下,以预定成本按期、按质地完成,并交付用户使用。而研究软件项目管理是为了从已有的成功或失败的案例中总结出能够指导今后开发的通用原则、方法,以避免重蹈覆辙。

实际上,软件项目管理的意义不仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明企业的软件生产越趋于成熟,企业越能够稳定发展,从而越能减小开发风险。

无论是传统软件项目管理、敏捷软件项目管理还是智能化时代的软件项目管理,其关键就是要找到软件项目的本质和核心,大道至简。