你可能很难相信,一般人对软件产品的要求要比软件项目严格多了。使用软件的人希望软件产品可以连续使用好几个钟头,可以连续执行好几百万个程序命令而历我弥新。可是软件***对软件项目反面不抱太大期望。使用者与客户也许会抱怨项目慢了一个月、三个月甚至半年才推出,也许抱怨程序不好用或缺乏几项重要功能。可是如果软件产品计划中的主体如期推出,即使不惜血本,大部分消费者还是会认为开发产品的项目成功了。我们看过太多失败的例子,所以我们认为只有完全像是扶不起的阿斗的项目才算是失败的。
多年来,软件工业的高层人士对软件项目的要求总是爱之深。责之切。一个成功的项目应该尽可能满足成本与时间的需求,以追求高质量的产品为目标,不要瞻前顾后。确定了这点,就现阶段���技术还可以控制在百分之十上下的水准。一般的软件项目主管都可以做得到,即使是项目外的其他人,如高阶主管、经理、客户、投资人和使用者代表一样可以发挥相同的影响力。
一名Construx software Builders的**软件工程师请我去看他们一些失败的案例。在专家眼里,失败的原因通常很明显。中型软件项目的失败(20000-250000行源代码)其实很容易避免。此外我发现软件项目不是不能达到*短时程、*低成本。*佳质量或任何其他目标择一力臻**。
并非以上所有目标都能同时完成,本书想要告诉大家的是力求在众多目标之间取得平衡,让一个低成本而高质量的产品能如期推出。
求生需求
软件项目求生**步就是确认生存的基本需要。Abraham maslow观察出人类的需求依照程度由低到高,以自然**的形态呈现,*低程度的需求称作"生理需求"。这是人类生存所必需的*低要求。在我们满足上层的需求前,必须先满足图中的虚线以下部分的软低程度需求。所以要先满足对食物、空气、水的生理需求之后,我们才能够追求"归属感"与爱自尊与自我实现的满足。
如同许多软件专家一样,我发现类似的需求**也可以套用在软件项目上,软件项目有一组斟酌需求必须先被满足,逐步攀爬到需求金字塔的上层,就可以大幅改善项目的质量与生产力。
项目团队必须满足"一定会完成项目"的*低层次需求,接着再来考虑有关时间和预算目标百分之十上下的问题,而且项目小组必须在有限的预算和时间之内,以现有的技术水准,努力推出预定计划中的*佳软件。
软件项目的需求**与制作项目的个人需求大相径庭,举例来说,开发人员会将他们的个人自尊摆在健全的团队动力之前,但就项目而言,健全的团队动力要比开发人员个人自尊更重要。
本书针对软件项目需求中下**的部分讨论,只要当上层需求的方向影响下层需求的满足时,才会提到上一**的部分。
求生权利
处境艰难的项目威胁到各相关人士的生存需求,客户担心项目到底不能推出,结果会不会太慢或太贵。主管担心客户会不会取消项目导致失败,或者开发人员能不能够完成,开发人员担心他(她)会不会丢掉饭碗,或是被迫牺牲数百上时的休闲时间表示他(她)真的全心投入工作了。每一种情形,每个人都退回到项目需求**的*底层部分----担忧是否满足他们个人承诺的**需求,这样的反应反而让他们放弃追求金字截上层可达成*高质量与生产力的东西。
……