韩 涛
(中国海洋大学,山东 青岛 266003)
试析软件项目的进度控制
韩 涛
(中国海洋大学,山东 青岛 266003)
以PMI项目管理体系相关理论为依据,对软件项目管理中的进度管理中存在的问题进行研究。其中人的因素、技术困素等都对软件项目进度有影响,这就需要对项目进行合理安排,协调好团队和人的问题,并注意项目质量的跟踪管理及处理好资源预算变更对进度的影响等。
进度管理;软件项目;影响因素;管理依据
项目管理是以项目为对象的系统管理方法,通过一个临时性的专门的柔性组织,对项目进行高效率的计划、组织、指导和控制,以实现项目全过程的动态管理和项目目标的综合协调与优化。
软件项目的进度管理是指对软件项目的各建设阶段的工作内容、工作顺序、持续时间和衔接关系编制计划,将计划付诸实施,在实施过程中经常检查实际进度是否按计划要求进行,对出现的偏差,要分析原因,采取补救措施,排除故障,或调整、修改原计划,直到项目竣工、交付使用。所以进度管理的最终目的是确保工程项目投运时间目标的实现。软件项目进度管理的总目标就是建设工期。
(1)软件项目相对其它工程项目来说是一个抽象的逻辑实体,而其它工程项目具有物理实体特性。
(2)软件项目到现在为止基本是手工开发,软件产品基本是“定制”,软件设计人员的技术能力基本决定了产品的特征和质量。
(3)软件项目及进度管理既受到技术因素的影响,也受到业主单位政治、文化和决策的影响。
(1)通过对项目进度控制,保证用户工程顺利进行。进度失控导致的直接后果是业主不得不推迟系统投入正常运行的计划时间,直接增加业主的负担,包括时间、人力、物力和财力的继续投入。
(2)减少系统开发质量方面的问题。质量控制和进度控制是一对孪生兄弟,是相互起连锁反应的,进度失控可能导致质量失控;同样,质量的失控也会导致进度失控。软件的质量是管理信息系统的生命,如果它的质量得不到保证,用户那一关是无法通过的。
(3)影响业主和承包商的关系。在人们的法律意识越来越强的当今社会,法律越来越多地成为一种共同的语言。管理信息系统开发的双方是合同关系,即法律关系,不是亲戚关系。如果双方关系比较融洽,对一些问题比较容易达成谅解,则进度失控的问题对双方之间的关系不会造成多大的影响;否则,索赔、调解、仲裁这类的事情必然会使双方的关系恶化,从而造成问题的议而不决,长期僵持不下,拖延工期。
进度管理一般遵循以下原理:
(1)整体原理:项目是由若干相互区别又相互联系的单元,按一定结构组成的有一定功能的系统。软件项目的实施就是对这个复杂系统进行有效的集成过程,整个系统集成的过程中每个环节都必须组成为一个既有明确分工,又相互协调配合,紧密衔接、有条不紊进行的有机整体,才能达到既定的质量、进度和投资目标。
(2)团队原理:团队原理实际是整体原理在组织管理方面的延伸。要求在合理专业分工的同时有周密的协作配合与强有力的整体协调。只有这样才能防止各自为政、相互掣肘等弊病。
(3)层次权限原理:计划的实施是按层次运作的,计划的控制因此也必须划分层次,由不同层次的组织来负责。各个组织层次按其管理职能形成权限分级,不同的层次要规定相适应的责、权、利,实行逐级承包责任制。
(4)闭合原理和回馈原理:闭合原理是指任何管理过程必须使各管理环节构成一个循环往复的闭合环路。对进度控制来说,应当按计划编制、贯彻执行、检查监督和偏差处理的科学程序进行。前一阶段执行情况和偏差处理结果又成为后一阶段计划编制和调整的基础,开始新一轮进度控制,这就形成了进度控制的封闭环路。回馈原理是控制论的一个重要组成部分。应用于进度控制中,就是把计划的控制信息下达(输送)给执行者,执行中若遇到干扰因素影响或内部动作失衡而产生偏差,将偏差信息送回原控制负责部门,在它的影响下作出强化或修正原计划的决策,再发出进一步的控制信息,从而使进度沿着预定计划目标进行,最终达到预期进度目标。
从软件项目承建单位角度看,进度管理一般包括以下几方面:
(1)根据合同工期目标,编制实施准备工作计划、实施方案项目、实施总进度计划和单位工程实施进度计划,以确定工作内容、工作顺序、起止时间和衔接关系,为实施进度控制提供依据。
(2)编制月(旬)作业计划和实施任务书,做好进度记录以掌握实施实际情况,加强工作以促成进度的动态平衡,从而使进度计划的实施取得成效。
(3)采用实际进度与计划进度对比的方法以定期检查为主,应急检查为辅,对进度实施跟踪控制。实行进度控制报告制度,在每次检查之后,写出进度控制报告,提供给业主单位、监理单位和企业领导作为进度控制参考。
(4)监督并协助分包单位实施其承包范围内的进度控制。
(5)对项目及阶段进度控制目标的完成情况、进度控制中的经验和问题作出总结分析,积累进度控制信息,使进度控制水平不断提高。
软件项目进度控制是依据项目进度计划对项目的实际进展情况进行控制,使项目能够按时完成。在软件项目开发过程中,必须不时对进度进行监督,以保证进度计划的顺利实施;同时掌握好计划的具体实施状况,将实施状况与进度计划进行对比分析,如不相符时采取合适的对策,使项目按预定的进度目标进行,避免工期的拖延。这个过程如图1。
图1 项目进度控制流程图
软件项目的进度受许多因素影响,包括人的因素、技术因素、设备采购的因素、工具因素、资金的因素等,这些因素主要来自于以下几个方面:
(1)项目估算是否准确
对软件项目估算是否准确是对项目进度计划安排影响最大的一个因素,估算不准确的原因很多,主要的两个方面是缺少有经验的专家和缺少历史数据的收集,对于这两点,只有通过多个项目的积累才可能得以改善。另外,估算过程中还需要考虑一些特殊因素的影响,如项目新进了几名新员工可能会降低项目的平均生产率;项目过程中需要采用某种新技术而需要投入额外的预研时间等。
(2)关键资源和关键路径的安排是否合理
在进度计划安排中是否优先保证了项目关键路径上的资源,是否通过人员技能矩阵对项目关键资源进行分析和安排。在任务安排过程中尽量减少关键资源上非关键任务的安排。另外,在进度计划安排上应该适当安排适当的余量,这样在项目遇到突发事件,或项目风险转变为实际问题时才能够有人员和时间进行处理。
(3)项目中的资源是否充分利用
由于存在关键路径和岗位角色矩阵,所以项目中人力资源往往并不能充分利用起来。在中小型项目中为了充分利用相关资源,项目更应该采用敏捷和迭代的开发方法,需求阶段开发人员可以先熟悉需求和进行公有组件的开发,而测试阶段需求人员也可以介入测试。所以对一个软件项目而言,需要保证到项目成员的整体利用程度在70%以上,否则就应该考虑采用新的开发模式和生命周期模型。
软件项目跟其它工程项目最大的不同就是人和团队的因素对项目影响很大,软件项目中的编码人员也是重复的创造性的非简单重复的劳动。工程建设中走了一个泥水工,可能马上就能找到替代人手,而软件项目中人员流失后即使很快找到了新成员,也需要花费相当长的培训和学习时间,新成员才可能真正达到项目要求的生产率。这方面影响因素主要如下:
(1)人员技能未达到要求
在项目开始之初,我们假设项目成员都能够达到组织的要求,但往往并不是每个成员都能够达到要求。而且项目中每个成员的生产率差异可能很大,也给项目进度安排造成影响。在项目开始之初,应该对项目成员的技能进行一次总体的评估,对于大家都欠缺的技能应该安排统一的培训,后续还需要对培训的效果进行跟踪;对于个别人员技能欠缺的应该单独预留自我学习时间或通过以师带徒的方式进行培养,使其技能能够尽快达到要求。
(2)项目成员责任心不强
态度决定一切,细节决定成败。对于项目过程中的各项任务,经常出现由于项目成员责任心不强、敷衍了事,导致产出的工件质量较差,引起大量返工的情况。在这种情况下更应该加强项目规范的建设,项目经理应加强同这些成员的单独沟通,加强项目的团队建设和集体荣誉感。
(3)项目人员流失
项目人员特别是项目关键成员在项目进行过程中的流失对项目影响很大,对于这种情况应该在项目开始之初中就作为专门的风险进行跟踪,并考虑具体的应对措施。
时间和质量是项目中两个重要因素,在保证项目进度的情况下我们往往会牺牲了项目的质量。而由于软件项目中测试环节的引入,项目的最终产出又需要保证我们的最终产品满足一定的质量规范。所有项目中经常出现项目后期测试问题太多,BUG修改和回归测试等花费了大量的时间而导致项目的延迟。对于项目质量因素的制约主要分析为:
由于项目本身进度紧张,往往在项目进行过程中忽略了对项目各阶段产出物的质量的评审。导致到项目后期测试时候问题全部暴露出来,而这时候如果是需求引起的缺陷则往往会耗费到前期评审的5~20倍的工作量来进行弥补。所以在软件项目中应该注重项目各阶段的评审工作,提早发现问题并解决问题,避免项目后期大量返工。
对于大中型系统总统设计和架构设计更显重要。架构设计不仅仅要考虑满足业务的功能性需求,而进行子系统、接口、组件等的设计和划分;同时架构设计更需要考虑满足系统的可扩展性、性能、安全性、可维护性等非功能性需求。架构人员应该通过架构设计屏蔽整个系统的复杂性,而向模块设计和开发人员提供一套简单、高效的开发规程和模式,这样才能够真正提高后续设计开发的效率和质量。
资源、预算变更对进度的影响。软件项目最主要的还是人力资源,人力资源是项目能否顺利执行的保证。还有一个很重要的资源,就是信息资源,如果不能按时得到,就会影响需求分析、设计或编码的工作。其它资源,如开发设备或软件没有到货,也会对进度造成影响。
预算也是一种资源,它的变更会影响某些资源的变更,从而对进度造成影响。
甘特图,也称为条形图或横道图,最早于1917年由美国科学家甘特提出。它是以二维图形的方式将项目活动与时间的关系表示出来,具体来说项目活动在纵轴列出,项目活动时间在横轴上列出。甘特图直观地表达了项目各项活动及其需要的时间,它是进度计划方法中最简单的一种。
工作分解结构(WBS)是面向可交付成果的对项目元素的分组,它组织并定义了整个项目范围,未列入工作分解结构的工作将排除在项目范围之外。它是项目团队在项目期间要完成或生产出的最终细目的等级树,所有这些项目的完成或产出构成了整个项目的工作范围。
项目由不同的基本任务构成,每个基本任务都有不同的开始时间和结束时间。对一个项目来说,项目网络图中最长的或耗时最多的活动路线完成之后,项目才能结束,这条路线叫做关键路线,关键路线法是通过分析活动路线进度安排的最少来预测项目工期的网络分析技术,通过正推法计算活动路线的最早时间,通过逆推法计算活动的最短时间,在此基础上确定关键路线,并对关键路线进行调整和优化,使项目进度计划最优。
计划评审技术是把项目活动时间看成服从某种概率的分布的独立随机变量,PERT有三个基本的时间要素:乐观工期(To)、悲观工期(TP)和最可能的工期(Tm),采用三点估计法来估算活动的持续时间,公式为Te=(To+4Tm+TP)/6,计算结果Te即为活动的基准时间。
以上几种进度计划方法根据其特点,花费的时间和费用也不同。关键日期表效率高,费用低。WBS和甘特图相对来说时间和费用有所提高。CPM方法要求对每个活动加以分析,活动数目较多,需借助计算机等工具求出总工期和关键路径,花费的费用、时间更多,适用于项目活动的持续时间有历史数据的项目。PERT方法是项目进度计划方法中最复杂的一种,花费时间和费用也最多,适用于项目的持续时间有较多不确定因素影响的活动。采用哪一种进度计划方法,应根据项目的规模大小、复杂程度、活动要求确定。
由于软件项目在执行时存在较多影响因素,在执行过程中有可能与计划出现时间偏差(延长),因此,我们可以采取多种措施缩短以后计划的执行时间:
(1)投入更多的资源来缩短活动持续时间;
(2)不增加资源数量,但延长日作业时间;
(3)缩小活动范围或降低活动要求;
(4)改进工作方法或采用新技术提高生产率。
纠正措施方法多种多样,但无论哪种方法,在纠正措施确定后,都需要将纠正措施纳入进度计划,对其进行修正并重新计算进度。
[1] 王长峰,李建平,纪建悦.现代项目管理概论[M].北京:机械工业出版社,2008.
[2] 于滨,张宝凤,刘宏志.信息工程监理进度控制[M].北京:清华大学出版社,2006.
[3] 刘文,朱飞雪.软件工程基础教程[M].北京:北京大学出版社,2005.
责任编辑:张彩云
F270.7
A
1671-8275(2010)06-0030-03
2010-10-20
韩涛(1974-),男,山东淄博人,中国海洋大学项目管理专业在职研究生,山东省淄博市淄川区国税局科员。研究方向:税收。