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