導讀:最爛的軟體專案是什麼?相信每個人都有不同的答案。中國鐵道部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年。
打賞支援我寫出更多好文章,謝謝!
打賞作者
打賞支援我寫出更多好文章,謝謝!