




已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第14章 軟體工程的實踐 本章大綱 l14.1 能力成熟度整合模型 (Capability Maturity Model Integration) l14.2 CMMI 的架構(gòu) l14.3 極限編程(eXtreme Programming) l14.4 XP 的十二項實踐 能力成熟度整合模型(1/6) lCMMI的歷史 l1984年在美國國防部的支持下,卡內(nèi)基美隆大學(xué)(Carnegie Mellon University, CMU)成立了軟體工程學(xué)院(SEI);於 1986年11月,在Mitre公司的協(xié)助下,開始發(fā)展一套幫助軟體 業(yè)者,改善軟體流程的流程成熟度架構(gòu)(process maturity framework),並於1991年發(fā)表了CMM模型。 l歷經(jīng)近20年的沿革,SEI不斷地延展CMM意涵與適用性,如今 的CMMI模式包含了系統(tǒng)工程(Systems Engineering, SE)、 軟體工程(Software Engineering, SW)、整合產(chǎn)品與流程發(fā) 展(Integrated Product and Process Development, IPPD), 以及委外作業(yè)(Supplier Sourcing, SS)四個專業(yè)領(lǐng)域。 能力成熟度整合模型(2/6) lCMMI的簡史: l1984:成立Software Engineering Institute(SEI)。 l1987:發(fā)表CMM技術(shù)報告初稿。 l1989:發(fā)表第一本有關(guān)軟體成熟度架構(gòu)的著作。 l1991:發(fā)表CMM 1.0。 l1993/1994:發(fā)表CMM 1.1以及PSP(Personal Software Process)。 l1995:發(fā)表各種專門化的CMM,包括針對軟體採購( SA-CMM)、系統(tǒng)工程(SE-CMM)、整合產(chǎn)品開發(fā)( IPD-CMM),以及人力資源管理(People-CMM)。 能力成熟度整合模型(3/6) l1996:TSP(Team Software Process)發(fā)表。 l1997:新的品質(zhì)管理標(biāo)準(zhǔn),如EIA/IS 731出現(xiàn);開始 CMMI整合計畫。 l2000:發(fā)表CMMI 1.0。 l2001:發(fā)表CMMI 1.1。 l2006:發(fā)表CMMI 1.2。 能力成熟度整合模型(4/6) lCMMI的內(nèi)涵與精神 lCMMI本質(zhì)上是一個專案管理模型,關(guān)心的是軟體 流程,而非流程背後的軟體產(chǎn)品。其結(jié)構(gòu)化的專案 管理模型,可有系統(tǒng)地改善組織的(軟體開發(fā))流 程。 l圖14.1可說明CMMI的觀點。 圖14.1 軟體流程與品質(zhì)之關(guān)係 能力成熟度整合模型(5/6) l若要開發(fā)出高效率、高質(zhì)量及低成本的軟體,就必 須從改善軟體生產(chǎn)流程著手。這是CMMI的基本信 仰,認(rèn)為流程的能力,會影響到最終產(chǎn)品的品質(zhì)。 因此,CMM大量借用許多全面品質(zhì)管理(TQM) 與品管架構(gòu),作為改善軟體開發(fā)的基礎(chǔ)。 lCrosby的品質(zhì)管理成熟度矩陣,請參考表14.1。 表14.1 品質(zhì)管理成熟度矩陣 能力成熟度整合模型(6/6) lCMMI流程改善的目標(biāo),是要提升流程的能力;亦即流程本 身能夠產(chǎn)出預(yù)定之結(jié)果的能力。當(dāng)流程能力提升時,軟體 開發(fā)的產(chǎn)出,即變得可預(yù)測或可衡量。 lCMMI定義了一套流程成熟度的評價模型,作為組織改善流 程所參考的標(biāo)準(zhǔn)或目標(biāo)。 lCMMI對於流程改進(jìn)的藍(lán)圖,如圖14.2所示。 lCMMI雖然關(guān)心軟體流程,但是它本身卻並不定義任何流程 ;它只建議你應(yīng)得到什麼結(jié)果(what),卻不指示你該如 何做(how),或者由誰去做(who)。它所包含的,只是 一套共通的流程需求,內(nèi)含最佳的軟體實踐綱領(lǐng)與實用的 知識指引,幫助採用它的組織,按部就班地進(jìn)行流程改善 。 圖14.2 CMMI的流程改善方法: IDEAL Model CMMI的架構(gòu)(1/13) lCMMI的能力成熟度分級 lCMMI提供了一個評定組織對於軟體開發(fā)現(xiàn)狀的架 構(gòu)。若用階層式表述,由低到高可區(qū)分為五個成熟 度層級:初始(initial)、管理(managed)、定 義(defined)、量化管理(quantitatively managed),以及優(yōu)化(optimizing),每一層級 都是上一層級流程改善的基礎(chǔ),如圖14.3所示。 圖14.3 CMMI流程成熟度的五個 階段 CMMI的架構(gòu)(2/13) l初始級的特徵 l組織通常沒有流程,或流程的穩(wěn)定性很差,甚至是混亂 的。 l在這一等級的組織中,所謂的流程能力,只能用於評價 個人,而非組織。 l第一級成熟度組織的特徵包括: 過度承諾的傾向。 在緊急關(guān)頭放棄流程。 無法重複成功經(jīng)驗。 結(jié)果不可預(yù)測。 CMMI的架構(gòu)(3/13) l管理級的特徵 l組織已建立起專案管理的政策與實踐這些政策的程序, 以達(dá)成第二級成熟度所有流程領(lǐng)域的特定目標(biāo)( Specific Goal, SG)與一般性目標(biāo)(Generic Goal, GG )。 l第二級成熟度組織的特徵,是紀(jì)律、可重複的流程,如 : 計畫的安排與進(jìn)度追蹤是穩(wěn)定的。 計畫的進(jìn)行在有效的管控之下。 成功的經(jīng)驗可不斷地重複。 異常狀況發(fā)生時無法有效地反應(yīng)。 CMMI的架構(gòu)(4/13) l定義級的特徵 l組織已達(dá)成第二和第三級成熟度所有流程領(lǐng)域的特定與 通用目標(biāo),對流程已有詳盡的瞭解與說明,並用標(biāo)準(zhǔn)、 程序、工具及方法來表現(xiàn)。 l第三級成熟度組織的特徵是標(biāo)準(zhǔn)、一致化的流程,即: 工程及管理的作業(yè)均已標(biāo)準(zhǔn)化。 組織有足夠的能力因應(yīng)突發(fā)狀況。 CMMI的架構(gòu)(5/13) l量化管理級的特徵 l組織已達(dá)成成熟度第二、第三和第四級所有流程領(lǐng)域的 特定目標(biāo),以及第二和第三級的一般性目標(biāo)。對整體流 程績效有重大影響的子流程,會使用統(tǒng)計或其它量化技 術(shù)來控制這些流程。 l第四級成熟度組織的特徵,是量化、可預(yù)測的流程,如 : 整個流程都可被量測。 組織能夠預(yù)測出可能發(fā)生的異常狀況。 CMMI的架構(gòu)(6/13) l優(yōu)化級的特徵 l組織已達(dá)成成熟度第二至五級所有流程領(lǐng)域的特定目標(biāo) ,以及第二和第三級的一般性目標(biāo)。根據(jù)對流程變異共 同原因的量化瞭解,持續(xù)進(jìn)行流程改善。 l第五級成熟度組織的特徵是持續(xù)改善,如: 整體組織不斷地努力改進(jìn)流程,以避免異常狀況的發(fā)生,最 終改進(jìn)了流程的效能。 CMMI的架構(gòu)(7/13) l流程領(lǐng)域 l所謂流程領(lǐng)域(Process Area, PA)是指一組同屬於某領(lǐng)域 而彼此相關(guān)的實務(wù)(practices)。當(dāng)共同執(zhí)行時,可達(dá)成一 組目標(biāo)(goals),而這些目標(biāo)對該領(lǐng)域的改善是重要的。 l第二級成熟度所涵蓋的流程領(lǐng)域包括: l需求管理。 l專案規(guī)劃。 l專案稽核與控制(project monitoring and control)。 l供應(yīng)商協(xié)議管理(supplier agreement management) 。 l度量與分析(measurement and analysis)。 CMMI的架構(gòu)(8/13) l流程與產(chǎn)品之品質(zhì)保證(process and product quality assurance)。 l構(gòu)型管理。 l第三級成熟度所涵蓋的流程領(lǐng)域包括: l需求發(fā)展(requirement development)。 l技術(shù)解決方案(technical solution)。 l產(chǎn)品整合(product integration)。 l驗證。 l確認(rèn)。 l組織流程專注(organization process focus)。 CMMI的架構(gòu)(9/13) l組織流程定義。 l組織訓(xùn)練(organization training)。 l整合專案管理。 l風(fēng)險管理。 l決策分析與解決方案(decision analysis and resolution ) l組織環(huán)境之整合(organization environment for integration)。 l團(tuán)隊整合(integrated teaming)。 CMMI的架構(gòu)(10/13) l第四級成熟度所要求的流程領(lǐng)域包括: l組織流程績效(organizational process performance) 。 l量化專案管理(quantitative project management)。 l第五級成熟度所要求的流程領(lǐng)域包括: l組織創(chuàng)新與推廣(organizational innovation and deployment)。 l根源分析與化解(causal analysis and resolution)。 l上述這些流程總結(jié)起來,可分別歸屬於軟體開發(fā)的 四個面向:專案管理、支援、工程,以及流程管理 ,其分類明細(xì)如表14.2。 表14.2 流程領(lǐng)域之分類 圖14.4 CMMI流程領(lǐng)域的內(nèi)容 CMMI的架構(gòu)(11/13) l流程領(lǐng)域的描述 lCMMI流程領(lǐng)域之內(nèi)容,依照其重要性,由三種層級之資訊 所組成,分別是必要的(required)、期望的(expected) 與助益的(informative)(如圖14.4)。 l必要的層級所描述之組件,構(gòu)成模型和該流程的改進(jìn)基 礎(chǔ)。 l期望的層級之組件,雖然也是流程改進(jìn)所需要的,但是 允許在某些情況下省略。 l助益的組件構(gòu)成模型的主要部分,為流程改進(jìn)提供了有 用的指導(dǎo),在許多情況下,它會對必要和期望的組件提供進(jìn) 一步說明。 CMMI的架構(gòu)(12/13) lCMMI的兩種模型表示法(如圖14.5 ) l階段(staged)式模型: l特色在於將組織流程的改善區(qū)分為一系列成熟度等級 ;每一等級有一組對應(yīng)的流程領(lǐng)域,指出組織應(yīng)改善 的流程重點。 l階層式表述的優(yōu)點是可以被評鑑,取得外部的認(rèn)可;缺 點則是缺乏彈性,不能量身訂作。 l連續(xù)式模型: l根據(jù)組織當(dāng)時的需要,選擇個別流程加以改善,個別流 程可單獨評價其等級,因此使用上更具彈性,更能適合 客觀的需要。 圖14.5 一個模型、兩種表示法 CMMI的架構(gòu)(13/13) l連續(xù)式模型的好處,是給予組織在流程改進(jìn)時更大的自 主空間,不必受到成熟度等級的嚴(yán)格限制;缺點則是若 缺乏指導(dǎo),組織很可能忽略了關(guān)鍵流程間的相依關(guān)係, 使得片面實施某些流程的改善,缺少其它流程的支撐, 而變成空中樓閣。 l以上兩種表示法(連續(xù)式和階層式),在邏輯上是 等價的,雖然描述的機(jī)制不同,但皆可達(dá)到相同的 改善目的。 極限編程(1/5) l極限編程(XP)雖是一套新的軟體開發(fā)方式,但其具體實踐則來自於 許多早已存在的方法;只是這些原本散落在各處、獨立存在的方法, 經(jīng)由XP用一種有機(jī)的方式加以整合,形成了一種特殊的工作模式。 lXP之所以如此不同,在於它對許多傳統(tǒng)熟知的軟體問題,如時程延誤 、需求誤解、品質(zhì)不佳等,抱持截然不同的看法。 l傳統(tǒng)軟體工程方法為了避免專案後期的高成本,利用各種管理手段, 設(shè)法將錯誤所造成的成本壓縮(如圖14.6(a)),導(dǎo)致的結(jié)果是增加了 流程的負(fù)擔(dān),使得專案的平均資源投入增加(如圖14.6(b))。但是預(yù) 算的壓力與人力資源的限制,又將這些成本向下壓(如圖14.6(c)), 於是最終的結(jié)果又回到原點,導(dǎo)致時程的延遲與成本的上升(如圖 14.6(d))。 圖14.6 採用防堵的品管思維所可 能造成的成本變化 極限編程(2/5) l整體而言,XP是一套輕量級的軟體開發(fā)方法論;刪 除多數(shù)重裝流程所要求、不必要的文件或產(chǎn)出, 認(rèn)為那些只會造成人員的分心,並拖慢軟體開發(fā)速度 。 l面對多變的軟體開發(fā)環(huán)境,強(qiáng)調(diào)適應(yīng)勝於預(yù)測 ;強(qiáng)調(diào)適時、適當(dāng)?shù)模↗ust In Time, JIT)計畫與 設(shè)計,勝於事前詳盡的規(guī)劃與安排。 l認(rèn)為軟體開發(fā)是人與人的合作,強(qiáng)調(diào)人本導(dǎo)向勝於流 程導(dǎo)向;成功的軟體開發(fā)應(yīng)強(qiáng)化人的長處、避免短處 ,突顯人在軟體開發(fā)中的角色。 極限編程(3/5) lXP的核心價值主要有以下四項: l溝通:許多軟體開發(fā)問題,往往是由於開發(fā)者與顧客之間溝 通不順暢所造成的。 l簡單:儘量保持程式的簡單化,只要它能工作即可。不要製 造多餘的編碼(或設(shè)計)庫存;這樣一來,當(dāng)改變來臨 時,所付出的代價最小。 l回饋:透過快速開發(fā)與交付,儘快獲得用戶的回饋,使得開 發(fā)人員能夠確認(rèn)自己的成果,符合使用者的需要。 l勇氣:這是最重要的核心價值。XP強(qiáng)調(diào)要擁抱變化, 包含從用戶來的回饋與設(shè)計的重整;要勇於對自己的程式進(jìn) 行修改,丟掉壞的程式碼。 極限編程(4/5) lXP的理論體系與實踐(如圖14.7) l四項基本原則是: l快速回饋:愈快回饋就愈有用。 l以簡單為假設(shè):拒絕複雜的事前設(shè)計,只在需要時才將 複雜度加上去。 l漸進(jìn)式開發(fā):不要相信一次就能夠成功地完成一個大的 開發(fā)。 l擁抱變化:面對改變時,應(yīng)該接受而非反對。 圖14.7 XP的理論體系 極限編程(5/5) l次要的指導(dǎo)原則包括: l教導(dǎo)學(xué)習(xí)。 l少量的初期投資。 l為勝利而遊戲(play to win)。 l具體實驗。 l開放、誠實的溝通。 l順從人的本性,而不是去對抗它。 l接受責(zé)任。 l視情況調(diào)整。 l輕裝旅行。 l誠實地度量(measurement)。 XP的十二項實踐(1/17) lXP的十二項實踐如表14.3所示,其意涵分述 於後。表14.4 XP的十二項實踐 XP的十二項實踐(2/17) l測試驅(qū)動(test-driven) l測試驅(qū)動是XP的核心思想,強(qiáng)調(diào)先測試,再編碼;亦 即未有程式,先有測試。在編碼開始之前,先將測試案例寫 好,而後進(jìn)行編碼,直至通過所有的測試案例。 l測試先行的好處: l知道哪些地方可能出錯後再來開發(fā)程式,可以讓思考更 周延,避免後來許多不必要的除錯與改正的工夫。 l可用來檢驗簡單設(shè)計是否落實。任何程式功能(或片段 )如果沒有被某個測試用到,就是多餘、不必要的。 l可給予程式開發(fā)一個清楚的圖像或定義。 XP的十二項實踐(3/17) l搭檔編程(pair programming) l搭檔編程的開發(fā)方法,是兩個程式設(shè)計者共用一臺 電腦、一個鍵盤與滑鼠,所有的程式都由兩人共同 創(chuàng)作。搭檔兩人之間的關(guān)係是動態(tài)的,其中個人的 角色可以分別是策略者、執(zhí)行者、驅(qū)動者或夥伴關(guān) 係。 l搭檔編程的優(yōu)點如下: l更有紀(jì)律,避免惰性。 l更好的程式碼:持續(xù)地編碼審查,產(chǎn)生更好的設(shè)計、更 少的臭蟲。 l搭檔的開發(fā)流程更有彈性,能夠應(yīng)付臨時的打岔,一人 處理而另一人繼續(xù)工作。 XP的十二項實踐(4/17) l增進(jìn)士氣:搭檔開發(fā)比個人單打獨鬥更有趣。 l更有信心去增加或修改系統(tǒng),促使軟體測試與程式重構(gòu) (refactoring)的實踐。 l增進(jìn)集體擁有意識:輪換搭檔可提升程式碼為集體所有 的共識。 l教育訓(xùn)練:輪換搭檔可將有用的知識散播給整個團(tuán)隊。 l團(tuán)隊向心力:搭檔可讓人更快熟識彼此。 l可確保XP的編碼標(biāo)準(zhǔn)、原則與實踐的落實。 XP的十二項實踐(5/17) l簡單設(shè)計(simple design) lXP認(rèn)為設(shè)計不是一次性、事前可以完成的工作,因為需求經(jīng) 常變化,為了減少變更所帶來的損失,所以根據(jù)最小投資原則 ,只進(jìn)行最少、必要的系統(tǒng)設(shè)計。 l所謂簡單的程式應(yīng)滿足以下原則: l通過所有測試。 l無重複贅碼。 l能夠清晰地陳述開發(fā)者的意向。 l只包含最少量的程式類別與方法。 l簡單設(shè)計帶來許多優(yōu)點,因為簡單所以易於瞭解,因為容易瞭 解故容易修改。 XP的十二項實踐(6/17) l程式重構(gòu)(program refactoring) l程式重構(gòu)是指在不改變系統(tǒng)行為的前提下,重新調(diào) 整、優(yōu)化系統(tǒng)內(nèi)部的結(jié)構(gòu),以減少複雜度、消除冗 餘、增加靈活性或提高系統(tǒng)的性能。 lXP重視重構(gòu),並認(rèn)為應(yīng)該經(jīng)常進(jìn)行,但也不會為 了重構(gòu)而重構(gòu)。只有當(dāng)系統(tǒng)有需要時,重構(gòu)才會發(fā) 生。通常兩個最可能進(jìn)行重構(gòu)的時間點,一個是某 項系統(tǒng)性能的實現(xiàn)前,一個是該性能實現(xiàn)後。 XP的十二項實踐(7/17) l系統(tǒng)隱喻( system metaphor) lXP利用隱喻來取代事先詳細(xì)的架構(gòu)設(shè)計。隱喻的角色類似 於(系統(tǒng))架構(gòu)的說明,但是缺乏精確的細(xì)節(jié)。 l隱喻給予團(tuán)隊一個共同的圖像,描述既存的系統(tǒng)如何運(yùn)作, 以及未來的發(fā)展方向,包含新元件要以怎樣的形式加入到哪 裡。 l系統(tǒng)隱喻通常包含一些可參照和比較的程式類別與設(shè)計樣版 。 l隱喻不必一定要非常完美;讓每一個人都能瞭解系統(tǒng) 如何組裝與運(yùn)作,是更重要且關(guān)鍵的一件事。 XP的十二項實踐(8/17) l集體擁有( collective ownership) l類似於開源碼(open source)的開發(fā)模式,XP團(tuán) 隊的每位成員都有權(quán)利更改任何程式碼,由全體成 員對所有的程式碼共同負(fù)責(zé)。不過,雖然程式碼歸 全體擁有,但並非意味開發(fā)者可以推委責(zé)任。 lXP的規(guī)則是:誰打破的,誰負(fù)責(zé)修理。開發(fā) 者仍應(yīng)負(fù)責(zé)其程式的正確性與錯誤的修改。 l集體擁有強(qiáng)調(diào)的,是所有人都有責(zé)任。如果某人的 程式碼有誤,而另一個人知道了,就應(yīng)該協(xié)助進(jìn)行 修改。這是一種文化,需要極端(extreme) 的紀(jì)律來落實。 XP的十二項實踐(9/17) l持續(xù)整合(continuous integration) lXP提倡程式在通過單元測試後,一天之中多次進(jìn)行系統(tǒng)整合 ,且隨著需求的改變,不斷地進(jìn)行迴歸測試。 l頻繁整合會使得團(tuán)隊隨時擁有一個最新、穩(wěn)定的版本可以參考 ,簡化了構(gòu)型管理的問題與複雜度。同時任何整合失敗,必定 是由於最後一次修改之程式碼所造成的,所以可立刻進(jìn)行偵錯 。 l持續(xù)整合讓團(tuán)隊得以保持一個穩(wěn)定的開發(fā)速度,避免傳統(tǒng)方法 在走走停停兩個鐘擺之間來回擺盪,以及在最後一刻系統(tǒng)整合 失敗的惡夢。 l頻繁整合使得任何可能造成整合失效的原因變得明顯,讓開發(fā) 人員隨時瞭解他人的進(jìn)展,以及介面溝通的方式。 XP的十二項實踐(10/17) l編碼標(biāo)準(zhǔn)(code standards ) lXP的精神是減少其它不必要的文件,儘量透過軟體 程式本身進(jìn)行溝通。為了達(dá)到這個目的,程式編碼規(guī) 範(fàn)就變得很重要。唯有透過一致性的標(biāo)準(zhǔn),才能降低 溝通與失誤的成本。編碼標(biāo)準(zhǔn)讓程式碼保持一致性, 並且容易閱讀與重構(gòu)。理想的目標(biāo),是讓程式碼看不 出來是由誰撰寫的。 l編碼標(biāo)準(zhǔn)的參考作法: l變數(shù)名稱必須是有意義的。 l名稱的屬性最好與其所代表的動作一致。 l儘量簡短的物件方法。 l短的程式註解(用程式本身而非依靠註解來讓他人瞭解 )。 l儘量利用工具、樣版等來協(xié)助並驗證,以確保標(biāo)準(zhǔn)的落 實。 XP的十二項實踐(11/17) l小型發(fā)布(small release) lXP的核心價值之一是回饋。因此強(qiáng)調(diào)軟體開發(fā)應(yīng) 於很短的週期內(nèi),以遞增方式發(fā)表軟體開發(fā)的結(jié)果 ,從而及時地獲得用戶的回饋。 l小型發(fā)布的辦法,是很快地先開發(fā)出一個簡單、可 以運(yùn)作的系統(tǒng),然後每隔一個短時間循環(huán),發(fā)布一 套新的軟體版本(如圖14.8)。 l小型發(fā)布的另一目的,是便於衡量專案的進(jìn)展。小 型發(fā)布使每個里程碑之間距離縮短,更易於掌握軟 體開發(fā)的真實進(jìn)度,以便於安排當(dāng)下的計畫並控制 風(fēng)險。 圖14.8 XP的小型發(fā)布流程 XP的十二項實踐(12/17) l計劃遊戲(planning game) l由於XP強(qiáng)調(diào)調(diào)適(adaption)勝於預(yù)測( prediction),所以它的專案計畫比傳統(tǒng)輕鬆許多 。不需要在事前確認(rèn)完整的工作計畫,而是透過計 劃遊戲,先產(chǎn)出一個初步規(guī)劃構(gòu)想,然後當(dāng)事情更 清楚時,再逐漸修正它。 lXP採取多階段、多循環(huán)的階段交付開發(fā)策略,所 以其計劃遊戲分為兩種: l發(fā)布計畫(release plan): 其理想的間隔時間長度大約是25個月。 決定哪些需求要在下一次系統(tǒng)發(fā)布之前完成,以及何時實現(xiàn) ,由顧客與開發(fā)者共同商討決定。 XP的十二項實踐(13/17) 發(fā)布計畫的遊戲流程,如圖14.9所示。 l循環(huán)計畫(iteration plan): 其理想的間隔時間是13週。 只有開發(fā)者參加,主要是決定該循環(huán)內(nèi)要完成哪些工作與任 務(wù)分配。 lXP的一個循環(huán),包括四項活動:計劃、設(shè)計、建 構(gòu),以及測試開發(fā)完成的故事。當(dāng)前一循環(huán)結(jié)束時 ,即可進(jìn)行下一循環(huán)的計劃會議。此時,參考前幾 個循環(huán)的平均開發(fā)速度,從計畫的範(fàn)圍裡,挑選適 合的故事,納入下一循環(huán)要開發(fā)的故事清單中,時 間限制大約為13週。 圖14.9 發(fā)布計畫的遊戲流程 XP的十二項實踐(14/17) l一個團(tuán)隊(one team) l一個團(tuán)隊原名為顧客駐點,係要求顧客隨時可以被接觸到 ;亦即顧客應(yīng)在開發(fā)團(tuán)隊旁邊,或者開發(fā)者留在顧客的旁邊, 以便於隨時可以接觸與討論。 l一個團(tuán)隊表明: lXP的成功倚賴良好的團(tuán)隊合作。 l顧客是開發(fā)團(tuán)隊的一部分,而專案的目標(biāo)是共同的責(zé)任。 l開發(fā)是一個橫跨整個團(tuán)隊的對話。 l這是一個彼此合作發(fā)明與溝通的遊戲。 l面對面是最有效的溝通。 XP的十二項實踐(15/17) l團(tuán)隊成員願意用最少的成本、等待與中斷來配合他人。 l最好整個團(tuán)隊在同一地方工作。 l持久步調(diào)(sustainable pace) l持久步調(diào)原名為每週工作40小時,其精神是強(qiáng)調(diào)工作品 質(zhì)與符合人性。所以不加班、不超時工作,是其實踐的一部分 。 l除了人性的理由之外,這項實踐背後其實隱含更深層的意義: l軟體開發(fā)是一場馬拉松比賽,不是短期的衝刺。 l勞累與壓力會降低生產(chǎn)力。 l管理者有責(zé)任設(shè)立合理的工作環(huán)境與專案目標(biāo)。 XP的十二項實踐(16/17) l超時工作是專案出現(xiàn)嚴(yán)重問題的一項徵候,這時該調(diào)整 的是計畫本身。 l團(tuán)隊?wèi)?yīng)該落實執(zhí)行已確認(rèn)的安排。 l各項實踐之互補(bǔ)綜效 lXP的實踐可分為三環(huán),由內(nèi)而外分別是:測試 驅(qū)動、程式重構(gòu)、簡單設(shè)計、搭擋編程、集體 擁有、持續(xù)整合、系統(tǒng)隱喻、編碼標(biāo)準(zhǔn),以及 計劃遊戲、小型發(fā)布、一個團(tuán)隊、持久步調(diào)。這 些實踐彼此之間形成互補(bǔ)的綜效,如圖14.10。 圖14.10 各實踐彼此間之互補(bǔ)綜效 XP的十二項實踐(17/17) l綜合而言,XP代表的是一種輕量級的方法,較少 強(qiáng)調(diào)流程,更多注重人的能力與團(tuán)隊合作;更簡化 的分析與設(shè)計,但更多可執(zhí)行的程式碼;不注重正 式的計畫,但會根據(jù)情況隨時做短期規(guī)劃;不注重 正式的需求文件,更注意的是與顧客的互動與溝通 。 CMMI vs. XP(1/3) lCMMI與XP是目前軟體工程發(fā)展最具代表性的兩個主題,但也是很難 討論的題目;贊成者與反對者都有,並且兩者目前各自都還在繼續(xù)發(fā) 展與改進(jìn)。 lCMMI與XP代表兩種不同的典型;一個強(qiáng)調(diào)管理,而另一個強(qiáng)調(diào)技術(shù) 能力。 l強(qiáng)調(diào)管理者以流程為軟體工程的核心(process-oriented),認(rèn)為專 案成敗決定於流程的好壞,如何提升流程能力因此成為重點。 l強(qiáng)調(diào)技術(shù)者以人為軟體工程的核心(people-oriented),人的能力成 為決定成敗的關(guān)鍵因素。 l這兩者誰是誰非,或者熟輕熟重,是一項值得個人去體會與深思的問 題。 CMMI vs. XP(2/3) lCMMI最根本的問題,是假設(shè)軟體開發(fā)的性質(zhì)類似於製造業(yè),將它 視為系統(tǒng)化、可重複的流程,因而全面採用後者的品管架構(gòu)來指導(dǎo) 前者。但事實上,軟體開發(fā)畢竟在許多地方與製造業(yè)不同(例如, 人的效能與變異性對軟體開發(fā)中所造成的影響,就遠(yuǎn)大於製造業(yè)) ,所以這樣的套用會付出許多額外的成本;除非這項投資可透過後 續(xù)重複性的利用加以回收。 lCMMI的迷思之二,是提升流程的可預(yù)測性並不一定等於提升軟體 的品質(zhì)?;犊刂频乃季S,一般組織為了降低流程上的變數(shù), 以符合CMMI的要求,勢必得犧牲其它東西作為交換。期望好的流 程帶來好的產(chǎn)品,基本上只是一個假設(shè)。因為流程本身仍然要靠人 來監(jiān)督,而執(zhí)行監(jiān)督的人必須有足夠的能力、時間和經(jīng)驗。倘若組 織的配合與支援不夠,或者人力、時間與資源的投入不夠充足,則 兩者之間甚至可能變成負(fù)相關(guān)。 CMMI vs. XP(3/3) lXP假設(shè)專案永遠(yuǎn)處於變動之中無法預(yù)測,所以事前的設(shè)計是無用的 ,事前的規(guī)劃是不必要的,這些思考有其一定的道理,但並非永遠(yuǎn)適 用。 lXP假設(shè)軟體開發(fā)唯一的角色就是程式設(shè)計人人都是程式師。這與 今日社會專業(yè)分工的思想不合。畢竟在軟體開發(fā)團(tuán)隊中,至少需要好 幾種不同的任務(wù)與技能,如溝通與表達(dá)、分析與設(shè)計、程式開發(fā)等。 一般人很難同時擁有數(shù)種專長,這是為何需要專業(yè)分工的原因;分工 可帶來專注,以及工作品質(zhì)與效能的提升。 l再來是管理上的問題。XP的專案協(xié)調(diào)與管理,主要依賴直接的人際 溝通(例如,與顧客交談而知悉其需求)。這樣的模式當(dāng)團(tuán)隊變大、 專案問題變得複雜時,溝通的成本必然升高。 l此外,某些XP實踐的背後也有其假設(shè)。 結(jié)語(1/2) lCMMI有兩種用途,一是用來改善組織的流程能力,一 是用來評鑑。後者之於CMMI要比前者重要得多。傳統(tǒng) 以來,軟體公司的管理一直缺少一套客觀的能力標(biāo)準(zhǔn), 可用以比較或評鑑;而CMMI在推動這件事上,可說非 常成功。 lCMMI當(dāng)然有其問題,不論流程的品質(zhì)再怎麼努力 ,也並不等於產(chǎn)品的品質(zhì)。倘若工程師的能力不足 ,一個很糟的軟體設(shè)計,依然可以通過層層關(guān)卡被交付 到用戶手中。而在這一點上,CMMI完全無能為力,這 是其先天的限制。 lXP或許掌握到真正問題的核心:工程師的能力與素質(zhì) 。所以它將軟體開發(fā)的重心放在人的身上,所有的作 為都朝向支援而非妨礙工程師的生產(chǎn)力。 結(jié)語(2/2) l既然XP的重心落在人的身上,所以XP的實行是有條 件的:人的能力。無論是測試驅(qū)動、簡單設(shè)計、重構(gòu) 或搭檔編程等,實行者都需要具備一定程度的能力與 訓(xùn)練,才能掌握技巧做好工作,尤其是需要具備一定 程度的物件導(dǎo)向設(shè)計與開發(fā)能力。 l軟體開發(fā)是一個持續(xù)溝通與協(xié)商的過程,成功的軟體 專案需要每一方面的配合,以及多面向的知識與技能 。CMMI和XP都是好東西,但是需要知道如何應(yīng)用, 否則專案依然會陷入危險。 1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w- z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4GbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x- A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x- A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w- A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w- z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w- z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x- A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w- A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省初三上冊數(shù)學(xué)試卷
- 肝病病人護(hù)理
- 二三級數(shù)學(xué)試卷
- 德威七年級數(shù)學(xué)試卷
- 肛門癌術(shù)后護(hù)理課件
- 二升四三數(shù)學(xué)試卷
- 肌理畫課件背景介紹
- 2025年天津市衛(wèi)生健康委員會所屬天津市海河醫(yī)院招聘99人筆試歷年專業(yè)考點(難、易錯點)附帶答案詳解
- 高血壓的并發(fā)癥及控制策略
- 給外國人做數(shù)學(xué)試卷
- GB/T 18391.3-2009信息技術(shù)元數(shù)據(jù)注冊系統(tǒng)(MDR)第3部分:注冊系統(tǒng)元模型與基本屬性
- GA/T 935-2011法庭科學(xué)槍彈痕跡檢驗鑒定文書編寫規(guī)范
- 濟(jì)源幼兒園等級及管理辦法
- 房地產(chǎn)開發(fā)全流程培訓(xùn)講義課件
- 湖北省黃石市基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室信息
- DB44-T 2163-2019山地自行車賽場服務(wù) 基本要求-(高清現(xiàn)行)
- DB15T 933-2015 內(nèi)蒙古地區(qū)極端高溫、低溫和降雨標(biāo)準(zhǔn)
- 圍堰施工監(jiān)理實施細(xì)則
- 新概念英語第二冊單詞打印版
- 《世界經(jīng)濟(jì)史》課程教學(xué)大綱
- 小學(xué)語文一到六年級生字表
評論
0/150
提交評論