项目管理的产生和发展

    现在我们经常说的“项目”,无论是中国还是外国,二千多年前已经存在。闻名世界的中国万里长城、大运河,埃及的金字塔,古罗马的供水渠等,这些不朽的伟大工程都是众人称颂的典型项目。在古代这些巨大而复杂的项目建设过程中,存在很多的科学经验和一些固定的方法,只是在当时科技和文化发展水平很低的情况下,人们很难能总结归纳出能在工程中重复使用的方法,更不用说形成系统的知识体系了。

    项目管理的概念首先出现在国外。第二次世界大战期间,战争需要新式武器、探测需要雷达设备等,这些未曾做过的项目接踵而至,不但技术复杂,参与人员众多,而且时间非常紧迫。这样迫使人们开始关注项目管理的有效方法,寻求切实有效的科学方法来实现既定的目标。“项目管理”这个词这样应运而生并且开始被关注和认识。

    在中国真正称得上中国项目管理的里程碑工作,是科学家华罗庚教授和钱学森教授分别倡导的统筹法和系统工程。他们将以统筹法为基础的项目管理水平提高到一个新的高度,其中特别有意义的是通过应用统筹法模拟完整的作业流程、测度资金流、在特定目标下优化资源配置等方面的实践,提供了对大型项目进行有效管理的经验和方法。

    进入20世纪90年代,项目管理有了新的进展。为了在迅猛变化、急剧竞争的市场中迎接经济全球化、一体化的挑战,项目管理更加注重人的因素、注重顾客、注重柔性管理,力求在变革中生存和发展。在这个阶段,应用领域进一步扩大,尤其在新兴产业中得到了迅速的发展,比如电讯、软件、信息、金融、医药等现代项目管理的任务已不仅仅是执行任务,而且还要开发项目、经营项目,以及为经营项目完成后形成的设施、产品和其他成果准备必要的条件。

    近年来,国际上项目管理研究与应用发展出现一些值得注意的动向,主要有:

    (1)内容范畴不断扩展。例如,从工程项目的管理扩展到其它项目的管理;从主要针对项目执行阶段的管理扩展到系统地考虑项目的全寿命管理,包括项目需求论证,前期决策,计划实施,直到项目结束。

    (2)高新技术项目管理的需求不断增大。这赋予了现代项目管理中战略性、风险性、竞争性、规模化、复杂化、高附加值和信息密集等明显的特征。

    (3)知识体系不断完善。在需求的催动下,项目管理的理论与方法也随之发展、日趋成熟,成为集多领域知识为一体的综合性交叉学科。包括某些通用的管理学知识,各种不同类别项目所共同需要的项目管理基础知识,以及各应用领域项目所需要的特殊管理知识。

    (4)计算机与信息技术支撑平台快速改善。使用国际互联网(Internet)和企业网(Intranet)等现代化的通讯技术,对项目全过程中产生的信息进行收集、储存、检索、分析和分发,以改善项目生命期内的决策和信息的沟通。各种类型的项目管理软件(如预算软件、进度控制软件、风险分析软件等)也在不断地被完善和开发。

软件项目管理特点

    软件项目管理是目前不断发展的新兴边缘学科,它综合了管理科学、信息科学、系统科学、行为科学、计算机科学和通信技术等各学科知识,同时也是实践性很强的学科。

    软件项目管理学科的发展和信息系统、信息技术的发展是分不开的。随着信息技术的迅速发展及其在各项业务领域中的广泛应用,信息系统的规模和复杂性不断增加,其开发工作也变成一项复杂任务,靠经验或采取以往作坊式的开发方式已越来越不适应发展的需要。因此相应的管理方法和技能便应运而生,形成了软件项目管理。当前软件项目管理在信息系统开发中的运用来说,特别在软件系统项目研发中,软件项目管理起着举足轻重的作用。目前,无论是软件系统的研发公司还是政府机构都在积极将软件项目管理引入信息系统开发建设活动中,对开发整个过程实行有效的科学管理,它贯穿于信息系统开发的整个生命周期。

    软件项目是一种特殊的项目,它创造的产品或者服务是逻辑载体,没有具体的形状和尺寸,只有逻辑的规模和运行的效果。软件项目不同于其他项目,不仅是一个新领域而且涉及的因素比较多,管理也比较复杂。软件项目除具有一般项目的特点外,有其自己的特点,在做软件项目管理的过程中只有了解软件项目的特点,才能有针对性的选择合适的管理方法,使项目取得成功。软件项目主要有以下特点:

    (1)软件项目是一种逻辑实体,不是具体的物理实体,它具有抽象性。这使得软件项目与工程实体有很大的区别。

    (2)软件的生产与硬件不同,开发过程没有明显的制造过程,也不存在重复生产过程。

    (3)软件没有硬件的机械磨损和老化问题。然而,软件也存在退化问题,在软件生存期中,软件环境的变化将导致软件失效率的提高。

    (4)软件开发至今没有摆脱手工的开发模式,软件产品基本上是“定制”的,做不到利用现有的软件组件组装成所需要的软件。

    (5)软件本身是复杂的。它的复杂性源于应用领域实际问题的复杂性和应用软件技术的复杂性。

    (6)软件的成本相当高。软件开发需要投入大量的、复杂的、高强度的脑力劳动,因此成本比较高。

    (7)软件开发和软件项目管理工作涉及到很多社会因素,要受到机构政治、文化、决策体系和管理方式的限制。

    以上这些特点,在系统开发过程中将导致软件系统在需求开发阶段往往是系统建设意图不明,项目目标不清楚,很难将其具体化。导致项目的不确定性,软件项目多数涉及企业或政府部门的管理,而管理本身是不确定的,另一方面,软件项目的不确定性也指在执行过程中还会遇到各种始料未及的“风险”,使得项目不能按原有的计划来运行。导致需求范围不好界定,用户需要的东西自己说不清或不容易被开发人员理解,项目范围需要在项目实施过程中不断清晰。使得项目具有弹性,不同的开发单位,不同的项目经理去做相同的项目,结果会有很大区别。使得项目建设时间具有紧迫性,任何项目都有周期限制,但是软件项目的特点决定了其在这方面有更加严格的要求。随着信息技术的飞速发展,软件项目的生命周期越来越短,时间甚至成为项目成功的决定性因素。使得项目具有独特性,按照项目定义可知,每一个项目都是惟一的,世界上没有完全一样的两个项目。但是这一特性在软件项目领域表现得更为突出,软件项目不仅向客户提供产品,更重要的是根据客户的要求提供不同的解决方案。即使有现成的解决方案,也需要根据客户的特殊要求进行一定的客户化工作。

软件项目管理的一般过程

    软件项目管理有四个阶段:项目启动、项目规划、项目跟踪控制、项目结束。每个阶又有各自的过程。

    启动是项目管理的第一个阶段,该阶段主要确定项目的目标和范围。其中包括项目开发的周期,软件要完成的主要功能,软件的限制条件、性能、稳定性。这一阶段,项目的范围要进行明确的定义,项目目标必须可实现度量。这一阶段如果管理的不好,将会导致项目的终失败。项目规划是建立项目行动指南的基准,该阶段包括软件项目的估算、风险分析、进度规划、项目参与人员的选择与配备。项目跟踪控制包括按计划执行项目和控制项目,以便使项目在预算内、按进度、使用户满意的完成。这阶段包括:测量实际的进度,并与计划进度相比较。项目结束阶段主要是确认项目实施的各项成果,进行项目的接交合清算,同时对项目进行后的评审,并对项目进行总结。软件管理的四个阶段,其中规划、跟踪控制理论上认为是软件项目管理的核心和重点,本文则认为启动阶段是软件项目管理中的重点。


  万事开头难,做任何事情如果有个好的开端,可以起到事半功倍的效果。古希腊哲学家柏拉图说过:“开端是工作重要的环节。”良好的开端好比一把开启智慧的钥匙,好比通向成功之路的铺路石,良好的开端是成功的一半。如果说成功是一把火,那么良好的开端是火种;如果说成功是河流,那么良好的开端是水之源。

    软件项目启动阶段,首先要确定软件项目范围和需求。项目范围管理和需求管理都是软件管理中的重要过程。项目范围是软件项目的基本框架,是项目管理者和建设者系统地、逻辑地分析项目关键问题的要素,也是项目相关人项目建设内容达成一致的重要依据。如果在启动阶段项目范围模糊不清,必将造成项目在启动后进行不断的变更,因此项目风险不断增加,而且在项目验收阶段缺乏验收依据。启动软件项目的原因是由于软件需求存在,软件需求是每个软件开发过程中的基础。需求是一个软件项目的开端,是项目建设的基石。因此,一个软件项目成功的关键因素是对需求分析把握的准确程度,如果项目需求分析不准确,获取的软件需求不真实,必将给软件开发埋下隐患,软件开发成功是很难想象的。

    启动阶段要进行项目团队建设,团队建设包括项目经理的选择、项目参与人员的确定等。人是软件项目中重要的因素,是其他的一切基础,因此启动阶段的团队建设非常重要。在启动阶段如果没有重视团队的建设,项目经理选择不当,项目成员专业结构不合理或业务能力不能胜任此软件项目,软件开发的效率将极其低下,开发出的软件项目,其质量将大打折扣,软件失败风险将大增。

    因此,本文认为在软件开发管理的重点应放在软件项目的启动阶段,在启动阶段要注重软件项目的需求分析,注重项目的风险评估,注重项目的业务背景研究。

    软件项目管理在具体业务软件系统开发中的重要作用

    信息系统项目的开发过程不同于其他产品的制造过程,在很大程度上,信息系统开发是计算机技术、通信技术、信息技术加上具体的业务工作交叉的实践性工程项目。系统能否开发成功,不仅取决于成熟技术和先进的开发方法,本文认为更重要的取决于参与开发的技术人员的能力,参与开发的业务人员的业务素质和对本专业掌握的水平。经常从事系统软件开发工作的人都知道,软件开发过程中具有很多的不可预知性,这也是信息系统项目的一个特点。在开发过程中,如何将这种不可预知的东西变成可以预知的东西。对这一问题,项目管理是好的解决问题的工具。因此,在信息系统开发活动中引入规范、科学、系统的软件项目管理方法是非常必要的。
本文认为在软件项目中引进项目管理时要注意软件项目管理与其他管理相似,都是管理人员根据经验、事实和原理做出决策。因此,在信息系统开发活动过程中实施项目管理时,应该接合实际,灵活运用项目管理方法和使用管理工具,切勿生搬硬套。

    软件项目需求及获取方法

    软件系统的需求是指用户对软件的功能的要求,是用户希望软件系统能做什么事情,完成什么样的功能,达到什么样的性能。软件需求不像硬件需求,有形的、客观的、可描述的、可检测的,软件需求具有模糊性、不确定性、变化性和主观的特点。

    软件需求包括功能需求、性能需求、环境需求、资源需求、成本消耗需求、开发进度需求、现实约束、预先估计以后系统可能达到的目标等。从项目开发的角度看,软件需求主要包括两大类型:功能需求和非功能需求。其中,功能需求是主要的需求,需要计算机解决的问题,是对数据的处理的要求。功能需求规定了系统必须执行的功能。而非功能需求是一些限制性的要求,是对实际使用环境所做的要求,如性能要求、安全要求、可靠性要求等。非功能要求比功能要求更严格,更不容易满足,这是因为,如果不能满足非功能的要求,系统将无法运行。

    需求获取作为项目伊始的活动,是非常重要的。众所周知,如果需求调研不充分、用户需求描述不完整或不准确,项目成功的可能性几乎等于零。因此,根据软件项目特点,采取相应的需求获取方法,是项目取得成功的关键因素。

    在实际系统开发中,经常会发现,由于需求方缺乏软件系统开发的专业知识和项目管理经验,往往一开始自己也不知道要开发什么样的系统,尽管对业务很熟,但对数据、业务流程的整理和归纳上很难符合系统开发的要求,经常是走一步看一步,不断地提出和更改需求,使得系统开发方难于应付。另一方面,开发方由于行业知识的缺乏和需求分析人员水平的低下,不能正确或完全理解用户的需求说明,而又没有加以严格的评审、确认,经常是以想当然的方法进行系统设计。系统开发出来后,与用户的期望相差甚远。因此,需求分析必须注重双方理解和认识的一致,逐项逐条地进行确认。为了作到这一点,根据项目特点采用合适的需求获取方法显得非常重要。

    软件开发需求管理是软件项目管理中一项十分重要的工作,在众多失败的软件项目中,由于需求原因导致的占相当大的比例,因此,需求管理将对软件项目能否终获得成功产生至关重要的影响。但在实际软件开发过程中,很多开发人对需求的认识还远远不够。本人的实际经验来看,软件开发工作不是简单的技术工作,而是一项系统的软件需求开发管理工作。项目管理人员要想做好软件项目管理工作,必须要研究如何利用需求管理理论和方法,获取需求;采取什么方法对软件系统功能进行描述--需求建模。其目的是理解用户的功能要求,澄清模糊的功能需求,使软件工程师和软件用户对系统功能的理解达到一致。实际工作经验来说,不管采用什么方法,都要体现以用户为中心的思想,因为软件终的主人是用户,这一点非常重要。