作為《代碼大全》的作者,史蒂夫在本書中全面深入地介紹了軟件項(xiàng)目管理的關(guān)鍵技巧!盾浖(xiàng)目的藝術(shù)》分為4 個(gè)部分,共19 章,通過一個(gè)項(xiàng)目生存測(cè)試問卷來展示項(xiàng)目管理全過程中每個(gè)關(guān)鍵節(jié)點(diǎn)的具體行動(dòng)!盾浖(xiàng)目的藝術(shù)》以項(xiàng)目成功為核心導(dǎo)向,系統(tǒng)地講解項(xiàng)目立項(xiàng)、執(zhí)行、開發(fā)、集成、測(cè)試與發(fā)布等關(guān)鍵環(huán)節(jié),尤其適合項(xiàng)目經(jīng)理及項(xiàng)目成員閱讀和參考。
《軟件開發(fā)的藝術(shù)》共包含4 部分21 章,探討了軟件行業(yè)中個(gè)人、組織以及行業(yè)的現(xiàn)狀,解釋了如何以工匠精神來打造自己的專業(yè)軟件開發(fā)職業(yè)路線!盾浖_發(fā)的藝術(shù)》對(duì)軟件行業(yè)的所有從業(yè)人員有較強(qiáng)的參考性和指導(dǎo)性,適合富有開拓精神的企業(yè)和團(tuán)隊(duì)閱讀。
作者史蒂夫·麥康奈爾(SteveMcConnell)是國(guó)際公認(rèn)的軟件開發(fā)大師,被譽(yù)為計(jì)算機(jī)軟件工程和項(xiàng)目管理領(lǐng)域的權(quán)威。他是軟件工程經(jīng)典書籍的締造者,代表作有《代碼大全》《快速開發(fā)》《軟件估算的藝術(shù)》《軟件項(xiàng)目的藝術(shù)》《軟件開發(fā)的藝術(shù)》以及《卓有成效的敏捷》等。他與比爾·蓋茨和林納斯·托瓦茲齊名,被《軟件開發(fā)》雜志的讀者評(píng)選為軟件行業(yè)三大影響力人物。在軟件行業(yè),他擔(dān)任過很多重要的職務(wù),包括《IEEE軟件》雜志總編輯及 IEEE計(jì)算機(jī)協(xié)會(huì)專委會(huì)主席等。
《軟件項(xiàng)目的藝術(shù)》詳細(xì)描述成功的項(xiàng)目管理模型和分階段發(fā)布流程,旨在幫助讀者找到改進(jìn)的方向。書中以軟件項(xiàng)目的分階段發(fā)布流程為主線,系統(tǒng)介紹了軟件項(xiàng)目管理理念、不同階段、結(jié)構(gòu)、方法和工具。
《軟件項(xiàng)目的藝術(shù)》分為 4 個(gè)部分共 19 章。
第Ⅰ部分項(xiàng)目生存思維介紹了軟件項(xiàng)目生存測(cè)試、生存概念以及生存的重要方法。
第Ⅱ部分項(xiàng)目生存準(zhǔn)備介紹了為軟件項(xiàng)目生存而戰(zhàn)所需的準(zhǔn)備,如初始計(jì)劃、開發(fā)用戶需求、質(zhì)量保證、軟件架構(gòu)等。
第Ⅲ部分階段成功主要討論分階段流程的具體活動(dòng),包括階段計(jì)劃、詳細(xì)設(shè)計(jì)、軟件構(gòu)建、系統(tǒng)測(cè)試、軟件發(fā)布和階段結(jié)束。
第Ⅳ部分項(xiàng)目完成講述了項(xiàng)目回顧會(huì)議、調(diào)查問卷、最終歷史數(shù)據(jù)歸檔,最后提供了軟件項(xiàng)目管理的參考資料和這本書的網(wǎng)上資源。
如果你以開發(fā)軟件為生,可以通過《軟件開發(fā)的藝術(shù)》了解如何才能成為一名真正的專業(yè)軟件開發(fā)人員。
如果你是軟件項(xiàng)目的管理者,可以通過《軟件開發(fā)的藝術(shù)》了解好項(xiàng)目和不成功的項(xiàng)目之間的區(qū)別,探討如何才能成功完成項(xiàng)目。
如果你是軟件企業(yè)的管理者,可以通過《軟件開發(fā)的藝術(shù)》了解系統(tǒng)化的軟件開發(fā)方法有哪些好處以及如何獲得這些效益。
如果你是一名希望在軟件領(lǐng)域工作的學(xué)生,可以通過《軟件開發(fā)的藝術(shù)》了解軟件工程領(lǐng)域的知識(shí)體系,以及軟件工程領(lǐng)域的職業(yè)前景。
軟件項(xiàng)目的藝術(shù)
在2000年左右,美國(guó)約有200萬人參與了約30萬個(gè)軟件項(xiàng)目。這些項(xiàng)目中,有三分之一到三分之二在交付之前進(jìn)度延后和預(yù)算超支。在最昂貴的軟件項(xiàng)目中,約有一半因失控而被取消。還有更多的項(xiàng)目被棄如敝屣,未能實(shí)現(xiàn)其最初的目標(biāo)和價(jià)值,或者因?yàn)橘澲接龅铰闊,僅是宣布項(xiàng)目成功便退出了項(xiàng)目,而沒有留下任何可用的軟件。無論是高級(jí)經(jīng)理、高管、軟件客戶、用戶代表還是項(xiàng)目負(fù)責(zé)人,都可以通過本書了解如何防止項(xiàng)目遭受這些后果。
軟件項(xiàng)目失敗通常有兩個(gè)原因:項(xiàng)目團(tuán)隊(duì)既缺乏成功開展軟件項(xiàng)目的知識(shí),也缺乏有效開展項(xiàng)目的方案。本書雖然對(duì)解決方案幫助不大,但確實(shí)包含了成功開展軟件項(xiàng)目所需要的大量知識(shí)。
軟件項(xiàng)目的成功并不取決于專門的技術(shù)。有時(shí)軟件項(xiàng)目被視為一個(gè)神秘的實(shí)體,其生存或消亡完全取決于開發(fā)人員的專業(yè)技術(shù)。當(dāng)開發(fā)人員解釋為何延遲交付組件時(shí),他們可能會(huì)使用一些技術(shù)術(shù)語,讓沒有深度技術(shù)知識(shí)的人感到無法影響軟件項(xiàng)目。
《軟件項(xiàng)目的藝術(shù)》指出,軟件項(xiàng)目的成功或失敗取決于如何謹(jǐn)慎地規(guī)劃項(xiàng)目以及如何精細(xì)地執(zhí)行項(xiàng)目。如果項(xiàng)目的利益相關(guān)方了解決定項(xiàng)目成功的關(guān)鍵問題,就可以確保項(xiàng)目取得圓滿成功。保持軟件項(xiàng)目朝著正確方向前進(jìn)的人可以是技術(shù)經(jīng)理或軟件開發(fā)人員,也可以是高級(jí)經(jīng)理、客戶、贊助方、終端用戶代表或任何其他相關(guān)人員。
本書適用于影響軟件項(xiàng)目結(jié)果的任何人,包括高層經(jīng)理、行政主管、客戶、投資人和最終用戶代表。通常,非軟件人員可能會(huì)被指派監(jiān)督軟件產(chǎn)品的開發(fā),他們可能具有銷售、會(huì)計(jì)、財(cái)務(wù)、法律、工程或其他領(lǐng)域的背景。如果項(xiàng)目開始出錯(cuò),他們至少應(yīng)發(fā)出警告。本書以通俗易懂的方式向他們講述一個(gè)成功的項(xiàng)目應(yīng)該是什么樣的,并提供許多方法來提前判斷項(xiàng)目的成敗。
對(duì)于項(xiàng)目經(jīng)理,尤其是那些沒有經(jīng)過專門軟件項(xiàng)目管理培訓(xùn)的,本書將幫助你掌握需求管理、軟件項(xiàng)目規(guī)劃、項(xiàng)目跟蹤、質(zhì)量保證和變更控制等關(guān)鍵技術(shù)和管理技能。
對(duì)于技術(shù)主管、專業(yè)開發(fā)人員和自學(xué)成才的程序員,如果你是熟悉技術(shù)細(xì)節(jié)的專家,可能沒有經(jīng)歷太多項(xiàng)目負(fù)責(zé)人需要關(guān)注的重大問題。本書可以視為帶注釋的項(xiàng)目計(jì)劃,幫助你從專業(yè)技術(shù)人員過渡到高效率的項(xiàng)目負(fù)責(zé)人。書中描述的計(jì)劃可以作為起點(diǎn),根據(jù)特定項(xiàng)目的需要,合理地制定自己的項(xiàng)目策略。如果已經(jīng)讀過《快速開發(fā)》一書,本書的第Ⅰ部分將幫助你復(fù)習(xí)其中的部分內(nèi)容。
本書涉及哪些類型的項(xiàng)目
本書的項(xiàng)目計(jì)劃適用于商業(yè)系統(tǒng)、廣泛的終端用戶軟件、垂直市場(chǎng)系統(tǒng)、科學(xué)系統(tǒng)等程序。該計(jì)劃適用于客戶端/服務(wù)器結(jié)構(gòu)的項(xiàng)目,使用了現(xiàn)代軟件開發(fā)實(shí)踐,例如面向?qū)ο蟮脑O(shè)計(jì)和編程。這些計(jì)劃可以很容易地應(yīng)用于傳統(tǒng)開發(fā)實(shí)踐和大型計(jì)算機(jī)項(xiàng)目。
該計(jì)劃面向的團(tuán)隊(duì)規(guī)模為3到25名成員,項(xiàng)目計(jì)劃時(shí)間為3到18個(gè)月,這種規(guī)模的項(xiàng)目被認(rèn)為是中型項(xiàng)目。如果你的項(xiàng)目比較小,可以適當(dāng)精簡(jiǎn)本書推薦的一些做法。在整本書中,我會(huì)指出可以精簡(jiǎn)的地方。
本書主要面向目前處于規(guī)劃階段的項(xiàng)目。如果項(xiàng)目剛剛開始,可以使用該方法作為項(xiàng)目計(jì)劃的基礎(chǔ)。如果項(xiàng)目正處于中間階段,第2章的生存測(cè)試和每章末尾的生存檢查清單將幫助你確定項(xiàng)目的成功機(jī)會(huì)。
本書的計(jì)劃可能不夠正式或不夠嚴(yán)謹(jǐn),因此不適用于生命攸關(guān)或安全攸關(guān)的系統(tǒng)。但它適用于商業(yè)應(yīng)用程序和商業(yè)軟件,在許多數(shù)百萬美元級(jí)別的項(xiàng)目中采用了這樣的計(jì)劃,已經(jīng)取得了顯著的改進(jìn)。
資深技術(shù)型讀者注意事項(xiàng)
《軟件項(xiàng)目的藝術(shù)》介紹了執(zhí)行軟件項(xiàng)目的有效方法,但并不是唯一有效的方法。然而,知識(shí)淵博的技術(shù)主管提出的開發(fā)計(jì)劃可能會(huì)比這里描述的通用解決方案更好、更全面、更有針對(duì)性。但是,這里描述的計(jì)劃比匆忙湊出來的計(jì)劃或者根本沒有計(jì)劃的情況要好得多,軟件項(xiàng)目根本沒有計(jì)劃是最常見的狀況。
以下章節(jié)描述的計(jì)劃是為了解決軟件項(xiàng)目面臨的最常見問題而設(shè)計(jì)的。它大體上基于軟件工程協(xié)會(huì)(SEI)所定義的SEI軟件能力成熟度模型的第2級(jí)中的關(guān)鍵過程領(lǐng)域。SEI已將這些關(guān)鍵過程確定為使軟件組織能夠滿足計(jì)劃、預(yù)算、質(zhì)量和其他目標(biāo)的關(guān)鍵組成部分。大約85%的軟件組織的績(jī)效低于2級(jí),我們的計(jì)劃是指導(dǎo)這些軟件組織明顯地改進(jìn)它們的現(xiàn)有狀態(tài)。SEI如下定義第2級(jí)的關(guān)鍵流程領(lǐng)域:
項(xiàng)目計(jì)劃;
需求管理;
項(xiàng)目跟蹤和監(jiān)督;
配置管理;
質(zhì)量保證。
本書的主要參考資料
在撰寫本書時(shí),除了汲取眾多資源之精華,我還珍藏了三個(gè)舉足輕重的參考資料,它們無一不是價(jià)值連城的寶典。我試圖從中去蕪存菁,條分縷析,將其中的精華以最實(shí)用的方式呈現(xiàn)給大家。
第一份參考文獻(xiàn)是軟件工程研究所的《軟件能力成熟度模型的關(guān)鍵實(shí)踐》版本1.1(以下簡(jiǎn)稱《關(guān)鍵實(shí)踐》)。此書堪稱一座金礦,來之不易的行業(yè)經(jīng)驗(yàn)深藏其中,為新開發(fā)實(shí)踐的實(shí)現(xiàn)確定了優(yōu)先級(jí)的指導(dǎo)。盡管文獻(xiàn)篇幅近500頁,書中的信息卻言簡(jiǎn)意賅。它不同于一般的教科書,對(duì)新手而言可能稍顯晦澀。然而,對(duì)于已對(duì)其實(shí)踐有所了解的讀者來說,《關(guān)鍵實(shí)踐》提供的總結(jié)和結(jié)構(gòu)無異于指路的明燈。本書可在互聯(lián)網(wǎng)上免費(fèi)獲取,網(wǎng)址為 http://www.sei.cmu.edu/,也可從弗吉尼亞州斯普林菲爾德的美國(guó)商務(wù)部國(guó)家技術(shù)信息服務(wù)中心獲得。
第二份參考文獻(xiàn)是美國(guó)國(guó)家航空航天局(NASA)的軟件工程實(shí)驗(yàn)室(SEL)的《推薦的軟件開發(fā)方法》(修訂版3)以下簡(jiǎn)稱《推薦方法》。SEL榮獲IEEE計(jì)算機(jī)學(xué)會(huì)頒發(fā)的過程成就獎(jiǎng),實(shí)至名歸!锻扑]方法》詳細(xì)地描述了許多成功過程的關(guān)鍵因素,與SEI的文檔相輔相成,后者雖描述了一套實(shí)踐卻未展示其在特定項(xiàng)目中的應(yīng)用?梢詮膆ttps://ntrs.nasa.gov/api/citations/19930009672/downloads/19930009672.pdf下載。
我手邊最后一份參考資源是我的親身實(shí)踐。我的寫作不追求空中樓閣式的理論架構(gòu),而是從實(shí)用的角度出發(fā),致力于為讀者打造一個(gè)實(shí)用性較強(qiáng)的參考指南。這里匯總的信息將使我在未來項(xiàng)目規(guī)劃與實(shí)施上游刃有余,并向客戶清晰闡釋關(guān)鍵的成功因素。我期望本書能為讀者帶來這樣的幫助。
軟件開發(fā)的藝術(shù)
說起來容易,做起來難,總有一些事情如此。
《IEEE 軟件》
記得有一次,我們乘坐的飛機(jī)正在跑道上等待起飛,突然聽到機(jī)長(zhǎng)緊急播報(bào):飛機(jī)的空調(diào)系統(tǒng)有問題,無法向機(jī)艙正常供氧,我們需要在起飛之前確?照{(diào)系統(tǒng)能夠恢復(fù)正常。我剛剛嘗試了重啟空調(diào)系統(tǒng),但沒有成功,現(xiàn)在必須重新啟動(dòng)整個(gè)飛機(jī)系統(tǒng)。眾所周知,現(xiàn)代飛機(jī)由計(jì)算機(jī)控制,是不太靠譜的。
飛機(jī)熄火,重新啟動(dòng)。隨后,我們的航班順利起飛了,沒有發(fā)生任何異常。最后飛機(jī)落地,走出機(jī)艙的那一刻,我懸著的心終于放了下來。
這是一個(gè)最好的時(shí)代,也是一個(gè)最壞的時(shí)代。
優(yōu)秀的軟件組織能夠有效控制項(xiàng)目,以達(dá)到既定的質(zhì)量目標(biāo),并準(zhǔn)確預(yù)測(cè)軟件的交付時(shí)間,不論是年份還是月份。他們能在預(yù)算范圍內(nèi)完成軟件項(xiàng)目,不斷提升生產(chǎn)力,保持員工士氣高漲,讓客戶非常滿意。
● 一家電信公司需要修改大約3 000 行代碼,而整個(gè)代碼庫大約有100 萬行。他們需要小心翼翼地進(jìn)行修改,確保至少一年內(nèi)不會(huì)出現(xiàn)任何錯(cuò)誤。他們總共花費(fèi)了9 個(gè)小時(shí)來完成所有工作,包括需求、分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試。
● 一個(gè)為美國(guó)空軍開發(fā)軟件的團(tuán)隊(duì)承諾只需要1年時(shí)間和200萬美元預(yù)算就能完成項(xiàng)目,而另一個(gè)知名團(tuán)隊(duì)對(duì)這個(gè)項(xiàng)目的報(bào)價(jià)卻高達(dá)2 年和1 000 萬美元。當(dāng)?shù)蛢r(jià)中標(biāo)的項(xiàng)目團(tuán)隊(duì)提前一個(gè)月交付項(xiàng)目時(shí),項(xiàng)目經(jīng)理透露了一個(gè)關(guān)鍵信息:團(tuán)隊(duì)的成功主要得益于使用了一種已存在多年但并不常用的技術(shù)。
● 一家航天公司采取固定價(jià)格合同策略為其他企業(yè)開發(fā)商業(yè)軟件,結(jié)果表明,只有3% 的項(xiàng)目超出預(yù)算,97% 的項(xiàng)目都成功控制在預(yù)算之內(nèi)。
● 一家致力于實(shí)現(xiàn)卓越品質(zhì)的軟件公司連續(xù)9 年每年平均產(chǎn)品缺陷率降低39%,累計(jì)減少99% 的缺陷率。
除了這些成功案例外,軟件行業(yè)在經(jīng)濟(jì)上每年仍為全球帶來超過10 億美元的額外收入,無論是通過軟件銷售直接獲得,還是間接通過提高效率和創(chuàng)造與軟件相關(guān)的產(chǎn)品與服務(wù)實(shí)現(xiàn)。
創(chuàng)建良好軟件所需的實(shí)踐已經(jīng)確立了,并且可以在今后的10 年至20 年或更長(zhǎng)時(shí)間里使用。雖然某些項(xiàng)目取得了卓越成就,但軟件行業(yè)整體未能充分挖掘出軟件的全部潛力。平均項(xiàng)目水平與頂尖項(xiàng)目水平之間存在巨大差距,許多領(lǐng)域的軟件實(shí)踐要么嚴(yán)重過時(shí),要么不夠高效。軟件項(xiàng)目的平均表現(xiàn)遠(yuǎn)遠(yuǎn)達(dá)不到預(yù)期,看看下面這些知名的失敗案例。
● 美國(guó)國(guó)稅局(IRS)在其軟件現(xiàn)代化項(xiàng)目上浪費(fèi)80 億美元,導(dǎo)致美國(guó)納稅人每年損失高達(dá)500 億美元。
● 美國(guó)聯(lián)邦航空管理局的高級(jí)自動(dòng)化系統(tǒng)計(jì)劃的預(yù)算超支30 億美元。
● 行李處理系統(tǒng)的問題導(dǎo)致丹佛國(guó)際機(jī)場(chǎng)的開放時(shí)間推遲了一年多。據(jù)估計(jì),延誤造成的損失高達(dá)每天110 萬美元。
● 阿麗亞娜5 號(hào)火箭因?yàn)? 個(gè)軟件錯(cuò)誤導(dǎo)致火箭在首次發(fā)射時(shí)爆炸。
● B-2轟炸機(jī)(譯注:這樣的戰(zhàn)略轟炸機(jī)最大起飛重量接近170 噸,但只有0.1 平方米的雷達(dá)反射面積,大小相當(dāng)于普通鳥類。B-2 在設(shè)計(jì)上使用了諸多先進(jìn)的隱身技術(shù)手段,如鋸齒邊緣的機(jī)翼和尾翼、特殊涂料吸收雷達(dá)波等。在作戰(zhàn)能力方面,B-2 也具備長(zhǎng)時(shí)間獨(dú)立作戰(zhàn)能力,其最大載彈量達(dá)20 噸,不加油的情況下作戰(zhàn)半徑可達(dá)1.2 萬千米。如果可以進(jìn)行一次空中加油,其作戰(zhàn)半徑將大幅提升至1.8 萬千米,差不多可以覆蓋全球大部分區(qū)域。此外,B-2 還配備了當(dāng)時(shí)最先進(jìn)的電子設(shè)備,如相控陣?yán)走_(dá)、綜合電子戰(zhàn)系統(tǒng)等,因而可以在復(fù)雜環(huán)境下有效地執(zhí)行任務(wù)。B-2 參與過多場(chǎng)實(shí)戰(zhàn)考驗(yàn),均保持零損失的記錄。)因軟件問題而未能按時(shí)執(zhí)行首飛。
● 西雅圖渡輪的計(jì)算機(jī)系統(tǒng)故障導(dǎo)致了十幾次的碼頭碰撞,造成的損失超過700 萬美元。華盛頓州計(jì)劃投資超過300 萬美元,將渡輪的自動(dòng)控制系統(tǒng)改回手動(dòng)控制。
● 雖然很多項(xiàng)目沒有發(fā)生重大失誤,但仍然引發(fā)了諸多問題。大約25% 的軟件項(xiàng)目徹底失敗,12 而項(xiàng)目在被取消時(shí)一般已經(jīng)多花了一倍的預(yù)算,約50% 的項(xiàng)目經(jīng)歷了延期、超預(yù)算或被迫縮減功能。
在企業(yè)層面,這些失敗的項(xiàng)目意味著巨大的機(jī)會(huì)損失。想象一下,如果在只花費(fèi)了10% 的預(yù)算而不是200% 的預(yù)算時(shí)就能夠識(shí)別出那些最終會(huì)失敗的項(xiàng)目并提前砍掉它們,讓公司把這些資源重新分配給那些有潛力成功的項(xiàng)目上。
在國(guó)家層面,這些被叫停的項(xiàng)目意味著巨大的浪費(fèi)。粗略估計(jì),這樣的軟件項(xiàng)目給美國(guó)經(jīng)濟(jì)造成了400 億美元的損失。
即使項(xiàng)目成功,仍然可能給公共安全或公共福利帶來風(fēng)險(xiǎn)。蓮花(Lotus)公司的項(xiàng)目負(fù)責(zé)人曾經(jīng)接到一位外科醫(yī)生的電話,說他當(dāng)時(shí)正在進(jìn)行心臟手術(shù),需要使用電子表格來分析患者數(shù)據(jù)!缎侣勚芸钒l(fā)表過一張照片,顯示戰(zhàn)場(chǎng)上的士兵們使用Excel 來規(guī)劃軍事行動(dòng)。微軟公司的Excel 技術(shù)支持團(tuán)隊(duì)確實(shí)接到過士兵們從前線打來的電話。
本書的目的
軟件開發(fā)應(yīng)該是可預(yù)測(cè)、可控制、經(jīng)濟(jì)上可行且可以管理的。通常,軟件開發(fā)通常不會(huì)以滿足這四個(gè)要求為目標(biāo),但它有潛力同時(shí)滿足這些要求。本書主要聚焦于軟件工程這一新興行業(yè)的發(fā)展,探討如何建立高效且經(jīng)濟(jì)的專業(yè)軟件開發(fā)實(shí)踐。
本書討論了以下幾個(gè)主題:
● 什么是軟件工程?
● 軟件工程與計(jì)算機(jī)科學(xué)有何關(guān)系?
● 為什么傳統(tǒng)的計(jì)算機(jī)編程不夠好?
● 為什么我們需要軟件工程這一職業(yè)?
● 為什么要為軟件開發(fā)專業(yè)設(shè)計(jì)最佳模型?
● 不同的項(xiàng)目或公司在采納成功策略上存在哪些差異與共性?
● 軟件組織可以采取哪些措施來支持專業(yè)軟件開發(fā)方法?
● 軟件開發(fā)人員如何成長(zhǎng)為成熟的專業(yè)人士?
● 軟件行業(yè)應(yīng)該如何建立真正意義上的軟件工程職業(yè)發(fā)展路線?
本書的組織
本書將從當(dāng)前計(jì)算機(jī)編程實(shí)踐的現(xiàn)狀出發(fā),逐步過渡到探索未來可能出現(xiàn)的軟件工程職業(yè)。
第Ⅰ部分軟件焦油坑將闡述軟件領(lǐng)域是如何發(fā)展到現(xiàn)在這種狀態(tài)的。顯然,軟件領(lǐng)域的現(xiàn)狀受到多種因素的影響,我們需要充分理解這些因素,從而促進(jìn)而不是阻礙軟件項(xiàng)目的革新,讓人們主動(dòng)為項(xiàng)目的成功而努力。
第Ⅱ部分個(gè)人專業(yè)化將介紹個(gè)人層面上可以采取哪些行動(dòng)來進(jìn)一步提高個(gè)人的軟件專業(yè)化水平。
由于軟件項(xiàng)目的復(fù)雜性,許多關(guān)鍵因素?zé)o法僅通過個(gè)人努力有效解決。第Ⅲ部分軟件組織專業(yè)化深入討論了實(shí)現(xiàn)軟件項(xiàng)目專業(yè)化的實(shí)踐方法。
第Ⅳ部分行業(yè)專業(yè)化將探討整個(gè)軟件行業(yè)必須采取哪些措施來推動(dòng)個(gè)人層面和組織層面的專業(yè)化進(jìn)程。
自1999年以來,我學(xué)到了什么
我從1999 年以來獲得了下面這些經(jīng)驗(yàn)教訓(xùn)。
● 對(duì)軟件開發(fā)人員實(shí)行許可證制度的提議引發(fā)的爭(zhēng)議遠(yuǎn)超我的預(yù)期。我依然認(rèn)為,對(duì)一小部分軟件工程師進(jìn)行認(rèn)證,是保護(hù)公眾安全和福祉的重要步驟。我曾經(jīng)試圖解釋,許可證是改善軟件開發(fā)專業(yè)水平所需要的許多舉措之一,但它不是最重要的。
● 軟件工程師的培訓(xùn)不必與許可證申請(qǐng)緊密關(guān)聯(lián)。在本科和研究生的教育課程中,可以培養(yǎng)軟件開發(fā)人員的工程思維,但不必強(qiáng)迫他們成為持證專業(yè)工程師。事實(shí)上,如果只有不到5% 的軟件開發(fā)人員需要獲得許可證,那么將大部分教學(xué)的焦點(diǎn)集中在許可證上似乎不太合適。
● 當(dāng)2000 年1 月1 日來臨時(shí),世界并未陷入混亂。盡管我不曾認(rèn)為千年蟲(Y2K,即日期從兩位數(shù)擴(kuò)展到四位數(shù),比如從99 變?yōu)?999)會(huì)引發(fā)災(zāi)難,但我確實(shí)認(rèn)為,解決Y2K 問題的過程比這個(gè)問題本身更重要。軟件行業(yè)采取的補(bǔ)救措施比我預(yù)期的更有效。除此之外,Y2K 問題在某種意義上是軟件成功開發(fā)實(shí)踐的結(jié)果。如果有這么多軟件系統(tǒng)的生命周期都超過預(yù)期,那么Y2K 一開始就應(yīng)該成為問題。
● 現(xiàn)代軟件開發(fā)在許多方面所取得的成果令人印象深刻,在討論軟件領(lǐng)域的專業(yè)化時(shí),我們不應(yīng)忘記領(lǐng)域內(nèi)的眾多成功案例。
我們必須留意,在改善那些有缺陷的做法時(shí),不應(yīng)該一并舍棄那些已被證明有效的方法。
誰應(yīng)該閱讀這本書
如果你以開發(fā)軟件為生,可以通過本書了解如何才能成為一名真正的專業(yè)軟件開發(fā)人員。
如果你是軟件項(xiàng)目的管理者,可以通過本書了解好項(xiàng)目和不成功的項(xiàng)目之間的區(qū)別,探討如何才能成功完成項(xiàng)目。
如果你是軟件企業(yè)的管理者,可以通過本書了解系統(tǒng)化的軟件開發(fā)方法有哪些好處以及如何獲得這些效益。
如果你是一名希望在軟件領(lǐng)域工作的學(xué)生,可以通過本書了解軟件工程領(lǐng)域的知識(shí)體系,以及軟件工程領(lǐng)域的職業(yè)前景。
軟件開發(fā)的專業(yè)化
行業(yè)研究人員通過長(zhǎng)期以來的觀察發(fā)現(xiàn),在同一行業(yè)內(nèi),不同組織的生產(chǎn)效率有高達(dá)10 倍的差異。最近的研究甚至顯示,這種差異可能高達(dá)驚人的600 倍。18 那些最高效的軟件組織的確表現(xiàn)優(yōu)異。
真正的軟件工程專業(yè)化所帶來的好處是不言而喻的。傳統(tǒng)觀點(diǎn)認(rèn)為,任何變化都伴隨著巨大的風(fēng)險(xiǎn)。然而,在軟件領(lǐng)域,最大的風(fēng)險(xiǎn)實(shí)際上是保持不變,并繼續(xù)固守不健康的高成本開發(fā)實(shí)踐,而不是開始采用那些多年前就已被證明更加有效的實(shí)踐方法。
應(yīng)該如何改變呢?這正是本書剩余部分的核心主題。
編注:為了方便廣大讀者進(jìn)一步查閱和拓展相關(guān)資源,我們對(duì)本書英文版中的所有原文注釋進(jìn)行了統(tǒng)一處理。大家可以掃描二維碼,查看和下載全書的所有注釋。
史蒂夫·麥康奈爾(Steve McConnell)
代表作有《代碼大全》(2019年被《福布斯》技術(shù)委員會(huì)評(píng)為軟件開發(fā)奠基之作)。先后創(chuàng)辦Construx Software 和 Rain Dog(目前主要為客戶提供投資規(guī)劃和管理服務(wù)以及開發(fā)投資預(yù)測(cè)和分析工具)。
此前作為 Construx Software 創(chuàng)始人兼首席軟件工程師,他負(fù)責(zé)領(lǐng)導(dǎo)軟件項(xiàng)目,也為其他公司提供軟件項(xiàng)目咨詢服務(wù),他還通過著書立說的方式, 成為軟件工程知識(shí)體系的布道者。他是《IEEE軟件》和《軟件從業(yè)者》雜志的編委會(huì)成員、《IEEE計(jì)算機(jī)》雜志資深審稿人、IEEE 計(jì)算機(jī)協(xié)會(huì)及 ACM 的重要貢獻(xiàn)者。
作為社區(qū)與公共事務(wù)的積極參與者,他擔(dān)任過貝爾維尤學(xué)校董事會(huì)主席、貝爾維尤扶輪社主席、洛克利文社區(qū)協(xié)會(huì)董事會(huì)成員、CDC Covid 預(yù)測(cè)模型的貢獻(xiàn)者、IEEE專委會(huì)主席、《IEEE軟件》雜志主編、軟件工程知識(shí)體系專家組成員,惠特曼文理學(xué)院和西雅圖大學(xué)計(jì)算機(jī)科學(xué)顧問委員會(huì)成員。
史蒂夫在惠特曼文理學(xué)院獲得哲學(xué)和計(jì)算機(jī)科學(xué)的雙學(xué)士學(xué)位,在西雅圖大學(xué)獲得了軟件工程碩士學(xué)位。
方敏
就職于微軟公司,擔(dān)任首席測(cè)試總監(jiān)期間,對(duì)必應(yīng)搜索、中國(guó)創(chuàng)新項(xiàng)目、WindowsServer、SQLServer、COM 服務(wù)等產(chǎn)品和服務(wù)做出了重要的貢獻(xiàn)。他擁有近三十年工程技術(shù)團(tuán)隊(duì)和項(xiàng)目管理經(jīng)驗(yàn),精通軟件敏捷開發(fā)和傳統(tǒng)軟件項(xiàng)目管理。他注重創(chuàng)新,注重發(fā)揮團(tuán)隊(duì)優(yōu)勢(shì)。
方敏是微軟美國(guó)華人協(xié)會(huì)的創(chuàng)始成員之一,該協(xié)會(huì)有幾千名會(huì)員。他是美國(guó)西雅圖地區(qū)知名的職場(chǎng)發(fā)展專家,熱衷于提升在美華人的國(guó)際競(jìng)爭(zhēng)力。曾經(jīng)多次受邀為母校清華大學(xué)舉辦國(guó)際化職場(chǎng)發(fā)展和軟件技能講座。方敏畢業(yè)于清華大學(xué),獲得電子工程學(xué)士和碩士學(xué)位,后來在美國(guó)新墨西哥州礦業(yè)技術(shù)學(xué)院獲得計(jì)算機(jī)科學(xué)碩士學(xué)位。
朱嶸
朱嶸早年就職于英國(guó)BAE系統(tǒng)公司,在其美國(guó)分支機(jī)構(gòu)擔(dān)任質(zhì)量工程師,負(fù)責(zé)空客和波音多種機(jī)型的關(guān)鍵質(zhì)量分析與故障維修。她畢業(yè)于哈爾濱工業(yè)大學(xué),獲得無線電工程系信息工程專業(yè)的學(xué)士學(xué)位。
軟件項(xiàng)目的藝術(shù)
詳細(xì)目錄
第Ⅰ部分 項(xiàng)目生存思維
第1章 歡迎加入項(xiàng)目生存訓(xùn)練營(yíng) 3
1.1 生存需求 4
1.2 生存權(quán)利 7
1.3 生存檢查清單:項(xiàng)目健康測(cè)試 9
生存檢查清單 10
譯者有話說 10
第2章 軟件項(xiàng)目生存測(cè)試 11
2.1 生存測(cè)試題 11
2.2 生存測(cè)試問卷 11
2.2 生存測(cè)試問卷 12
2.3 生存測(cè)試結(jié)果解釋 14
生存檢查清單 16
譯者有話說 16
第3章 項(xiàng)目生存的概念 17
3.1 軟件開發(fā)流程的作用 17
3.1.1 對(duì)流程的誤區(qū) 18
3.1.2 拯救流程 23
3.1.3 流程與團(tuán)隊(duì)的創(chuàng)新和士氣 25
3.1.4 過渡到系統(tǒng)化流程的理由 27
3.2 流程的上游和下游 28
3.3 不確定性錐 30
生存檢查清單 33
譯者有話說 34
第4章 項(xiàng)目生存的關(guān)鍵方法 35
4.1 規(guī)劃 35
軟件規(guī)劃示例 37
4.2 規(guī)劃?rùn)z查點(diǎn)的審查 38
4.2.1 兩階段籌資方法 38
4.2.2 準(zhǔn)備規(guī)劃?rùn)z查點(diǎn)的審查 39
4.2.3 規(guī)劃?rùn)z查點(diǎn)審查議程 40
4.2.4 規(guī)劃?rùn)z查點(diǎn)審查的主要意義 41
4.3 風(fēng)險(xiǎn)管理 42
4.4 項(xiàng)目控制 43
4.5 項(xiàng)目的可見性 44
4.6 人件 45
4.6.1 開發(fā)人員的興趣與工作分配要對(duì)齊 46
4.6.2 向開發(fā)人員表達(dá)誠摯的謝意 47
4.6.3 提供有利于思考的辦公空間 47
4.6.4 避免開放式工作空間 47
4.7 用戶參與 49
4.8 產(chǎn)品極簡(jiǎn)主義 51
4.9 專注于軟件交付 52
生存檢查清單 54
譯者有話說 55
第5章 成功的軟件項(xiàng)目知多少 57
5.1 研發(fā)階段 57
5.2 項(xiàng)目流程 59
5.3 分階段交付的好處 60
5.4 分階段交付的成本 63
5.5 階段計(jì)劃 64
5.6 團(tuán)隊(duì)建設(shè) 66
5.7 代碼量增長(zhǎng)曲線 69
5.8 主要里程碑和可交付內(nèi)容 71
生存檢查清單 77
譯者有話說 77
第Ⅱ部分 項(xiàng)目生存準(zhǔn)備
第6章 擁抱變化,精準(zhǔn)定位 81
6.1 變更控制過程 81
6.2 變更控制的好處 84
6.3 自動(dòng)修訂控制的好處 85
6.4 常見的變更控制問題 86
6.4.1 如何考慮變更 86
6.4.2 何時(shí)考慮變更 87
6.4.3 如何處理小的變更 88
6.4.4 如何進(jìn)行人員管理 88
6.4.5 哪些工作產(chǎn)品要進(jìn)行變更控制 89
6.5 致力于變更控制 91
生存檢查清單 92
譯者有話說 93
第7章 初步計(jì)劃 95
7.1 項(xiàng)目愿景 95
7.1.1 定義要放棄的內(nèi)容 97
7.1.2 致力于愿景 98
7.2 高管授權(quán) 98
7.3 項(xiàng)目規(guī)模目標(biāo) 99
7.4 宣傳計(jì)劃和進(jìn)展 101
7.5 宣傳進(jìn)度指標(biāo) 102
7.6 風(fēng)險(xiǎn)管理 104
7.6.1 致力于風(fēng)險(xiǎn)管理 105
7.6.2 風(fēng)險(xiǎn)監(jiān)督員 107
7.6.3 十大風(fēng)險(xiǎn)清單 108
7.6.4 支持風(fēng)險(xiǎn)跟蹤的工具 112
7.6.5 詳細(xì)的風(fēng)險(xiǎn)管理計(jì)劃 112
7.6.6 匿名風(fēng)險(xiǎn)報(bào)告渠道 112
7.7 人員策略 114
7.7.1 人才發(fā)展 114
7.7.2 團(tuán)隊(duì)培養(yǎng) 115
7.7.3 新手開發(fā)人員:可用與勝任 115
7.7.4 團(tuán)隊(duì)動(dòng)態(tài) 116
7.7.5 員工培養(yǎng)的關(guān)鍵問題 117
7.7.6 團(tuán)隊(duì)組織 117
7.7.7 項(xiàng)目團(tuán)隊(duì)的組織結(jié)構(gòu) 118
7.7.8 老虎隊(duì) 120
7.8 時(shí)間統(tǒng)計(jì) 121
7.9 軟件開發(fā)計(jì)劃 125
生存檢查清單:初步計(jì)劃 126
譯者有話說 127
第8章 需求開發(fā) 129
8.1 需求開發(fā)流程概述 130
8.2 確定一組關(guān)鍵的最終用戶 131
8.3 采訪最終用戶 132
8.4 構(gòu)建簡(jiǎn)單的用戶界面原型 132
8.4.1 如果條件允許,應(yīng)使用情節(jié)串連故事板 134
8.4.2 不斷修改原型直到最終用戶對(duì)軟件感興趣 135
8.4.3 制定用戶界面樣式指南 136
8.4.4 全面擴(kuò)展原型 136
8.4.5 請(qǐng)記住,原型是要廢棄的 137
8.4.6 將全面擴(kuò)展的原型作為基準(zhǔn)規(guī)范 138
8.5 編寫詳細(xì)的最終用戶手冊(cè) 139
8.6 創(chuàng)建單獨(dú)的、沒有用戶界面的需求文檔 141
生存檢查清單:需求開發(fā) 141
譯者有話說 143
第9章 質(zhì)量保證 145
9.1 為什么質(zhì)量很重要 145
9.2 質(zhì)量保證計(jì)劃 146
質(zhì)量保證計(jì)劃的組成部分 147
9.6 缺陷跟蹤 149
9.4 技術(shù)審查 151
9.4.1 常規(guī)審查模式 151
9.4.2 成功審查的要點(diǎn) 152
9.5 系統(tǒng)測(cè)試 154
9.6 Beta測(cè)試 157
9.7 質(zhì)量保證計(jì)劃涵蓋的工作產(chǎn)品 160
9.8 質(zhì)量保證的輔助活動(dòng) 162
9.9 軟件發(fā)布標(biāo)準(zhǔn) 162
生存檢查清單 163
譯者有話說 164
第10章 軟件架構(gòu) 165
10.1 啟動(dòng)架構(gòu)階段 166
10.2 好的架構(gòu)有哪些特征 167
10.2.1 系統(tǒng)概述 167
10.2.2 概念的完整性 167
10.2.3 子系統(tǒng)和組織 168
10.2.4 表示法 170
10.2.5 適應(yīng)場(chǎng)景變化與調(diào)整策略 171
10.2.6 分析可重用性,決定購買還是自己動(dòng)手寫 172
10.2.7 常用功能領(lǐng)域的策略 172
10.2.8 需求的可追溯性 174
10.2.9 支持分階段交付計(jì)劃 175
10.3 如何判斷架構(gòu)已完成 175
10.4 軟件架構(gòu)文檔 176
生存檢查清單 177
譯者有話說 178
第11章 最后準(zhǔn)備 179
11.1 項(xiàng)目估算 180
11.1.1 估算過程指南 180
11.1.2 里程碑目標(biāo) 185
11.1.3 非技術(shù)性的估算考慮 186
11.2 分階段交付計(jì)劃 187
11.2.1 將項(xiàng)目劃分為階段 188
11.2.2 階段主題 189
11.2.3 與分階段交付相似的計(jì)劃 191
11.2.4 發(fā)布版本 192
11.2.5 修訂分階段交付計(jì)劃 193
11.3 持續(xù)進(jìn)行規(guī)劃活動(dòng) 193
11.3.1 風(fēng)險(xiǎn)管理 194
11.3.2 項(xiàng)目愿景 194
11.3.3 決策機(jī)構(gòu) 195
11.3.4 人員 195
11.3.5 更新軟件開發(fā)計(jì)劃 196
生存檢查清單 196
譯者有話說 197
第Ⅲ部分 階段成功
第12章 階段計(jì)劃 201
12.1 為什么需要制定階段計(jì)劃 201
12.2 階段計(jì)劃介紹 203
12.2.1 需求更新 204
12.2.2 詳細(xì)設(shè)計(jì) 204
12.2.3 軟件構(gòu)建 205
12.2.4 產(chǎn)生測(cè)試用例 205
12.2.5 用戶文檔更新 206
12.2.6 技術(shù)審查 206
12.2.7 修正缺陷 206
12.2.8 技術(shù)協(xié)調(diào) 207
12.2.9 風(fēng)險(xiǎn)管理 207
12.2.10 項(xiàng)目跟蹤 208
12.2.11 集成和發(fā)布 208
12.2.12 階段結(jié)束總結(jié) 209
12.3 微型里程碑 209
12.3.1 創(chuàng)建完整的里程碑列表 211
12.3.2 達(dá)到預(yù)期質(zhì)量水平 212
12.3.3 定義微型里程碑 213
12.3.4 小型項(xiàng)目的微型里程碑 213
12.3.5 人員管理的考慮 214
12.3.6 項(xiàng)目如果錯(cuò)過了微型里程碑,怎么辦 215
12.4 階段計(jì)劃和管理風(fēng)格 216
生存檢查清單 217
譯者有話說 218
第13章 詳細(xì)設(shè)計(jì) 219
13.1 重新審查架構(gòu) 219
13.1.1 程序組織 219
13.1.2 分析重用 220
13.1.3 需求的解決方案 220
13.1.4 需求的可追溯性 220
13.1.5 軟件構(gòu)建計(jì)劃 221
13.1.6 修正架構(gòu)中的缺陷 221
13.1.7 項(xiàng)目需要做多少詳細(xì)設(shè)計(jì) 221
13.2 技術(shù)審查 224
13.2.1 檢測(cè)功能缺陷 225
13.2.2 檢測(cè)需求缺陷 226
13.2.3 缺失需求 226
13.2.4 不需要的功能 227
13.2.5 審查項(xiàng)目目標(biāo) 228
13.2.6 交叉培訓(xùn) 229
13.2.7 審查和生產(chǎn)力 230
13.3 詳細(xì)設(shè)計(jì)文檔 230
13.4 項(xiàng)目第一階段的特殊考慮 231
生存檢查清單:詳細(xì)設(shè)計(jì) 232
譯者有話說 234
第14章 軟件構(gòu)建 235
14.1 源代碼質(zhì)量 236
14.1.1 編程標(biāo)準(zhǔn) 236
14.1.2 項(xiàng)目目標(biāo) 238
14.1.3 簡(jiǎn)潔 239
14.2 軟件集成流程 239
14.2.1 完成意味著徹底完成 240
14.2.2 為其他開發(fā)人員提供穩(wěn)定的基礎(chǔ) 242
14.2.3 每日構(gòu)建和冒煙測(cè)試 242
14.2.4 第一階段的特殊考慮 245
14.2.5 避免過早開發(fā)基礎(chǔ)設(shè)施 246
14.3 跟蹤進(jìn)度 246
14.3.1 收集狀態(tài)信息 247
14.3.2 可見性 247
14.3.3 每周項(xiàng)目跟蹤更新 248
14.3.4 與客戶和上層管理人員溝通 249
14.4 控制變更 249
14.5 保持專注 251
14.6 軟件構(gòu)建是不是只有這些事兒 251
生存檢查清單:軟件構(gòu)建 253
譯者有話說 254
第15章 系統(tǒng)測(cè)試 255
15.1 測(cè)試的哲學(xué) 255
15.2 系統(tǒng)測(cè)試范圍 257
15.3 測(cè)試組對(duì)每日構(gòu)建的支持 257
15.4 開發(fā)人員對(duì)系統(tǒng)測(cè)試的支持 258
15.5 QA策略 259
生存檢查清單:系統(tǒng)測(cè)試 259
譯者有話說 260
第16章 軟件發(fā)布 261
16.1 認(rèn)真對(duì)待發(fā)布 261
16.2 何時(shí)發(fā)布 263
16.2.1 缺陷計(jì)數(shù) 264
16.2.2 統(tǒng)計(jì)每個(gè)缺陷的工作量 265
16.2.3 缺陷密度預(yù)測(cè) 265
16.2.4 缺陷集 267
16.2.5 缺陷播種 268
16.2.6 缺陷建模 270
16.2.7 軟件發(fā)布決定 271
16.2.8 缺陷跟蹤和宣傳 272
16.3 發(fā)布清單 272
16.4 批準(zhǔn)發(fā)布簽字 275
生存檢查清單:軟件發(fā)布 277
譯者有話說 278
第17章 階段結(jié)束 279
17.1 舉行變更委員會(huì)大型會(huì)議 280
17.2 重新校準(zhǔn)估算 280
17.2.1 重新估算生產(chǎn)效率 281
17.2.2 重新估算還是失誤 283
17.3 根據(jù)項(xiàng)目計(jì)劃評(píng)估績(jī)效 284
17.4 項(xiàng)目文件歸檔 285
17.5 更新軟件項(xiàng)目日志 286
生存檢查清單:階段結(jié)束 287
譯者有話說 288
第Ⅳ部分 項(xiàng)目完成
第18章 項(xiàng)目歷史 291
18.1 收集項(xiàng)目數(shù)據(jù) 291
18.1.1 項(xiàng)目回顧會(huì)議 292
18.1.2 項(xiàng)目回顧調(diào)查問卷 292
18.2 軟件項(xiàng)目歷史文檔 293
18.3 為未來項(xiàng)目準(zhǔn)備項(xiàng)目歷史結(jié)論 295
18.4 分發(fā)軟件項(xiàng)目歷史副本 296
生存檢查清單:項(xiàng)目歷史 296
譯者有話說 297
第19章 項(xiàng)目生存急救包 299
19.1 NASA成功法則 299
19.1.1 項(xiàng)目取得成功的關(guān)鍵 300
19.1.2 絕對(duì)不做的事情 302
19.2 其他項(xiàng)目生存資源 303
19.2.1 書籍 304
19.2.2 互聯(lián)網(wǎng)資源 307
結(jié)語 309
參考文獻(xiàn) 310
軟件項(xiàng)目術(shù)語表 311
軟件開發(fā)的藝術(shù)
詳細(xì)目錄
第Ⅰ部分 軟件焦油坑
第1 章 與恐龍搏斗 3
譯者有話說 ? 6
第2 章 假黃金 7
移動(dòng)巨石 8
巨石和軟件 10
邊做邊改的編程模式 11
注重質(zhì)量 15
銀彈造成的假象 17
軟件不軟 19
如何識(shí)別假黃金 21
譯者有話說 ? 22
第3 章 貨物崇拜與軟件工程 25
軟件開發(fā)的效仿者 26
貨物崇拜式的軟件工程 28
真正的辯論 28
譯者有話說 ? 30
第4 章 軟件工程不是計(jì)算機(jī)科學(xué) 31
是與應(yīng)該是 32
工程與科學(xué) 33
拋開表面,審視實(shí)質(zhì) 35
正確的問題 38
譯者有話說 ? 38
第5 章 軟件工程知識(shí)體系 41
本質(zhì)性與附屬性 42
定義穩(wěn)定核心 44
軟件工程知識(shí)體系 47
樹立里程碑 52
譯者有話說 ? 53
第6 章 軟件新世界 55
職業(yè)定義 57
探索軟件工程職業(yè) 58
穿越赫拉克勒斯神柱 64
譯者有話說 ? 65
第Ⅱ部分 個(gè)人專業(yè)化
第7 章 人盡其才 69
MBTI 人格測(cè)試 70
軟件開發(fā)人員的MBTI 測(cè)試結(jié)果 71
偉大設(shè)計(jì)師的人格特征 73
全面和絕對(duì)的承諾 75
軟件人口統(tǒng)計(jì) 77
教育 79
工作前景 80
編程高手和問題成員 82
關(guān)注人性 83
譯者有話說 ? 84
第8 章 提高軟件意識(shí)水平 87
軟件意識(shí)分級(jí) 88
對(duì)癥下藥 90
你有經(jīng)驗(yàn)嗎 91
譯者有話說 ? 92
第9 章 建設(shè)軟件社區(qū) 93
譯者有話說 ? 97
第10 章 建筑師和木匠 99
職稱分級(jí) 99
職業(yè)專業(yè)化 101
團(tuán)隊(duì)專業(yè)化 104
時(shí)間將會(huì)給出答案 105
譯者有話說 ? 105
第11 章 經(jīng)驗(yàn)是寫作的基礎(chǔ) 107
譯者有話說 ? 112
第Ⅲ部分 軟件組織專業(yè)化
第12 章 軟件淘金熱 115
軟件淘金熱 116
后淘金熱時(shí)代的發(fā)展 118
淘金經(jīng)濟(jì)學(xué)的思維和不解 120
向上擴(kuò)展和向下擴(kuò)展 121
回到淘金熱 122
譯者有話說 ? 123
第13 章 優(yōu)秀軟件實(shí)踐案例 125
實(shí)際狀況 126
軟件實(shí)踐改進(jìn)后的收益 127
不同方法的投資回報(bào)率 130
了解軟件估計(jì) 131
改進(jìn)軟件帶來的間接效益 132
最佳的規(guī)模經(jīng)濟(jì) 133
軟件組織的挑戰(zhàn) 134
邁出關(guān)鍵的一步 135
10 個(gè)棘手的問題 135
譯者有話說 ? 136
第14 章 托勒密推理 139
SW-CMM 概述 140
提高成熟度級(jí)別 142
可以處理的所有風(fēng)險(xiǎn) 144
哪些人在用SW-CMM 145
完美兼顧軟件開發(fā) 146
認(rèn)真的承諾 148
組織評(píng)級(jí) 148
形式和本質(zhì) 150
譯者有話說 ? 151
第15 章 量化人員因素 153
人員因素 153
低效率開發(fā)人員 155
具體工作環(huán)境 157
工作動(dòng)機(jī) 157
資深員工的價(jià)值 159
重要的關(guān)注點(diǎn) 159
譯者有話說 ? 160
第16 章 Construx 專業(yè)發(fā)展體系 161
Construx 知識(shí)領(lǐng)域 163
能力水平 164
專業(yè)發(fā)展階梯等級(jí) 166
職業(yè)發(fā)展階梯 168
不同能力水平的CKA 要求 171
專業(yè)發(fā)展階梯的經(jīng)驗(yàn)教訓(xùn) 175
專業(yè)發(fā)展階梯的優(yōu)勢(shì) 179
推廣Construx 專業(yè)發(fā)展階梯 180
譯者有話說 ? 181
第Ⅳ部分 行業(yè)專業(yè)化
第17 章 專業(yè)工程 185
我們需要工程 186
工程與藝術(shù) 187
工程學(xué)科的成熟過程 190
軟件開發(fā)的科學(xué) 192
軟件工程的責(zé)任 194
譯者有話說 ? 194
第18 章 軟件工程歷練 197
專業(yè)工程師的發(fā)展 201
第一步 202
學(xué)術(shù)認(rèn)證 204
軟件工程教育的差異 205
繼續(xù)教育 207
一些觀點(diǎn) 208
譯者有話說 ? 209
第19 章 證書的意義 211
認(rèn)證 211
許可證 213
軟件工程師可以獲得許可證嗎 215
許可證制度好嗎 218
許可證的起步 221
獲得證書的優(yōu)勢(shì) 223
獲得證書 225
三條路徑 225
鐵戒指的意義 228
譯者有話說 ? 228
第20 章 職業(yè)道德準(zhǔn)則 231
軟件工程師的道德準(zhǔn)則 232
道德準(zhǔn)則的必要性 235
學(xué)習(xí)不能停的時(shí)代 238
譯者有話說 ? 238
第21 章 慧眼識(shí)珠 241
為什么需要技術(shù)轉(zhuǎn)化 242
創(chuàng)新的傳播 243
鴻溝 245
一些棘手的問題 246
風(fēng)險(xiǎn)在哪里 248
分級(jí)推廣代理 250
站在巨人的肩上 253
譯者有話說 ? 254