著名豆腐渣软件项目:美国联邦调查局虚拟案件文档系统
导读:最烂的软件项目是什么?相信每个人都有不同的答案。中国铁道部 12306 一到假期就歇菜的特性,肯定跻身网民们心目中的烂项目 TOP10。最近,奥巴马政府主导下的美国医疗网站 HealthCare.org 以上亿行代码之巨,远超 Windows 和 Linux 等大型系统软件代码量,也成功跻身烂项目候选名单。不过总的来说,12306 不放假的时候还能工作,HealthCare.org 也只是因为代码数量太多而不是功能无法实现而被人诟病。不过,下面这个项目:美国联邦调查局虚拟案件文档系统(FBI Virtual Case File——简称 VCF),历时 5 年开发,总共耗资 1.7 亿美元,项目需求数度剧变,熬死了三任 CIO,最终——项目完全无法使用,彻底地挂掉。这么彪悍的履历,相信绝对可以称之为烂软件中的战斗机了。
本文受《梦断代码》的启发,描述了一个重大失败项目:FBI VCF 软件系统的前前后后。文中所提到的时间、观点和时间取材于下列资料:
- Wikipedia 关于 FBI VCF 软件项目的介绍;
- 《华盛顿邮报》关于 VCF 项目的专栏报道《The FBI’s Upgrade That Wasn’t》(2006 年 8 月 16 日)
FBI 也做出过豆腐渣软件项目
背景:
正如很多豆腐渣项目都有一个牛逼哄哄的背景一样,VCF 的背景也是无比强大的。这是一个由联邦政府机构牵头的项目,项目的主要发起方和使用方正是大名鼎鼎的美国联邦调查局(FBI)。如果不考虑到 2013 年美国国会发神经地搞了一次政府关门的闹剧的话,一般来说,联邦政府机构牵头的项目就意味着——不差钱。
在各种精彩的美剧和好莱坞电影中,FBI 英武的形象早已深入人心。什么面部识别,模糊算法,指纹追踪,智能分析,这些对于 FBI 探员来说,就是打开电脑点一点屏幕就能搞定的事情,逮捕罪犯,挫败恐怖行动,一切化解于弹指之间。但是在现实世界里,FBI 的工作模式却远远没有美剧里那么风光。
电影《蝙蝠侠黑暗骑士的崛起》中虚拟的现代化犯罪档案信息处理系统,可查询罪犯头像,指纹,犯罪记录等等,图文并茂,信息量丰富
从 1980 年到 2001 年间,FBI 甚至无法保证办公人员一人一台电脑,电脑大多数都跟不上时代,有的电脑没有连接到互联网,软件系统的构架和功能都非常陈旧(旧系统采用的是 20 世纪 80 年代的技术开发,于 1995 年安装上线,其构架基于 IBM 大型机,采用 IBM 3270 终端访问方式,操作界面还是基于类似 DOS 的文字界面,操作命令非常繁琐,且数据库无法存储照片和图像),探员不得不使用打印机和扫描仪来处理案件图像和照片,且数据录入工作非常繁冗。很多探员干 脆就不愿意用电脑系统,而是直接用纸质表格的方式处理公务。FBI 高层深感自身的落伍,决意要改变这一被动的局面,因此,Trilogy 项目诞生了。
现实中 FBI 探员需要面对的操作界面
现实中 FBI 探员使用的案件档案系统办公电脑
Trilogy 项目的使命就是全面提升 FBI 整个系统的信息化水平,其主要目标包括以下几个部分:
- 1、 购买大量高性能计算机硬件,更新 FBI 的陈旧计算机
- 2、 所有的计算机连接到 FBI 网络
- 3、 开发一套核心软件,通过软件,硬件和网络的有机体系,提高 FBI 的信息处理和共享能力,并实现 FBI 无纸化办公作业。
这三个部分中的第三部分,就是 VCF 软件项目的起源。
膨胀:
在上述背景下,Trilogy 项目开始于 2001 年。6 月,通过竞标,一家叫做 SAIC(Science Applications International Corp.——国际科学应用公司)的公司击败了其他四家软件供应商,获得了 VCF 的开发权。项目伊始,FBI 的目的还是相对实际和明确的,计划在三年的时间内,将原陈旧的 FBI 案件文档管理系统升级(注意,仅仅是“升级”),三年计划中第一年的预算为 1400 万美元。但是,3 个月之后发生的 911 恐怖袭击事件改变了一切。
911 的具体经过和意义已经不需要再重复了。值得一提的是,911 事件本身让美国的整个情报机构和安全执法部门蒙受了巨大的耻辱,并遭到了美国社会各个层面的无情嘲讽和批判。FBI 同 CIA 和 NSA 一样,是遭受非议最严苛的联邦部门之一。在 911 恐怖袭击期间,FBI 甚至无法找到一个安全的方式将劫机犯的照片用电子邮件发给自己的探员,以至于必须使用传真机,甚至是将磁碟通过真实邮件邮递的原始方式来传递信息。这对于 FBI 来说是无疑是荒唐至极的。因此在 911 之后,建立案件管理信息系统的需求业已成为重中之重,而被提上了 FBI 的首要日程。原先为期 3 年,首期预算 1400 万美元的软件“升级”计划,瞬间变成了一个交付日期大幅度后延,开发预算爆膨,并且从零开始“重新开发”的巨大项目(后经证实,选择“从零开发”是一个致 命的错误决定,并且 FBI 和 SAIC 都在为当初做这个决定互相推卸责任)。
当然,作为联邦政府主要软件承包商的 SAIC 公司,经由 911 这个催化剂,生意规模由小变大,赚得个盆满钵满。通过该项目和其他各种联邦政府项目,SAIC 公司的在 2006 年的资产已经超过了 70 亿美元。
混乱
911 过去两年多以后,2004 年 5 月,美国国家研究理事会(National Research Concil,简称 NRC)对 Trilogy 项目进行了一次全面的评估。从 Trilogy 项目的整体情况来看,三分之二的部分已经顺利完成,也即是项目三条目标的头两条:更新 FBI 的电脑硬件和将电脑接入互联网络;但是项目的第三条,也就是整个项目的核心——VCF 软件系统开发,却远远地偏离了轨道。
这一评价是相对客观的,因为对 Trilogy 项目的评估是 NRC 连同美国国家科学院的多名顶尖专家共同做出的。所有参与评估的专家都必须不是 FBI 的雇员,也必须不能与 Trilogy 项目的承包商有任何联系。
NCR 对 VCF 项目出具的评估报告显示:该项目的开发工作一片混乱,可能从开发伊始就缺乏整体规划。甚至是在项目完工日期之后的几个月,仍然存在下列明显的问题:
- FBI 探员无法通过该系统将案件资料带到现场进行参考。
- 系统缺乏最基本的人性化操作特性,连书签和历史记录功能都没有,探员每次不得不在上百万份档案中查找自己想要的资料。
- 系统的排序功能不正常
- 系统在上线前几乎没有做过测试,上线成败与否完全是赌博性质的
- FBI 居然对系统上线可能失败的情况没有做预案,整个系统的上线计划就是一场豪赌。一旦系统上线失败,FBI 将彻底失去信息化运作能力。
上面的这些问题有的愚蠢有的可怕,尤其是最后一条,FBI 对系统可能失败的情况完全没有任何考虑。NRC 调查组的一位来自宾夕法尼亚大学的教授开玩笑说: “我和我的朋友都准备在系统上线的那一天上街打砸抢,因为我们知道当天这个烂系统会让 FBI 全面瘫痪,根本无法应付犯罪案件。”
责任
一个 1.7 亿美金的项目做成这个德性,就算是土豪到家的美帝联邦政府也无法坐视不管。这个事情究竟是谁的责任?NCR 通过调查和评估,指出了 FBI 和 SAIC 同时对该项目的失败负有不可推卸的责任。
FBI 方面的责任主要在于以下几点:
首先,FBI 没有真正懂技术的负责人领导和管控项目。正如所有的美国联邦政府机构所面临的问题一样,有专业技术能力的人才,要么为了挣钱,要么无法忍受政府机构的严重 官僚气息,往往工作一段时间就跳槽去了私人企业。更有甚者,在 VCF 项目筹备伊始,局里还是有那么几个 IT 专家具备大型软件开发的控制能力的,但是不知道 FBI 的决策者出于什么目的,脑残地忽略了局里已有的 IT 人才,直接把项目管理这么关键的环节外包给了第三方公司。这一举动无疑加速了人才流失的过程。
其次,FBI 缺乏对承包商的把控能力。除了把项目管理交给局外人以外,FBI 还缺乏对承包合同相关法律的深入理解,结果被承包商用合同法玩得团团转,完全无法有效地控制承包商,就更不要说钳制承包商的各种行为了。约翰霍普金斯大学 一位专攻政府承包合同法规的教授表示:承包商合同法律是建立在“政府机构明确自己的所作所为”以及“能够承担自己的责任”这两个假设前提上的。显然 FBI 的能力并不满足这两个假设前提,所以被人忽悠也是无法避免的。无法控制承包商,这也是这个项目失败的重要原因。
除了 FBI,SAIC 作为 VCF 项目的承包商,其对项目失败所需要承担的责任是毋庸置疑的。
2004 年 6 月,为了挽回 VCF 项目开发的颓势,FBI 额外出资 200 万美元,雇佣了一家名叫“航空宇宙公司”(Aerospace Corp.)的企业来对项目进行修正,该公司具有联邦资金赞助的背景(属于半国企性质),是一家位于加州的专业研发公司,这次修正计划,也被命名为“矫正 行动计划”。
航空宇宙公司经过调查后得出结论:项目已经无修正必要,应当废弃。
在航空宇宙公司 2005 年 1 月出具的长达 318 页的报告中,指出 SAIC 公司开发的 VCF 系统在设计上不完整,不充分,不到位,以至于在现实场景中完全无法使用。仅仅是通过一些非常基本的测试,就能发现系统在实现上没有满足基本的需求。该系统 甚至都不包含网络管理功能和存档系统,如果这套系统上线,那势必会将关键执法部门和国家安全数据置于非常危险的境地。
NRC 的报告也曾经指出,SAIC 只是把 VCF 项目当成“一般项目”来开发,而没有当成对国家安全“至关重要”的项目。
Matthew Patton,一位 SAIC 前雇员,指出,SAIC 根本就无意控制预算,公司的态度就是:反正这预算不是我们自己的钱,我们能怎么花就怎么花。他还提到了,VCF 项目严重缺乏安全机制,老板对项目的成败与否根本就毫不关心。当 Patton 把这些疑虑贴到互联网后三个月,他就被 SAIC 扫地出门了。
Matthew Patton, SAIC 前员工,VCF 项目直接参与人员,后因在网络媒体上公开指责 SAIC 开发不利而被公司开除
FBI 高层也指责 SAIC 是利用 911 事件给调查局造成的被动局面来为自己赚钱,发国难财。并且认为 SAIC 应该为此感到羞耻。FBI 的一些管理人员也明确地指出了项目膨胀的问题。
不过 SAIC 可不认为项目的失败完全是自己的问题。SAIC 对 FBI 的指责也并非不无道理。
SAIC 执行副总裁 Arnold Punaro 在向国会提交的证词中表明,SAIC 一直以来都尝试跟上 FBI 对系统提出的需求变更,但是所有的努力都被 FBI 方面的优柔寡断的工作风格破坏。他还特意提交了 19 个政府方面提出的需求变更条目作为证据,证明正是这些频繁的变动使得系统发展的方向飘忽不定。
Punaro 认为,FBI 方面一直秉承着“试试看就知道了”的思想,来指导整个软件的开发。SAIC 曾经警告过 FBI,这种方法是不可行的,可能导致软件的失败,但是 FBI 似乎对这个警告没有引起重视。
Punaro 还批评了宇宙空间公司和他们的结论,他说该公司用来评估的 VCF 软件版本并不是最新版本,不能反映实际情况。以及该公司对 VCF 系统的独特性、复杂性和 FBI 承诺评估的范围都描述得不够清楚。
由此可见,该项目到最后完全成为了一滩烂泥,只要是参与进去的人,一定不可能全身而退,无论是甲方,乙方,甚至是负责评估的丙方,这都注定是一场狗咬狗一嘴毛的闹剧。
重蹈覆辙?
2004 年 3 月,FBI 宣布 VCF 项目的开发经过修正已经步入正轨,虽然交付日期错后,但是应当可以于夏天完成交付工作。仅仅两个月以后,FBI 的 CIO 宣布,VCF 系统不可能于夏天交付,而是要拖到 2004 年 12 月。
交付日期不断错后,FBI 和 SAIC 在需求变更等问题上迟迟无法达成一致,与此同时,美国相关监督机构发现,该项目开发已经耗费了 1.7 亿美元的巨款,并且多次错失了控制项目预算的时机。
2005 年,在 FBI 多次力保 VCF 项目失败之后,该项目正式宣布废弃。时任 CIO 的 Azmi 认为,这是他职业生涯总所做的“最艰难的决定”之一。
VCF 项目的失败,并不仅仅是一个 1.7 亿美元的项目打水漂的问题。真正可怕的后果是,在浪费了 1.7 亿美金的纳税人的金钱以后,3000 多 FBI 探员和 12000 多特别探员仍然要靠电话、传真、扫描仪和纸质表格这样原始的方式与罪犯和恐怖分子做斗争。FBI 对于信息共享和无纸办公的需求完全没有得到满足。
为了继续尝试填补 FBI 对信息化的需求,2005 年,VCF 项目宣布废弃的当年,Sentinel 项目启动。该项目由洛克希德马丁公司(没错,就是那个制造和生产了 F22,F35 等美军战机的洛克希德马丁公司)承担开发,项目总预算 4.25 亿美元,工期最早在 2009 年完成,2007 年,洛马公司会交付一个先行版供 FBI 使用。SAIC 公司则被完全排除在 Sentinel 项目之外, 而且还有被 FBI 追回合同款的可能性。
尽管饱受质疑,并且被怀疑是否会步 VCF 项目的后尘,FBI 对 Sentinel 项目还是充满信心,表示该项目“正好克服了 VCF 项目的一切错误”:预算明确,需求明确,工期明确。部分监督机构的人员也对该项目的情况表示看好。
但是 Sentinel 项目是否能成功呢?谁也不知道,唯一做的只能是等待。看看 Sentinel 是划时代的巨作,还是重蹈 VCF 的覆辙。
结论:
VCF 从开发到彻底失败经历了大约 5 年的时间,在这 5 年里,1.7 亿美金耗费殆尽,四任 CIO 都没有能够把项目拉回正轨。FBI 和 SAIC 因此积怨甚深, 项目不得不废弃并另起炉灶进行开发。2004 年,美国国会正式召开听证会,正式对项目的资金和进度问题进行了质询,并曾经得到了 FBI 积极的回应,但是最后,FBI 局长 Robert Muller 还是不得已叫停了项目。这个项目无论从哪个方面来讲,都是一个重大的失败和耻辱。
抛开政治和经济的利益不谈,单从软件工程的角度对整个项目的开发过程进行分析,我们可以比较清晰地看到项目管理和研发中所犯下的错误。这些错误看似是那么地明显,但是却又那么不可思议地发生了:
- 项目从一开始就缺乏完整的构思,从而导致架构设计的失败
- 频繁的需求变更
- 项目管理上频繁往复,导致系统规格混乱
- 对具体软件开发人员管理过于死板
- 项目中的很多 FBI 方面的经理级别管理人员,甚至是工程师,缺乏基本的计算机科学背景,造成外行领导内行,甚至干扰项目的进行
- 项目进度严重滞后的情况下,依然不停地添加新的需求
- 项目需求变更和范围扩大导致的代码膨胀问题——项目开发中,有一次对项目代码量进行统计,发现代码已经超过 70 万行! (healthcare.org 笑了)
- 奢望项目能够光速上线投入使用,造成项目无法通过使用磨合提高软件的可用性
这些问题写到纸上,每一条看上去都是愚蠢之极,人们不禁会问:这么专业的团队,这么牛的背景,这么大的项目,怎么会犯这么弱智的错误?!但是仔 细想一想,在我们的日常开发中,这些低级错误又何尝少见呢?从另一个角度来看,这些错误也充分地展示了,在大型软件项目开发当中,人们是多么容易把事情搞 砸。
趣闻:
以下是一些与 VCF 相关的趣闻轶事:
VCF 的前身是 FBI Automated Case Support 软件,简称 ACS
ACS 基于 20 世纪 70 年代的计算机技术打造,包括:IBM 大型计算机,IBM 3270 字符界面终端,Natural 编程语言和 ADABAS 数据库系统
ACS 于 1995 年正式部署,供 FBI 使用,该系统被证实非常难以操作
ACS 系统原定的退役时间是 2000 年,VCF 项目正是在这一年之后启动
Trilogy 项目中的网络建设部分是由美国私人军事承包商 DynCorp 负责完成,与 SAIC 不同的是,DynCorp 按时完成了合同
VCF 最早的需求仅仅是为升级 ACS 系统,并为 ACS 系统数据提供一个基于 Web 的友好的前端界面(猜测使用了 J2EE 技术,但是没有任何证据可以证明这一点)
负责 VCF 项目开发的 SAIC 公司是一家位于弗吉尼亚州的 IT 供应商,该公司的客户涵盖多家联邦机构,包括:联邦调查局,美国国防部,国土安全部等等。
VCF 项目在 2001 年 911 事件之后,被要求把原来 ACS 系统的数据全部导入到 Oracle 数据库里,项目工期也因此推后。
VCF 项目一共经历了 4 任 CIO,最后一任 CIO 是 Zal Azmi。
VCF 项目开发期间的第四任 CIO——Zal Azmi
VCF 项目开发期间,FBI 的局长是 Robert Muller。
VCF 开发期间的 FBI 局长——Robert Muller
VCF 项目 2002 年向国会申请增加预算,当时软件开发进度已经滞后,最终项目获得了 1.23 亿美元的追加预算。
美国国会于 2004 年中旬对 VCF 项目召开听证会,当时 FBI 表示项目可以交付,但最后于 2005 年被中止。
VCF 的后继项目,Sentinel 于 2005 年由洛克希德马丁公司承接开发,预算超过 4 亿美元,该项目的开发过程并不顺利,交付日期多次后延,终于于 2012 年部署上线。据知情者透露,该系统的操作界面类似于 Microsoft Outlook。 届时,采用 80 年代计算机技术打造的 ACS 系统已经使用了超过 17 年。