著名豆腐渣软件项目:美国联邦调查局虚拟案件文档系统

导读:最烂的软件项目是什么?相信每个人都有不同的答案。中国铁道部12306一到假期就歇菜的特性,肯定跻身网民们心目中的烂项目TOP10。最近,奥巴马政府主导下的美国医疗网站HealthCare.org以上亿行代码之巨,远超Windows和Linux等大型系统软件代码量,也成功跻身烂项目候选名单。不过总的来说,12306不放假的时候还能工作,HealthCare.org也只是因为代码数量太多而不是功能无法实现而被人诟病。不过,下面这个 项目:美国联邦调查局虚拟案件文档系统(FBI Virtual Case File——简称VCF),历时5年开发,总共耗资1.7亿美元,项目需求数度剧变,熬死了三任CIO,最终——项目完全无法使用,彻底地挂掉。这么彪悍的履历,相信绝对可以称之为烂软件中的战斗机了。

本文受《梦断代码》的启发,描述了一个重大失败项目:FBI VCF软件系统的前前后后。文中所提到的时间、观点和时间取材于下列资料:

FBI也做出过豆腐渣软件项目

背景:

正如很多豆腐渣项目都有一个牛逼哄哄的背景一样,VCF的背景也是无比强大的。这是一个由联邦政府机构牵头的项目,项目的主要发起方和使用方正是大名鼎鼎 的美国联邦调查局(FBI)。如果不考虑到2013年美国国会发神经地搞了一次政府关门的闹剧的话,一般来说,联邦政府机构牵头的项目就意味着——不差钱。

在各种精彩的美剧和好莱坞电影中,FBI英武的形象早已深入人心。什么面部识别,模糊算法,指纹追踪,智能分析,这些对于FBI探员来说,就是打开电脑点 一点屏幕就能搞定的事情,逮捕罪犯,挫败恐怖行动,一切化解于弹指之间。但是在现实世界里,FBI的工作模式却远远没有美剧里那么风光。

电影《蝙蝠侠黑暗骑士的崛起》中虚拟的现代化犯罪档案信息处理系统,可查询罪犯头像,指纹,犯罪记录等等,图文并茂,信息量丰富

电影《蝙蝠侠黑暗骑士的崛起》中虚拟的现代化犯罪档案信息处理系统,可查询罪犯头像,指纹,犯罪记录等等,图文并茂,信息量丰富

从1980年到2001年间,FBI甚至无法保证办公人员一人一台电脑,电脑大多数都跟不上时代,有的电脑没有连接到互联网,软件系统的构架和功能都非常 陈旧(旧系统采用的是20世纪80年代的技术开发,于1995年安装上线,其构架基于IBM大型机,采用IBM 3270终端访问方式,操作界面还是基于类似DOS的文字界面,操作命令非常繁琐,且数据库无法存储照片和图像),探员不得不使用打印机和扫描仪来处理案 件图像和照片,且数据录入工作非常繁冗。很多探员干脆就不愿意用电脑系统,而是直接用纸质表格的方式处理公务。FBI高层深感自身的落伍,决意要改变这一 被动的局面,因此,Trilogy项目诞生了。

显示中FBI探员需要面对的操作界面

现实中FBI探员需要面对的操作界面

现实中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开发不利而被公司开除

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 Amzi

VCF项目开发期间的第四任CIO——Zal Azmi

VCF项目开发期间,FBI的局长是Robert Muller。

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年。

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

1 收藏 2 评论

关于作者:黄小非

黄小非:毕业于重庆大学计算机系,南开大学软件工程硕士,SCJP。 目前在一家国企信息中心任职软件开发工程师。主要技术兴趣为Java平台相关技术、系统构架、C/C++、计算机图形学等。(新浪微博:@黄小非) 个人主页 · 我的文章 · 64 ·  

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部