一、中文摘要
进入21 世纪,中国计算机软件行业持续了20年的高速增长态势,已经成为我国信息产业发展重要支撑力量。计算机软件行业市场规模不断扩大,软件项目不断增多,软件项目不能如期交付的问题也日益显著。对于软件项目来说,交付周期的延长,带来成本的增加,企业在日益激烈的竞争环境下生存将更加困难。软件企业必须加强项目管理,提升项目进度管理能力,在保证成本和质量的基础上,尽早的完成项目并交付,创造更多的价值。
本文通过对项目进度管理的研究,对国内外学者在项目进度管理领域内的主要研究成果进行了罗列和展示,同时对项目进度管理过程中所使用的六种工具和方法进行了简要介绍。最后,我们针对目前项目进度管理中存在的问题和挑战,提出了四个方面改进的建议。
关键词:项目管理;项目进度管理;进度计划;关键链技术
二、英文摘要
In the 21st century, China’s computer software industry has continued to grow rapidly for 20 years, and has become an important support force for the development of China’s information industry. The market scale of computer software industry is expanding, and the number of software projects is increasing. For software projects, the prolongation of delivery cycle will bring the increase of cost, and it will be more difficult for enterprises to survive in the increasingly fierce competition environment. Software enterprises must strengthen project management, improve the ability of project schedule management, and on the basis of ensuring cost and quality, complete and deliver the project as soon as possible to create more value.
Through the research of project schedule management, this paper lists and displays the main research achievements of domestic and foreign scholars in the field of project schedule management, and briefly introduces the six tools and methods used in the process of project schedule management. Finally, aiming at the problems and challenges existing in the current project schedule management, we put forward four suggestions for improvement.
Keywords:project management; project schedule management; schedule plan; critical chain technology
三、研究背景及意义
3.1、研究背景
自上世纪50年代以来,随着科技和产业的发展,计算机已经融入到生活的各个方面,如今已经迈入信息时代,人们的日常工作生活更加依赖各种各样的软件产品。进入21世纪,中国计算机软件行业持续20年进行高速增长,目前计算机软件已经成为我国产业发展的重要组成部分。
从内外部环境来看,随着信息技术的不断进步,互联网终端设备逐渐普及,信息基础设施逐步完善,移动通信技术与移动互联网技术高速发展,使用户对互联网的使用成本持续降低而体验度大幅提高,为互联网蓬勃发展奠定了基础条件。随着经济的发展和全球一体化的驱动,建立信息高速公路,保证信息快速、安全互联互通、打破信息不对称瓶颈的需求变得日益迫切,为互联网的快速发展提供了充分动力。技术的进步、经济的刺激为互联网大发展提供了根本保证。从2009年至2019年全国互联网用户数不断攀升,其中 2018年达到38.96亿,普及率超过50%,2019年更是突破了40亿大关,达到41.03亿,进入全球重要产业之列。经过多年发展,我国已经成为全球第二大互联网市场。从使用覆盖率看,至2020年3月,我国网民规模超过9亿人,网络普及率64.5%;从企业规模看,全球互联网30强企业,我国占据10位。另外,我国互联网和相关服务行业业务收入同比增长21.4%,领跑全行业。在这种互联网大发展的背景下,为软件行业发展创造了更广阔的空间,也带来了更多的挑战,软件行业不得不面对更多变的需求、更苛刻的环境、更复杂的流程。
从软件项目发展趋势来看,伴随着1946年第一台计算机的诞生,软件项目也随之诞生,到19世纪60年代“软件工程”概念的提出标志着软件开发行业正式走上历史舞台,自此之后众多软件项目逐渐走入人们视野,改变着人们的生活,并慢慢地影响着整个世界。从编程语言层面看,从早期的机器语言到汇编语言,再到面向过程的C语言,以及之后如 java、c#等各种面向对象语言,还有现在比较热门的Python、go等解释型语言不断发展、不断更新,伴随着这些不同特性、各有专长的开发语言诞生,软件开发的能力、速度、复杂程度不断提高;从编程思维层面来说,从早期的机器码编程到结构化编程,再到面向对象编程,以及现在比较热门的面向切片编程都为适应软件开发的便捷化、规模化提供了新的思路。
随着软件需求的不断深入和软件开发能力的不断提升,软件项目与其他传统项目的不同之处也越来越被人们清晰认知,这些不同之处为软件项目管理提出了新的要求和评价方法,与此同时,软件项目管理领域也出现了各种管理模式和管理体系,为软件项目向规模化、产业化发展提供了基础保证。
目前企业进行研发业务主要采用的是项目制,在项目管理中执行过程受到进度、成本、质量等因素的共同制约,一旦制约失衡就会导致项目出现异常,逐渐损耗企业内部的运营管理和资源协调,最终影响企业在市场中的长远发展,在这样的背景下,企业如何运用科学的项目管理技术提升管理水平,对于软件企业的具体实践有着深远的方法论价值和应用价值。
随着软件项目的专业化、复杂化程度不断提高,软件项目需求变动频繁,进度滞后、成本超支情况愈发严重,项目风险居高不下。其中软件项目进度滞后问题最为明显、最为常见。项目管理“进度、成本、质量”三要素有辩证有机的联系,其中进度滞后经常会导致成本增加,为追赶进度也容易降低质量,成本和质量要求的变化反过来又会影响进度计划安排。在软件行业中,项目进度滞后、进度管理不到位的情况与传统行业相比更加常见,这与软件行业需求多变、人员评估困难、进度监控不准确有关系,总体来看传统项目管理的一些理论方法在软件项目管理方面并不完全适用。软件项目属于智力密集型产业,一旦项目延期,即使通过增加成本、增加人力也不能保证绝对缩短工期,而软件项目往往时效性要求较高,所以这将是一个重大的、无法修复的灾难性风险。因此更好地对软件项目进度进行管控,合理周密地编制计划、便捷准确地监控进度、高效科学地及时干预已成为当前软件项目管理过程中非常重要的过程,也是在软件项目管理过程中亟待解决的问题。
3.2、研究意义
在项目管理的各种制约因素中,不同于项目成本的可压缩性和项目质量的遮蔽性,项目进度随着时间的流逝而推进,其不可追回性对于管理者更加直观可见,也更容易进行监管和督查,因此项目进度常常是企业管理的重点。此外,在瞬息万变、竞争激烈的市场中,如果能在进度上早一步完成研发任务就能帮助企业早一步完成交付,早一步获得企业应得的利润,早一步抢占市场扩张的先机,更利于企业的阶段性发展。
传统的项目进度管理方法比较固定,一旦项目发生变化就需要重新制定开发计划,对当前软件项目的适应性比较差。为了解决这个问题,需要在原有进度管理方法的基础上进行改进或者实现新的进度管理方法。
通过改进或提出新的项目进度管理方法,使其能够根据软件项目的变化做出改变,实现进度计划的动态调整,从而使项目管理人员无需频繁制定进度计划,只需要对当前计划进行局部调整即可,降低了软件开发成本,提高项目开发和工作效率。与此同时,把新的项目进度管理方法应用在项目管理工具中,可以很大程度上减少资源的浪费,提高软件项目管理的水平,也更容易得到客户的认可,提高可靠性。
四、国内外研究现状
4.1 国外研究现状
项目进度管理的概念最早出现在美国。1917 年,美国人亨利·劳伦斯·甘特提出把项目的各工作进行排序,并与时间联系在一起,绘制项目活动进度图,即甘特图。甘特图可以简洁明了的展示出各工序的时间及顺序。目前,甘特图在简单项目中仍是可选的管理方法之一。
20 世纪 50 年代,美国杜邦公司、兰德公司共同提出关键路径法(Critical Path Method,CPM),用来解决因项目延期而导致成本增加的问题[1,2]。同期,哈密尔顿咨询公司、洛克西德公司一起提出计划评审技术(Program Evaluation and Review Technique,PERT),在美国海军北极星项目计划中首次使用,并逐渐发展,它利用网络图来绘制各项活动间的先后次序,制定计划,并对计划进行评价[1,3]。1997 年,高德拉特(Goldratt)博士在约束理论(Theory of Constraints,TOC)基础上建立项目管理新方法,即关键链项目管理(Critical Chain Project Management,CCPM),利用缓冲区来减少项目延期的概率[4]。
CCPM在项目管理界和学术界得到高度认可,具体国外的一些研究成果如表1所示。
4.2 国内研究现状
国内对关键链项目管理方法的研究时间稍短,处于初级研究阶段。1962 年,网络计划技术由科学家钱学森首次引入我国,随后国内数学家华罗庚将这一方法进行推广,形成统筹法[3]。
随着国内经济社会的不断发展,项目复杂度不断提升,国内对项目进度管理的研究也在不断进步。2007年,张扬[16]使用遗传算法对项目进度进行了优化,单汨源[17]等对粒子群算法进行了改进,并且把改进后的算法应用在了项目进度中;2008年,万福赟[18]把蚁群算法应用在了项目进度管理过程中,优化了进度计划;2010年,李锦[19]等设计了大型软件项目管理过程的总体流程;陈涛[20]等提出了集成风险管理的软件项目开发过程模型;杨莉[21]等将三角模糊数多属性决策方法应用于软件项目风险评估中, 构建了风险评估的准则体系;2019年,郑永升[22]等提出了一种基于过程管理和量化管理的新型项目管理方法:模型体方法;2021年,黄浩[23]等提出一种双层混合循环迭代算法来管理多任务资源调度。
随着关键链项目管理方法为国内学者所悉知,国内学者对缓冲区大小的计算方法上深入研究,通过阅读文献,整理出相关观点的文献如表2所示。
五、项目进度管理理论
5.1 项目进度管理基本概念
5.1.1 项目约束类型
在进度计划中需要考虑的项目约束有技术约束、资源约束和物理约束[18]。
(1)技术约束。技术约束是项目活动必须遵循的次序,从项目网络图中可以很直观的发现技术约束。
(2)资源约束。资源约束在项目中存在平行活动。当现有资源无法同时满足这些活动时,就会有资源冲突的情况发生。在资源约束的情况下,这些平行活动可能会转变成按照某一规则的先后顺序。
(3)物理约束。物理约束可能会导致通常平行发生的活动受到契约或环境条件的制约。
5.1.2 项目进度管理内容
项目管理包含项目的整合、范围、进度、成本、质量、沟通、风险等方面的管理,其中最核心的是进度、成本以及质量的管理,三者在项目管理中彼此联系、相互影响、彼此约束,尤其是对项目能否按期、保质保量地顺利完成起到了至关紧要的作用,其中项目进度管理决定了项目能否按期完成。项目进度管理一般指在项目开展过程中,对项目不同阶段的进度和项目总工期所进行的管理,因此,项目进度管理的首要任务是在满足项目目标的前提条件下,制定合理的项目进度计划,在项目执行过程中尽量减少项目进度出现偏离进度计划的情形,一旦出现偏离则根据偏离程度采取不同的补救措施或者变更措施。
在 PMBOK 中描述了项目进度管理具体执行步骤的方法论,具体包括定义活动,排列活动顺序,估算活动资源,估算活动持续时间,制定进度计划以及控制进度,如图1所示。
(1)规划进度计划。当前软件开发过程中通常都有比较固定的项目开发人员和管理团队,在软件开发之初就对项目进行了整体的评估和规划,并制定了详细的规划进度计划,项目管理人员可以按照该计划为相应的开发人员分配任务,而开发人员只需要按照进度计划完成自己的任务就可以了。
(2)定义项目活动。当前软件有相应的人员或者小组直接面向用户,并通过不断的与用户沟通,从而对用户的需求有了大概的了解,根据沟通的结果,软件的总体功能也可以随之确定下来,具体的功能要求可以在软件开发过程中与用户进行进一步沟通。项目管理人员可以很容易的根据项目功能,分解出项目所包含的活动,并且这种活动可能会有变化,但是变化的可能性并不大。
(3)排列活动顺序。由于软件活动在软件开发的初期就能确定下来,因此活动之间的先后顺序和依赖关系也能随之确定,即使会有变动,变动幅度也不会特别大。之后我们可以根据活动之间的关系确定项目中的活动顺序,之后绘制出项目的进度网络图也变得轻而易举了。利用项目进度网络图,能够使管理人员直观地了解项目的结构、所需资源、依赖关系等信息,从而更好地分配任务。
(4)估算活动持续时间。目前,软件中可用于估算活动持续时间的方法非常多,比如类比估计法、三点估算法和自下而上估算法等。我们可以根据项目的规模、要求、准确性等因素综合考虑,选择出一种比较合适的估算方法。在以往的软件开发过程中,项目中的活动时间往往是可以估算出来的,这也为制定项目进度计划提供了有力的保障,也可以在一定程度上预估出项目的总体工期。
(5)制定进度计划。软件开发过程中,可以根据活动顺序和活动持续时间制定项目进度计划,并严格按照计划完成开发工作,由于开发周期的原因,这个计划一旦确定就不会轻易发生改变,除非遇到暂时不能解决的问题或者需求出现比较大的变化,但是这样的情况出现的概率比较小。
(6)控制项目进度。传统软件开发由于完成时间比较明确,必须要确保项目严格按照预期计划执行,就需要对项目进行实时监控。当发现实际进度大幅落后于计划进度或者大幅领先于计划进度时,管理人员或者开发人员要及时发现并解决该问题,还要及时更新进度和计划,如果由于某些原因不能按时完成计划内容,要及时作出说明并提交管理人员审批,审批通过后管理人员可以对项目计划做适当调整。
5.2 项目进度管理工具与方法
项目进度管理发展至今已有几十年历史,形成了大量成熟的技术和方法,传统的进度管理方法 包括工作分解结构(Work Breakdown Structure ,简称“WBS”)、甘特图、关键路径法(Critical Path Method,简称“CPM”)、 计划评审技术(Program Evaluation and Review Technique,简称“PERT”),较革新的方法包括关键链技术(Critical Chain Method,简称“CCM”)等,其他学科中的技术如蒙特卡洛模拟仿真技术(Monte Carlo Method,简称“MCM”)也可使用在进度管理中。这些技术和方法在不同的应用场景下,能帮助项目管理人员高效地进行项目进度管理。
5.2.1 工作分解结构
工作分解结构常用来确定项目范围,简而言之就是将工作按结构层级进行分解,常用的分解维度是按项目阶段或者项目交付物进行分解,分解得到的项作为具体的项目活动。WBS通常是树形结构,组织并确定了项目的整个范围[37]。对于项目管理人员而言,可以使用 WBS 界定项目范围,而项目范围是项目进度计划制定的基础和前提条件,因此,工作分解结构在实际项目规划过程中具有重大的意义和价值。
创建项目的 WBS 时,须充分考虑项目的复杂性程度、规模、里程碑、可交付物及各工作包之间的关联关系等因素。WBS 一般存在很多层级,层级越多说明分解越详尽。WBS 一般将项目划分为几个主要阶段,再继续分解到主要任务,再由主要任务逐步分解到具体的工作包。确立项目的 WBS 是项目管理的重要工作,它是项目计划、费用估计、资源配置、质量管理、风险管理等项目活动的基础。要使得项目 WBS 合理,创建时要注意以下七方面要点。
(1)分解层级适宜。层级越多,工作任务越详细,但也会增加项目管理的工作量,导致 WBS 难以阅读。所以,需根据项目目标、难易程度等来确定合理的分解层级。另外,不同层次的项目管理者应可看到不同的工作包层级。
(2)一个工作包应在 WBS 中的一处且只应在一处出现。
(3)项目工作包分解时,要清楚各工作包间的逻辑关系。逻辑关系是合理安排项目资源、编制进度计划的基础。
(4)每项工作包需确定一名负责人。实行工作包单一责任人,才能对项目进行合理、有效的监督和管理。
(5)同一层级的工作包要有可比性,即分解的结构、内容要合理。
(6)应让项目成员积极参与创建 WBS,以确保其对 WBS 的理解一致性。
(7)WBS 在一定程度上要能适应项目无法避免的变更。
5.2.2 甘特图
甘特图,是种工期计划和进度安排工具,拥有通用行强、易于理解、绘制简单的特点,一经推出收到了广泛的推崇,甘特图推出至今已有百年,其在项目管理过程中依然应用广泛,拥有庞大的用户群体,也成为了项目管理的必备技能。
甘特图的核心是以条状图表示项目活动,以条状图的长度表示活动的持续时间,以条状图的先后顺序表示活动执行顺序。甘特图的是一张二维图标,纵轴表示项目活动,横轴表示时间,条状图表示活动的时间计划和实际完成情况,直观地对项目活动计划和实际执行情况进行对比分析,便于项目管理者评估项目进度,理清楚项目的剩余任务,对项目执行情况进行整体分析。甘特图是最早的项目管理工具,将项目活动与时间结合,帮助项目管理者展示工作内容、进度执行和资源使用情况。甘特图简单、直观、易于编制,在各公司的软件项目进度管理中广泛使用。甘特图示例图如图2所示。
5.2.3 关键路径法
关键路径法于 1956 年由美国杜邦公司的 Morgan Walker 和兰德公司的 James E. Kelly提出,他们的研究集中在平衡项目工期和项目成本,即如何在缩短工期的情况下,尽量降低项目费用。而在项目进度管理中,关键路径法以 WBS 分解后的所有活动、活动之间的逻辑关系以及活动持续时间为基础,借助活动网络图的形式,在计算出每一项活动的开始和结束时间后确定关键路径,由此统筹出项目总工期。
关键路径法(CPM)是一种网络图方法,在假定资源充足的情况下,估算项目执行需要的最短工期。使用顺推法计算出所有活动的最早开始时间和最早完成时间,使用逆推计算出所有活动最晚开始时间和最晚完成时间。总时差等于最晚开始时间减最早开始时间或者最晚完成时间减最早完成时间,总时差表示不影响项目整体进度的情况下,当前活动可以拖延的时间。自由时间等于紧后活动的最早开始时间减本活动最早完成时间,自由时差表示在不影响后续活动进度的情况下,本活动可以拖延的时间。如果有多个紧后活动,应该选取最小值作为本活动的自由时差。总时差为0的活动,就是项目的关键活动,将关键活动按照时间顺序排列,得到项目的关键路径。自由时差反应的是该活动可以缓冲的时间,由计算方法可知,关键活动的自由时间也为0。因此在资源不充足的情况下,可以利用自由时差作为缓冲,调整非关键活动的执行时间。要得到项目的关键路径法,可以按照以下步骤进行。
(1)按照从左到右的原则绘制网络图,以圆圈表示节点,以箭头表示工作。
(2)在表示工作的箭头上,标注活动的持续时间。
(3)从左向右,第一项工作的最早开始时间为0,其他工作的最早时间为所有紧前工作中,最早完成时间的最大值。
(4)从左向右计算各项作业的最早完成时间,计算公式为:最早完成时间=最早开始时间+作业所需时间。
(5)最后一项作业的最早完成时间,即为项目的总耗时。
(6)项目总耗时作为最后一个工作的最早完成时间,进行反向推算,按照从右向左,推算每个作业的最晚完成时间,计算公式为:最晚完成时间=紧后工作的最晚完成时间-作业所需时间。
(7)从右向左依次计算每项工作的最晚完成时间,最晚完成时间等于所有紧后工作中,最早开始时间的最小值。
(8)从右向左依次计算每项工作的最晚开始时间,计算公式为:最晚开始时间-最晚完成时间-作业所需时间。
(9)依次计算每项工作的总时差,计算公式为:总时差=最晚完成时间-最早完成时间或者总时差=最晚开始时间-最早开始时间。
(10)总时差为0的工作,就是项目的关键任务,按照时间顺序,得到项目的关键路径。
(11)按照从左往右的顺序,连接所有时差为0的工作,就得到了项目的关键路径。
5.2.4 计划评审技术
计划评审技术又称为三点估算法,是 1958 年美国军队在制定导弹研制计划中使用的技术。这种技术事先假设项目中各种活动的持续时间是随机的,在此基础上推断项目总工期也是随机的,且服从某种概率分布,通过估算项目活动最可能完成时间的概率,进一步推导出整个项目最可能完成的概率。
PERT 定义了三种项目活动持续时间的估算方式:乐观时间(Optimistic Time,OT),即在一切顺利的情况下,完成某项任务最少需要时间;最可能时间(Most likely Time MT),即在一般情况下,完成某项工作最可能需要时间;悲观时间(Pessimistic Time,PT),即在最不顺利的情况下,完成某项工作最多需要时间。
在使用 PERT 过程中,部分项目需注意次关键路径,否则,仅用关键路径工期来计算相应的完工概率,其结论会偏乐观[38]。另外,在有些项目中,工作包独立性假设是难以成立的。所以,使用 PERT 时,要充分考虑项目本身特点,不能盲目使用 PERT,否则可能会使得项目计划与实际不符,失去其指导、控制实际项目工作的作用。
5.2.5 关键链技术
关键链技术是一种基于约束理论的进度规划方法,最早在1996年由高德拉特(Goldratt)博士在著作《关键链——突破项目管理的瓶颈》中提出。约束理论有两个核心的思想:所有现实系统都存在约束,以及约束的存在表明系统存在改进的机会[39]。关键链技术沿用了约束理论中的核心思想,认为整个项目可以看做一个由不同的任务串联成链状的系统,项目中存在的约束可以通过改进项目进行优化,这种改进主要是通过定义关键链以及合理设置缓冲区,来消除资源冲突、多任务等不确定因素对项目工期的影响。
项目人员使用关键链技术时,需要在项目进度路径上根据项目特性设置缓冲,以吸纳资源限制和项目不确定性对项目进度产生的影响,项目人员在链上设置相应的缓冲时段后,可以有效地缓解链上由于资源紧张或者其他未知因素造成的链失效。缓冲主要有三种类型[40]:
(1)项目缓冲(Project Buffer,PB),是一种在关键链末端设置的缓冲,关键链法在去掉安全时间后大大增加了项目风险,通过设置 PB 可以消除和减弱整个项目的风险。
(2)汇入缓冲(Feeding Buffer,FB),是设置在汇入关键链的工序后端的缓冲,通过给关键链活动之前的活动增加 FB,减少非关键链活动的延误对关键链的影响,保证关键链能顺利进行。
(3)资源缓冲(Resource Buffer,RB),是一种在消耗关键资源之前设置的缓冲,保证关键链所需资源能被充分利用,减少资源紧缺导致延误关键链活动的情形。
关键链技术的应用步骤主要可以分为以下三步:
(1)确定关键链。使用 CPM 以及 PERT 制定进度计划基准时,是按照期望工期进行计算制定,因此,关键路径中的活动难免存在大量的安全冗余时间,为了消除安全时间,改用乐观时间作为活动持续时间进行调整,再根据现有资源情况,识别出项目的瓶颈资源,合理分配资源后,项目活动得到了优化配置,从而确定关键链。
(2)计算和设置缓冲。常用的缓冲值设置方法有剪贴法(50%法)和根方差法。剪贴法中设置缓冲值等于活动安全时间的50%,根方差法类似于剪贴法,只是将50%的计算规则换成了根方差进行计算,但不论是剪贴法还是根方差法在计算逻辑上都简化了项目复杂性。因此,不同学者提出了新的缓冲值设置方式,在前文已经简要说明,都具有一定的实践应用价值。
(3)监控缓冲区。常用的监控缓冲值消耗的方法是高德拉特博士提出的三色监控法,即用绿、黄、红三种颜色标识项目执行过程中缓冲的剩余状况,这种方法让项目人员能直观地、便捷地观察到项目缓冲区的消耗情况。此外,也有学者提出随着项目逐渐完成,除了监控缓冲区的消耗以外,还需要考虑项目整体完成情况对缓冲区消耗的影响,于是使用进度控制矩阵结合了项目完工情况和缓冲区消耗使用情况二种因素,对项目进度执行情况进行整体的判断和评价[33]。
关键链技术与经典方法相比,在资源受约束、任务工期存在不确定性的项目中更具优势。具体优势体现为以下四个方面:
(1)关键链技术引入约束理论,明确处理约束的步骤。
(2)关键链技术考虑资源约束以及人对项目的影响,并提供解决思路。
(3)关键链技术引入三种缓冲并强调考虑项目整体缓冲管理,以减少任务工期不确定性对整个工期的影响。
(4)关键链技术提出缓冲监控,并可根据缓冲消耗量给出应对之策。保证项目进度控制工作科学、有效的进行。
5.2.6 蒙特卡洛方法
蒙特卡洛法是大数定理思想的一个典型应用,而大数定理的本质就是用大样本数据计算出来的频率去估计概率,因此蒙特卡洛法(Monte Carlo Method)也称统计模拟法、统计试验法。当需要确定项目工期时,实际是要求解项目按照某个工期完工的概率,或者是求解项目各个活动完成时间的期望值,那么就可以通过计算机大量进行随机试验,假设模拟项目执行几千次,得出项目按照某个工期完工的概率,或者项目各个活动持续时间的平均值,这样就可以将蒙特卡洛法与项目进度管理结合起来,求得最大概率的项目完工工期。
在项目进度管理中,蒙特卡罗方法一般是在进行项目进度计划时,使用计算机进行项目进度执行情况的仿真试验,属预测研究范畴。其基本思想是为项目网络计划中的各随机变量建立概率模型,对概率模型进行抽样试验、形成若干样本,使用统计分析法处理试验结果以得到问题的解。其中,概率模型一般有:正态分布、beta 分布、三角分布、指数分布等。针对PERT存在的不足,一般可引入蒙特卡洛方法[41]。使用蒙特卡罗方法进行项目工期仿真模拟的步骤如下:
(1)项目进行 WBS 活动,确定项目各工作包及逻辑顺序。
(2)为项目选择适当的概率模型。根据概率模型进行各工作包工期估计。
(3)设定模拟参数、模拟目标及模拟次数。进行随机数生成与抽样实验。
(4)根据模拟结果进行统计分析,如指定概率的完工工期,敏感性分析等。
六、项目进度管理改进建议
6.1 加强需求变更管理
需求模糊、变更频繁是软件项目与传统项目相比最明显的特点,也是造成软件项目进度延期的首要因素,这一点既无法规避更不能忽略,所以如果打算软件项目进度可控首先要解决的就是需求变更,只有需要变更在可控范围内,才能使项目进度、成本等各方面整体可控,所以加强需求变更管理是软件项目进度管理的第一要务。
需求的变动通常来源于两个原因:一是,需求分析阶段本身梳理的不清楚,对需求的描述粗糙、模糊、有歧义,导致甲乙双方一开始的认知就不相同。二是,甲方自身确实对期望不具体,在项目进行过程中,由于内外部的变化,导致甲方确实对需求产生了变化的需要。两种原因,第一种的变更原因主要来自于乙方,作为乙方,需要我们整理需求时清晰、完整、明确、多次确认以避免出现此类情况;第二种主要原因来自于甲方,作为乙方并不完全可控,需要我们有一定的预见性,能够识别这样的需求,进行分类标记,以保证项目整体可调可控。
(1)需求整理。需求整理要做到清晰、完整、明确、没有歧义,每项需求必须包含:客户需求描述、业务流程描述、功能需求概述、数据项或界面说明和需求特性及风险说明。
(2)需求分类。对整理好的需求进行分析,按照需求的变更可能性(Possibility简称P)和变更成本(Cost简称C)进行标注分类,分为四大类:
1)变更可能性小、变更成本低,简称为LL型需求。
2)变更可能性小、变更成本高,简称为LH型需求。
3)变更可能性大、变更成本低,简称为HL型需求。
4)变更可能性大、变更成本高,简称为HH型需求。
(3)需求变更及控制。可以具体按以下措施实施:
1)建立汇报制度,让变更来的更早一些。需求变更管理的核心理念是最大程度降低变更带来的影响,而不是消灭变更,尤其是在软件项目领域里,不变是不可能的,变更是不可能被消灭的。项目变更的代价与时间成正相关关系,变更的时间越靠后,变更的代价也就越大。所以管理需要变更的首要任务是对变更做到“早发现、早预防、早处理”。
2)建立变更审批流程,让需求变更成本更高一些。要严格变更流程、阐述变更原因、明确变更需求、规范变更审批并形成完整存档,避免张口就来的非必要、非紧急、非合理的无效变更。
3)不同类型的需求采用不用手段,让响应需求变更成本更低一些。根据需求分析阶段定义的需求分级,将不用类型的需求采用不用的方式进行构建管理,以降低一旦响应了需求变更带来的负面影响。对应LL类型需求,使用成熟框架复用开发、优先开发,引入自动化测试工具,花最少的时间、最少的精力快速完成。对应LH类型需求,在合同签订之初多次确认,将其中变更成本于客户充分沟通,并留有证据,一旦需要变更,明确合同约束,建立需求基线,若实在不可避免,考虑将项目分期处理或分多项目处理。对应HL类型需求,使用迭代开发模型,采用微服务架构,降低系统耦合度,开发进度安排可适当靠后,待进一步明确后快速进行。对应HH类型需求,把主要的精力放在需求调研、整理分析和确认上,实际的开发可靠后一些。一方面采用可采用H需求的模式,尽可能减低响应变更成本;另一方面尝试将HH型向LH型靠拢,或者通过前期的充分调研和沟通,将HH型向H型靠拢。
6.2 优化人力资源配置
以软件研发项目为代表的人力资源密集型项目,人力资源配置具有不言而喻的重要性,项目管理者在项目进度执行过程中需要做好相关工作,优化人力资源配置,保障项目各个阶段的进度工作顺利进行。主要可以采取的保障措施有以下三点:
(1)定期举行人员培训。对于一个研发项目,不同的研发人员具有不同的技术水平,产生出的价值也是不同的,对项目进度产生的影响也可能是正向的或者负向的。为了减少人员技术水平差异引发的项目进度负向影响,可以通过定期培训的方式,共享项目组知识库,让技术水平高的项目人员以分享项目经验的方式指导、带动其他项目人员,共同提升项目组整体的技术水平,达到提高项目工作效率的目的。此外,定期培训项目人员能大大提高项目组人员的内部通配性,一旦出现资源紧缺,可以通过内部资源置换实现资源缓和,减少项目活动出现延期的现象。
(2)制定合理的奖惩机制。结合项目性质、目标对项目组成员实施合理的考核、选拔、激励和惩罚措施,能让项目组成员更加投入到项目工作中,同时发挥个人的潜能,提升工作效率,顺利推进项目进度执行。针对项目重要活动节点,当活动执行人员按时完成或者提前完成活动,给予相应的奖赏,包括但不限于休假、加班费、额外奖金等,激励项目组成员自觉接纳按时完成工作的积极态度;当活动执行人员延期完成任务,需要启动相应的追责机制,包括奖金扣除、加班、降低职级等。其中,需要注意的一点是,由于企业中软件研发类人员具有较大的流动性,为了尽量减少和规避人员流动性对项目产生的不利影响,在制定奖惩机制时,需要注意与项目组人员提前协商确定奖惩内容,以免影响项目团队整体士气。
(3)建立高效的沟通机制。在项目过程中,常常涉及到跨公司、跨部门、跨职责的协调和沟通,高效的沟通机制能帮助项目组成员建立起良好的工作关系,减少推诿现象,减少沟通不畅导致的矛盾和冲突,提高项目整体执行效率。高效的沟通机制需要从实现项目交付的角度对项目人员沟通流程、沟通方式、沟通内容进行定义,例如项目人员之间协作信息如何传递,是通过信息管理系统的工作流程还是邮件等书面方式传递;项目人员就事项沟通协商后进行责任划分,责任归属如何传达给全体项目人员;如何向领导层级汇报沟通项目信息,以及获取相关管理支持等。此外,还需要注意相关方登记册的记录,实时更新项目的相关方人员,确定相关方的信息需求,包括所需信息的类型和格式,以及信息对相关方的价值,减少沟通过程中出现信息遗漏、信息认识偏差的现象。
6.3 加强项目管理质量管理
进度、成本、质量在项目执行过程中,是相辅相成,互相制约又彼此影响的关键要素。项目质量不合格,在项目验收中通不过检测,将会带来项目的返工修改,额外增加工作量、增加项目成本、增长项目执行期,拖慢项目交付进度,进而影响项目利润水平,影响项目评价。为了顺利交付项目,保证项目交付质量,可以从以下四点进行优化:
(1)明确质量标准。没有质量标准,就无法对质量进行评价,也就谈不上质量管理。因此,要进行良好的质量管理,首先以公司软件项目交付质量为依据,与用户沟通讨论,形成项目交付的质量共识;然后在项目团队内部,对质量标准进行宣贯及讨论,项目组内部达成一致;接着将质量标准形成文字规范,提交到项目文档库;最后挑选典型内容,形成质量标准示例,提交项目库,与文字规范一起作为共享资料。
(2)加强质量监督。质量规范形成之后,要配套的进行质量监督,不然就会松懈,没人严格执行,最终成为一纸空文,无法对项目执行构成约束。项目质量监督工作要责任到人并制定相应的计划,严格按照计划执行监督,形成质量检查报告。质量监督人一般由项目经理或者技术负责人担任,质量监督的周期随着项目的推进,可以降低检查频率,一方面项目前期,项目组成员对规范不熟悉,有一个适应的过程,出现不规范执行的概率会比较大,及时检查并发现问题,有助于问题的及早解决;另一方面随着项目进行,项目组成员对质量要求已经很熟悉,在工作中习惯了按照质量要求去做,项目经理也可以释放精力,将更多的时间投入了其他管理工作中。
(3)优化资源配置。合理安排项目资源,优化资源配置,形成项目执行资源最优解。在项目资源分配中,如果全部投入的是优质资源,比如5年以上开发经验的开发员,首先带来的问题就是项目成本过高,其次工作经验相仿的人,在项目中的工作安排也很难处理,不同难度的任务,在项目组中形成攀比,削弱团队战斗力。同样的,如果投入的都是新员工,那么项目团队的执行能力就是大问题。
6.4 使用科学管理工具
在项目管理中,如果想要项目进度按计划执行,离不开科学的管理工具,在软件研发项目中,常用的管理工具主要有以下三种:
(1)项目信息管理软件。在项目执行中存在大量的数据流转和信息往复传递,借助项目信息管理软件能十分便捷地帮助项目组成员高效管理日常工作内容,例如可以使用代码管理软件 SVN(subversion 的缩写),实现软件的版本控制,当多个人共同开发同一个项目时,实现共享资源以及软件的版本控制;使用国产项目管理平台禅道进行产品和项目管理,实现软件全生命周期管理,将产品设计、开发、测试、交付等环节集成在相应的工作流程中,满足不同种类的项目需求;使用国外项目软件平台JIRA进行项目事务跟踪,包括需求收集、流程审批以及敏捷管理等;使用 Microsoft project 进行项目进度的实施跟踪,出具进度分析报表等。
(2)会议与汇报。以项目经理为首,召集项目相关方进行项目周度或者月度总结会议,汇报项目阶段性完成工作事项,并对下一阶段的工作内容进行安排和准备。在会议中,项目组成员就项目存在的问题,寻求项目相关方支持,最终目标是确定切实可行的解决方案。项目相关方通过会议和汇报,了解项目进度现状,并根据项目约束条件提出意见和建议,共同推进项目进度,以达到项目顺利交付的目标。
(3)日常站会。在项目工作中,为了短时高效分享团队成员的工作进展,在每周规定时间,花 15-30 分钟,通过日常站会的形式,让项目组成员各自介绍手头正在处理的工作,以及在工作中遇到的问题,是否需要其他人员的协助等。通过日常站会的方式,可以及时发现项目进度可能存在的风险,并对每个成员给予相应的支持,进一步增强团队凝聚力,建立良好的项目团队氛围。
七、总结与展望
本文通过对项目进度管理的研究,梳理了项目进度管理理论的详细发展阶段,并对国内外学者在项目进度管理领域内的主要研究成果进行了罗列和展示,力图清晰地呈现项目进度管理的发展脉路。同时对项目进度管理过程中所使用的工具和方法:工作分解结构、甘特图、关键路径法、计划评审技术、关键链技术和蒙特卡洛方法进行了简要介绍,可以发现关键链技术是当前的研究热点,很多学者对其中的缓冲区计算各抒己见。虽然项目进度管理在理论上取得很多进展,但是在实际应用时,还是存在各个方面的问题与挑战。我们针对目前存在的问题和挑战,提出了四个方面改进的建议:加强需求变更管理、优化人力资源配置、加强项目质量管理和使用科学管理工具。
本文仅仅是一个对项目进度管理的综述,仍然处于理论层面。我们知道目前开发的所有软件项目最终都需要落地应用,在这实践过程中会有许多方方面面的问题和挑战。在未来,对于项目进度管理我们可以对以下三个方面进行更多的思考与实践:
(1)在应用关键链技术时,如何把握关键链技术在不同领域应用的共性,摸索出应用的一般规律;如何探索出关键链技术在某一领域的应用特性,能够根据项目特点因地制宜地合理地使用关键链技术都需要我们关注。缓冲区设置与计算方法的精确性、多资源约束情况下进度管理模型的建立,也值得进行更为深入的应用与研究。
(2)软件敏捷开发模式优化研究,对于采用传统软件开发模式的项目来说,能够很好的应对需求的变化对项目进度的影响,使得项目在实施过程中能及时依据内外部的反馈来及时调整项目的进度计划和实施。可以考虑敏捷开发模式与关键链技术相结合,使得项目计划在制定时充分考虑资源约束与不确定因素对项目的影响,通过将风险量化可以使得进度计划制定更加科学和有效。
(3)目前几乎所有文章对于项目进度管理的研究都是基于理论层面,我们后面在实际项目中真正应用项目进度管理的理论知识,并不断总结和优化所提出的理论,试图找出对于不同项目类型使用不同进度管理方法的通用规律。