人月神話【筆記】

編程的最困難部分寄摆,是將做事的方式往追求完美的方向調(diào)整

缺乏的時(shí)間進(jìn)度是造成項(xiàng)目滯后的最主要原因:

* 我們對(duì)估算技術(shù)缺乏有效的研究

* 我們采用的估算技術(shù)隱含地假設(shè)人和月可以互換

* 由于對(duì)自己的估算缺乏信心检盼,軟件經(jīng)理通常不會(huì)有耐心地持續(xù)地進(jìn)行估算這項(xiàng)工作

* 對(duì)進(jìn)度缺少跟蹤和監(jiān)督

* 當(dāng)意識(shí)到進(jìn)度的偏移時(shí),下意識(shí)(以及傳統(tǒng))的反應(yīng)是增加人力

系統(tǒng)編程的進(jìn)度安排背后的假設(shè):

* 一切都將動(dòng)作良好筋搏,每一項(xiàng)任務(wù)僅花費(fèi)它所“應(yīng)該”花費(fèi)的時(shí)間

* 用人月作為衡量一項(xiàng)工作的規(guī)模是一個(gè)危險(xiǎn)和帶有欺騙性的神話,它暗示著人員數(shù)量和時(shí)間是可以相互替換的

* 由于我們的樂觀主義戳寸,通常實(shí)際出現(xiàn)的缺陷數(shù)量比預(yù)料的要多得多纺念。因此渠驼,系統(tǒng)測(cè)試進(jìn)度的安排常常是編程中最不合理的部分

* 為了滿足顧客期望的日期而造成的不合理進(jìn)度安排,在軟件領(lǐng)域中比其他的工程領(lǐng)域要普遍的多

軟件任務(wù)的進(jìn)度安排:

* 1/3計(jì)劃

* 1/6編碼

* 1/4構(gòu)件測(cè)試和早期系統(tǒng)測(cè)試

* 1/4系統(tǒng)測(cè)試蔑穴,所有的構(gòu)件已完成

Brooks法則:向進(jìn)度落后的項(xiàng)目中增加人手忠寻,只會(huì)使進(jìn)度更加落后

項(xiàng)目的時(shí)間依賴于順序上的限制,人員的數(shù)量依賴于單個(gè)子任務(wù)的數(shù)量存和。從這兩個(gè)數(shù)值可以推算出進(jìn)度時(shí)間表奕剃,該表安排的人員較少,花費(fèi)的時(shí)間較長(zhǎng)(唯一的風(fēng)險(xiǎn)是產(chǎn)品可能會(huì)過時(shí))捐腿。相反纵朋,分派較多的人手,計(jì)劃較短的時(shí)間茄袖,將無法得到可行的進(jìn)度表

需要協(xié)作溝通的人員的數(shù)量影響著開發(fā)成本操软,因?yàn)槌杀镜闹饕M成部分是相互的溝通和交流,以及更正溝通不當(dāng)所引起的不良結(jié)果(系統(tǒng)調(diào)試)绞佩。系統(tǒng)應(yīng)該由盡可能少的人員來開發(fā)

Mills建議大型項(xiàng)目的每一個(gè)部分由一個(gè)團(tuán)隊(duì)解決寺鸥,該隊(duì)伍以類似外科手術(shù)的方式組建:

* 外科醫(yī)生:首席程度員,天分品山、經(jīng)驗(yàn)胆建、能力

* 副手:外科醫(yī)生的后備,較少的經(jīng)驗(yàn)

* 管理員:控制財(cái)務(wù)肘交、人員笆载、工作地點(diǎn)安排和機(jī)器的專業(yè)管理人員

* 編輯:分析重組開發(fā)文檔

* 兩個(gè)秘書:管理員和編輯每人需要一個(gè)秘書

* 程序職員:維護(hù)編程產(chǎn)品庫中所有團(tuán)隊(duì)的技術(shù)記錄

* 工具維護(hù)人員:保證所有基本服務(wù)的可靠性,以及承擔(dān)團(tuán)隊(duì)成員所需要的特殊工具的構(gòu)建、維護(hù)和升級(jí)責(zé)任

* 測(cè)試人員:大量合適的測(cè)試用例凉驻,搭建測(cè)試平臺(tái)

* 語言專家:尋找合適的編程語言

進(jìn)度壓力要求很多人員來開發(fā)系統(tǒng)腻要,有兩種方法解決這種矛盾:

* 仔細(xì)地區(qū)分設(shè)計(jì)方法和具體實(shí)現(xiàn)

* 一種新的組建編輯開發(fā)團(tuán)隊(duì)的方法

對(duì)于非常大型的項(xiàng)目,將設(shè)計(jì)方法涝登、體系結(jié)構(gòu)方面的工作與具體實(shí)現(xiàn)相分離是獲得概念完整性的強(qiáng)有力方法

系統(tǒng)的結(jié)構(gòu)師雄家,是運(yùn)用專業(yè)技術(shù)知識(shí)來支持用戶的真正利益,而不是維護(hù)銷售人員所鼓吹的利益胀滚,體系結(jié)構(gòu)陳述的是發(fā)生了什么趟济,而實(shí)現(xiàn)描述的是如何實(shí)現(xiàn)

整個(gè)創(chuàng)造性活動(dòng)包括了三個(gè)獨(dú)立的階段:體系結(jié)構(gòu)、設(shè)計(jì)實(shí)現(xiàn)咽笼、物理實(shí)現(xiàn)顷编,在實(shí)際情況中,它們往往可以同時(shí)開始和并發(fā)地進(jìn)行

盡早交流和持續(xù)溝通能使結(jié)構(gòu)師有較好的成本意識(shí)剑刑,以及使開發(fā)人員獲得對(duì)設(shè)計(jì)的信心媳纬,并且不會(huì)混淆各自的責(zé)任分工

想要成功,結(jié)構(gòu)師必須:

* 牢記是開發(fā)人員承擔(dān)創(chuàng)造性和發(fā)明性的實(shí)現(xiàn)責(zé)任施掏,所以結(jié)構(gòu)師只能建議钮惠,而不能支配

* 時(shí)刻準(zhǔn)備著為所指定的說明建議一種實(shí)現(xiàn)的方法,同樣準(zhǔn)備接受其他任何能達(dá)到目標(biāo)的方法

* 對(duì)上述的建議保持低調(diào)和平靜

* 準(zhǔn)備放棄堅(jiān)持所作的改進(jìn)建議

項(xiàng)目經(jīng)理如何避免畫蛇添足七芭?他必須堅(jiān)持至少擁有兩個(gè)系統(tǒng)以上開發(fā)經(jīng)驗(yàn)結(jié)構(gòu)師的決定 萌腿,同時(shí),保持對(duì)特殊誘惑的警覺抖苦,他可以不斷提出正確的問題毁菱,確保原則上的概念和目標(biāo)在詳細(xì)設(shè)計(jì)中得到完整的體現(xiàn)

手冊(cè)、或者書面規(guī)格說明锌历,是一個(gè)非常必要的工具贮庞,盡管光有文檔是不夠的。手冊(cè)是產(chǎn)品的外部規(guī)格說明究西,它描述和規(guī)定了用戶所見的每一個(gè)細(xì)節(jié)窗慎。不但要描述包括所有界面在內(nèi)的用戶可見的一切,它同時(shí)還要避免描述用戶看不見的事物卤材。后者是編程實(shí)現(xiàn)人員的工作范疇

思路是大約十個(gè)人的想法遮斥,但如果想保持文字和產(chǎn)品之間的一致性,則必須由一個(gè)或兩個(gè)人來完成將其結(jié)論轉(zhuǎn)換成書面規(guī)格說明的工作扇丛。對(duì)于在整個(gè)設(shè)計(jì)中术吗,保證這些看似瑣碎的問題處理原則上的一致性,決不是一件無關(guān)緊要的事情

“決不要攜帶兩個(gè)時(shí)鐘出海帆精,帶一個(gè)或三個(gè)”

設(shè)立測(cè)試小組是使設(shè)計(jì)決策得以貫徹執(zhí)行的必要手段较屿,同樣也是需要盡早著手隧魄,與設(shè)計(jì)同時(shí)實(shí)施的重要環(huán)節(jié)

巴比倫塔的失敗原因:交流、組織隘蝎。交流和交流的結(jié)果—組織购啄,是成功的關(guān)鍵。交流和組織的技能需要管理者仔細(xì)考慮嘱么,相關(guān)經(jīng)驗(yàn)的積累和能力的提高同軟件技術(shù)本身一樣重要

團(tuán)隊(duì)如何進(jìn)行交流:

* 非正式途徑

* 會(huì)議

* 工作手冊(cè)

團(tuán)隊(duì)組織的目的是減少不必要交流和合作的數(shù)量狮含,因此良好的團(tuán)隊(duì)組織是解決上述交流問題的關(guān)鍵措施

減少交流的方法是人力劃分和限定職責(zé)范圍

人力劃分存在三種可能關(guān)系:

* 產(chǎn)品負(fù)責(zé)人和技術(shù)主管是同一個(gè)人(小型團(tuán)隊(duì))

* 產(chǎn)品負(fù)責(zé)人作為總指揮,技術(shù)主管充當(dāng)其左右手(大型團(tuán)隊(duì))

* 技術(shù)主管作為總指揮曼振,產(chǎn)品負(fù)責(zé)人充當(dāng)其左右手(中小型團(tuán)隊(duì))

工作量=(常數(shù)) * (指令的數(shù)量)

兩個(gè)關(guān)于工作量的結(jié)論:

* 對(duì)常用的編程語句而言辉川。生產(chǎn)率似乎是固定的。這個(gè)固定的生產(chǎn)率包括了編程中需要注釋拴测,并可能存在錯(cuò)誤的情況。

* 使用適當(dāng)?shù)母呒?jí)語言府蛇,編程的生產(chǎn)率可以提高5倍

沒有人可以在自始至終提倡更緊密的軟硬件設(shè)計(jì)集成的同時(shí)集索,又僅僅就規(guī)模本身對(duì)軟件系統(tǒng)提出批評(píng)

由于規(guī)模是軟件系統(tǒng)產(chǎn)品用戶成本中如此大的一個(gè)組成部分,開發(fā)人員必須設(shè)置規(guī)模的目標(biāo)汇跨,控制規(guī)模务荆,考慮減小規(guī)模的方法,就像硬件開發(fā)人員會(huì)設(shè)立元器件數(shù)量目標(biāo)穷遂,控制元器件的數(shù)量函匕,想出一些減少零件的方法

規(guī)模控制:

* 應(yīng)該制訂總體規(guī)模的預(yù)算蚪黑,應(yīng)該制訂后臺(tái)存儲(chǔ)訪問的預(yù)算

* 在指明模塊有多大的同時(shí)盅惜,確切定義模塊的功能

* 保持持續(xù)的警覺,確保連貫的系統(tǒng)完整性

數(shù)據(jù)的表現(xiàn)形式是編程的根本

計(jì)算機(jī)產(chǎn)品的文檔:

* 目標(biāo)

* 技術(shù)說明

* 進(jìn)度忌穿、時(shí)間表

* 預(yù)算

* 組織機(jī)構(gòu)圖

* 工作空間的分配

* 報(bào)價(jià)抒寂、預(yù)測(cè)、價(jià)格

大學(xué)科系的文檔:

* 目標(biāo)

* 課程概述

* 學(xué)位要求

* 研究報(bào)告(申請(qǐng)基金時(shí)掠剑,還要求計(jì)劃)

* 課程表和課程的安排

* 預(yù)算

* 教室分配

* 教師的研究生助手的分配

軟件項(xiàng)目的文檔:

* 做什么:目標(biāo)

* 做什么:產(chǎn)品技術(shù)說明

* 時(shí)間:進(jìn)度表

* 資金:預(yù)算表

* 地點(diǎn):工作空間分配

* 人員:組織圖

為什么要有正式的文檔:

* 書面記錄決策是必要的

* 文檔能夠作為同其他人的溝通渠道

* 項(xiàng)目經(jīng)理的文檔可以作為數(shù)據(jù)基礎(chǔ)和檢查列表

變化是與生俱來的屈芜,不是不合時(shí)宜和令人生厭的異常情況。開發(fā)人員將會(huì)的是用戶滿意程度朴译,而不僅僅是實(shí)際的產(chǎn)品井佑。用戶的實(shí)際需要和用戶感覺會(huì)隨著程序的構(gòu)建、測(cè)試和使用而變化

為變更計(jì)劃系統(tǒng):細(xì)致的模塊化眠寿、可擴(kuò)展的函數(shù)躬翁、精確完整的模塊間接口設(shè)計(jì)、完備的文檔盯拱,調(diào)用隊(duì)列和表驅(qū)動(dòng)姆另,使用高級(jí)語言和自文檔技術(shù)喇肋,數(shù)字版本號(hào)

為變更計(jì)劃組織框架:

* 把所有計(jì)劃、里程碑迹辐、日程安排都當(dāng)作是嘗試性的蝶防,以方便進(jìn)行變化

* 使管理人員和技術(shù)人才具有互換性

* 管理人員需要參與技術(shù)課程,高級(jí)技術(shù)人才需要進(jìn)行管理培訓(xùn)

程序維護(hù)中的一個(gè)基本問題是——缺陷修復(fù)總會(huì)以(20-50)%的機(jī)率引入新的bug明吩。設(shè)計(jì)實(shí)現(xiàn)的人員越少间学、接口越少,產(chǎn)生的錯(cuò)誤也就越少

系統(tǒng)軟件開發(fā)是減少混亂度(減少熵)的過程印荔,所以它本身是處于亞穩(wěn)態(tài)的低葫。軟件維護(hù)是提高混亂度(增加熵)的過程,即使是最熟練的軟件維護(hù)工作仍律,也只是放緩了系統(tǒng)退化到非穩(wěn)態(tài)的進(jìn)程

“關(guān)鍵的工作是產(chǎn)品定義嘿悬。許許多多的失敗完全源于那些產(chǎn)品未精確定義的地方”

關(guān)鍵的地方和構(gòu)建無bug程序的核心,是把系統(tǒng)的結(jié)構(gòu)作為控制結(jié)構(gòu)來考慮水泉,而不是獨(dú)立的跳轉(zhuǎn)語句

系統(tǒng)集成調(diào)試:

* 使用經(jīng)過調(diào)試的構(gòu)建單元(單元測(cè)試)

* 搭建充分的測(cè)試平臺(tái)(偽構(gòu)件善涨,樁、模)

* 控制變更

* 一次添加一個(gè)構(gòu)件

* 階段(量子)化草则、定期變更

里程碑:必須是具體的钢拧、特定的、可度量的事件炕横,能夠進(jìn)行清晰的定義源内,有明顯邊界和沒有歧義

“我認(rèn)為軟件開發(fā)中困難的部分是規(guī)格化、設(shè)計(jì)和測(cè)試這些概念上的結(jié)構(gòu)份殿,而不是對(duì)概念進(jìn)行表達(dá)和對(duì)實(shí)現(xiàn)逼真程序進(jìn)行驗(yàn)證”

軟件系統(tǒng)的內(nèi)在特性:復(fù)雜度膜钓、一致性、可變性卿嘲、不可見性

針對(duì)概念上根本問題的頗具前途的方法:

* 購買和自行開發(fā)呻此,構(gòu)建軟件最可能的徹底解決方案是不開發(fā)任何軟件

* 需求精練和快速原型

* 增量開發(fā)——增長(zhǎng),而非搭建系統(tǒng)腔寡,先運(yùn)行起來

* 卓越的設(shè)計(jì)人員

大多數(shù)有豐富經(jīng)經(jīng)驗(yàn)的程序員擁有自己的私人開發(fā)庫焚鲜,可以使他們使用大約30%的重用代碼來開發(fā)軟件。公司級(jí)別的重用能提供70%的重用代碼量放前,它需要特殊的開發(fā)庫和管理支持忿磅。公司級(jí)別的重用代碼也意味著需要對(duì)項(xiàng)目中的變更進(jìn)行統(tǒng)計(jì)和度量,從而提高重用的可信程度

每一份發(fā)布的程序拷貝應(yīng)該包括一些測(cè)試用例凭语,其中一部分用于校驗(yàn)輸入數(shù)據(jù)葱她,一部分用于邊界輸入數(shù)據(jù),另一部分用于無效的輸入數(shù)據(jù)

一個(gè)整潔似扔、優(yōu)雅的編程產(chǎn)品必須向它的每個(gè)用戶提供一個(gè)條理分明的概念模型吨些,這個(gè)模型描述了應(yīng)用搓谆、實(shí)現(xiàn)應(yīng)用的方法以及用來指明操作和各種參數(shù)的用戶界面使用策略

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市豪墅,隨后出現(xiàn)的幾起案子泉手,更是在濱河造成了極大的恐慌,老刑警劉巖偶器,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斩萌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡屏轰,警方通過查閱死者的電腦和手機(jī)颊郎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霎苗,“玉大人姆吭,你說我怎么就攤上這事⊙湔担” “怎么了内狸?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)升敲。 經(jīng)常有香客問我,道長(zhǎng)轰传,這世上最難降的妖魔是什么驴党? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮获茬,結(jié)果婚禮上港庄,老公的妹妹穿的比我還像新娘。我一直安慰自己恕曲,他們只是感情好鹏氧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佩谣,像睡著了一般把还。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茸俭,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天吊履,我揣著相機(jī)與錄音,去河邊找鬼调鬓。 笑死艇炎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腾窝。 我是一名探鬼主播缀踪,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼居砖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了驴娃?” 一聲冷哼從身側(cè)響起奏候,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎托慨,沒想到半個(gè)月后鼻由,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厚棵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年蕉世,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婆硬。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狠轻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彬犯,到底是詐尸還是另有隱情向楼,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布谐区,位于F島的核電站湖蜕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宋列。R本人自食惡果不足惜昭抒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炼杖。 院中可真熱鬧灭返,春花似錦、人聲如沸坤邪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艇纺。三九已至怎静,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黔衡,已是汗流浹背消约。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留员帮,地道東北人或粮。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捞高,于是被迫代替她去往敵國和親氯材。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渣锦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,275評(píng)論 25 707
  • 1****、問:你在測(cè)試中發(fā)現(xiàn)了一個(gè)bug****氢哮,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè)bug****袋毙,你應(yīng)該怎樣解決? 首...
    蛋炒飯_By閱讀 5,295評(píng)論 1 94
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,193評(píng)論 2 126
  • 有一天冗尤,孔子帶著學(xué)生周游列國听盖,拜見老子。 從年齡來說裂七,孔子比老子年輕很多皆看。孔子到的時(shí)候背零,鬢絲禪榻的老子在入定腰吟。孔子...
    向晚的微風(fēng)閱讀 219評(píng)論 2 2
  • 那年徙瓶,天上有許多星星 你曾問毛雇,黑黑的天上眨著眼睛的是什么 那是星星,我想大聲告訴你 那是世間的麗花侦镇,是沙漠中的水井...
    尋_52c9閱讀 213評(píng)論 0 0