在軟件領(lǐng)域,很少能有像《人月神話》一樣具有深遠(yuǎn)影響力和長(zhǎng)銷不衰的著作。布魯克斯博士為人們管理復(fù)雜項(xiàng)目提供了頗具洞察力的見解,從宏觀角度有層次地分析了軟件工程的方方面面,不僅邏輯嚴(yán)謹(jǐn),而且頗具文化底蘊(yùn)!度嗽律裨(紀(jì)念典藏版)》內(nèi)容主要來自布魯克斯博士在IBM公司研發(fā)并管理System/360計(jì)算機(jī)家族和OS/360軟件支持包期間的項(xiàng)目管理經(jīng)驗(yàn),該項(xiàng)目堪稱軟件開發(fā)項(xiàng)目管理的典范。
《人月神話(紀(jì)念典藏版)》英文版一經(jīng)面世,即引起業(yè)內(nèi)人士的強(qiáng)烈反響,后譯為德、法、日、俄、中、韓等多種文字,成為軟件開發(fā)和管理人員的必讀經(jīng)典。
再讀軟件經(jīng)典 如品陳年佳釀
《人月神話》是軟件工程領(lǐng)域絕無僅有的經(jīng)典佳作,歷時(shí)近半個(gè)世紀(jì),作者Fred Brooks對(duì)大型軟件項(xiàng)目管理的經(jīng)驗(yàn)思考啟迪了一代代工程師的實(shí)踐。
《人月神話》一書的開篇強(qiáng)調(diào)了構(gòu)建“系統(tǒng)產(chǎn)品”與構(gòu)建“簡(jiǎn)單程序”的任務(wù)不同。研發(fā)大型軟件系統(tǒng)不是簡(jiǎn)單程序的堆疊組裝。軟件開發(fā)任務(wù)不總是像收割麥子的任務(wù)一樣可分解,要分析問題性質(zhì)以及子任務(wù)間的依賴關(guān)系。軟件研發(fā)效能的量化估算不能對(duì)“人月”“人周”“人天”做簡(jiǎn)單加法和乘法,正如不能基于個(gè)人百米成績(jī)來推算馬拉松成績(jī)一樣。新手培訓(xùn)、溝通交互都會(huì)引入額外的成本,向延期的軟件項(xiàng)目添加新人會(huì)使項(xiàng)目拖得更久。軟件開發(fā)任務(wù)間復(fù)雜的依賴關(guān)系需要科學(xué)管理,避免無效的人力投入。
軟件不可見性和抽象性是導(dǎo)致軟件復(fù)雜性的根本原因,也是軟件工程學(xué)科要應(yīng)對(duì)的基本問題。軟件系統(tǒng)的復(fù)雜性源于參與開發(fā)人員的概念模型是不完整和不一致的,正如“一千個(gè)人眼中有一千個(gè)哈姆雷特”,管理軟件項(xiàng)目的復(fù)雜性就需要達(dá)成各方對(duì)軟件系統(tǒng)概念模型的局部完整性與一致性。軟件項(xiàng)目開發(fā)團(tuán)隊(duì)的組織要融合開源、群智,以及規(guī)模化敏捷組織的最新理念,還要堅(jiān)守外科手術(shù)團(tuán)隊(duì)這樣的組織結(jié)構(gòu),持續(xù)優(yōu)化大規(guī)模軟件系統(tǒng)產(chǎn)品項(xiàng)目的組織與流程。
我國(guó)軟件產(chǎn)業(yè)規(guī)模已突破十萬億元,成為軟件大國(guó)的同時(shí)還處在“大而不強(qiáng)”的困境,在系統(tǒng)軟件與工業(yè)軟件領(lǐng)域還面臨著被“卡脖子”的風(fēng)險(xiǎn)!度嗽律裨挕芬粫械脑S多經(jīng)驗(yàn)、觀點(diǎn)對(duì)于我國(guó)關(guān)鍵基礎(chǔ)軟件技術(shù)、產(chǎn)品與產(chǎn)業(yè)創(chuàng)新發(fā)展具有重要指導(dǎo)意義。
今天作為數(shù)字經(jīng)濟(jì)社會(huì)基礎(chǔ)設(shè)施的系統(tǒng)軟件和工業(yè)軟件,都是經(jīng)過數(shù)十年長(zhǎng)期演進(jìn)與發(fā)展的軟件,是軟件產(chǎn)業(yè)的根技術(shù)。如何改變這種受制于人的被動(dòng)局面?我想在全力投入攻堅(jiān)之外,還要深入思考、深入探究這類軟件產(chǎn)品工程研發(fā)的內(nèi)在規(guī)律。實(shí)現(xiàn)軟件產(chǎn)業(yè)高質(zhì)量發(fā)展的關(guān)鍵在于建立開發(fā)“能用、管用、好用”的關(guān)鍵系統(tǒng)軟件和基礎(chǔ)工業(yè)軟件的工程方法與工具體系。
軟件工程“沒有銀彈”的觀點(diǎn)還成立嗎?用“塑料薄膜包裝的成品軟件”無疑已成為歷史,但并不妨礙它當(dāng)年為軟件產(chǎn)業(yè)發(fā)展帶來的積極貢獻(xiàn)與影響。進(jìn)入軟件開源與大語言模型時(shí)代,軟件工程領(lǐng)域的“銀彈”是否已經(jīng)出現(xiàn)?大語言模型在代碼輔助生成以及算法編程優(yōu)化等方面展現(xiàn)出強(qiáng)大的能力,它會(huì)將軟件領(lǐng)域帶向何種高度?
再讀“人月神話”,今時(shí)今日又繪新意。軟件定義美好世界, 既是國(guó)家示范性軟件學(xué)院成立的初心,也是清華大學(xué)軟件學(xué)院在建院二十周年時(shí)對(duì)初心的再次表達(dá)。軟件系統(tǒng)的形態(tài),軟件工程的方法將在實(shí)踐者的持續(xù)探索和研究者的深入思考中不斷演進(jìn)。
王建民 清華大學(xué)軟件學(xué)院院長(zhǎng)
2023年6月
第1章 焦油坑 / 001
編程系統(tǒng)產(chǎn)品 / 003
職業(yè)的樂趣 / 005
職業(yè)的苦惱 / 006
第2章 人月神話 / 009
樂觀主義 / 011
人 月 / 013
系統(tǒng)測(cè)試 / 016
怯懦的估算 / 018
重復(fù)產(chǎn)生的進(jìn)度災(zāi)難 / 019
第3章 外科手術(shù)團(tuán)隊(duì) / 025
問 題 / 027
Mills的建議 / 029
如何運(yùn)作 / 032
團(tuán)隊(duì)的擴(kuò)建 / 033
第4章 貴族制、民主制和系統(tǒng)設(shè)計(jì) / 035
概念上的完整性 / 037
獲得概念的完整性 / 038
貴族制和民主制 / 039
在等待時(shí),實(shí)現(xiàn)人員做什么 / 042
第5章 第二系統(tǒng)效應(yīng) / 045
架構(gòu)師的互動(dòng)紀(jì)律 / 047
自律—第二系統(tǒng)效應(yīng) / 048
第6章 傳遞消息 / 053
書面規(guī)約—手冊(cè) / 055
形式化定義 / 056
直接整合 / 059
會(huì)議和大會(huì) / 059
第7章 為什么巴別塔會(huì)失敗 / 065
巴別塔的管理教訓(xùn) / 067
大型編程項(xiàng)目中的交流 / 068
項(xiàng)目工作手冊(cè) / 068
大型編程項(xiàng)目的組織架構(gòu) / 072
第8章 胸有成竹 / 077
Portman的數(shù)據(jù) / 080
Aron的數(shù)據(jù) / 081
Harr的數(shù)據(jù) / 082
OS/360的數(shù)據(jù) / 083
Corbató的數(shù)據(jù) / 084
第9章 削足適履 / 085
作為成本的程序空間 / 087
規(guī)?刂 / 088
空間技能 / 090
數(shù)據(jù)的表現(xiàn)形式是編程的根本 / 091
第10章 提綱挈領(lǐng) / 093
計(jì)算機(jī)產(chǎn)品的文檔 / 095
大學(xué)科系的文檔 / 097
軟件項(xiàng)目的文檔 / 097
為什么要有正式的文檔 / 098
第11章 未雨綢繆 / 101
試驗(yàn)性工廠和增大規(guī)模 / 103
唯一不變的就是變化本身 / 104
為變更設(shè)計(jì)系統(tǒng) / 104
為變更計(jì)劃組織架構(gòu) / 105
前進(jìn)兩步,后退一步 / 107
前進(jìn)一步,后退一步 / 109
第12章 干將莫邪 / 111
目標(biāo)機(jī)器 / 114
輔助機(jī)器和數(shù)據(jù)服務(wù) / 116
高級(jí)語言和交互式編程 / 119
第13章 整體部分 / 123
剔除bug的設(shè)計(jì) / 125
構(gòu)件單元調(diào)試 / 127
系統(tǒng)集成調(diào)試 / 130
第14章 禍起蕭墻 / 135
是里程碑還是沉重的負(fù)擔(dān) / 137
“其他的部分反正會(huì)落后” / 139
地毯的下面 / 140
第15章 另外一面 / 145
需要什么文檔 / 148
流程圖 / 150
自文檔化的程序 / 154
第16章 沒有銀彈—— 軟件工程中的根本和次要問題 / 161
摘 要 / 163
介 紹 / 163
根本困難 / 164
以往解決次要困難的一些突破 / 169
銀彈的希望 / 170
針對(duì)概念上根本問題的頗具前途的方法 / 179
第17章 再論“沒有銀彈” / 187
人狼和其他恐怖傳說 / 189
存在著銀彈—就在這里 / 189
含糊的表達(dá)將會(huì)導(dǎo)致誤解 / 190
Harel的分析 / 193
Jones的觀點(diǎn)—質(zhì)量帶來生產(chǎn)率 / 199
那么,生產(chǎn)率的情形如何 / 199
面向?qū)ο缶幊獭@顆銅質(zhì)子彈可以嗎 / 201
重用的情況怎樣 / 203
學(xué)習(xí)大量的詞匯—對(duì)軟件重用的一個(gè)可預(yù)見但還沒有被預(yù)言的問題 / 206
子彈的本質(zhì)—形勢(shì)沒有發(fā)生改變 / 207
第18章 《人月神話》的觀點(diǎn):是與非 / 209
第19章 20年后的《人月神話》 / 233
為什么要出版20周年紀(jì)念版本 / 235
核心觀點(diǎn)—概念完整性和結(jié)構(gòu)師 / 236
開發(fā)第二個(gè)系統(tǒng)所引起的后果—盲目的功能和頻率猜測(cè) / 238
圖形界面的成功 / 241
沒有構(gòu)建舍棄原型—瀑布模型是錯(cuò)誤的 / 245
增量開發(fā)模型更佳—漸進(jìn)地精化 / 247
關(guān)于信息隱藏,Parnas是正確的,我是錯(cuò)誤的 / 252
人月到底有多少神話色彩?Boehm的模型和數(shù)據(jù) / 254
人就是一切(或者說,幾乎是一切) / 256
放棄權(quán)力的力量 / 257
最令人驚訝的新事物是什么?數(shù)百萬的計(jì)算機(jī) / 260
全新的軟件產(chǎn)業(yè)—塑料薄膜包裝的成品軟件 / 262
買來開發(fā)—使用塑料包裝的成品軟件包作為構(gòu)件 / 265
軟件工程的狀態(tài)和未來 / 267
結(jié)束語 令人向往、激動(dòng)人心和充滿樂趣的50年 / 269
譯后記 / 271