章節(jié):人月神話
當(dāng)進(jìn)度與計(jì)劃出現(xiàn)偏差時,千萬不要盲目的向開發(fā)團(tuán)隊(duì)增加人手,那樣只能帶來毀滅性的災(zāi)難,使開發(fā)進(jìn)度變的更加緩慢。
章節(jié):外科手術(shù)隊(duì)伍
新型高效團(tuán)隊(duì)的分工:外科醫(yī)生,副手,管理員,編輯,兩個秘書,程序員,工具維護(hù)員,測試人員,語言專家。
當(dāng)項(xiàng)目過大時,首先要做的是就是分派任務(wù),然后進(jìn)行協(xié)調(diào),當(dāng)然首先得要協(xié)調(diào)概念的完整性,這個時候的協(xié)調(diào)就不再是所有項(xiàng)目的開發(fā)者,而僅僅是那些“外科醫(yī)生”。
章節(jié):貴族專制、民主政治和系統(tǒng)設(shè)計(jì)
系統(tǒng)的結(jié)構(gòu)師的工作是運(yùn)用專業(yè)技術(shù)知識來支持用戶的真正利益。
概念的完整性要求設(shè)計(jì)必須由一個人或者非常少數(shù)互有默契的人員來實(shí)現(xiàn)。
產(chǎn)品的成本性能比很大程度上依靠實(shí)現(xiàn)人員,易用性很大程度上依賴結(jié)構(gòu)師。
章節(jié):畫蛇添足
結(jié)構(gòu)師要想成功的前提:
1.牢記是開發(fā)人員承擔(dān)創(chuàng)造性和發(fā)明性的實(shí)現(xiàn)責(zé)任,所以結(jié)構(gòu)師只能建議,不能支配;
2.時刻準(zhǔn)備為所指定的說明建議一種實(shí)現(xiàn)的方法,同時準(zhǔn)備接受其他任何能達(dá)到目標(biāo)的方法;
3.對建議保持低調(diào)和平靜;
4.準(zhǔn)備放棄堅(jiān)持所作的改進(jìn)建議;
第二個系統(tǒng)是設(shè)計(jì)師們所設(shè)計(jì)的最危險(xiǎn)的系統(tǒng)!避免危險(xiǎn)的方法:自我約束準(zhǔn)則。
章節(jié):貫徹執(zhí)行
手冊強(qiáng)調(diào)的是精確。
形式化定義的優(yōu)點(diǎn)是精確性高,缺點(diǎn)是不易理解。填補(bǔ)這一確定的方法是插入記敘性文字。
會議分成兩個級別:周例會和年度大會。
1.周例會是每周半天的會議,由所有的結(jié)構(gòu)師,加上硬件和軟件實(shí)現(xiàn)人員代表和市場計(jì)劃人員參與,由首席系統(tǒng)結(jié)構(gòu)師主持,賦予首席系統(tǒng)結(jié)構(gòu)師最終決斷權(quán)。
2.年度大會一般持續(xù)兩周,一般是每六個月舉行一次,出席人員由體系結(jié)構(gòu)小組,編程人員,實(shí)現(xiàn)人員的結(jié)構(gòu)代表,編程經(jīng)理,市場和實(shí)現(xiàn)人員參與,由項(xiàng)目經(jīng)理主持,會議是為解決平時所堆積起來的問題而舉行的。
結(jié)構(gòu)師應(yīng)該建立電話日志,并且每周交流一次。
章節(jié):為什么巴比倫塔會失敗
交流的缺乏導(dǎo)致爭辯,沮喪和群體猜忌。很快,團(tuán)隊(duì)開始分裂---大家選擇了孤立,而不是相互爭吵。
軟件項(xiàng)目開發(fā)時隊(duì)員交流途徑有電話,會議,工作手冊。
項(xiàng)目手冊的第一步是對所有的備忘錄編號,接著就開始進(jìn)行實(shí)時更新,在更新時必須在頁面上標(biāo)記發(fā)生改變的文本,分發(fā)的變更頁附帶獨(dú)立的總結(jié)性文字,對變更的重要性以及批注進(jìn)行記錄。
徹底解決手冊太厚的方法:編程人員僅僅了解自己負(fù)責(zé)的部分,而不是整個系統(tǒng)的開發(fā)細(xì)節(jié)時,工作效率最高。但其先決條件是精確和完整地定義所有借口。
產(chǎn)品負(fù)責(zé)人的角色:組建團(tuán)隊(duì),劃分工作及制訂進(jìn)度表。他主要是與團(tuán)隊(duì)外部,向上和水平地溝通,他建立團(tuán)隊(duì)內(nèi)部的溝通和報(bào)告方式。最后他確保進(jìn)度目標(biāo)的實(shí)現(xiàn),根據(jù)環(huán)境的變化調(diào)整資源和團(tuán)隊(duì)的構(gòu)架。
技術(shù)主管的角色:他對設(shè)計(jì)進(jìn)行構(gòu)思,識別系統(tǒng)的子部分,指明從外部看上去的樣子,勾畫它的內(nèi)部結(jié)構(gòu)。他提供整個設(shè)計(jì)的一致性和概念完整性;他控制系統(tǒng)的復(fù)雜程度。提供解決問題的答案,根據(jù)需要調(diào)整系統(tǒng)設(shè)計(jì)。他所做的工作幾乎完全是技術(shù)性的。
大型項(xiàng)目中,產(chǎn)品負(fù)責(zé)人作為管理者是更適合的安排。
開發(fā)中最重要的就是交流與溝通,特別是在大型的項(xiàng)目中。
章節(jié):胸有成竹
對常用編程語句而言。生產(chǎn)率似乎是固定的。這個固定的生產(chǎn)率包括了編程中需要的注釋,并可能存在錯誤的情況。
使用適當(dāng)?shù)母呒壵Z言,編程的生產(chǎn)率可以提高5倍。
章節(jié):削足適履
數(shù)據(jù)的表現(xiàn)形式是編程的根本。
章節(jié):提綱挈領(lǐng)
項(xiàng)目經(jīng)理文檔管理做法:項(xiàng)目開始時,立刻正式生成若干文檔作為自己的數(shù)據(jù)基礎(chǔ),哪怕這些迷你文檔非常簡單:接著,他會和其他人員一樣要求各種文檔。文檔中必須包含以下幾點(diǎn):
1.產(chǎn)品開發(fā)目標(biāo)。
2.產(chǎn)品技術(shù)說明。
3.時間進(jìn)度表。
4.資金預(yù)算。
5.人員組織圖。
永遠(yuǎn)記?。喉?xiàng)目經(jīng)理的任務(wù)不是決策,而是溝通!文檔建立也是為了實(shí)現(xiàn)這個目標(biāo)!
章節(jié):未雨綢繆
組織架構(gòu)的設(shè)計(jì)要盡量做到最小化成員間的接口,以便在將來能使系統(tǒng)在最大程度上易于修改。
軟件維護(hù)主要包含對設(shè)計(jì)缺陷的修復(fù)。用戶越多,發(fā)現(xiàn)的錯誤就會越多。
設(shè)計(jì)實(shí)現(xiàn)的人員越少,接口越少,產(chǎn)生的錯誤也就越少。
不論是誰,即使是最數(shù)量的軟件維護(hù)工作,也只是放緩了系統(tǒng)退化到非穩(wěn)態(tài)的進(jìn)程。
章節(jié):干將莫邪
多種多樣的開發(fā)工具不但不會促進(jìn)溝通,反而會妨礙溝通!項(xiàng)目經(jīng)理應(yīng)分配一個人專門用于管理工具。
應(yīng)分配固定的時間讓每個單元小組成員使用機(jī)器,這樣盡管機(jī)器的利用程度可能會有些降低,但有助于提高生產(chǎn)率。
給每個小組開發(fā)成員分配一個區(qū)域,用來存放他的程序拷貝、測試用例以及單元測試需要的測試輔助例程和數(shù)據(jù),在這個開發(fā)庫中,不存在任何限制開發(fā)人員的規(guī)定,他可以自由處置自己的程序,他是它們的擁有者。當(dāng)開發(fā)人員準(zhǔn)備將軟件單元集成到更大的部分時,他向集成經(jīng)理提交一份拷貝,后者將拷貝放置在系統(tǒng)集成子庫中。此時,原作者不可以再改變代碼,除非得到了集成經(jīng)理的批準(zhǔn)。
章節(jié):整體部分
自頂向下的設(shè)計(jì):開始是勾畫出能得到主要結(jié)果的,但比較粗略的任務(wù)定義和大概的解決方案。然后,對該定義和方案進(jìn)行細(xì)致的檢查,以判斷結(jié)果與期望之間的差距。同時,將上述步驟的解決方案,在更細(xì)致的步驟中進(jìn)行分解,每一項(xiàng)任務(wù)定義的精化變成了解決方案中算法的精化,后者還可能伴隨著數(shù)據(jù)表達(dá)方式的精化。
關(guān)鍵的地方和構(gòu)件無bug程序的核心,是把系統(tǒng)的結(jié)構(gòu)作為控制結(jié)構(gòu)來考慮,而不是獨(dú)立的跳轉(zhuǎn)語句。
章節(jié):禍起蕭墻
當(dāng)人們聽到某個項(xiàng)目的進(jìn)度發(fā)生了災(zāi)難性偏離時,可能會認(rèn)為項(xiàng)目一定是遭受了一系列重大災(zāi)難。然而,通常災(zāi)禍來自白蟻的肆虐,而不是龍卷風(fēng)的侵襲。
里程碑的選擇只有一個原則,它必須是具體的、特定的、可度量的事件,能夠進(jìn)行清晰定義。
章節(jié):另外一面
將文檔負(fù)擔(dān)降低到最低的方法:
1.借助那些出于語言的要求而必須存在的語句,來附加盡可能多的“文檔”信息。因此,標(biāo)簽、聲明語句、符號名稱均可以作為工具,用來向讀者表達(dá)盡可能多的意思。
2.盡可能地使用空格和一致的格式提高程序的可讀性,表現(xiàn)從屬和嵌套關(guān)系。
3.以段落注釋的形式,向程序中插入必要的記述性文字。