我最喜欢引用的 Albert Einstein(爱因斯坦)的话是“Keep things as simple as possible, but no simpler”。通过这句话,爱因斯坦告诉我们,虽然朴素是一种美德,但问题的正确解决方案必须涉及所有相关的事实。在本文中,我将此原则应用到准时交付大型复杂开发项目(在预算之内)的问题上,并满足涉众的需求。
开发项目的失败率是众所周知的,并且仍旧没有降低。1尽管一贯存在超过预算、项目推迟的记录,而业界却很少采取反映开发的基本事实的实践:在几乎绝大部分的常规项目的开始阶段,完全了解项目的需求是不可能的。因此,高度准确地估算满足需求的工作也是不可能的。事实上,在过去的四十年里,我们了解到项目参数估计的偏差(如进度和预算)是非常高的。
这些项目没有满足涉众需求的真正原因是它们在管理时假设这些偏差不存在。对偏差的忽略大概是因为认为统计太理论了,没有实际意义。这就是过于简化事物的实例。另一方面,包含偏差导致了更好的结果。理论和实践恰当的平衡是关键的成功因素。本文的主题就是达到此平衡。
如我要说明的,项目参数估计中偏差的减少是管理动态系统开发的关键。特别地,我将提出一个将此概念应用到项目管理的实践框架。
环境及定义
说到管理(governance),我的意思是:
建立组织的责任、权限和通信链
执行度量和控制机制,用以有效地推进组织
本文将关注估算对管理的度量及控制部件的偏差的影响。
International Council on Systems Engineering (INCOSE) 手册2中对项目风险管理的定义包括技术风险(不能实现系统的技术需求的可能性)及性能风险(不能满足项目成本或进度)。虽然本文中说明的方法一般适用于技术和项目风险,但是技术风险稍有不同,因此我将注意力限制在性能风险上。在之后的文章中将更全面地考虑技术风险及其与性能风险的关系。
本文是写给所有关注软件、系统、产品开发,和集成项目的管理的人。虽然需要一些概率统计估计,用来完全了解此处提出的概念,但是我已经争取将专业内容减小到最少。
作为概述了明确地处理开发项目中不确定性的理论和实际含义的系列文章的第一篇,本文介绍了理论背景并简要地讨论了项目组织、价值及复用的含义,及开发过程分类法。后面的文章将更全面地介绍这些含义。
随机变量
在项目的开始,不能确定任何事。例如,最好也不过是有根据地推测项目的成本、工作及持续时间。项目估算工具根据可用信息提供工作及持续时间的估计。但是由于对工具的输入是估计的,所以工具的输出也是估计的。
在数学术语中,不完全确定的值称为随机变量。随机变量是一个根据概率分布取值的函数。例如,假设完成一个任务所花费的估计时间值是 3 个月。作为估计,3 个月这个值只能是最可能的值。实际的可能期间是 2.5 或 3.5 个月。不太可能的值是 1 个月或 4 个月。所以任务持续时间不是一个单一的实数,而是描述一定时间范围内完成的可能性的随机变量。
随机变量,如上例中的时间, 与一些特性相关,这些特性不同于那些与单个值相关的特性。取代单个值,随机变量拥有描述估计值可能性的函数,该函数称为变量的概率分布。随机变量的加权平均值是期望值。随机变量的方差衡量随机变量值与期望值偏离的程度。3对于许多随机变量来说,一个好的选择是正态分布,常常表现为一个钟型曲线,如图 1 所示。
例如,如果任务的持续时间是正态分布的随机变量,平均值为 3,方差为 1,图 1 中的曲线给出了从 0 到 6 之间取值的概率。这只是无数可能的概率分布的一种。
图 1:平均值为 3 且方差为 1 的正态分布
由于规划更可能超过进度和预算,规划参数的实际分布很可能向右倾斜,更像图 2 中所示的曲线。分布的实际形状可能由应用金融微积分所导出。4
图 2:规划参数的更现实的分布
文章来源于领测软件测试网 https://www.ltesting.net/