`
sunxboy
  • 浏览: 2870074 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

软件开发的滑铁卢-重大失控项目的经验和教训

阅读更多

【IT168 分析评论】

这本书是1997年10月由Prentice Hall出版社出版,2002年2月电子工业出版业引进的。作者Robert L.Glass是40年IT行业经验的“老ITer”,从20世纪80年代开始,就专门收集和研究IT行业中那些知名的、重大“失控”项目,并努力从中抽 取一些规律和经验,供同行参考。虽然书中研究和讨论的17个案例都发生在20世纪80年代中后期至1997年之间,从时间上看显得有些“过时”,但是鉴于 国内跟美国之类的发达国家在工程学和软件项目管理方面都还存在着巨大的差距,并且书中的项目都算得上一些“超大型”项目,相信国内绝大多数同行都没有接触 过,所以这本书在今天开来,仍然是非常非常有价值的。

不过,如果只是在一些项目中做过开发工作,而没有做过一些大型的、复杂的项目,也没有尝试去思考如何让一个IT项目成功,甚至没有切身的体会过完整的“IT行业”是一个什么概念,那么这本书就显得有些太深了。

另 外,作者写这本书的目的也并不是为了系统的讲解IT项目管理,所以不能指望看过这本书后就能学会做项目;但是如果你已经有了一些项目管理的经验,那么倒是 很容易通过这本书来重新系统的总结和提升已有的知识和经验,想想如果自己以后遇到类似的项目该怎么办,如何尽量避开这些问题和风险。

托尔斯泰说过,“幸福的家庭都相似,不幸的家庭各有各的不幸”,但IT项目刚好相反——成功的项目可能各有各的原因,但“失控”的项目,却总是有些相似的问题。

在 本书中,作者引用了KPMG在1989年和1995年进行的两次调查的报告,而两份调查报告的核心,是对英国250家软件企业的“失控”项目进行的统计、 分析和“失控根源”分类。根据KPMG的报告,这些项目最终“失控”的原因,归咎于没有指定完整的项目目标(特别是需求)、拙劣的计划和评估、采用新技 术、缺乏或根本不具备项目管理方法、团队中缺少资深人士、硬件/软件供应商的低劣表现;而本书的作者在最后又附加了一条“系统无法满足性能和可靠性要求 ”。下面就对这7大根源先做一个整理。

1. 没有指定完整的项目目标

在KPMG的报告中,有51%的项目失控被认为与“没有指定完整的项目目标”,而核心又是我们在IT项目中最常见的一个问题——需求。作者也列出了几个常见的需求问题,包括:

1)需求过多,系统过于庞大:似乎注定了越庞大的项目需求就越复杂,也越容易失败;

2)需求不稳定,用户无法决定他们真正想要解决的问题;

3)需求模棱两可

4)需求不完整

作者在书中也用占整本书1/3的篇幅讲述了2个很典型的案例,来说明需求突然发生重大变更和项目目标定位过高导致的“失控”案例。可如何做好需求管理,控制好需求变更,这在今天仍然是一个难题。

2. 拙劣的计划和评估

在 这一节里,作者提到的关键,是对项目的难度和工作量评估不准确,导致项目的进度永远达不到schedule的要求,并且被无限期的拖延下去。这的确是我们 在IT项目中遇到的第二个难题,似乎所有的项目的完成时间都要比预定计划推后一些,虽然不能说一定是计划和评估做的差导致的——因为项目经理还要承担着监 控和控制项目进度的职责——但在我们身边的很多项目中,的确存在对项目难度和工作量估计不足,或缺少科学的度量方法的问题;而这又最终导致我们在项目的初 期就已经处于“两难境地”,并逐渐进入“死亡行军”的状态。(关于“两难境地”和“死亡行军”的论述,请参见“软件开发的滑铁卢——重大失控项目的经验与教训(之一) ”)。

3. 采用新技术

新 的技术、框架、平台、方法论、解决方案、术语缩写的推出,相对于10年前(本书第一次出版的时候)越来越频繁,而且貌似这些新东西更新换代的速度越来越 快,生命周期越来越短。曾经有做开发的朋友说自己很羡慕那些做C或者C++的人,因为可以“沉下去”,不受外界这些“新东西”的干扰,积累下真正的技术和 经验;相对来说,软件测试也占有类似的优势,毕竟我们现在所使用的方法和技术,大多也都是20年前或者10年前发明并流传下来的——当然,那些沉迷于自动 化框架开发或者尝试各种新工具的人会不同意我的看法。

新技术的采用,有时的确可以极大的提高生产率,并解决一些棘手的问题,帮助项目最终成 功。但是技术的选型就成了最大的问题,因为新东西推出的太快,而我们的IT行业中真正的技术专家、资深人士又总是少数,大多数ITer或者说开发人员,要 么只有2-3年的开发经验,对核心技术和行业应用的把握能力有限;要么迫于项目进度的压力,很少有机会去深入的研究和实践这些技术。

当然,还有另外一个关键的额问题,就是技术本身的成熟度问题——新技术是否已经被类似行业或者规模的项目检验过。

4. 缺乏或根本不具备项目管理方法

MSF(Microsoft Solution Framework,微软解决方案框架)对于项目成功的关键,归结于人、流程和技术的完美结合。技术,高价聘请外援可以解决的干脆利索;流程,需要长期积 累,但总也是个相对稳定的“风险”;唯有人,或者说PM,是没有办法的,即使有一个优秀的团队,也没法把一个不称职的PM变得称职起来。而这个,反倒是在 万事俱备后剩下的最大的风险。

5. 团队中缺少资深人员

其实这个就不用多说了,就如比尔.盖茨先生的那段话所说,“坦白地 说,微软所面临的挑战之一是它的很多员工还没有遭遇过多少失败。很多人从未遇到过失败的项目。结果是,人们把成功视为理所当然的事,这是很危险的。。。人 们遭遇失败时,将被迫发挥出创造性,不分昼夜地深入探索并冥思苦想。每个公司都需要有过这种经历的人。”

资深人员,就是那些经历坎坷,被各种痛苦的“两难境地”项目折磨过,从一次次“死亡行军”中走过来,有着丰富的经验,知道一个完整的IT项目需要经历那些过程,能够帮助项目尽早识别和规避风险,并解决各种突发事件的人。

6. 硬件/软件供应商的低劣表现

这 条分类也是来源于KPMG的调查报告,作者说他手上并没有这方面的案例。不过实际上,可以在本书的17个案例中看到一些端倪。特别是最近我所接触的一些项 目,也越来越多的涉及到与外包商的合作——而这也是目前IT行业的趋势。所以我会在今后的项目中留意这一类问题,也许在不久的将来就能有一些身边的案例可 以拿出来讨论。

7. 系统无法满足性能和可靠性要求

这一条是本书的作者加的,并不在KPMG的报告中。也许有人会说10年前 作者关心的那些性能问题,现在通过更好的硬件、网络以及新的平台和技术都已经可以解决或避免了,已经不再需要担心。可是我们也要看到,10年后的今天,计 算机系统所需要处理的业务和需求也在变得日益复杂,而开发人员却并不是个个都关心系统性能的;最终,过于复杂、混乱而低效的代码,仍将导致性能、可靠性和 并发性问题。

在本书中,作者也提供了一个案例,讲述了一个存在性能缺陷的系统,如何给用户带来巨大的损失,并险些使一家企业因此而倒闭。

另外,作者也提到了KPMG报告中一些有趣的结论。

·许多失控项目都是(或曾经是)“野心过大”的项目;
·失控项目可能有一个主要原因,但总是由多个原因导致的;
·50%的项目在开发过程中显示可能会失控,而25%的项目在初始的计划阶段就已经显示出将来可能会失控;
·72%的失控项目,最初是由项目团队成员发现的;而只有19%的项目失控是最先有管理层意识到的;
·1989年只有7%的企业认为技术问题是导致项目失控的主要原因,但1995年这个数字上升到了45%;
·有55%的被调查项目根本没有实行过任何风险管理,而38%的实行了风险管理的项目中,又有50%的项目在启动后没有识别到任何风险;

最后,作者结合自己对失控项目的研究和分析,又给出了另外3条结论。

·那些一开始就被牵涉到“政绩”和某些其他的商业利益,并被大肆宣扬的项目,大多最终会失控——根据国内的经验来看,这类项目常见的问题是项目目标定位模糊而经常发生变化,或者根本就没有人关心项目真正的成败与否;
·越来越多的系统要求用来处理实时交互操作,这导致性能问题越来越成为影响项目的最终成功的问题;
·大型的涉及到复杂集成的行业应用,越来越容易成为失控的项目。

分享到:
评论

相关推荐

    软件开发的滑铁卢参照.pdf

    尽管这些案例时间较早,但由于中国和其他国家在工程学和软件项目管理上的差距,书中提供的经验和教训仍然具有极高的现实意义。本书并非旨在系统性地教授项目管理,但它为已有一定项目管理经验的读者提供了一个反思和...

    加拿大滑铁卢大学基于组件的软件工程的课程作业

    题目描述了一个软件公司开发的两个组件——EmailChecker和JunkAlert,它们都作为插件与Outlook风格的邮件客户端配合工作。其中,EmailChecker负责检查邮件中的病毒,而JunkAlert除了具备相同的病毒检测功能外,还...

    C# 滑铁卢战役游戏

    【滑铁卢战役游戏】是一款基于C#编程语言开发的简单游戏,旨在为初学者提供一个学习编程和游戏开发的基础示例。通过分析这款游戏,我们可以深入理解C#语言的一些核心概念和技术。 首先,C#是一种面向对象的编程语言...

    C#写的滑铁卢小游戏

    滑铁卢小游戏是一款基于C#编程语言开发的趣味游戏,其设计和实现涵盖了多个C#编程的核心知识点。在本文中,我们将深入探讨这些关键概念,帮助读者更好地理解C#编程和游戏开发的基本原理。 首先,C#是一种面向对象的...

    滑铁卢大学教材 Java Software Solutions

    首先,本书作为滑铁卢大学等加拿大高校广泛采用的教材,其内容设计旨在帮助初学者理解计算机系统中软件与硬件的角色和它们之间的关系。计算机系统由硬件和软件共同组成,其中硬件是指我们可以实际触摸到的物理组件,...

    用c#编写滑铁卢战役游戏代码

    在C#编程中,开发一款基于滑铁卢战役的项目游戏,可以理解为一个棋类游戏,类似于五子棋,玩家需要与计算机进行对战。本文将深入探讨如何使用C#实现这一游戏,并关注其中涉及的关键知识点。 首先,我们看到`...

    C#开发的滑铁卢战役项目(三子棋)

    总的来说,这个C#开发的滑铁卢战役项目展示了如何利用面向对象编程和事件驱动机制来构建一个棋类游戏。通过封装算法到类库和实现类与窗体的数据交换,项目实现了良好的代码组织和用户交互。这样的实践对于学习C#和...

    nii 第一学期 项目考试滑铁卢

    滑铁卢,这个名字在IT领域中常常被用来指代一种简单的策略游戏,尤其在教育环境中,如NIIT(National Institute of Information Technology)的第一学期项目考试中,它作为教学实践的一部分,旨在帮助初学者理解编程...

    Best-Fuel:滑铁卢大学-CS446设计项目

    最佳燃料此项目回购适用于滑铁卢大学CS446的移动应用程序。 BestFuel是一种汽油经济跟踪应用程序。 我们的应用程序具有以下功能: 注册和认证根据用户的位置,目的地和燃料供应情况,为用户显示获取汽油的最佳场所...

    UW-Course-Notes:滑铁卢大学的一些讲义

    滑铁卢大学的一些讲义。 AMATH 231:微积分4( ) AMATH 242:计算数学导论 AMATH 351:常微分方程2 AMATH 353:偏微分方程1 CS 115:计算机科学概论1 CS 234:数据类型和结构 CS 245:逻辑与计算 CS 251:...

    基于学生深度学习的教学实践创新: 滑铁卢大学的经验及启示.pdf

    教师需要设计和实施能够引发深度学习的教学活动,例如项目式学习、案例研究和问题导向的学习。这些方法使学生有机会将理论知识应用到实际情境中,从而实现深度学习。 此外,滑铁卢大学支持新教师的教学发展,提供...

    C#编程 滑铁卢战役 简洁版

    应用程序的开发 游戏规则 1. 整个战场为一个3×3的区域。 2. 玩家和计算机轮流在战场上放置炸弹,先把炸弹连成一线的一方获胜。所谓连成一线包括3个炸弹位于同一行、同一列或者对角线上。 3. 开始游戏前应通过...

    滑铁卢大学地图

    滑铁卢大学地图为我们提供了一个丰富的信息资源,通过对标题和描述的解读,我们可以了解以下几个知识点: 1. 地图的功能与特性:滑铁卢大学地图设计精致,便于查询,这表明地图使用了清晰的布局和标识系统,以便...

    课件(ppt)滑铁卢大学

    滑铁卢大学CS246课程所涵盖的知识点主要涉及Linux操作系统中的命令行界面、Unix的历史背景、基本的shell命令以及Linux文件系统的概念。以下是对这些知识点的详细解释: ### Linux Shell Linux shell是用户与操作...

    滑铁卢大学 MIPS教学教材 汇编教材

    通过学习滑铁卢大学的CS241和CS251课程,学生不仅能掌握MIPS汇编语言,还能对计算机系统的运作有深入的理解,为未来从事操作系统开发、嵌入式系统设计或者高性能计算等领域的工作打下坚实基础。"cs241 material"这个...

    滑铁卢之战练习题及答案精选.doc

    滑铁卢之战是一场具有历史意义的战争,它标志着拿破仑帝国的衰落和欧洲政局的变化。这场战争的结果直接影响了世界的走向,让我们回到1815年6月18日,看看格鲁希将军在滑铁卢战役中的决定性一秒钟。 在阅读选文中,...

    NIIT Project1 滑铁卢战役实验报告

    【滑铁卢战役实验报告】是江苏科技大学计算机学院软件工程专业的一个Project1实验,旨在让学生通过模拟滑铁卢战役的棋盘游戏学习编程和策略。在这个实验中,学生需要设计一个3×3的二维数组A来代表战场,数组的每个...

    滑铁卢大学发布《新冠肺炎卷积神经网络COVID-Net》一种定制的新冠深度卷积神经网络设计.pdf

    在当前全球新冠肺炎(COVID-19)疫情的背景下,有效诊断和筛查感染患者成为了抗击疫情的重要环节。本文所述的《新冠肺炎卷积神经网络COVID-Net》是由加拿大滑铁卢大学(University of Waterloo)的研究人员发布的,...

    加拿大滑铁卢大学时间序列建模课程教材 part1

    PREFACE PART I: SCOPE AND BACKROUND MATERIAL CHAPTER 1: ENVIRONMETRICS, SCIENCE AND DECISION MAKING CHAPTER 2: BASIC STATISTICAL CONCEPTS PART II: LINEAR NONSEASONAL MODELS CHAPTER 3: STATIONARY ...

    porespy滑铁卢大学讲义.rar

    滑铁卢大学的这组讲义深入介绍了如何利用Porespy进行孔隙网络建模和分析。 一、Porespy概述 Porespy是Python生态系统中的一个重要工具,其设计目的是为了帮助研究人员快速、有效地分析孔隙结构图像。它提供了一系列...

Global site tag (gtag.js) - Google Analytics