1.2 软件交付的主要挑战

软件项目管理的目的是确保软件项目能以预定的成本、工期、质量完成软件交付。据最新研究报告显示,在过去 5 年的软件开发项目中,有 17%的项目在部署前被取消,有33%的项目是问题项目,而且在所谓成功交付的50%的项目中,还有28%并未产生预期的业务价值。这意味着当前软件交付存在着许多问题。这些问题造成了项目的成本增加、范围多变、进度延后、风险失控,软件交付的现状不容乐观。

软件交付面临的主要挑战如下。

1.复杂性认识不足

信息化现状复杂性包括软件需求的复杂性、软件环境的复杂性和历史遗留系统的复杂性三个方面。

(1)软件需求的复杂性。企业的业务模式和创新应用在全球化浪潮和新兴技术的影响下变化很大,在复杂的业务应用中需要大量的服务组件。

(2)软件环境的复杂性。技术的进步、开发语言的变迁、系统平台的演进,给软件团队留下了大量自主、外包的成果资产,同时也带来了管理和使用的复杂性,这些资产来源久远,关系错综复杂。

(3)历史遗留系统的复杂性。在信息化建设过程中建立的不同老旧系统,在团队成员、流程和工具方面都产生了竖井,给资源整合和系统集成带来了困难和障碍。

因为对现状复杂性认识不足,导致软件交付的实施计划失真,对软件交付成果的预期太高,为软件交付带来不可预计的风险。

2.计划安排不合理

计划安排不合理是项目管理中最常见,也是杀伤力最大的问题,集中体现在以下方面。

(1)对项目的总体计划认识不足、阶段计划考虑不全、工作计划制订不细,认为项目中有很多不确定因素,计划不如变化快,因此在制订计划时比较随意、经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制。例如,有些项目在需求阶段耗费的时间太长,留给开发阶段、测试阶段的时间太短,影响了软件交付的工期和软件交付的质量。

(2)频繁变更引起阶段计划混乱,打乱了正常的项目工期和资源安排。几乎所有的项目团队都会遇到这样的情况:昨天要求尽早交付,今天要求变更需求,同时在执行变更时,未考虑因变更而引起的计划、预算、工期和资源的调整和同步,造成了项目的范围扩大、进度拖延、成本增加。对计划安排不合理见怪不怪,甚至变成了很难避免的问题,给软件交付带来了挑战。

3.交付物落地模糊

过程交付物落地模糊是指软件全生命周期各个过程的交付物定义不清、责任模糊。过程交付物没有经过评审直接进入下一过程,该输出的没有按要求输出或输出不清晰,交付的质量没有保障。出现这种情况的原因是各过程相关人员沟通不足,缺乏协作精神,在计划制订、意见反馈、情况通报、问题解决等方面各做各的事、重复劳动,甚至造成不必要的损失,导致交付的日期一拖再拖。同时,团队绩效考核指标定位模糊,没有针对性,管理目标和绩效导向不一致,使人员能力与工作不匹配,资源没有得到充分利用,导致人员积极性不高和资源浪费,影响过程交付物的落地,或者造成过程交付物落地的代价很大、成本很高。总之,因为缺乏过程评审、沟通不畅、绩效不合理,使得过程交付物落地不具有可操作性或可操作性不强,这种情况在大型软件项目交付中最为常见,也最为突出。

4.干系人管理失控

在跨不同系统、不同业务、不同职能组织的大型软件项目中,由于信息数据集成多、业务接口人多、职能管理层次多,使得业务需求复杂、项目干系人构成复杂,干系人管理失控的风险非常大。由于不同项目干系人的利益不一样,所关注的需求和期望也不同,项目干系人中有些对业务需求不了解,缺乏整体的、全局的、核心的考虑,只关注自己的“一亩三分地”。还有些干系人提出的需求具有随意性,各说各话、昨是今非,责任心不强,使得项目工作难以开展、软件交付难以推动。项目重要干系人的不可控,给软件交付带来了潜在的风险。在软件项目交付过程中,因为缺乏相应的风险评估和风险应对机制,对风险的应对策略考虑比较简单,导致不能识别和控制风险,不能根据项目环境变化进行风险平滑转移和化解。项目重要干系人失控导致的直接后果是软件交付的质量得不到保障,交付的难度增大,增加了后期软件维护、升级难度,严重的会使软件交付失败,项目投资亏损。

5.专业性知识缺乏

软件交付离不开项目管理的专业性知识,现实中很多交付团队特别是小型交付团队的管理者,完全依靠个人积累的知识经验,项目管理工作的随意性、盲目性特别突出。例如,在没有实质的数据和分析的情况下,接受一个强制任务的日程安排,承诺完成日期。缺乏专业性软件交付知识的常见解决方式就是盲目增加项目组成员,这样不仅会大幅增加项目的成本,还会降低项目的质量。很多项目团队崇尚个人英雄主义,业务技术一肩挑,开发测试一人扛,缺乏专业人员做专业事情、专业知识解决专业问题的意识。例如,一些小型软件项目团队中根本没有专业的测试人员,项目没有经过专业测试人员的系统测试和压力测试就直接上线,给软件交付带来了严重的质量隐患。因此,软件交付需要有丰富的专业知识来指导解决面临的挑战。

软件交付不仅要识别出当前面临的主要问题,还要利用管理、知识、方法来解决或避免这些问题。随着信息化建设的不断推进、信息技术的广泛应用,软件交付出现了新变化,新时代对软件交付也提出了新要求。