技術負債

技術負債比喻由漫無計畫的軟體架構,或者匆忙的軟體開發引起的後果。又稱為設計負債。

基本介紹

  • 中文名:技術負債
  • 外文名:Technical debt
  • 又稱:設計負債
  • 領域:計算機
簡介,軟體工程,代碼重構,

簡介

技術負債(英語:Technical debt),又譯技術債,也稱為設計負債(design debt)、代碼負債(code debt),是編程軟體工程中的一個比喻。指開發人員為了加速軟體開發,在應該採用最佳方案時進行了妥協,改用了短期內能加速軟體開發的方案,從而在未來給自己帶來的額外開發負擔。這種技術上的選擇,就像一筆債務一樣,雖然眼前看起來可以得到好處,但必須在未來償還。軟體工程師必須付出額外的時間和精力持續修復之前的妥協所造成的問題及副作用,或是進行重構,把架構改善為最佳實現方式。
1992年,沃德·坎寧安首次將技術的複雜比作為負債。第一次發布代碼,就好比借了一筆錢。只要通過不斷重寫來償還債務,小額負債便可以加速開發。但久未償還債務會引發危險。復用馬馬虎虎的代碼,類似於負債的利息。整個部門有可能因為鬆散的實現,不完全的面向對象的設計或其他諸如此類的負債而陷入窘境。

軟體工程

1968年秋季,NATO(北約)的科技委員會召集了近50名一流的編程人員、計算機科學家和工業界巨頭,討論和制定擺脫“軟體危機”的對策。在那次會議上第一次提出了軟體工程(software engineering)這個概念,研究和套用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。它涉及到程式設計語言資料庫軟體開發工具系統平台、標準、設計模式等方面。其後的幾十年里,各種有關軟體工程的技術、思想、方法和概念不斷被提出,軟體工程逐步發展為一門獨立的科學
1993年,電氣電子工程師學會(IEEE)給出了一個更加綜合的定義:"將系統化的、規範的、可度量的方法用於軟體的開發、運行和維護的過程,即將工程化套用於軟體開發中"。此後,IEEE多次給出軟體工程的定義。
在現代社會中,軟體套用於多個方面。典型的軟體比如有電子郵件嵌入式系統人機界面、辦公包、作業系統編譯器資料庫遊戲等。同時,各個行業幾乎都有計算機軟體的套用,比如工業農業銀行航空政府部門等。這些套用促進了經濟和社會的發展,提高人們的工作效率,同時提升了生活質量。
軟體工程師是對套用軟體創造軟體的人們的統稱,軟體工程師按照所處的領域不同可以分為系統分析師系統架構師軟體設計師程式設計師測試工程師、界面與互動設計師等等。各種軟體工程師人們俗稱程式設計師。

代碼重構

軟體工程學里,重構代碼一詞通常是指在不改變代碼的外部行為情況下而修改原始碼,有時非正式地稱為“清理乾淨”。在極限編程或其他敏捷方法學中,重構常常是軟體開發循環的一部分:開發者輪流增加新的測試和功能,並重構代碼來增進內部的清晰性和一致性。自動化的單元測試保證了重構不至於讓代碼停止工作。
重構既不修正錯誤,又不增加新的功能性。反而它是用於提高代碼的可讀性或者改變代碼內部結構設計,並且移除死代碼,使其在將來更容易被維護。重構代碼可以是結構層面抑或是語意層面,不同的重構手段施行時,可能是結構的調整或是語意的轉換,但前提是不影響代碼在轉換前後的行為。特別是,在現有的程式的結構下,給一個程式增加一個新的行為可能會非常困難,因此開發人員可能先重構這部分代碼,使加入新的行為變得容易。
一個重構的小範例是修改一個變數的名稱使其具有更明確的含義,例如從單個字母的“i”重構為“interestRate”(利率,圖一)。較複雜的重構是把一段if區塊中的代碼變為一個子程式(圖二)。更複雜一點的重構是用多態性來替換if條件式。“清理”代碼已經發生了幾十年,重構中最關鍵的認知是有意地“清理”代碼,透過從已知的紀錄里一些常用的重構方法清理代碼,把它從增加新功能分開,然後個別的對代碼進行測試(任何的行為改變都可能帶來錯誤)。新的實現切合實際需要以改善現有設計,並且不改變原軟體的意圖或行為。
重構面對業界調適接受方面的挑戰。首先,對重構長遠的影響需要更深入研究追蹤。又,重構存於資料庫輪廓(database schema)的商業邏輯層幾乎是不可能或者非常困難的。最後,對接口造成影響的重構可能造成程式開發上的困境,除非程式設計師有對所有用戶界面的訪問權。例如,程式設計師若改變某實體中的方法名稱,他要么必須對整個專案裡頭所有連結到舊名的參考都加以編輯,要么屈服於繼續維護使用舊名的殘株殘瓦接口。而該舊名的接口於內部調用該方法的新名。

相關詞條

熱門詞條

聯絡我們