沒有銀彈-軟體工程中的根本和次要問題
在所有恐怖民間傳說的妖怪中,最可怕的是人狼,因為它們可以完全出乎意料地從熟悉的面孔變成可怕的怪物。為了對付人狼,我們在尋找可以消滅它們的銀彈。
大家熟悉的軟體專案具有一些人狼的特性(至少在非技術經理看來),常常看似簡單明瞭的東西,卻有可能變成乙個落後進度、超出預算、存在大量缺陷的怪物。因此,我們聽到了近乎絕望的尋求銀彈的呼喚,尋求一種可以使軟體成本像計算機硬體成本一樣降低的尚方寶劍。
但是,我們看看近十年來的情況,沒有銀彈的蹤跡。沒有任何技術或管理上的進展,能夠獨立地許諾在生產率、可靠性或簡潔性上取得數量級的提高。本章中,我們試圖通過分析軟體問題的本質和很多候選銀彈的特徵,來探索其原因。不過,懷疑論者並不是悲觀主義者。儘管我們沒有看見令人驚異的突破,並認為這種銀彈實際上是與軟體的內在特性相悖,不過還是出現了一些令人振奮的革新。這些方法的規範化、持續地開拓、發展和傳播確實是可以在將來使生產率產生數量級上的提高。雖然沒有通天大道,但是路就在腳下。
解決管理災難的第一步是將大塊的「巨無霸理論」替換成「微生物理論」,它的每一步——希望的誕生,本身就是對一蹴而就型解決方案的衝擊。它告訴工作者進步是逐步取得的,伴隨著辛勤的勞動,對規範化過程應進行持續不懈的努力。由此,誕生了現在的軟體工程。
不僅僅是在目力所及的範圍內,沒有發現銀彈,而且軟體的特性本身也導致了不大可能有任何的發明創新——能夠像計算機硬體工業中的微電子器件、電晶體、大規模整合一樣——提高軟體的生產率、可靠性和簡潔程度。我們甚至不能期望每兩年有一倍的增長。
首先,我們必須看到這樣的畸形並不是由於軟體發展得太慢,而是因為計算機硬體發展得太快。從人類文明開始,沒有任何其他產業技術的價效比,能在 30 年之內取得 6 個數量級的提高,也沒有任何乙個產業可以在效能提高或者降低成本方面取得如此的進步。這些進步來自計算機製造產業的轉變,從裝配工業轉變成流水線工業。
其次,讓我們通過觀察預期的軟體技術產業發展速度,來了解中間的困難。效仿亞里斯多德,我將它們分成根本的——軟體特性中固有的困難,次要的——出現在目前生產上的,但並非那些與生俱來的困難。
人月神話閱讀筆記(1)
第一章 焦油坑 程式設計產品是簡單程式通過通用化,測試,文件,維護等產生的。保證是乙個完整的程式 程式設計系統是簡單程式符合規範,功能上相互協作,並能與系統在互動上不出錯。保證能與系統配合 程式設計系統產品 程式設計系統 程式設計產品。程式設計系統產品才是大多數系統開發的目標。程式設計系統產品的成本...
人月神話閱讀筆記03
人月神話拜讀完了,真的感覺學到了很多,受益匪淺,書開始就形象有有趣的把軟體危機比作 焦油坑,交流至關重要,實踐是最好的老師,文件撰寫是軟體人的必修課,這本書讓我們對軟體工程有了更深一步的理解,有了全新的認識,軟體工程焦油坑在相當長時間內仍會存在,我們必須努力學習,不斷創新,獲得更大的進步。一 我過去...
人月神話閱讀筆記002
唯一不變的就是變化本身 世界上唯一不變的就是變化本身 今天的這句名言 於希臘哲學家赫拉克利特 約西元前 5 4 0前 4 8 0 一旦認識到試驗性的系統必須被構建和丟棄,具有變更思想的重新設計不可避免,從而直面整個變化現象是非常有用的。第一步是接受這樣的事實 變化是與生俱來的,不是不合時宜和令人生厭...