1、项目管理在软件中的应用 与分析摘要: 计算机技术的飞速发展,软件规模越来越大、越来越复杂,投资约越来越高因此,在软件开发的过程中,项目管理的成功与否是决定一个软件项目是否能够顺利利用高效率完成的重要保证。本文阐述了在软件开发过程中实行项目管理的原因,还阐述的了项目管理在软件开发中的应用现状、存在的问题以及相应的解决方案进行分析和论述.。关键词:项目管理;软件开发;风险管理引言如果用如果用两个字概括当前社会的特点,那就是“变化” ,而这种变化在信息产业中体现得尤为突出,技术创新速度越来越快,用户需求与市场不断变化,人员流动也大大加快。在这种环境下,企业需要应对的变化以及由此带来的挑战大大增加,也
2、给管理带来了很多问题和挑战。软件行业是一个极具挑战性和创造性的新行业,管理上没有成熟的经验可供借鉴。软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。一、提一下项目管理的两个问题1、 么是项目管理?根据 PMI 的定义项目管理是在项目活动中应用一系列价值观、知识、技能、工具和技术,以满足或超过项目关系人对项目的要求和期望。2、 什么要有项目管理? 没有项目管理,项目也有可能成功。但是没有管理的项目利润很难有保证,对公司来说,亏损的风险就大。所以我们要有
3、项目管理,以保证公司在总体上是盈利的,注意不是每一个项目都要盈利。另外,有了项目管理,就有了管理改进的基础,无论刚开始的项目管理多么糟糕,只要有管理,就有了改进的可能性,至于能不能得到改进,以及改进的快慢,则取决于两个因素:一个是人,特别是各级管理者;另一个是利益。关键是“利益” ,准确的说是“利益的分配” ,在权责利明确的前提下,人才能充分的发挥作用。还需要指出的是“利益”是多元的,这里的多元不仅指利益的具体形式,而且指利益的受众是多元的,包括客户方相关人员个人的利益。 3、 软件项目管理为什么要有专职的经理?专业化是一个趋势,因为在专业化的条件下,可以有效降低成本,提高利润率。项目经理的工
4、作内容归根到底只有一项:识别并管理风险。这项工作的目的是控制项目成本。 由于项目的风险是多方面的,而且风险的表现形式也是多种多样的。从风险范围上来说,既有公司内部风险,也有和客户交流、合作的风险;从风险的类型上来说,既有管理风险,也有技术风险;从风险产生的阶段来说,包括了从业务分析到上线后维护的项目周期各个阶段。4、 怎么样才算一个成功的项目?对“成功项目“的标准解释为:项目范围、项目成本、项目开发时间、客户满意度四点达到要求。我认为其实只有一点-利益。项目范围、客户满意度主要代表客户的利益,项目成本主要代表开发商的利益,项目开发时间同时影响双方的利益。但每一个人关心的“利益“是不同的。5、
5、软件项目管理的成功原则有哪些?主要有平衡原则、高效原则、分解原则、分类管理原则、简单有效原则、规模控制原则1 平衡原则 在我们讨论软件项目为什么会失败时可以列出了很多的原因,答案有很多,如管理问题、技术问题、人员问题等等,但是有一个根本的思想问题是最容易忽视的,也是软件系统的用户、软件开发商、销售代理商最不想正视的,那就是:需求、资源、工期、质量四个要素之间的平衡关系问题。 需求定义了“做什么“,定义了系统的范围与规模,资源决定了项目的投入(人、财、物) ,工期定义了项目的交付日期,质量定义了做出的系统好到什么程度,这四个要素之间是有制约平衡关系的。如果需求范围很大,要在较少的资源投入下,很短
6、的工期内,很高的质量要求来完成某个项目,那是不现实的,要么需要增加投资,要么工程延期;如果需求界定清楚了,资源固定了,对系统的质量要求很高,则可能需求延长工期。 对于上述四个要素之间的平衡关系最容易犯的一个错误,就是鼓吹“多快好省“四个字,“多快好省“,多么理想的境界啊?需求越多越好,工期越短越好,质量越高越好,投入越少越好,这是用户最常用的口号。 多:需求越多越好吗? 软件系统实施的基本原则是“全局规划,分步实施,步步见效“,需求可以多,但是需求一定要分优先级,要分清企业内的主要矛盾与次要矛盾,根据 PARETO 的 80-20 原则,企业中的 80%的问题可以用 20%的投资来解决,如果你
7、要大而全,对不起,你那 20%的次要问题是需要你花费 80%的投资的!而这一点恰恰是很多软件用户所不能忍受的。 快:真能快起来吗? “快“是用户、软件开发商都希望的。传统企业里强调资金的周转情况,软件企业里强调的是人员的周转情况,开发人员应尽快做完一个项目再做另外一个项目,通过快速的启动项目、结束项目来承担更多的项目,来获利。但是“快“不是主观的拍脑袋定工期就可以完成的,工期的定义一定要基于资源的状况、需求的多少与质量的需求来进行推算的。软件毕竟需要一行代码一行代码的写出来,他的工作量是客观的,并非是人有多大胆,地有多大产“式的精神鼓动就可以短期完成的。 省:省到什么程度? “一分钱一分货“,
8、这是中国的俗话,他是符合价值规律的。甲方希望少投入,乙方希望降低自己的生产成本,省到乙方仅能保本的时候,再省,乙方就亏损了。 正视这四个要素之间的平衡关系是软件用户、开发商、代理商成熟理智的表现,否则系统的成功就失去了一块最坚实的理念基础。 企业实施 IT 系统的首要目标是要成功,而不是失败,企业可以容忍小的成功,但不一定容忍小的失败,所以需要真正理解上述四个要素的平衡关系,确保项目的成功。 2 高效原则 在需求、资源、工期、质量四个要素中,很多的项目决策者是将进度放在首位的,现在市场的竞争越来越激烈,“产品早上市一天,就早挣一天钱,挣的就比花的多,所以一定要多挣“,基于这样一个理念,软件开发
9、越来越追求开发效率,大家从技术、工具、管理上寻求更多更好的解决之道。 基于高效的原则,对项目的管理需要从几个方面来考虑: 要选择精英成员 目标要明确,范围要清楚 沟通要及时、充分 要在激励成员上下工夫 3 分解原则 “化繁为简,各个击破“是自古以来解决复杂问题的不二法门,对于软件项目来讲,可以将将大的项目划分成几个小项目来做,将周期长的项目化分成几个明确的阶段。 项目越大对项目组的管理人员、开发人员的要求越高,参与的人员越多,需要协调沟通的渠道越多,周期越长,开发人员也容易疲劳,将大项目拆分成几个小项目,可以降低对项目管理人员的要求,减少项目的管理风险,而且能够充分地将项目管理的权力下放,充分
10、调动人员的积极性,目标会比较具体明确,易于取得阶段性的成果,使开发人员有成就感。 作者主管过的一个产品开发项目代号为 SB,该项目前期投入了 5 人做需求,时间达 3 个多月,进入开发阶段后,投入了 15 人,时间达 10 个月之久,陆续进行了 3 次封闭开发,在此过程中经历了需求的裁剪、开发人员的变更、技术路线的调整,项目组成员的压力极大,大家疲惫不堪,产品上市时间拖期达 4 个月。项目完工后总结下来的很致命的一个教训就是应该将该项目拆成 3个小的项目来做,进行阶段性版本化发布,以缓解市场上的压力,减少项目组成员的挫折感,提高大家的士气。 4 实时控制原则 在一家大型的软件公司中,有一位很有
11、个性的项目经理,该项目经理很少谈起什么管理理论,也未见其有什么明显的管理措施,但是他连续做成多个规模很大的软件项目,而且应用效果很好。作者一直很奇怪他为什么能做的如此成功,经过仔细观察,终于发现他的管理可以用“紧盯“2 字来概括,即每天他都要仔细检查项目组每个成员的工作,从软件演示到内部的处理逻辑、数据结构等,一丝不苟,如果有问题,改不完是不能去休息的。正是在他这种简单的措施下,支撑他完成了很多大的项目,当然他也是相当的辛苦,通常都是在凌晨才去休息。我们并非要推崇这种做法,这种措施也有他的问题,但是,这种实践却说明了一个很朴实的道理:如果你没有更好的办法,就要辛苦一点,实时控制项目的进展,要将
12、项目的进展情况完全的实时的置于你的控制之下。 上述的方法中对项目经理的个人能力、牺牲精神要求是很高,我们需要有一种进行实时控制项目进度的机制,依靠一套规范的过程来保证实时监控项目的进度。如在微软的管理策略中强调每日构建“,这确实是是一种不错的方法,即每天要进行一次系统的编译链接,通过编译链接来检查进度、检查接口、发现进展中的问题、大家互相鼓励互相监督。 实时控制确保项目经理能够及时发现问题、解决问题,保证项目具有很高的可见度,保证项目的正常进展。 5 分类管理原则 对于不同的软件项目其项目目标差别很大,项目规模也是不同的,应用领域是不同的,采用的技术路线差别也很大,因而,针对每个项目的不同特点
13、,其管理的方法、管理的侧重点应该是不同的。就像古人讲的,“因材施教“,“对症下药“。对于小项目你肯定不能象管理大项目那样去做,对于产品开发类的项目,你也不可能象管理系统集成类的项目那样去做,项目经理需要根据项目的特点,制订不同的项目管理的方针政策。如,下表是作者为一家应用软件公司制订的项目管理的方针: 在该案例中,将项目分成了订单类项目与非订单类项目,非订单类项目是指由公司根据市场的需求开发一个标准产品的项目,而订单类是指针对某个具体的客户定制软件的项目,订单类的项目根据需要协调的资源的范围有划分成了公司级、部门级、个人级三类,非订单类根据估算的工作量的大小也分成了 A、B、C 三类,估算的工
14、作量超过 720 人天的为 A 类,超过 360 人天的为B 类,360 人天以下的为 C 类。不同类的项目管理的侧重点是不同的,从立项手续的完备性、计划的严格层度、周报的完备层度、规范的严格层度、跟踪的实时性、是否进行阶段总结、是否核算项目成本、是否严格进行阶段评审等多个方面来考虑,以确保管理的可行性。 6 简单有效原则 项目经理在进行项目管理的过程中,往往会得到开发人员这样的抱怨“太麻烦了,浪费时间,没有用处“,这是很普遍的一种现象。当然这样的抱怨要从 2 个方面来分析,一方面从开发人员本身可能存在不理解,或者逆反心理的情况,另一方面,项目经理也要反思:我所采取的管理措施是否简单有效?搞管
15、理不是搞学术研究,没有完美的管理,只有有效的管理,而项目经理往往试图堵住所有的漏洞,解决所有的问题,恰恰是这种理想,会使项目的管理陷入一个误区,作茧自缚,最后无法实施有效的管理,导致项目的失败。 7 规模控制原则 该原则是和上面提到的其他原则相配合使用的,即要控制项目组的规模,不要人数太多,人数多了,进行沟通的渠道就多了,管理的复杂度就高了,对项目经理的要求也就高了。在微软的 MSF 中,有一个很明确的原则就是要控制项目组的人数不要超过 10 人,当然这不是绝对的,也和项目经理的水平有很大关系。但是人员“贵精而不贵多“,这是一个基本的原则,这和我们上面提到的高效原则、分解原则是相辅相成的二、
16、软件项目管理的内容软件项目管理的内容主要包括如下几个方面:人员的组织与管理,软件度量,软件项目计划,风险管理,软件质量保证,软件过程能力评估,软件配置管理等。这几个方面都是贯穿、交织于整个软件开发过程中的,其中人员的组织与管理把注意力集中在项目组人员的构成、优化;软件度量把关注用量化的方法评测软件开发中的费用、生产率、进度和产品质量等要素是否符合期望值,包括过程度量和产品度量两个方面;软件项目计划主要包括工作量、成本、开发时间的估计,并根据估计值制定和调整项目组的工作;风险管理预测未来可能出现的各种危害到软件产品质量的潜在因素并由此采取措施进行预防;质量保证是保证产品和服务充分满足消费者要求的
17、质量而进行的有计划,有组织的活动;软件过程能力评估是对软件开发能力的高低进行衡量;软件配置管理针对开发过程中人员、工具的配置、使用提出管理策略。其中软件开发中的开发人员是最大的资源。对人员的配置、调度安排贯穿整个软件过程,人员的组织管理是否得当,是影响对软件项目质量的决定性因素。首先在软件开发的一开始,要合理的配置人员,根据项目的工作量、所需要的专业技能,再参考各个人员的能力、性格、经验,组织一个高效、和谐的开发小组。一般来说,一个开发小组人数在 5 到 10 人之间最为合适,如果项目规模很大,可以采取层级式结构,配置若干个这样的开发小组。分组人员的方式1保证开发组中全职人员的比例,且项目核心
18、部分的工作应该尽量由全职人员来担任, 以减少兼职人员对项目组人员不稳定性的影响。 2建立良好的文档管理机制,包扩项目组进度文档、个人进度文档、版本控制文档、整体技术文档、个人技术文档、源代码管理等。一旦出现人员的变动,比如某个组员因病退出,替补的组员能够根据完整的文档尽早接手工作。 3加强项目组内技术交流,比如定期开技术交流会,或根据组内分工建立项目组内部的开发小组,是开发小组内的成员能够相互熟悉对方的工作和进度,能够在必要的时候替对方工作。 4对于项目经理,可以从一开始就指派一个副经理在项目中协同项目经理管理项目开发工作,如果项目经理退出开发组,副经理可以很快接手。但是只建议在项目经理这样的
19、高度重要的岗位采用这种冗余复制的策略来预防人员风险,否则将大大增加项目成本。 5为项目开发提供尽可能好的开发环境,包括工作环境、待遇、工作进度安排等等,同 时一个优秀的项目经理应该能够在项目组内营造一种良好的人际关系和工作氛围。良好的开发环境对于稳定项目组人员以及提高生产效率都有不可忽视的作用。三、软件项目管理的组织模式软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售) ,组成软件产品项目组。公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小
20、组、项目评审小组和软件产品项目组。 1、项目管理委员会项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下: (1)依照项目管理相关制度管理项目; (2)监督项目管理相关制度的执行; (3)对项目立项、项目撤消进行决策; (4)任命项目管理小组组长、项目评审委员会主任、项目组组长. 2、 项目管理小组项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下: (1)草拟项目管理的各项制度; (2)组织项目阶段评审; (3)保存项目过程中的相关文件和数据; (4)为优化项目管理提出建议。 3、 项目评审小组项目评审小组对项目管理委员会负责,可下设
21、开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下: (1)对项目可行性报告进行评审; (2)对市场计划和阶段报告进行评审; (3)对开发计划和阶段报告进行评审; (4)项目结束时,对项目总结报告进行评审。 4、 软件产品项目组软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。四、 项目管理应用与现状时至今日,项目管理作为一种现代管理方法已经获得广泛的认可,获得广泛的应用。从最初的国防、航天
22、、建设工程领域,迅速发展到电子、通信、计算机、软件开发、金融等行业以及政府机关的项目管理工作。随着计算机、网络系统的迅速发展,项目管理技术的不断进步,项目管理软件产品层出不穷,其功能、特点、应用对象也各不相同。此外,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险) 。同时采用规范化管理,专业分工也可以降低对开发人员的要求,从而降低产品研发成本。早在 20 世纪 60 年代中期,人们就发现软件的生产出现了“问题” ,主要表现在生产过程不规范,缺乏管理。后来,人们在软件工程方法学中引
23、入了工程的概念、原理、技术和方法,这种思想在一定程度上解决了软件生产过程中遇到的问题。但是直至 80 年代还是没有提出一套管理软件开发的通用原则,软件管理不善的问题依旧在大范围内存在。目前软件的开发趋势呈现多元化、复杂化。因此多个团队开发相关软件存在版本不一致,维护工作并存等一系列问题。造成软件版本混乱,工作人员的工作交叉、干扰。影响软件的开发和进度和质量随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。而项目管理技术的发展与计算机技术的发展是密不可分的,随着计算机性能的迅速提高,
24、大量的项目管理软件涌现出来。它们可以用于各种商业活动,提供便于操作的图形界面,帮助用户制定任务、管理资源、进行成本预算、跟踪项目进度等。五、项目管理在软件开发及应用过程中的常见问题与解决方法(1)缺乏项目管理系统培训在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。(2)项目计划意识问题项目经理对总体计划、
25、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。(3)管理意识问题部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,
26、以达到“负载均衡” 。解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。 (4)沟通意识问题在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。解决方案:制定有效的沟通制度和沟通机制,提高沟通意识
27、;采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。(5)风险管理意识问题有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用解决方案:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。