12.3.1 影响项目进度的因素
要有效地进行进度控制,必须对影响进度的因素进行分析,事先或及时采取必要的措施,尽量缩小计划进度与实际进度的偏差,实现对项目的主动控制。软件开发项目中影响进度的因素很多,如人为因素、技术因素、资金因素、环境因素等等。在软件开发项目的实施中,人的因素是最重要的因素,技术的因素归根到底也是人的因素。软件开发项目进度控制常见问题主要是体现在对一些因素的考虑上。常见的问题有以下六种情况。
(1)范围、质量因素对进度的影响。软件开发项目比其他任何建设项目都会更容易变更,因为软件的特性是“看不见摸不着”,用户需求的随意变更,造成需求获取不断蔓延,逐渐影响了项目的进度。如果某项工作在进度上达到目标了,但其质量没有达到要求,则必然要通过返工进行修改,增加人力资源的投入,增加时间的投入,拖延了进度。不管是从横向或纵向来看,部分任务的质量会影响总体项目的进度,前面的一些任务质量中会影响到后面的一些任务质量。
(2)资源、预算变更对进度的影响。这里所说的资源最主要的还是人力资源,有时某方面的人员不到位,或者多个项目同时开工的情况下,人员中途被抽到其他项目,或身兼多个项目,或在别的项目不能自拔无法投入本项目。还有一个很重要的资源,就是信息资源,如某些国家标准、行业标准,用户可能提供不了,而是需要去收集或购买,如果不能按时得到,就会影响需求分析、设计或编码的工作。
(3)低估了软件开发项目实现的条件。首先是低估技术难度。低估技术难度实际上也就是高估人的能力,认为项目会按照已经制定的计划顺利实施,而实际则不然。软件项目开发高技术特点说明其实施中会有很多技术的难度,除了需要高水平的技术人员外,还要考虑为解决某些性能问题而进行科研攻关和项目实验;其次,低估了项目的协调复杂度,低估了多个团队参加项目时工作协调上的困难。项目团队成员比较强调个人的智慧和个性,这给项目工作协调带来更多的麻烦。当一个大项目分解成多子项目时,不仅会增加开发人员之间相互沟通的困难,更会增加项目协调和进度控制上的困难。另外,项目主管和项目经理也经常低估环境因素,这些环境因素包括用户环境、行业环境、组织环境、社会环境、经济环境。低估这些条件,既有主观的原因,也有客观的原因。对项目环境的了解程度不够,造成没有做好充分的准备。(https://www.daowen.com)
(4)执行计划的严格程度。没有按照项目计划严格执行,而是把计划放在一边,比较随意去做。例如对于项目团队内部沟通或外部沟通,在计划中要说明清楚人员、周期、方式、方法,不能遗漏,但在实际项目过程中,可能出现沟通没有按时或没有完整地达到所有项目干系人的情况。若项目计划本身有错误,执行错误的计划肯定会产生错误。在实际项目的实施中,除了这种错误之外,还可能因为项目执行上的错误,造成项目的麻烦。例如,项目的客户及其他项目干系人没有及时为项目中出现的情况采取必要的措施或者所采取的措施的不适合具体的情况,没有效果甚至产生了副作用等。另外,如果在项目中的某项工作(如某个子系统或模块、构件)被转包给第三方开发后,不能进行有效的管理,也会造成进度上的延误。
(5)计划变更调整的及时性。对于软件开发项目,并不是一个一成不变的过程。项目开始时,项目计划可以先制定得粗一些,随着项目的进展,特别是需求明确以后,项目的计划就可以进一步的明确,这时候应该对项目计划进行调整修订,通过变更手续取得项目干系人的共识。计划应该随着项目的进展而逐渐细化。没有及时调整的计划或者是随意计划的项目其进度是难以控制的。
(6)未考虑不可预见事件发生造成的影响。假设、约束、风险等考虑的不够周全,造成项目进度计划中未考虑一些不可预见的事件发生。例如软件项目会因为人力资源缺乏,例如人员生病、人员离职、项目团队成员临时有其他更紧急的任务造成人员流动等不可预见的事件,对项目的进度控制造成影响。企业环境、社会环境、天灾人祸等事件对项目的进度控制造成影响。对项目的假设条件、约束条件、风险及其对策等对于进度的影响在项目计划要进行充分的考虑,在项目进展过程中,也要不断地重新考虑有没有新的情况,新的假设条件、约束条件、潜在风险会影响项目的进度。