[美] 小弗雷德里克·布魯克斯(Frederick,P.Brooks,Jr.) 著,汪穎,UMLChina翻組 譯
在軟件領(lǐng)域,很少能有像《人月神話》一樣具有深遠(yuǎn)影響力和暢銷不衰的著作。Brooks博士為人們管理復(fù)雜項(xiàng)目提供了具有洞察力的見(jiàn)解,既有很多發(fā)人深省的觀點(diǎn),又有大量軟件工程的實(shí)踐。
《人月神話(40周年中文紀(jì)念版)》內(nèi)容來(lái)自Brooks博士在IBM公司SYSTEM/360家族和OS/360中的項(xiàng)目管理經(jīng)驗(yàn),該項(xiàng)目堪稱軟件開(kāi)發(fā)項(xiàng)目管理的典范。
《人月神話(40周年中文紀(jì)念版)》英文原版一經(jīng)面世,即引起業(yè)內(nèi)人士的強(qiáng)烈反響,后又譯為德、法、日、俄、中、韓等多種文字,全球銷售數(shù)百萬(wàn)冊(cè)。確立了其在行業(yè)內(nèi)的經(jīng)典地位。
在《人月神話(40周年中文紀(jì)念版)》第首次出版40年后的今天,我們重新整理了Brooks博士的經(jīng)典內(nèi)容,并將國(guó)內(nèi)軟件開(kāi)發(fā)領(lǐng)域先行者們對(duì)《人月神話》中的實(shí)踐及系統(tǒng)理論的使用經(jīng)驗(yàn)和心得集結(jié)成冊(cè)免費(fèi)贈(zèng)與大家共享,更使《人月神話(40周年中文紀(jì)念版)》成為國(guó)內(nèi)從業(yè)者的必讀經(jīng)典之一。
《人月神話(40周年中文紀(jì)念版)》讀者包括:軟件開(kāi)發(fā)人員、軟件項(xiàng)目經(jīng)理、系統(tǒng)分析師等IT從業(yè)者。
小弗雷德里克·布魯克斯,曾獲得美國(guó)計(jì)算機(jī)領(lǐng)域具聲望的圖靈獎(jiǎng)(A.M.Turing Award)。美國(guó)計(jì)算機(jī)協(xié)會(huì)(ACM)稱贊他“對(duì)計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)和軟件工程做出了里程碑式的貢獻(xiàn)”。
布魯克斯博士1956年開(kāi)始任職于IBM公司,早期擔(dān)任Stretch 和Harvest計(jì)算機(jī)的體系建構(gòu)師。他被認(rèn)為是“IBM 360系統(tǒng)之父”,曾擔(dān)任360系統(tǒng)的項(xiàng)目經(jīng)理。憑借在此項(xiàng)目中的杰出貢獻(xiàn),他與Bob Evans和Erich Bloch在1985年獲得了美國(guó)國(guó)家技術(shù)獎(jiǎng)(National Medal of Technology)。
布魯克斯博士創(chuàng)立了北卡羅來(lái)納大學(xué)的計(jì)算機(jī)科學(xué)系,并于1965-1985年擔(dān)任系主任。他還曾任職于美國(guó)國(guó)家科技局和國(guó)防科學(xué)技術(shù)委員會(huì)。目前其仍活躍于從事虛擬環(huán)境和科學(xué)可視化等方面的研究工作,2010年獲得虛擬現(xiàn)實(shí)事業(yè)獎(jiǎng)(IEEE Virtual Reality Career Award)。
★《人月神話》仍然是計(jì)算機(jī)書籍中被引用次數(shù)多的經(jīng)典著作,而且即便本書最初出版于20世紀(jì),其內(nèi)容至今仍未過(guò)時(shí)。在閱讀的時(shí)候,每隔幾頁(yè)不說(shuō)一句“對(duì)極了!”是很難受的。
——Steve McCormell,Constmx&首席軟件工程師 名著《代碼大全》、《快速軟件開(kāi)發(fā)》作者
★這是一本經(jīng)典著作,與軟件開(kāi)發(fā)有關(guān)的每一個(gè)人都應(yīng)該不止一遍地讀這本書。
——Philippe Kruchten,Rational統(tǒng)一過(guò)程首席架構(gòu)師
★我一本讀過(guò)很多遍的書,是Fred Brooks的《人月神話》,實(shí)際上我每過(guò)一兩年都重讀一遍。因?yàn)檫@本書文筆很好,而且書中的忠告很有價(jià)值,即使是在40年以后。當(dāng)然,其在很多細(xì)節(jié)上和我們現(xiàn)在做事情的方法有所不同。我們的工作更自動(dòng)化,計(jì)算機(jī)的“馬力”更強(qiáng)勁,但書中依然有許多好的忠告,我非常推崇這本書。這是我能想起來(lái)的你能從中體會(huì)到樂(lè)趣和思想的計(jì)算機(jī)科學(xué)書籍。
——Briall Kenlighan,名著《C程序設(shè)計(jì)語(yǔ)言》的合著者之一
第1章 焦油坑
編程系統(tǒng)產(chǎn)品
職業(yè)的樂(lè)趣
職業(yè)的苦惱
第2章 人月神話
樂(lè)觀主義
人月
系統(tǒng)測(cè)試
空泛的估算
重復(fù)產(chǎn)生的進(jìn)度災(zāi)難
第3章 外科手術(shù)隊(duì)伍
問(wèn)題
Mills的建議
如何運(yùn)作
團(tuán)隊(duì)的擴(kuò)建
第4章 貴族專制、民主政治和系統(tǒng)設(shè)計(jì)
概念的完整性
獲得概念的完整性
貴族專制統(tǒng)治和民主政治
在等待時(shí),實(shí)現(xiàn)人員應(yīng)該做什么
第5章 畫蛇添足
結(jié)構(gòu)師的交互準(zhǔn)則和機(jī)制
自律——開(kāi)發(fā)第二個(gè)系統(tǒng)所帶來(lái)的后果
第6章 貫徹執(zhí)行
文檔化的規(guī)格說(shuō)明——手冊(cè)
形式化定義
直接整合
會(huì)議和大會(huì)
多重實(shí)現(xiàn)
電話日志
產(chǎn)品測(cè)試
第7章 為什么巴比倫塔會(huì)失敗
巴比倫塔的管理教訓(xùn)
大型編程項(xiàng)目中的交流
項(xiàng)目工作手冊(cè)
大型編程項(xiàng)目的組織架構(gòu)
第8章 胸有成竹
Portman的數(shù)據(jù)
Aron的數(shù)據(jù)
Harr的數(shù)據(jù)
OS/360的數(shù)據(jù)
Corbató的數(shù)據(jù)
第9章 削足適履
作為成本的程序空間
規(guī)??刂?br>空間技能
數(shù)據(jù)的表現(xiàn)形式是編程的根本
第10章 提綱挈領(lǐng)
計(jì)算機(jī)產(chǎn)品的文檔
大學(xué)科系的文檔
軟件項(xiàng)目的文檔
為什么要有正式的文檔
第11章 未雨綢繆
試驗(yàn)性工廠和增大規(guī)模
唯一不變的就是變化本身
為變更設(shè)計(jì)系統(tǒng)
為變更計(jì)劃組織架構(gòu)
前進(jìn)兩步,后退一步
前進(jìn)一步,后退一步
第12章 干將莫邪
目標(biāo)機(jī)器
輔助機(jī)器和數(shù)據(jù)服務(wù)
高級(jí)語(yǔ)言和交互式編程
第13章 整體部分
剔除bug的設(shè)計(jì)
構(gòu)件單元調(diào)試
系統(tǒng)集成調(diào)試
第14章 禍起蕭墻
里程碑還是沉重的負(fù)擔(dān)
“其他的部分反正會(huì)落后”
地毯的下面
第15章 另外一面
需要什么樣的文檔
流程圖
自文檔化的程序
第16章 沒(méi)有銀彈
摘要
介紹
根本困難
以往解決次要困難的一些突破
銀彈的希望
針對(duì)概念上根本問(wèn)題的頗具前途的方法
第17章 再論“沒(méi)有銀彈”
人狼和其他恐怖傳說(shuō)
存在著銀彈——就在這里
含糊的表達(dá)將會(huì)導(dǎo)致誤解
Harel的分析
Jones的觀點(diǎn)——質(zhì)量帶來(lái)生產(chǎn)率
那么,生產(chǎn)率的情形如何
面向?qū)ο缶幊獭@顆銅質(zhì)子彈可以嗎
重用的情況怎樣
學(xué)習(xí)大量的詞匯——對(duì)軟件重用的一個(gè)可預(yù)見(jiàn)但還沒(méi)有被預(yù)言的問(wèn)題
子彈的本質(zhì)——形勢(shì)沒(méi)有發(fā)生改變
……
第18章 《人月神話》的觀點(diǎn):是與非
第1章 焦油坑
第2章 人月神話
第3章 外科手術(shù)隊(duì)伍
第4章 貴族專制、民主政治和系統(tǒng)設(shè)計(jì)
第5章 畫蛇添足
第6章 貫徹執(zhí)行
第7章 為什么巴比倫塔會(huì)失敗
第8章 胸有成竹
第9章 削足適履
第10章 提綱挈領(lǐng)
第11章 未雨綢繆
第12章 干將莫邪
第13章 整體部分
第14章 禍起蕭墻
第15章 另外一面
第1版結(jié)束語(yǔ)
第19章 20年后的《人月神話》
為什么要出版20周年紀(jì)念版本
核心觀點(diǎn)——概念完整性和結(jié)構(gòu)師
開(kāi)發(fā)第二個(gè)系統(tǒng)所引起的后果——盲目的功能和頻率猜測(cè)
圖形界面的成功
沒(méi)有構(gòu)建舍棄原型——瀑布模型是錯(cuò)誤的
增量開(kāi)發(fā)模型更佳——漸進(jìn)地精化
關(guān)于信息隱藏,Parnas是正確的,我是錯(cuò)誤的
人月到底有多少神話色彩?Boehm的模型和數(shù)據(jù)
人就是一切(或者說(shuō),幾乎是一切)
放棄權(quán)力的力量
最令人驚訝的新事物是什么?數(shù)百萬(wàn)的計(jì)算機(jī)
全新的軟件產(chǎn)業(yè)——塑料薄膜包裝的成品軟件
買來(lái)開(kāi)發(fā)——使用塑料包裝的成品軟件包作為構(gòu)件
軟件工程的狀態(tài)和未來(lái)
結(jié)束語(yǔ):令人向往、激動(dòng)人心和充滿樂(lè)趣的50年
注解與參考文獻(xiàn)
附錄:人月落地實(shí)戰(zhàn)體驗(yàn)
一、名家談人月
1.年金
2.《人月神話》與實(shí)踐
3.Frank Chance評(píng)人月
4.軟件尚方寶劍(Silver Bullet)何在
二、名著評(píng)人月
三、讀者感言
1.讀書有感——人月神話
2.我這幾天很煩(產(chǎn)品概念完整性)
3.關(guān)于我們的思考——“項(xiàng)目開(kāi)發(fā)”及讀《人月神話》有感
4.我的“人月神話”
5.《人月神話》軟玉生香
《人月神話(40周年中文紀(jì)念版)》:
作為成本的程序空間
程序有多大?除了運(yùn)行時(shí)間以外,它所占據(jù)的空間也是主要開(kāi)銷。這同樣適用于專用開(kāi)發(fā)的程序,用戶支付給開(kāi)發(fā)者一筆費(fèi)用,作為必要分擔(dān)的開(kāi)發(fā)成本??紤]一下IBMAPL交互式軟件系統(tǒng),它的租金為每月400美元,在使用時(shí),它至少占用160K字節(jié)的內(nèi)存。在Model165上,內(nèi)存租金大約是12美元/每月·千字節(jié)。如果程序在全部時(shí)間內(nèi)都可用,他需要支付400美元的軟件使用費(fèi)和1920美元的內(nèi)存租用費(fèi)。如果某個(gè)人每天使用APL系統(tǒng)4小時(shí),他每月需要支出400美元的軟件租金和320美元的內(nèi)存租用費(fèi)。
常常聽(tīng)到的一個(gè)“可怕的”談?wù)撌窃?M內(nèi)存的機(jī)器上,操作系統(tǒng)就需要占用400K內(nèi)存。這種言論就好像批評(píng)波音747飛機(jī),僅僅因?yàn)樗馁Y2700萬(wàn)美元一樣無(wú)知。我們首先必須問(wèn)的是“它能干什么?”對(duì)于所耗費(fèi)的資金,獲得的易用性和性能(高效的系統(tǒng)利用)是什么?投資在內(nèi)存上的每月4800美元的租金能否比用在其他硬件、編程人員、應(yīng)用程序上更加有效?
當(dāng)系統(tǒng)設(shè)計(jì)者認(rèn)為對(duì)用戶而言,常駐程序內(nèi)存的形式比加法器、磁盤等更加有用時(shí),他會(huì)將硬件實(shí)現(xiàn)中的一部分移到內(nèi)存上。相反,其他的做法是非常不負(fù)責(zé)任的。所以,應(yīng)該從整體上進(jìn)行評(píng)價(jià)。沒(méi)有人可以在自始至終提倡更緊密的軟硬件設(shè)計(jì)集成的同時(shí),又僅僅就規(guī)模本身對(duì)軟件系統(tǒng)提出批評(píng)。
由于規(guī)模是軟件系統(tǒng)產(chǎn)品用戶成本中如此大的一個(gè)組成部分,開(kāi)發(fā)人員必須設(shè)置規(guī)模的目標(biāo),控制規(guī)模,考慮減小規(guī)模的方法,就像硬件開(kāi)發(fā)人員會(huì)設(shè)立元器件數(shù)量目標(biāo),控制元器件的數(shù)量,想出一些減少零件的方法。同任何開(kāi)銷一樣,規(guī)模本身不是壞事,但不必要的規(guī)模是不可取的。
規(guī)??刂?br> 對(duì)項(xiàng)目經(jīng)理而言,規(guī)??刂萍仁羌夹g(shù)工作的一部分,也是管理工作的一部分。他必須研究用戶和用戶需求,以設(shè)置待開(kāi)發(fā)系統(tǒng)的規(guī)模。接著,把這些系統(tǒng)劃分成若干部分,并設(shè)定每個(gè)部分的規(guī)模目標(biāo)。由于“規(guī)模一速度”權(quán)衡方案的結(jié)果在很大的范圍內(nèi)變化,規(guī)模目標(biāo)的設(shè)置是一件頗具技巧的事情,需要對(duì)每個(gè)可用方案有深刻的了解。聰明的項(xiàng)目經(jīng)理還會(huì)給自己預(yù)留一些空間,在工作推行時(shí)分配。
在OS/360項(xiàng)目中,即使所有的工作都完成得相當(dāng)仔細(xì),我們依然從中得到了一些痛苦的教訓(xùn)。
首先,僅對(duì)核心程序設(shè)定規(guī)模目標(biāo)是不夠的,必須把所有方面的規(guī)模都編入預(yù)算。在先前的大多數(shù)操作系統(tǒng)中,系統(tǒng)駐留在磁帶上,長(zhǎng)時(shí)間的磁帶搜索意味著它無(wú)法自如地運(yùn)用在程序片段上。OS/360和它的前任產(chǎn)品Stretch操作系統(tǒng)和1410-7010磁盤操作系統(tǒng)一樣,是駐留在磁盤上的。它的開(kāi)發(fā)者對(duì)自由、廉價(jià)的磁盤訪問(wèn)感到欣喜。而如果使用磁帶,會(huì)給性能帶來(lái)災(zāi)難性的后果。
在為每個(gè)單元設(shè)立核心規(guī)模的同時(shí),我們沒(méi)有同時(shí)設(shè)置訪問(wèn)的預(yù)算。正如大家能想到的一樣,當(dāng)程序員發(fā)現(xiàn)自己的單元核心未能達(dá)到要求時(shí),他會(huì)把它分解成覆蓋模塊。這個(gè)過(guò)程本身增加了程序整體的規(guī)模,并降低了運(yùn)行速度。最重要的是,我們的管理控制系統(tǒng)既沒(méi)有度量,也沒(méi)有捕獲這些問(wèn)題。每個(gè)人都匯報(bào)了內(nèi)核的大小,由于都在目標(biāo)范圍之內(nèi),所以沒(méi)有人發(fā)現(xiàn)規(guī)模上的問(wèn)題。
幸運(yùn)的是,OS/360性能模擬程序投入使用的時(shí)間較早。第一次運(yùn)行的結(jié)果反映出很大的麻煩。FortranH在帶磁鼓的Model65上,每分鐘模擬編譯5條語(yǔ)句。嵌入的例程顯示控制程序模塊進(jìn)行了很多次磁盤訪問(wèn)。甚至使用頻繁的監(jiān)控模塊也犯了很多同樣的錯(cuò)誤,結(jié)果很類似于頁(yè)
在很多方面,管理一個(gè)大型的計(jì)算機(jī)編程項(xiàng)目與管理其他行業(yè)的大型工程很相似——比大多數(shù)程序員所認(rèn)為的還要相似;在另外一些方面,它又有差別——比大多數(shù)職業(yè)經(jīng)理人所認(rèn)為的差別還要大。
這個(gè)領(lǐng)域的知識(shí)在于累積?,F(xiàn)在,AFIPS(美國(guó)信息處理學(xué)會(huì)聯(lián)合會(huì))已經(jīng)有了一些討論和會(huì)議,也出版了一些書籍和論文,但是還沒(méi)有成形的方法對(duì)這一領(lǐng)域來(lái)進(jìn)行系統(tǒng)地闡述。提供這樣一本主要反映個(gè)人觀點(diǎn)的小書看來(lái)是合適的。
雖然我原來(lái)從事計(jì)算機(jī)科學(xué)的編程方面的工作,但是在1956-1963年,自動(dòng)控制程序和高級(jí)語(yǔ)言編譯器開(kāi)發(fā)出來(lái)的時(shí)候,我主要參加的是硬件構(gòu)架方面的工作。1964年,我成為操作系統(tǒng)OS/360的經(jīng)理,我發(fā)現(xiàn)前些年的進(jìn)展使編程世界改變了很多。
雖然是失敗的,但管理OS/360的開(kāi)發(fā)仍是一次很有幫助的經(jīng)歷。負(fù)責(zé)這次開(kāi)發(fā)項(xiàng)目的團(tuán)隊(duì),包括我的繼任經(jīng)理F.M.Trapnell,有很多值得自豪的東西。該系統(tǒng)在設(shè)計(jì)和執(zhí)行方面都很出色,并被成功地應(yīng)用到很多領(lǐng)域,特別是設(shè)備獨(dú)立的輸入輸出和外部庫(kù)管理,在很多技術(shù)革新中被廣泛復(fù)制?,F(xiàn)在,這一系統(tǒng)是十分可靠的,相當(dāng)有效且非常通用。
但是,并不是所有的努力都是成功的。所有OS/360的用戶很快就能發(fā)現(xiàn)它應(yīng)該能夠做得更好。設(shè)計(jì)和執(zhí)行上的缺陷在控制程序中特別普遍,相比之下,語(yǔ)言編譯器就好得多。大多數(shù)缺陷發(fā)生在1964-1965年的設(shè)計(jì)階段,所以這肯定是我的責(zé)任。此外,這個(gè)產(chǎn)品發(fā)布推遲了,需要的內(nèi)存比計(jì)劃中的要多,成本也是估計(jì)的好幾倍,而且第一次發(fā)布時(shí)并不能很好地運(yùn)行,直到發(fā)布了幾次以后,問(wèn)題才得以解決。
更多建議: