<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      讀書(shū)筆記:人月神話

      人月神話 40周年中文紀(jì)念版 The Mythical Man-Month

      第1章 焦油坑

      史前史中,沒(méi)有別的場(chǎng)景比巨獸在焦油坑中垂死掙扎的場(chǎng)面更令人震撼。上帝見(jiàn)證著 恐龍、猛犸象、劍齒虎在焦油中掙扎。它們掙扎得越是猛烈,焦油糾纏得越緊,沒(méi)有任何猛 獸足夠強(qiáng)壯或具有足夠的技巧,能夠掙脫束縛,它們最后都沉到了坑底。
      過(guò)去幾十年的大型系統(tǒng)開(kāi)發(fā)就猶如這樣一個(gè)焦油坑,表面上看起來(lái)好像沒(méi)有任何一個(gè)單獨(dú)的問(wèn)題會(huì)導(dǎo)致困難,每個(gè)都能被解 決,但是當(dāng)它們相互糾纏和累積在一起的時(shí)候,團(tuán)隊(duì)的行動(dòng)就會(huì)變得越來(lái)越慢。

      編程系統(tǒng)產(chǎn)品

      quadrantChart title 編程系統(tǒng)產(chǎn)品的演進(jìn) x-axis "低模塊化" --> "高模塊化" y-axis "高擴(kuò)展性" --> "低擴(kuò)展性" quadrant-1 "編程系統(tǒng)(接口,系統(tǒng)集成)" quadrant-2 "程序" quadrant-3 "編程產(chǎn)品(通用化,測(cè)試,維護(hù))" quadrant-4 "編程系統(tǒng)產(chǎn)品"

      編程產(chǎn)品(Programming Product)。這是可以被任何人運(yùn)行、 測(cè)試、修復(fù)和擴(kuò)展的程序。經(jīng)驗(yàn)數(shù)據(jù)表明,相同功能的編程產(chǎn)品的成本,至少是已經(jīng)過(guò)測(cè)試的程序 的三倍。
      編程系統(tǒng)(Programming System)中的一個(gè)構(gòu) 件單元??梢杂?來(lái)組裝和搭建整個(gè)系統(tǒng)。因?yàn)橐恍?意想不到的交互會(huì)產(chǎn)生許多不易察覺(jué)的 bug,測(cè)試工作將會(huì)非常耗時(shí),因此相同功能的編程 系統(tǒng)構(gòu)件的成本至少是獨(dú)立程序的三倍。
      編程系統(tǒng)產(chǎn)品(Programming Systems Product)。和以上的所 有的情況都不同的是,它的成本高達(dá)九倍。然而,只有它才是真正有用的產(chǎn)品,是大多數(shù)系 統(tǒng)開(kāi)發(fā)的目標(biāo)。

      職業(yè)的樂(lè)趣

      首先是一種創(chuàng)建事物的純粹快樂(lè)。
      其次,快樂(lè)來(lái)自于開(kāi)發(fā)對(duì)其他人有用的東西。
      第三是整個(gè)過(guò)程體現(xiàn)出魔術(shù)般的力量——將相互嚙合的零部件組裝在一起,看到它們 精妙地運(yùn)行,得到預(yù)先所希望的結(jié)果。
      第四是學(xué)習(xí)的樂(lè)趣,來(lái)自于這項(xiàng)工作的非重復(fù)特性。
      最后,樂(lè)趣還來(lái)自于工作在如此易于駕馭的介質(zhì)上。

      職業(yè)的苦惱

      首先,必須追求完美。因?yàn)橛?jì)算機(jī)也是以這樣的方式來(lái)變戲法:如果咒語(yǔ)中的一個(gè)字 符、一個(gè)停頓,沒(méi)有與正確的形式一致,魔術(shù)就不會(huì)出現(xiàn)。
      其次,是由他人來(lái)設(shè)定目標(biāo),供給資源,提供信息。
      對(duì)于系統(tǒng)編程人員而言,對(duì)其他人的依賴是一件非常痛苦的事情。他依靠其他人的程 序,而往往這些程序設(shè)計(jì)得并不合理,實(shí)現(xiàn)拙劣,發(fā)布不完整(沒(méi)有源代碼或測(cè)試用例), 或者文檔記錄得很糟。
      下一個(gè)煩惱——概念性設(shè)計(jì)是有趣的,但尋找瑣碎的 bug 卻只是一項(xiàng)重復(fù)性的活動(dòng)。 伴隨著創(chuàng)造性活動(dòng)的,
      另外,人們發(fā)現(xiàn)調(diào)試和查錯(cuò)往往是線性收斂的,或者更糟糕的是,具有二次方的復(fù)雜 度。結(jié)果,測(cè)試一拖再拖,尋找最后一個(gè)錯(cuò)誤比第一個(gè)錯(cuò)誤將花費(fèi)更多的時(shí)間。
      最后一個(gè)苦惱,有時(shí)也是一種無(wú)奈——當(dāng)投入了大量辛苦的勞動(dòng),產(chǎn)品在即將完成或 者終于完成的時(shí)候,卻已顯得陳舊過(guò)時(shí)。

      第2章 人月神話

      在眾多軟件項(xiàng)目中,缺乏合理的時(shí)間進(jìn)度是造成項(xiàng)目滯后的最主要原因,它比其他所 有因素加起來(lái)的影響還大。導(dǎo)致這種普遍性災(zāi)難的原因是什么呢?
      首先,它反映了一種悄無(wú)聲息,但 并不真實(shí)的假設(shè)——一切都將運(yùn)作良好。
      第二,我們采用的估算技術(shù)隱含地假設(shè)人和月可以互換,錯(cuò)誤地將進(jìn)度與工作量相互 混淆。
      第四,對(duì)進(jìn)度缺少跟蹤和監(jiān)督。
      第五,當(dāng)意識(shí)到進(jìn)度的偏移時(shí),下意識(shí)(以及傳統(tǒng))的反應(yīng)是增加人力。

      樂(lè)觀主義

      所以系統(tǒng)編程的進(jìn)度安排背后的第一個(gè)假設(shè)是:一切都將運(yùn)作良好,每一項(xiàng)任務(wù)僅花 費(fèi)它所“應(yīng)該”花費(fèi)的時(shí)間。

      Dorothy Sayers 在她的 “The Mind of the Maker”一書(shū)中,將創(chuàng)造性活動(dòng)分為三個(gè)階段:構(gòu)思、實(shí)現(xiàn)和交流。首先是作為一個(gè)構(gòu)思或模型出現(xiàn)在作者的腦海中,它與時(shí)間 和空間無(wú)關(guān)。接著,借助鋼筆、墨水和紙,或者電線、硅片和鐵氧體,在現(xiàn)實(shí)的時(shí)間和空間 中實(shí)現(xiàn)它們。然后,當(dāng)某人閱讀書(shū)本、使用計(jì)算機(jī)和運(yùn)行程序的時(shí)候,他與作者的思想相互 溝通,從而創(chuàng)作過(guò)程得以結(jié)束。

      在許多創(chuàng)造性活動(dòng)中,往往很難掌握活動(dòng)實(shí)施的介質(zhì),例如木頭切割、油漆、電器安 裝等。這些介質(zhì)的物理約束限制了思路的表達(dá),它們同樣對(duì)實(shí)現(xiàn)造成了許多預(yù)料之外的困難。

      人月

      第二個(gè)謬誤的思考方式是在估計(jì)和進(jìn)度安排中使用的工作量單位:人月。用人月作為 衡量一項(xiàng)工作的規(guī)模是一個(gè)危險(xiǎn)和帶有欺騙性的神話。它暗示著人員數(shù)量和時(shí)間是可以相互 替換的。

      人數(shù)和時(shí)間的互換僅僅適用于以下情況:某個(gè)任務(wù)可以分解給參與人員,并且他們之 間不需要相互的交流

      溝通所增加的負(fù)擔(dān)由兩個(gè)部分組成,培訓(xùn)和相互的交流。

      相互之間交流的情況更糟一些。如果任務(wù)的每個(gè)部分必須分別和其他部分單獨(dú)協(xié)作, 則工作量按照 n(n-1)/2 遞增。

      因?yàn)檐浖_(kāi)發(fā)本質(zhì)上是一項(xiàng)系統(tǒng)工作——錯(cuò)綜復(fù)雜關(guān)系下的一種實(shí)踐——溝通、交流 的工作量非常大,它很快會(huì)消耗任務(wù)分解所節(jié)省下來(lái)的個(gè)人時(shí)間。

      系統(tǒng)測(cè)試

      空泛的估算

      重復(fù)產(chǎn)生的進(jìn)度災(zāi)難

      第3章 外科手術(shù)隊(duì)伍

      問(wèn)題

      Mills的建議

      Mills 建議大型項(xiàng)目 的每一個(gè)部分由一個(gè)團(tuán)隊(duì)解決,但是該隊(duì)伍以類(lèi)似外科手術(shù)的方式組建,而并非一擁而上。由一個(gè)人來(lái)進(jìn)行問(wèn)題的分解,其他人 給予他所需要的支持,以提高效率和生產(chǎn)力。

      如何運(yùn)作

      團(tuán)隊(duì)的擴(kuò)建

      第4章 貴族專制、民主政治和系統(tǒng)設(shè)計(jì)

      概念的完整性

      法國(guó)城市蘭斯(Reims)在建筑風(fēng)格上的一致性和上面所說(shuō)的大教堂形成了鮮明的對(duì)比。設(shè)計(jì)的一致性和那些獨(dú)到之處一樣,同樣讓人們贊嘆和喜悅。如同旅游指 南所述,風(fēng)格的一致和完整性來(lái)自 8 代擁有自我約束和犧牲精神的建筑師們,他們每一個(gè)人 犧牲了自己的一些創(chuàng)意,以獲得純粹的設(shè)計(jì)。

      獲得概念的完整性

      貴族專制統(tǒng)治和民主政治

      在等待時(shí),實(shí)現(xiàn)人員應(yīng)該做什么

      第5章 畫(huà)蛇添足

      結(jié)構(gòu)師的交互準(zhǔn)則和機(jī)制

      面對(duì)估算過(guò)高的難題,結(jié)構(gòu)師有兩個(gè)選擇:削減設(shè)計(jì)或者建議成本更低的實(shí)現(xiàn)方法。結(jié)構(gòu)師必須

      • 牢記是開(kāi)發(fā)人員承擔(dān)創(chuàng)造性和發(fā)明性的實(shí)現(xiàn)責(zé)任,所以結(jié)構(gòu)師只能建議,而不能支 配;
      • 時(shí)刻準(zhǔn)備著為所指定的說(shuō)明建議一種實(shí)現(xiàn)的方法,同樣準(zhǔn)備接受其他任何能達(dá)到目 標(biāo)的方法;

      自律——開(kāi)發(fā)第二個(gè)系統(tǒng)所帶來(lái)的后果

      第6章 貫徹執(zhí)行

      假設(shè)一個(gè)項(xiàng)目經(jīng)理已經(jīng)擁有行事規(guī)范的結(jié)構(gòu)師和許多編程實(shí)現(xiàn)人員,那么他如何確保 每個(gè)人聽(tīng)從、理解并實(shí)現(xiàn)結(jié)構(gòu)師的決策?

      文檔化的規(guī)格說(shuō)明——手冊(cè)

      手冊(cè)是 產(chǎn)品的外部規(guī)格說(shuō)明,它描述和規(guī)定了用戶所見(jiàn)的每一個(gè)細(xì)節(jié);同樣的,它也是結(jié)構(gòu)師主要 的工作產(chǎn)物。

      規(guī)格說(shuō)明的風(fēng)格必須清晰、完整和準(zhǔn)確。所有文字都要相互一致。這往往使手冊(cè)讀起來(lái)枯燥乏味, 但是精確比生動(dòng)更加重要。

      形式化定義

      直接整合

      會(huì)議和大會(huì)

      周例會(huì)是每周半天的會(huì)議,由所有的結(jié)構(gòu)師,加上硬件和軟件實(shí)現(xiàn)人員代表和市場(chǎng)計(jì) 劃人員參與,由首席系統(tǒng)結(jié)構(gòu)師主持。

      新問(wèn)題通常會(huì)被討論一些時(shí)間。重點(diǎn)是創(chuàng)新,而不僅僅是結(jié)論。該小組試圖發(fā)現(xiàn)解 決問(wèn)題的新方法。
      正面和負(fù)面的意見(jiàn)都會(huì)被很好地描述。

      隨著時(shí)間的推移,一些決定沒(méi)有很好地貫徹,一些小事情并沒(méi)有被某個(gè)參與者真正地 接受,為解決這些堆積起來(lái)的問(wèn)題,我們會(huì)舉行年 度大會(huì),典型的年度大會(huì)會(huì)持續(xù)兩周。
      這些會(huì)議在手冊(cè)凍結(jié)的前夕召開(kāi)。出席人員不僅僅包括體系結(jié)構(gòu)小組和編程人員、實(shí) 現(xiàn)人員的結(jié)構(gòu)代表,同時(shí)包括編程經(jīng)理、市場(chǎng)和實(shí)現(xiàn)人員,
      它們列舉在會(huì)議室周?chē)膱D表上, 每個(gè)不同的聲音都有機(jī)會(huì)得到表達(dá)。每天早晨,會(huì)議參與人員會(huì)在座位上發(fā)現(xiàn)更新了的 手冊(cè)說(shuō)明,記錄了前一天的各項(xiàng)決定。

      多重實(shí)現(xiàn)

      電話日志

      產(chǎn)品測(cè)試

      第7章 為什么巴比倫塔會(huì)失敗

      巴比倫塔的管理教訓(xùn)

      大型編程項(xiàng)目中的交流

      項(xiàng)目工作手冊(cè)

      大型編程項(xiàng)目的組織架構(gòu)

      減少交流的方法是人力劃分(division of labor)和限定職責(zé)范圍(specialization of function)。
      事實(shí)上,樹(shù)狀組織架構(gòu)是作為權(quán)力和責(zé)任的結(jié)構(gòu)出現(xiàn)。其基本原理——管理角色的非 重復(fù)性——導(dǎo)致了管理結(jié)構(gòu)是樹(shù)狀的。
      樹(shù)狀編程隊(duì)伍,必須具備的基本要 素。

      1. 任務(wù)(a mission)
      2. 產(chǎn)品負(fù)責(zé)人(a producer)
      3. 技術(shù)主管和結(jié)構(gòu)師(a technical director or architect)
      4. 進(jìn)度(a schedule)
      5. 人力的劃分(a division of labor)
      6. 各部分之間的接口定義(interface definitions among the parts)

      產(chǎn)品負(fù)責(zé)人的角色是什么?他組建團(tuán)隊(duì),劃分工作及制訂進(jìn)度表。他要求,并一直要 求必要的資源。
      技術(shù)主管的角色是什么?他對(duì)設(shè)計(jì)進(jìn)行構(gòu)思,識(shí)別系統(tǒng)的子部分,指明從外部看 上去的樣子,勾畫(huà)它的內(nèi)部結(jié)構(gòu)。

      第8章 胸有成竹

      系統(tǒng)編程需要花費(fèi)多長(zhǎng)的時(shí)間?需要多少的工作量?如何進(jìn)行估計(jì)?
      $$ 工作量 = 常數(shù) \times 指令的數(shù)量^{1.5}$$

      Portman的數(shù)據(jù)

      Aron的數(shù)據(jù)

      Harr的數(shù)據(jù)

      OS/360的數(shù)據(jù)

      Corbató的數(shù)據(jù)

      第9章 削足適履

      作為成本的程序空間

      規(guī)??刂?/p>

      空間技能

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

      第10章 提綱挈領(lǐng)

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

      大學(xué)科系的文檔

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

      為什么要有正式的文檔

      第11章 未雨綢繆

      試驗(yàn)性工廠和增大規(guī)模

      將原型發(fā)布給用戶,可以獲得時(shí)間,但是它的代價(jià)高昂 ——對(duì)于用戶,使用極度痛苦;對(duì)于重新開(kāi)發(fā)的人員,分散了精力;對(duì)于產(chǎn)品,影響了聲譽(yù), 即使最好的再設(shè)計(jì)也難以挽回名聲。
      因此,為舍棄而計(jì)劃,無(wú)論如何,你一定要這樣做

      唯一不變的就是變化本身

      為變更設(shè)計(jì)系統(tǒng)

      為變更計(jì)劃組織架構(gòu)

      設(shè)計(jì)人員通常不愿意提交嘗試性的設(shè)計(jì)決策,再為它們進(jìn)行 辯解?!巴ㄟ^(guò)設(shè)計(jì)文檔化,設(shè)計(jì)人員將自己暴露在每個(gè)人的批評(píng)之下,他必須能夠?yàn)樗拿?個(gè)結(jié)果進(jìn)行辯護(hù)。如果團(tuán)隊(duì)架構(gòu)因此受到任何形式的威脅,則沒(méi)有任何東西會(huì)被文檔化,除 非架構(gòu)是完全受到保護(hù)的。

      首先,管理人員自己常常 認(rèn)為高級(jí)人員太“有價(jià)值”,而舍不得讓他們從事實(shí)際的編程工作;其次,管理人員擁有更高的威信。為了克服這個(gè)問(wèn)題,如 Bell Labs 的一些實(shí)驗(yàn)室,廢除了所有的職位頭銜。每個(gè) 專業(yè)人士都是“技術(shù)人員中的一員”。

      組建外科手術(shù)隊(duì)伍式的軟件開(kāi)發(fā)團(tuán)隊(duì),這整個(gè)觀念是對(duì)上述問(wèn)題的徹底沖擊。其結(jié)果 是當(dāng)高級(jí)人才編程和開(kāi)發(fā)時(shí),不會(huì)感到自降身份。

      前進(jìn)兩步,后退一步

      程序維護(hù)中的一個(gè)基本問(wèn)題是——缺陷修復(fù)總會(huì)以(20-50)%的機(jī)率引入新的 bug。 所以整個(gè)過(guò)程是前進(jìn)兩步,后退一步。

      為什么缺陷不能更徹底地被修復(fù)?首先,看上去很輕微的錯(cuò)誤,似乎僅僅是局部操作 上的失敗,實(shí)際上卻是系統(tǒng)級(jí)別的問(wèn)題,通常這不是很明顯。修復(fù)局部問(wèn)題的工作量很清晰, 并且往往不大。但是,更大范圍的修復(fù)工作常常會(huì)被忽視,除非軟件結(jié)構(gòu)很簡(jiǎn)單,或者文檔 書(shū)寫(xiě)得非常詳細(xì)。其次,維護(hù)人員常常不是編寫(xiě)代碼的開(kāi)發(fā)人員,而是一些初級(jí)程序員或者 新手。

      回歸測(cè)試

      前進(jìn)一步,后退一步

      Lehman 和 Belady 研究了大型操作系統(tǒng)的一系列發(fā)布版本的歷史 。他們發(fā)現(xiàn)模塊數(shù)量 隨版本號(hào)的增加呈線性增長(zhǎng),但是受到影響的模塊以版本號(hào)指數(shù)的級(jí)別增長(zhǎng)。所有修改都傾 向于破壞系統(tǒng)的架構(gòu),增加了系統(tǒng)的混亂程度(熵)。

      系統(tǒng)軟件開(kāi)發(fā)是減少混亂度(減少熵)的過(guò)程,所以它本身是處于亞穩(wěn)態(tài)的。軟件維 護(hù)是提高混亂度(增加熵)的過(guò)程,

      第12章 干將莫邪

      目標(biāo)機(jī)器

      輔助機(jī)器和數(shù)據(jù)服務(wù)

      高級(jí)語(yǔ)言和交互式編程

      第13章 整體部分

      剔除bug的設(shè)計(jì)

      自頂向下的設(shè)計(jì)。
      簡(jiǎn)言之,Wirth 的流程將設(shè)計(jì)看成一系列精化步驟。開(kāi)始是勾畫(huà)出能得到主要結(jié)果的, 但比較粗略的任務(wù)定義和大概的解決方案。然后,對(duì)該定義和方案進(jìn)行細(xì)致的檢查,以判斷 結(jié)果與期望之間的差距。

      結(jié)構(gòu)化編程。另外一系列減少 bug 數(shù)量的新方法很大程度上來(lái)自 Dijkstra 。
      基本上,該方法所設(shè)計(jì)程序的控制結(jié)構(gòu),僅包含語(yǔ)句形式的循環(huán)結(jié)構(gòu),例如 DO WHILE, 以及 IF...THEN...ELSE 的條件判斷結(jié)構(gòu)

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

      構(gòu)件單元調(diào)試

      內(nèi)存轉(zhuǎn)儲(chǔ)。某人持續(xù)地運(yùn)行程序,直到 某個(gè)檢測(cè)失敗,這時(shí)所有的內(nèi)存都被轉(zhuǎn)儲(chǔ)。

      快照。隨著內(nèi)存的規(guī)模不斷增長(zhǎng),對(duì)整個(gè)內(nèi)存都進(jìn)行轉(zhuǎn)儲(chǔ)變得不大可能。 因此,人們開(kāi)發(fā)了有選擇的轉(zhuǎn)儲(chǔ)、選擇性跟蹤和將快照插入程序的技術(shù)。

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

      第14章 禍起蕭墻

      里程碑還是沉重的負(fù)擔(dān)

      “其他的部分反正會(huì)落后”

      進(jìn)度落后了一天,那又怎么樣呢?誰(shuí)會(huì)關(guān)心一天的滯后?我們可以跟上進(jìn)度。何況, 和我們有關(guān)的其他部分已經(jīng)落后了。

      嚴(yán)格地說(shuō),PERT 技術(shù)是關(guān)鍵路徑計(jì)劃的細(xì)化,如果使用 PERT 圖,它需要對(duì)每個(gè)事件估 計(jì)三次,每次對(duì)應(yīng)于滿足估計(jì)日期的不同可能性。

      地毯的下面

      有兩種掀開(kāi)毯子把污垢展現(xiàn)在老板面前的方法,它們必須都被采用。一種是減少角色 沖突和鼓勵(lì)狀態(tài)共享,另一種是猛地拉開(kāi)地毯。

      減少角色的沖突。首先老板必須區(qū)別行動(dòng)信息和狀態(tài)信息。
      如果老板把會(huì)見(jiàn)、評(píng)審、會(huì)議明顯標(biāo)記為狀態(tài)檢查(status-meeting)和問(wèn)題-行動(dòng) (problem-action)會(huì)議,并且相應(yīng)控制自己的行為,這對(duì)整個(gè)過(guò)程會(huì)很有幫助。當(dāng)然,事 態(tài)發(fā)展到無(wú)法控制時(shí),狀態(tài)檢查會(huì)議會(huì)演變成問(wèn)題-行動(dòng)會(huì)議。不過(guò),至少每個(gè)人知道“當(dāng) 時(shí)游戲的分?jǐn)?shù)是多少”,老板在接過(guò)“皮球”之前也會(huì)三思。

      猛地拉開(kāi)地毯。不論協(xié)作與否,擁有能了解狀態(tài)真相的評(píng)審機(jī)制是必要的。

      [!NOTE]
      Bell 實(shí)驗(yàn)室的 V. Vyssotsky 添加了以下的觀察意見(jiàn):

      我發(fā)現(xiàn)在里程碑報(bào)告中很容易記錄“計(jì)劃”和“估計(jì)”的日期。計(jì)劃日期是項(xiàng)目經(jīng)理 的工作產(chǎn)物,代表了經(jīng)協(xié)調(diào)后的項(xiàng)目整體工作計(jì)劃,它是合理計(jì)劃之前的判斷。估計(jì)日期是 最基層經(jīng)理的工作產(chǎn)物?;鶎咏?jīng)理對(duì)實(shí) 際實(shí)現(xiàn)日期的最佳判斷。項(xiàng)目經(jīng)理必須停止對(duì)這些日期的懷疑,一旦它們?cè)诿總€(gè)人的腦海中形成了清晰的印象,項(xiàng)目經(jīng)理就可以預(yù)見(jiàn)到將來(lái)哪些地方如果他 不采取任何措施,就會(huì)出現(xiàn)問(wèn)題。

      第15章 另外一面

      需要什么樣的文檔

      流程圖

      自文檔化的程序

      我認(rèn)為相應(yīng)的解決方案是“合并文件”,即把文檔整合到源代碼。這對(duì)正確維護(hù)是直接 有力的推動(dòng),保證編程用戶能方便、即時(shí)地得到文檔資料。這種程序被稱為自文檔化(self-documenting)。

      方法。
      第二個(gè)方法是盡可能地使用空格和一致的格式提高程序的可讀性,表現(xiàn)從屬和嵌套關(guān) 系。
      第三,以段落注釋的形式

      第16章 沒(méi)有銀彈

      摘要

      所有軟件活動(dòng)包括根本任務(wù)——打造由抽象軟件實(shí)體構(gòu)成的復(fù)雜概念結(jié)構(gòu),次要任務(wù) ——使用編程語(yǔ)言表達(dá)這些抽象實(shí)體,在空間和時(shí)間限制內(nèi)將它們映射成機(jī)器語(yǔ)言。

      介紹

      大家熟悉的軟件項(xiàng)目具有一些人狼的特性(至少在非技術(shù)經(jīng)理看來(lái)),常常看似簡(jiǎn)單明 了的東西,卻有可能變成一個(gè)落后進(jìn)度、超出預(yù)算、存在大量缺陷的怪物。因此,我們聽(tīng)到 了近乎絕望的尋求銀彈的呼喚,尋求一種可以使軟件成本像計(jì)算機(jī)硬件成本一樣降低的尚方寶劍。

      根本困難

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

      讓我們來(lái)考慮現(xiàn)代軟件系統(tǒng)中這些無(wú)法規(guī)避的內(nèi)在特性:復(fù)雜度、一致性、可變性和 不可見(jiàn)性。

      復(fù)雜度。數(shù)學(xué)家和物理學(xué)家 們建立模型以簡(jiǎn)化復(fù)雜的現(xiàn)象,從模型中抽取出各種特性,并通過(guò)試驗(yàn)來(lái)驗(yàn)證這些特性。這些方法之所以可行——是因?yàn)槟P椭泻雎缘膹?fù)雜度不是被研究現(xiàn)象的必要屬性。當(dāng)復(fù)雜度是 本質(zhì)特性時(shí),這些方法就行不通了。

      可變性。另外的原因是因?yàn)檐浖梢院苋菀椎剡M(jìn)行修改——它是純粹思維活動(dòng)的產(chǎn)物,可以無(wú)限擴(kuò)展。日常生活中,建筑有可能發(fā)生變化,但眾所周知,建筑修改的成本很高,從而打 消了那些想提出修改的人的念頭。
      功能擴(kuò)展的壓力主 要來(lái)自那些喜歡基本功能,又對(duì)軟件提出了很多新用法的用戶們。

      不可見(jiàn)性。幾何抽象是強(qiáng)大的工具。建筑平 面圖能幫助建筑師和客戶一起評(píng)估空間布局、
      軟件的客觀存在不具有空間的形體特征。當(dāng)我們?cè)噲D用圖形來(lái)描述軟件結(jié)構(gòu)時(shí),我們 發(fā)現(xiàn)它不僅僅包含一個(gè),而是很多相互關(guān)聯(lián)、重疊在一起的圖形。這些圖形可能描繪控制流 程、數(shù)據(jù)流、依賴關(guān)系、時(shí)間序列、名字空間的相互關(guān)系等等。

      以往解決次要困難的一些突破

      如果回顧一下軟件領(lǐng)域中取得的最富有成效的三次進(jìn)步,我們會(huì)發(fā)現(xiàn)每一次都是解決 了軟件構(gòu)建上的巨大困難,但是這些困難不是本質(zhì)屬性,也不是主要困難。

      高級(jí)語(yǔ)言。大多數(shù)觀察者相信開(kāi)發(fā)生產(chǎn)率至少提高了五倍,同時(shí)可靠性、簡(jiǎn)潔性和理解程度也大 為提高。
      抽象程 序包含了很多概念上的要素:操作、數(shù)據(jù)類(lèi)型、流程和相互通訊,而具體的機(jī)器語(yǔ)言程序則 關(guān)心位、寄存器、條件、分支、通道、磁盤(pán)等等。

      分時(shí)。分時(shí)解決了完全不同的困難。分時(shí)保證了及時(shí)性,從而使我們能維持對(duì)復(fù)雜程度的一 個(gè)總體把握。

      統(tǒng)一編程環(huán)境。它們主要通過(guò)提供集成庫(kù)、統(tǒng)一文件格式、管道和過(guò)濾器,解決了共同使用程序的次 要困難。

      銀彈的希望

      專家系統(tǒng)。專家系統(tǒng)是包含歸納推論引擎和規(guī)則基礎(chǔ)的程序,它接收輸入數(shù)據(jù)和假設(shè)條件,通過(guò) 從基礎(chǔ)規(guī)則推導(dǎo)邏輯結(jié)果,提出結(jié)論和建議,向用戶展示前因后果,并解釋最終的結(jié)果。

      Edward Feigenbaum 指出這種系統(tǒng)的能力不是來(lái)自某種前所未有的推導(dǎo)機(jī)制,而是來(lái)自 非常豐富的知識(shí)積累基礎(chǔ),所以更加精確地反映了現(xiàn)實(shí)世界。
      如何把它應(yīng)用在軟件開(kāi)發(fā)工作中?可以通過(guò)很多途徑:建議接口規(guī)則、制訂測(cè)試策略、 記錄各種 bug 產(chǎn)生的頻率、提供優(yōu)化建議等等。
      專家系統(tǒng)最強(qiáng)有力的貢獻(xiàn)是給缺乏經(jīng)驗(yàn)的開(kāi)發(fā)人員提供服務(wù),用最優(yōu)秀開(kāi)發(fā)者的經(jīng)驗(yàn) 和知識(shí)積累為他們提供了指導(dǎo)。這是非常大的貢獻(xiàn)。最優(yōu)秀和一般的軟件工程實(shí)踐之間的差 距是非常大的,可能比其他工程領(lǐng)域中的差距都要大,一種傳播優(yōu)秀實(shí)踐的工具特別重要。

      “自動(dòng)”編程。從問(wèn) 題的一段陳述說(shuō)明自動(dòng)產(chǎn)生解決問(wèn)題的程序。

      他指出,大多數(shù)情況下所給出的技術(shù)說(shuō)明本質(zhì)上是問(wèn)題的解決方法,而不是問(wèn)題自身。

      程序驗(yàn)證?,F(xiàn)代編程的許多工作是測(cè)試和修復(fù) bug。是否可以在大量工作被投入到實(shí)現(xiàn)和測(cè)試之前,通過(guò)采用證實(shí)設(shè)計(jì)正確性的“深?yuàn)W”策略,徹底提高軟件的生產(chǎn)率和產(chǎn)品的可靠性?
      更嚴(yán)肅地說(shuō),完美的程序驗(yàn)證只能建立滿足技術(shù)說(shuō)明的程序。

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

      購(gòu)買(mǎi)和自行開(kāi)發(fā)。軟件成本一直是開(kāi) 發(fā)的成本,而不是復(fù)制的成本。所以,即使只在少數(shù)使用者之間實(shí)現(xiàn)共享,也能在很大程度 上減少成本。

      增量開(kāi)發(fā)——增長(zhǎng),而非搭建系統(tǒng)。我們已經(jīng)理解軟件開(kāi)發(fā)是 如何類(lèi)似于其他的建造過(guò)程,并開(kāi)始隨意地使用其他的暗喻,如規(guī)格說(shuō)明、構(gòu)件裝備、腳手 架(測(cè)試平臺(tái))(specifications, assembly of components, and scaffolding)。
      當(dāng)一個(gè)可運(yùn)行系統(tǒng)——即使是非常簡(jiǎn)單的 系統(tǒng)出現(xiàn)時(shí),開(kāi)發(fā)人員的熱情就迸發(fā)了出來(lái)。在開(kāi)發(fā)過(guò)程中的每個(gè)階段, 總有可運(yùn)行的系統(tǒng)。我發(fā)現(xiàn)開(kāi)發(fā)團(tuán)隊(duì)可以在四個(gè)月內(nèi),培育(grow)出比搭建(building) 復(fù)雜得多的系統(tǒng)。

      第17章 再論“沒(méi)有銀彈”

      人狼和其他恐怖傳說(shuō)

      存在著銀彈——就在這里

      含糊的表達(dá)將會(huì)導(dǎo)致誤解

      我認(rèn)同英國(guó)劇作家、偵探小說(shuō)作者和神 學(xué)家桃樂(lè)絲·賽爾絲看待創(chuàng)造性活動(dòng)的觀點(diǎn),創(chuàng)造性活動(dòng)包括(1)概念性結(jié)構(gòu)的形式規(guī)格 化,(2)使用現(xiàn)實(shí)的介質(zhì)來(lái)實(shí)現(xiàn),(3)在實(shí)際的使用中,與用戶交互 。

      復(fù)雜性是層次化的。

      [!NOTE] 不同觀點(diǎn)
      Northrop 的 Steve Lukasik 認(rèn)為即使是組織機(jī)構(gòu)上的復(fù)雜性也不是任意的,可能容易 受到策略調(diào)整的影響。
      我相信有一天軟件的“復(fù)雜性”將以某種更高級(jí)的規(guī)律性概念來(lái)表達(dá) (就像物理學(xué)家的不變式)。

      作為對(duì) Lukasik 的簡(jiǎn)單回應(yīng),我認(rèn)為系統(tǒng)復(fù)雜性是無(wú)數(shù)細(xì)節(jié)的函數(shù),這些細(xì) 節(jié)必須精確而且詳細(xì)地說(shuō)明——或者是借助某種通用規(guī)則,或者是逐一闡述,但決不僅僅是 統(tǒng)計(jì)說(shuō)明。

      它倡導(dǎo)向軟件系統(tǒng)增加必要的復(fù) 雜性:

      • 層次化,通過(guò)分層的模塊或者對(duì)象。
      • 增量化,從而系統(tǒng)可以持續(xù)地運(yùn)行。

      Harel的分析

      Jones的觀點(diǎn)——質(zhì)量帶來(lái)生產(chǎn)率

      那么,生產(chǎn)率的情形如何

      面向?qū)ο缶幊獭@顆銅質(zhì)子彈可以嗎

      重用的情況怎樣

      [!NOTE]
      JPL 的 Van Snyder 向我指出,數(shù)學(xué)軟件領(lǐng)域有著軟件重用的長(zhǎng)期傳統(tǒng):
      數(shù)學(xué)軟件上重用成功的原因有兩個(gè):(1)它很晦澀難懂,每行代碼需要大量高智商的 輸入;(2)存在豐富的標(biāo)準(zhǔn)術(shù)語(yǔ),也就是用數(shù)學(xué)來(lái)描述每個(gè)構(gòu)件的功能。

      學(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章 畫(huà)蛇添足

      第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)地精化

      從事實(shí)時(shí)系統(tǒng)開(kāi)發(fā)的 Harlan Mills,早期曾提倡我們首先應(yīng)該構(gòu)建實(shí)時(shí)系統(tǒng)的基本輪 詢回路,為每個(gè)功能都提供子函數(shù)調(diào)用(占位符),但僅僅是空的子函數(shù)(圖 19.2)。對(duì)它 進(jìn)行編譯、測(cè)試,使它可以不斷運(yùn)行。它不直接完成任何事情,但至少是正常運(yùn)行的 。
      在每 個(gè)階段,我們都擁有一個(gè)可運(yùn)行的系統(tǒng)。
      在每個(gè)功能基本可以運(yùn)行之后,我們一個(gè)接一個(gè)地精化或者重寫(xiě)每個(gè)模塊——增量地 開(kāi)發(fā)(growing)整個(gè)系統(tǒng)。

      因?yàn)槲覀冊(cè)谒袝r(shí)刻都擁有一個(gè)可運(yùn)行的系統(tǒng),所以

      • 我們可以很早開(kāi)始用戶測(cè)試,
      • 我們可以采用按預(yù)算開(kāi)發(fā)的策略,來(lái)徹底保證不會(huì)出現(xiàn)進(jìn)度或者預(yù)算的超支(以允 許的功能犧牲作為代價(jià))。

      Parnas 產(chǎn)品族

      設(shè)計(jì)類(lèi)似一棵樹(shù)的技巧是將那些變化可能性較小的設(shè)計(jì)決策放置在樹(shù)的根部。
      這樣的設(shè)計(jì)使得模塊的重用最大化。更重要的是,可以延伸相同的策略,使它不但可 以包括發(fā)布產(chǎn)品,而且還包括以增量開(kāi)發(fā)策略創(chuàng)建的后續(xù)中間版本。

      增量式開(kāi)發(fā)和快速原型

      Harel 將原型精彩地定義成:
      僅僅反映了概念模型準(zhǔn)備過(guò)程中所做的設(shè)計(jì)決策的一個(gè)程序版本,它并未反映受實(shí) 現(xiàn)考慮所驅(qū)使的設(shè)計(jì)決策。

      構(gòu)建一個(gè)完全不屬于發(fā)布產(chǎn)品的原型是完全可能的。例如,可以開(kāi)發(fā)一個(gè)界面原型, 但是并不包含任何的實(shí)際功能,而僅僅是一個(gè)看上去履行了各個(gè)步驟的有限狀態(tài)機(jī)。

      關(guān)于信息隱藏,Parnas是正確的,我是錯(cuò)誤的

      人月到底有多少神話色彩?Boehm的模型和數(shù)據(jù)

      使用人月作為生產(chǎn)率的衡量標(biāo)準(zhǔn)實(shí)際是一個(gè)神話。特別的,他發(fā)現(xiàn):

      • 第一次發(fā)布的成本最優(yōu)進(jìn)度時(shí)間,T = 2.5(MM)1/3。即,月單位的最優(yōu)時(shí)間是估 計(jì)工作量(人月)的立方根,估計(jì)工作量則由規(guī)模估計(jì)和模型中的其他因子導(dǎo)出。最優(yōu)人員 配備曲線是由推導(dǎo)得出的。
      • 當(dāng)計(jì)劃進(jìn)度比最優(yōu)進(jìn)度長(zhǎng)時(shí),成本曲線會(huì)緩慢攀升。時(shí)間越充裕,花的時(shí)間也越長(zhǎng)。
      • 當(dāng)計(jì)劃進(jìn)度比最優(yōu)進(jìn)度短時(shí),成本曲線急劇升高。
      • 無(wú)論安排多少人手,幾乎沒(méi)有任何項(xiàng)目能夠在少于 3/4 的最優(yōu)時(shí)間內(nèi)獲得成功!當(dāng) 高級(jí)經(jīng)理向項(xiàng)目經(jīng)理要求不可能的進(jìn)度擔(dān)保時(shí),這段結(jié)論可以充分地作為項(xiàng)目經(jīng)理的理論依 據(jù)。

      人就是一切(或者說(shuō),幾乎是一切)

      這來(lái)自一個(gè)信念,即對(duì)于項(xiàng)目的成功而言,項(xiàng)目人員的素質(zhì)、人 員的組織管理是比使用的工具或采用的技術(shù)方法更重要的因素。

      放棄權(quán)力的力量

      如果人們認(rèn)同我在文中多處提到的觀點(diǎn)——?jiǎng)?chuàng)造力來(lái)自于個(gè)人,而不是組織架構(gòu)或者 開(kāi)發(fā)過(guò)程,那么項(xiàng)目管理面對(duì)的中心問(wèn)題是如何設(shè)計(jì)架構(gòu)和流程,來(lái)提高而不是壓制主動(dòng)性 和創(chuàng)造力。

      像 Pius XI 所預(yù)言的好處:通過(guò)權(quán)力委派,中心的權(quán)威實(shí)際上是得到了加強(qiáng);從整體而言,組織機(jī)構(gòu)實(shí) 際上更加融洽和繁榮。

      最令人驚訝的新事物是什么?數(shù)百萬(wàn)的計(jì)算機(jī)

      其他領(lǐng)域中進(jìn)步的部分原因和軟件創(chuàng)造相近——消除了次要的困難。例如,文書(shū)處理 方式曾經(jīng)是很僵化的,合并更改內(nèi)容需要重新打字,成本和時(shí)間都比較高昂。一份 300 頁(yè)的 手稿,常常每 3 到 6 個(gè)月就需要重新輸入一遍,

      全新的軟件產(chǎn)業(yè)——塑料薄膜包裝的成品軟件

      買(mǎi)來(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.讀書(shū)有感——人月神話

      2.我這幾天很煩(產(chǎn)品概念完整性)

      3.關(guān)于我們的思考——“項(xiàng)目開(kāi)發(fā)”及讀《人月神話》有感

      4.我的“人月神話”

      5.《人月神話》軟玉生香

      posted @ 2025-03-26 11:22  liqinglucky  閱讀(55)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品福利自产拍在线观看| 女同另类激情在线三区| 人妻系列无码专区免费| 内射极品少妇xxxxxhd| 高清中文字幕一区二区| 日韩人妻无码一区二区三区| 久久人与动人物a级毛片 | 亚洲av成人无码精品电影在线| 视频一区二区不中文字幕| 亚洲欧美日韩成人综合一区| 成熟丰满熟妇av无码区| 人妻少妇88久久中文字幕| 91精品国产综合久蜜臀| 国产精品色内内在线播放| 保德县| 国产成人综合色在线观看网站 | 米易县| 亚洲国产在一区二区三区| 熟女亚洲综合精品伊人久久 | 亚洲高清有码中文字| 亚洲中少妇久久中文字幕| 无码国产精品一区二区免费3p| 在线高清免费不卡全码| 日韩高清在线亚洲专区不卡| 亚洲精品日本一区二区| 中文字幕日韩国产精品| 国产亚洲av夜间福利香蕉149 | 国产精品无码a∨麻豆| 日本欧美大码a在线观看| 久久亚洲国产精品久久| av男人的天堂在线观看国产| 国产私拍福利精品视频| 五月丁香啪啪| 亚洲色欲色欲www| 成人午夜无人区一区二区| 国产精品午夜福利视频| 国产精品视频一区二区三区不卡| 99久久免费精品国产色| 亚洲中文字幕国产综合| 99国产欧美另类久久久精品| 亚洲av本道一区二区|