1975年《人月神話》的觀點(diǎn):
第一章 焦油坑
1、編程系統(tǒng)產(chǎn)品開發(fā)的工作量是供個(gè)人使用的、獨(dú)立開發(fā)的構(gòu)建程序的9倍。我估計(jì)軟件構(gòu)件產(chǎn)品化引起了3倍工作量。將軟件構(gòu)件整合成完整系統(tǒng)所需要的設(shè)計(jì)、集成和測(cè)試又加強(qiáng)了3倍工作量,這些高成本的構(gòu)件在根本上是相互獨(dú)立的。
2、編程行業(yè)“滿足我們內(nèi)心深處的創(chuàng)造渴望和愉悅所有人的共有感情”提供了五種樂趣:
創(chuàng)建事物的快樂
開發(fā)對(duì)其他人有用的東西的樂趣
將可以活動(dòng)、相互嚙合的零部件組裝成類似迷宮的東西,這個(gè)過程所體現(xiàn)出令人神魂顛倒的魅力。
面對(duì)不重復(fù)任務(wù),不斷學(xué)習(xí)的樂趣。
工作在如此易于駕馭的介質(zhì)上的樂趣——純粹的思維活動(dòng)——其存在、移動(dòng)和運(yùn)轉(zhuǎn)方式完全不同于實(shí)際物體。
3、這個(gè)行業(yè)的苦惱(6個(gè))
追求完美
由他人來設(shè)定目標(biāo)
真正的權(quán)威來自于每次任務(wù)的完成
任何創(chuàng)造性活動(dòng)都伴隨著枯燥和艱苦的勞動(dòng),編程也不例外
人們通常期望項(xiàng)目接近結(jié)束時(shí)會(huì)收斂快些,實(shí)際相反
產(chǎn)品在完成前都有面臨陳舊過時(shí)的威脅
第二章 人月神話
1、缺乏合理的時(shí)間進(jìn)度是造成項(xiàng)目滯后的最主要原因,它比其他所有因素的總和影響還大。
2、由于編程人員通過純粹的思維活動(dòng)來開發(fā),我們期待在實(shí)現(xiàn)過程中不會(huì)碰到困難。但是,我們構(gòu)思本身是有缺陷的,因此總會(huì)有bug。
3、人月是危險(xiǎn)和帶有欺騙性的神話,因?yàn)樗凳救藛T數(shù)量和時(shí)間是可以相互替換的。
4、在若干人員中分解任務(wù)會(huì)引發(fā)額外的溝通工作量——培訓(xùn)和相互溝通。
5、關(guān)于進(jìn)度安排,我的經(jīng)驗(yàn)是1/3計(jì)劃、1/6編碼、1/4構(gòu)件測(cè)試和1/4系統(tǒng)測(cè)試。
6、作為一門學(xué)科,我們?nèi)狈?shù)據(jù)估計(jì)。
7、我們對(duì)自己的估計(jì)技術(shù)不確定,因此在管理和客戶壓力下,我們常常缺乏堅(jiān)持的勇氣。
8、Brooks法則:向進(jìn)度落后的項(xiàng)目增加人手,只會(huì)使進(jìn)度更加落后。(主要原因?yàn)?個(gè),任務(wù)重新分配本身造成工作中斷,培訓(xùn)新人員,額外的相互溝通)
第三章 外科手術(shù)隊(duì)伍
1、優(yōu)秀專業(yè)的程序猿生產(chǎn)率是較差程序猿的10倍
2、數(shù)據(jù)顯示,經(jīng)驗(yàn)和現(xiàn)實(shí)之間沒有相互聯(lián)系,我懷疑這種現(xiàn)象是否普遍成立
3、小型、精干的隊(duì)伍是最好的——思緒盡可能的少,但對(duì)于真正的大型系統(tǒng),小型精干隊(duì)伍太慢了
4、絕大多數(shù)大型編程系統(tǒng)的經(jīng)驗(yàn)顯示,一擁而上的開發(fā)是高成本、速度緩慢、低效的,開發(fā)出的產(chǎn)品無法進(jìn)行概念上的集成
5、一位首席程序猿,類似于外科手術(shù)隊(duì)伍的團(tuán)隊(duì)架構(gòu),既能獲得由少數(shù)頭腦產(chǎn)生的產(chǎn)品完整性,又能得到多位協(xié)助人員的總體生產(chǎn)率,還徹底地減少了溝通的工作量。
第四章 貴族專制、民主政治和系統(tǒng)設(shè)計(jì)
1、概念完整性是系統(tǒng)設(shè)計(jì)中最重要的考慮因素。
2、功能與理解上的復(fù)雜程度的比值才是系統(tǒng)設(shè)計(jì)的最終測(cè)試標(biāo)準(zhǔn),而不僅僅是豐富的功能。
3、為了獲得概念完整性,設(shè)計(jì)必須由一個(gè)人或者一個(gè)具有共識(shí)的小型團(tuán)隊(duì)來完成。
4、對(duì)于非常大型的項(xiàng)目,將體系結(jié)構(gòu)方面的工作與具體實(shí)現(xiàn)相分離是獲得概念完整性的強(qiáng)有力方法。
5、紀(jì)律、規(guī)則對(duì)行業(yè)是有益的。外部體系結(jié)構(gòu)規(guī)定實(shí)際上是增強(qiáng),而不是限制實(shí)現(xiàn)小組的創(chuàng)造性。
6、概念上統(tǒng)一的系統(tǒng)能更快地開發(fā)和測(cè)試。
7、體系結(jié)構(gòu)、設(shè)計(jì)實(shí)現(xiàn)、物理實(shí)現(xiàn)的許多工作可以并發(fā)進(jìn)行。(軟硬件設(shè)計(jì)都可以并行)
第五章
1、盡早交流和持續(xù)溝通能使結(jié)構(gòu)師有較好的成本意識(shí)。使開發(fā)人員獲得對(duì)設(shè)計(jì)的信心,并且不會(huì)混淆各自的責(zé)任分工。
2、結(jié)構(gòu)師如何成功地影響實(shí)現(xiàn)
牢記是開發(fā)人員承擔(dān)創(chuàng)造性的實(shí)現(xiàn)責(zé)任,結(jié)構(gòu)師只能提出建議。
時(shí)刻準(zhǔn)備著為所指定的說明建議一種實(shí)現(xiàn)的方法,準(zhǔn)備接受任何其他可行的方法。
對(duì)上述建議保持低調(diào)和平靜。
準(zhǔn)備對(duì)所建議的改進(jìn)放棄堅(jiān)持。
聽取開發(fā)人員在體系結(jié)構(gòu)上改進(jìn)的建議。
3、人們所設(shè)計(jì)的最危險(xiǎn)的系統(tǒng),通常是過分地進(jìn)行設(shè)計(jì)。
4、為功能分配優(yōu)先權(quán)值是一個(gè)很有價(jià)值的規(guī)范化方法。
第六章 貫徹執(zhí)行
必須明確定義體系結(jié)構(gòu)中與先前定義不同的地方,重新定義的詳細(xì)程度應(yīng)該與原先的說明一致。
出于精確性考慮,我們需要形式化地設(shè)計(jì)定義,同樣,我們需要記敘定義來加深理解。
允許體系結(jié)構(gòu)師對(duì)實(shí)現(xiàn)人員的詢問做出電話應(yīng)答解釋是非常重要的,并且必須進(jìn)行日志記錄和整理發(fā)布。
項(xiàng)目經(jīng)理最好的朋友就是他每天要面對(duì)的對(duì)手——獨(dú)立的產(chǎn)品測(cè)試機(jī)構(gòu)/小組。
第七章 為什么巴比倫塔會(huì)失敗
缺乏組織和交流
需要盡早盡量仔細(xì)的設(shè)計(jì)工作手冊(cè)結(jié)構(gòu)
每個(gè)團(tuán)隊(duì)成員應(yīng)該了解所有的材料(看到網(wǎng)頁(yè))
實(shí)時(shí)更新是至關(guān)重要的
組織結(jié)構(gòu)應(yīng)該是網(wǎng)狀,而不是樹型結(jié)構(gòu)。
第八章 胸有成竹
構(gòu)建獨(dú)立的小型程序的數(shù)據(jù)不適用于編程系統(tǒng)項(xiàng)目
當(dāng)使用適當(dāng)?shù)母呒?jí)語言編程時(shí),程序編制生產(chǎn)率可以提高5倍。
第九章 削足適履
除了運(yùn)行時(shí)間外,程序所占據(jù)的內(nèi)存空間也是主要開銷。規(guī)模本身不是件壞事,但不必要的規(guī)模是不可取的。
軟件開發(fā)人員必須設(shè)立規(guī)模目標(biāo),控制規(guī)模,發(fā)明一些減少規(guī)模的方法。
對(duì)于每個(gè)關(guān)鍵的文檔的維護(hù)提供了狀態(tài)監(jiān)督和預(yù)警機(jī)制
對(duì)于每個(gè)文檔本身就可以作為檢查列表或者數(shù)據(jù)庫(kù)
第11章 未雨綢繆
開發(fā)人員交付的是用戶滿意程度,而不僅僅是實(shí)際的產(chǎn)品。
用戶的實(shí)際需要和感覺會(huì)隨著程序的構(gòu)建、測(cè)試和使用而不斷變化。
對(duì)于一個(gè)廣泛使用的程序,其維護(hù)總成本通常是開發(fā)成本的40%或者更多。
缺陷修復(fù)總會(huì)以20%-50%的幾率引入新bug
第12章干將莫邪
第13章整體部分
今天軟件工程的一些特殊問題
1.如何把一系列程序設(shè)計(jì)構(gòu)建成系統(tǒng)。
2.如何把程序或者系統(tǒng)設(shè)計(jì)構(gòu)建成健壯的、經(jīng)過測(cè)試的、文檔化的、可支持的產(chǎn)品。
3.如何維持對(duì)大量的復(fù)雜性的控制。
//本書最亮的地方,在于通過過去看現(xiàn)在,看歷史演進(jìn),看誰主沉浮。