遺留系統:IT攻城獅永遠的痛

詩意聯盟發表於2014-04-28

我常常覺得我們非常幸運,我們現在所處的時代是一個令人振奮的時代,我們進入了軟體工業時代。在這個時代裡,我們進行軟體開發已經不再是一個一個的小作坊,我們在進行著集團化的大規模開發。我們開發的軟體不再是為某個車間、某個工序設計的輔助工具,它從某個單位走向整個集團,走向整個行業,甚至整個社會,發揮著越來越重要的作用。一套軟體所起到的作用與影響有多大,已經遠遠超越了所有人的想象,成為一個地區、一個社會,乃至整個國家不可或缺的組成部分。慢慢地,人們已經難以想象沒有某某軟體或系統的生活和工作會是怎樣。這就是軟體工業時代的重要時代特徵。

然而,在這個令人振奮的軟體工業時代,處於時代中心的各大軟體企業卻令人沮喪。軟體規模越來越龐大,軟體結構越來越複雜的同時,伴隨的卻是軟體質量越來越低下,軟體維護變得越來越困難,以至於每個小小的變更都變得需要傷筋動骨。研發人員為此舉足無措,測試人員成為唯一的救星,每個小小的變更都需要付出巨大代價進行測試。軟體企業在這樣一種惡性迴圈中苦苦支撐。毫無疑問,這也成為這個令人振奮的時代的一景。

過去,一套軟體的生命週期不過2~3年時間,隨著軟體需求的變化,我們總是選擇將軟體推倒了重新開發,但是現在這樣的情況在發生著改變。隨著軟體規模的擴大,軟體資料的積累,軟體影響力的提升,我們,以及我們的客戶,都真切感受到,要推倒一套軟體重新開發,將變得越來越困難而不切實際。這樣的結果就是,我們的軟體將不停地修改、維護、再修改、再維護……直到永遠。這是一件多麼痛苦的事情啊!

一套軟體,當它第一次被開發出來的時候,一切都十分清晰:清晰的業務需求、清晰的設計思路、清晰的程式程式碼,經歷了幾次需求變更與維護,一切就變得了不那麼清晰。業務需求文件變得模糊不清,設計思路已經跟不上變更的腳步,程式程式碼則隨著業務邏輯的複雜而臃腫不堪。程式設計師開始讀不懂程式碼,軟體開發工作變得不再是一種樂趣。

隨著時間的推移,軟體經過數年、數十次的變更與維護,情況變得越來越糟。最初的程式設計師已經不願再看到自己的程式碼而選擇離去。他的繼任者變得更無所是從,由於看不懂程式,程式碼的每一次修改如同在走鋼絲。測試人員變成了唯一的希望,開發人員的每一次修改都意味著測試人員需要把所有程式測試一遍。繼任者們開始質問最初的設計者們的程式設計。如果此時恰巧又有什麼新技術出現,就會更顯得原有系統的破舊與不堪。

相信這就是軟體工業時代的所有企業都不得不面對的尷尬境地。難倒真的是我們最初的設計錯了嗎?是的,我們都這樣質問過我們自己,因此我們開始嘗試在軟體設計之初投入更多的精力。我們開始投入更多的時間作需求調研,考慮更多可能的需求變化,做更多的介面,實現更加靈活但複雜的設計。然後呢,我們解決了我們的問題了嗎?顯然是沒有。需求並沒有像我們想象的那樣發生變更:我們之前認為可能發生的變更並沒有發生,使我們為之做出的設計變成了擺設;我們之前沒有考慮到的變更發生了,讓我們猝不及防,軟體質量開始下降,我們被打回了原形。難倒真的是無藥可解了嗎?在我看來,如果我們沒有看明白軟體開發的規律與特點,那麼我們永遠找不到那份嚮往已久的解藥。現在是時候了,讓我們真正靜下心來分析分析軟體開發的規律與特點吧。(續)

相關文章