遺留系統:IT攻城獅永遠的痛
我常常覺得我們非常幸運,我們現在所處的時代是一個令人振奮的時代,我們進入了軟體工業時代。在這個時代裡,我們進行軟體開發已經不再是一個一個的小作坊,我們在進行著集團化的大規模開發。我們開發的軟體不再是為某個車間、某個工序設計的輔助工具,它從某個單位走向整個集團,走向整個行業,甚至整個社會,發揮著越來越重要的作用。一套軟體所起到的作用與影響有多大,已經遠遠超越了所有人的想象,成為一個地區、一個社會,乃至整個國家不可或缺的組成部分。慢慢地,人們已經難以想象沒有某某軟體或系統的生活和工作會是怎樣。這就是軟體工業時代的重要時代特徵。
然而,在這個令人振奮的軟體工業時代,處於時代中心的各大軟體企業卻令人沮喪。軟體規模越來越龐大,軟體結構越來越複雜的同時,伴隨的卻是軟體質量越來越低下,軟體維護變得越來越困難,以至於每個小小的變更都變得需要傷筋動骨。研發人員為此舉足無措,測試人員成為唯一的救星,每個小小的變更都需要付出巨大代價進行測試。軟體企業在這樣一種惡性迴圈中苦苦支撐。毫無疑問,這也成為這個令人振奮的時代的一景。
過去,一套軟體的生命週期不過2~3年時間,隨著軟體需求的變化,我們總是選擇將軟體推倒了重新開發,但是現在這樣的情況在發生著改變。隨著軟體規模的擴大,軟體資料的積累,軟體影響力的提升,我們,以及我們的客戶,都真切感受到,要推倒一套軟體重新開發,將變得越來越困難而不切實際。這樣的結果就是,我們的軟體將不停地修改、維護、再修改、再維護……直到永遠。這是一件多麼痛苦的事情啊!
一套軟體,當它第一次被開發出來的時候,一切都十分清晰:清晰的業務需求、清晰的設計思路、清晰的程式程式碼,經歷了幾次需求變更與維護,一切就變得了不那麼清晰。業務需求文件變得模糊不清,設計思路已經跟不上變更的腳步,程式程式碼則隨著業務邏輯的複雜而臃腫不堪。程式設計師開始讀不懂程式碼,軟體開發工作變得不再是一種樂趣。
隨著時間的推移,軟體經過數年、數十次的變更與維護,情況變得越來越糟。最初的程式設計師已經不願再看到自己的程式碼而選擇離去。他的繼任者變得更無所是從,由於看不懂程式,程式碼的每一次修改如同在走鋼絲。測試人員變成了唯一的希望,開發人員的每一次修改都意味著測試人員需要把所有程式測試一遍。繼任者們開始質問最初的設計者們的程式設計。如果此時恰巧又有什麼新技術出現,就會更顯得原有系統的破舊與不堪。
相信這就是軟體工業時代的所有企業都不得不面對的尷尬境地。難倒真的是我們最初的設計錯了嗎?是的,我們都這樣質問過我們自己,因此我們開始嘗試在軟體設計之初投入更多的精力。我們開始投入更多的時間作需求調研,考慮更多可能的需求變化,做更多的介面,實現更加靈活但複雜的設計。然後呢,我們解決了我們的問題了嗎?顯然是沒有。需求並沒有像我們想象的那樣發生變更:我們之前認為可能發生的變更並沒有發生,使我們為之做出的設計變成了擺設;我們之前沒有考慮到的變更發生了,讓我們猝不及防,軟體質量開始下降,我們被打回了原形。難倒真的是無藥可解了嗎?在我看來,如果我們沒有看明白軟體開發的規律與特點,那麼我們永遠找不到那份嚮往已久的解藥。現在是時候了,讓我們真正靜下心來分析分析軟體開發的規律與特點吧。(續)
相關文章
- 遺留系統表的維護
- 遺留系統的技術棧遷移
- 七種老舊遺留系統的整合模式 -Bozho模式
- 遺留系統如何升級,重構成CQRS的模式模式
- SOA解決方案中涉及的遺留系統的設計策略(4)
- 學習Linux系統永遠都不晚Linux
- 老舊系統重構技巧,輕鬆搞定遺留程式碼
- 企業C++大型系統遺留程式碼變遷的佈道之旅C++
- 高速公路換輪胎——為遺留系統替換資料庫資料庫
- RxJava是遺留程式碼的解藥 - PawełMatyjasikRxJava
- Rails遺留程式中最常犯的錯誤(上)AI
- Rails遺留程式中最常犯的錯誤(下)AI
- 資料清理的遺留問題處理(二)
- 安裝Linux後的遺留問題(轉)Linux
- 從300萬行到50萬行程式碼,遺留系統的微服務改造行程微服務
- Parasoft Jtest——如何征服遺留程式碼
- 永遠成長的蘋果樹蘋果
- Evercookie(永遠刪不掉的cookie)Cookie
- 影視永遠不懂遊戲遊戲
- AngularJS 遺留專案的升級改造之路(一)AngularJS
- CRM系統的痛點,如何解決?
- 遺留程式碼處理技巧與案例演示
- 重構遺留程式碼(11):終結篇
- 重構遺留程式碼(1):金牌大師
- 重構遺留程式碼(9):分析 Concerns
- 重構遺留程式碼(10):剖析長方法
- 電視連續劇風雲--雄霸天下主題曲-永遠永遠
- 重構遺留程式碼(5):遊戲的可測試方法遊戲
- 重構遺留程式碼(6):進攻複雜的方法
- 重構遺留程式碼(7):識別表示層
- 如何在遺留程式碼基礎上開發
- 開發人員使用遺留程式碼庫指南
- 再見了Antirez永遠的Redis之神Redis
- 用資料致敬永遠的傳奇
- 如何把遺留的Java應用託管在Service Fabric中Java
- 重構遺留程式碼(3):複雜的條件語句
- ysyx:測試永遠不夠
- 跨境供應鏈系統的模式與痛點模式