為了確保軟件質(zhì)量和提高產(chǎn)品競爭力,軟件組織需要規(guī)范軟件開發(fā)過程、實施軟件過程管理。軟件過程管理可以為快速開發(fā)高質(zhì)量軟件、有效地維護(hù)軟件運(yùn)行等各類活動提供指導(dǎo)性框架、實施方法和最佳實踐。
全書共分為10章,全面闡述軟件過程管理的各個方面。首先說明了軟件過程規(guī)范、成熟度及其相關(guān)的概念和理論,包括軟件過程標(biāo)準(zhǔn)體系。然后,在此基礎(chǔ)上,深入討論軟件過程的組織管理、需求管理、項目管理、質(zhì)量管理、技術(shù)管理和集成管理等流程、方法和實踐,并進(jìn)一步探討軟件過程評估和改進(jìn)的框架、模型和實施細(xì)節(jié),最后,通過具體的應(yīng)用實踐對軟件過程管理做全方位的闡釋。
本書內(nèi)容豐富、實用,并提供了大量的實例,內(nèi)容涉及到軟件過程管理工作的各個層次。本書可作為高等學(xué)校的計算機(jī)軟件專業(yè)和相關(guān)專業(yè)的教材,也適合軟件企業(yè)中各類管理和軟件工程技術(shù)人員的學(xué)習(xí)。
前言
近10年來,軟件過程越來越成為人們關(guān)注的焦點,它正在打破過去人們已經(jīng)習(xí)慣的面向任務(wù)的思維方式,逐漸加強(qiáng)面向過程的思考,軟件開發(fā)和維護(hù)的運(yùn)作以過程為中心的方式正在進(jìn)行。正如軟件工程領(lǐng)域領(lǐng)袖級人物、能力成熟度模型(CMM)奠基人瓦茨·漢弗萊(Watts Humphrey)所說,要解決軟件危機(jī),首要任務(wù)是把軟件活動視作可控的、可度量的和可改進(jìn)的過程。
其實,通過下面這個“七人分粥”寓意的小故事,就很清楚地說明了軟件過程的重要性。
有7個人曾經(jīng)住在一起,每天分一大桶粥。要命的是,粥每天都不夠吃。
(1) 一開始,指定一人負(fù)責(zé)分粥事宜,很快大家發(fā)現(xiàn),這個人為自己分的粥最多最好,于是推選出一個道德高尚的人出來分粥。強(qiáng)權(quán)就會產(chǎn)生腐敗,大家開始挖空心思去討好他,搞得整個小團(tuán)體烏煙瘴氣,顯然這個方法不行。
(2) 指定一個人分粥和一個人監(jiān)督,起初比較公平,但到后來分粥的人與監(jiān)督的人從權(quán)力制約走向權(quán)力合作,于是只有這兩個人能吃飽,這種方法也失敗了。
(3) 誰也信不過,干脆大家輪流主持分粥,每人一天。雖然看起來平等了,但是,每人在一周中只有1天吃得飽,其余6天都吃不飽,而且每天粥還有剩的,這種方法造成資源浪費。
(4) 民主選舉一個3人分粥委員會和一個4人監(jiān)督委員會,實行集體領(lǐng)導(dǎo),公平是做到了。但是,監(jiān)督委員會經(jīng)常提出各種議案,分粥委員會據(jù)理力爭,等粥分完時,粥早就涼了,此方法效率太低。
(5) 最后想出來一個方法——每個人輪流值日分粥,但分粥的那個人要最后一個領(lǐng)粥。令人驚奇的是,結(jié)果7只碗里的粥每次都是一樣多,就像用科學(xué)儀器量過一樣。因為,每個主持分粥的人都認(rèn)識到,如果每只碗里的粥不相同,他無疑將拿到那份最少的。
同樣是7個人,不同的流程和方法,就會造成迥然不同的結(jié)果,包括效率、成本上的差異。從這個故事可以看出,有什么流程,就有什么結(jié)果,流程決定了結(jié)果。
業(yè)務(wù)流程重組(BPR)是另外一個例子,許多企業(yè)通過業(yè)務(wù)重組拯救了自己或從經(jīng)營業(yè)績的低谷走出來。業(yè)務(wù)流程重組,就是改變過去純目標(biāo)管理的思想,強(qiáng)調(diào)管理過程的重要性,實現(xiàn)從職能管理到面向業(yè)務(wù)流程管理的轉(zhuǎn)變。業(yè)務(wù)流程重組注重整體流程的優(yōu)化,確定了“組織為流程而定,而不是流程為組織而定”的指導(dǎo)思想,充分發(fā)揮每個人在整個業(yè)務(wù)流程中的作用。
軟件過程管理體現(xiàn)在過程模型、規(guī)范、問題處理方法和具體實踐等一系列內(nèi)容之上,但首先體現(xiàn)在組織的文化中,即建立過程管理的先進(jìn)理念。
(1) 以客戶為導(dǎo)向、以過程為中心。
(2) 好的過程就能產(chǎn)生好的產(chǎn)品。
(3) 尊重流程,自上而下,依賴流程。
(4) 只關(guān)注質(zhì)量過程而不是質(zhì)量結(jié)果。
過程管理的先進(jìn)文化一旦在組織中建立起來,其他問題就迎刃而解。軟件過程管理存在的最大障礙可能不在究竟用什么過程模型或過程管理系統(tǒng),而是在于軟件企業(yè)自身傳統(tǒng)的管理理念和思維方式,樹立和保持企業(yè)全體人員的正確的、先進(jìn)的理念,比推廣一個管理工具要難得多。所以,軟件過程管理的關(guān)鍵是建立正確的過程管理文化。
在當(dāng)今互聯(lián)網(wǎng)蓬勃發(fā)展的時代,軟件企業(yè)面臨著巨大的挑戰(zhàn)。顧客需求瞬息萬變、全球性競爭環(huán)境和技術(shù)創(chuàng)新不斷加速等,導(dǎo)致產(chǎn)品生命周期不斷縮短、商業(yè)模式不穩(wěn)定,軟件過程管理必須適應(yīng)這種變化。CMM(能力成熟度模型)沒有幾年前那么火熱而開始受到了一些冷落,敏捷過程管理越來越受到推崇。同時,IBMRational的統(tǒng)一過程(RUP)管理和微軟公司的解決方案框架(MSF)在保持其核心內(nèi)容的前提下,也在不斷進(jìn)行調(diào)整,加入新的內(nèi)容,以適應(yīng)軟件商業(yè)模式和開發(fā)模式的變化。所以,從這個意義上說,沒有一成不變的軟件過程管理模式,也沒有放之四海而皆準(zhǔn)的、通用的軟件過程管理模式。軟件過程管理模式應(yīng)該是在不斷發(fā)展的,就每個具體的軟件組織和企業(yè),應(yīng)該選擇適合自己的過程管理模式,并且也可能不只是選擇一種模式,而是選擇多種模式,以一種模式為主,對其他模式兼收并蓄,形成更有效的軟件過程自定義模式。
本書正是從上述基本思想出發(fā),來討論軟件過程管理,以期對讀者及其所在的軟件組織有更大的啟發(fā)和幫助。
全書共10章,全面介紹了軟件過程管理的各個方面,包括軟件過程規(guī)范、軟件過程的組織管理、項目管理、質(zhì)量管理和需求管理等,最后介紹了軟件過程評估和改進(jìn)、軟件過程管理實例。
第1章介紹了軟件過程規(guī)范的內(nèi)容、影響和作用,全面闡述了軟件生命周期的過程需求和過程標(biāo)準(zhǔn)體系。最后介紹了基于UML、IDEF3、Agent以及SOA等各種方法的軟件過程建模。
第2章相繼介紹了軟件過程不成熟的特點、軟件過程成熟的標(biāo)準(zhǔn)、能力成熟度模型(CMM/ CMMI)的基本內(nèi)容、系統(tǒng)工程能力模型和集成化產(chǎn)品開發(fā)模型。并就過程成熟度級別及其特征、可視性和過程能力等展開討論,包括CMM/CMMI過程域。最后介紹了軟件過程文化、環(huán)境和過程框架等。
第3章軟件過程組織管理的描述,包括組織過程焦點、過程定義、過程剪裁等。著重討論了PSP和TSP過程框架,包括工作流程、計劃、設(shè)計和實現(xiàn)等具體內(nèi)容。
第4章軟件過程的需求管理,主要介紹了軟件需求工程、需求開發(fā)和管理的模型、需求管理工作流程、需求獲取的過程和方法、需求定義過程和需求的確認(rèn)、跟蹤和變更控制。
第5章描述了軟件過程的技術(shù)架構(gòu)及其層次、內(nèi)容等,重點討論了軟件過程的資源管理、技術(shù)路線、問題解決的系統(tǒng)方法,包括原因分析和缺陷分析、決策分析與決定、技術(shù)解決計劃的建立和實施、知識傳遞和各類過程管理的技術(shù)工具等。
第6章介紹了項目啟動和項目實施過程需要解決的各種問題。主要內(nèi)容包括了項目的配置管理、風(fēng)險分析、資源和成本估算、項目跟蹤等。
第7章說明了質(zhì)量控制的重要性,也介紹了控制軟件質(zhì)量的方法和手段。通過本章的學(xué)習(xí)可以基本掌握軟件評審的方法和技術(shù),以及軟件缺陷的分析和有效移除。
第8章軟件過程的集成管理,主要介紹了項目的集成管理流程。重點內(nèi)容包括產(chǎn)品集成的過程管理、集成產(chǎn)品開發(fā)模式、產(chǎn)品及周期優(yōu)化方法、IPD過程框架模式以及市場過程管理、流程重整、產(chǎn)品重整和新產(chǎn)品開發(fā)等。
第9章首先闡述了軟件過程評估和改進(jìn)的基本思想和方法,然后相繼介紹了各種常用的評估和改進(jìn)模型,如ISO/IEC 15504、Bootstrap、Trillium和CMM/CMMI的評估體系以及質(zhì)量改進(jìn)范例、IDEAL模型、Raytheon方法以及6 Sigma方法等過程改進(jìn)模型和方法。
第10章通過具體實例進(jìn)一步闡述了軟件過程的管理,介紹了IBMRational 業(yè)務(wù)驅(qū)動開發(fā)的RUP、微軟公司MSF、敏捷過程管理、面向構(gòu)件的軟件過程和軟件過程的自定義體系。
每一章的最后都有本章的小結(jié)和思考題,以幫助讀者更好理解每一章的內(nèi)容。
本書特別重視理論與實踐相結(jié)合,使讀者既能領(lǐng)會基本原理,又能掌握原理的實際應(yīng)用。因此,它既適合軟件公司中的軟件工程師和管理人員閱讀,也適合軟件質(zhì)量管理的專業(yè)人員和實踐人員。同時,本書很適合作為計算機(jī)軟件、軟件工程學(xué)科大中專學(xué)校的教材。
全書由朱少民主編、審稿和定稿。第1、2、5、8、9、10章由朱少民編寫,第3、4、6、7章由左智編寫。感謝作者的家人、作者所在的網(wǎng)迅(WebEx)公司的大力支持,特別感謝清華大學(xué)出版社丁嶺主任所提供的合作機(jī)會,來填補(bǔ)目前圖書市場在“軟件過程管理”教材方面的空白。
由于水平和時間的限制,本書不可避免會出現(xiàn)一些錯誤、遺漏以及中英文術(shù)語不一致的地方,請讀者見諒并懇請?zhí)岢鰧氋F意見。
作者
2006年10月
目錄
第1章軟件過程規(guī)范
1.1軟件過程
1.1.1過程
1.1.2軟件過程的分類和組成
1.1.3軟件過程定義的層次性
1.2過程規(guī)范
1.2.1什么是過程規(guī)范
1.2.2過程規(guī)范的內(nèi)容和示例
1.2.3過程規(guī)范的影響和作用
1.3軟件生命周期的過程需求
1.3.1軟件工程過程
1.3.2軟件支持過程
1.3.3軟件管理過程
1.3.4軟件組織過程
1.3.5客戶供應(yīng)商過程
1.4軟件生命周期標(biāo)準(zhǔn)
1.4.1ISO/IEC標(biāo)準(zhǔn)體系
1.4.2IEEE標(biāo)準(zhǔn)體系
1.4.3標(biāo)準(zhǔn)體系的全貌圖
1.5軟件過程建模
1.5.1軟件過程模型
1.5.2基于UML的過程建模
1.5.3基于IDEF3的過程建模
1.5.4基于Agent的軟件過程建模
1.5.5基于SOA的軟件過程模型
1.6小結(jié)
1.7習(xí)題
第2章軟件過程成熟度
2.1過程成熟度標(biāo)準(zhǔn)
2.1.1軟件過程不成熟的特點
2.1.2軟件過程成熟的標(biāo)準(zhǔn)
2.2能力成熟度模型概述
2.2.1CMM介紹
2.2.2系統(tǒng)工程能力模型
2.2.3集成化產(chǎn)品開發(fā)模型
2.2.4CMMI的建立和目標(biāo)
2.3過程成熟度級別
2.3.1成熟度等級的行為特征
2.3.2理解成熟度等級
2.3.3成熟度等級的過程特征
2.3.4CMMI過程域
2.3.5CMM和CMMI過程域的比較分析
2.4軟件過程的可視性
2.5過程能力和性能預(yù)測
2.6軟件過程框架
2.6.1軟件過程環(huán)境和過程框架
2.6.2軟件過程文化
2.6.3PSP/TSP和CMM組成的軟件過程框架
2.7小結(jié)
2.8習(xí)題
第3章軟件過程的組織管理
3.1組織過程焦點
3.1.1組織過程焦點的基礎(chǔ)
3.1.2組織過程焦點的活動
3.1.3軟件過程焦點的評估
3.2組織過程定義
3.2.1軟件過程定義基礎(chǔ)
3.2.2剪裁標(biāo)準(zhǔn)軟件過程的指南和準(zhǔn)則
3.3PSP過程框架和成熟度模型
3.3.1PSP原則和思想
3.3.2PSP過程框架
3.3.3PSP成熟度模型
3.4PSP設(shè)計與實踐
3.4.1PSP0/PSP0.1——個體度量過程
3.4.2PSP1/PSP1.1——個體計劃過程
3.4.3PSP2/PSP2.1——個體質(zhì)量管理過程
3.4.4PSP3——個體循環(huán)過程
3.5TSP的結(jié)構(gòu)和啟動過程
3.5.1TSP的原則和思想
3.5.2TSP結(jié)構(gòu)
3.5.3TSP啟動過程
3.6TSP工作流程
3.6.1策略和計劃
3.6.2需求
3.6.3設(shè)計和實現(xiàn)
3.6.4測試和后期維護(hù)
3.7小結(jié)
3.8習(xí)題
第4章軟件過程的需求管理
4.1需求管理的模型和流程
4.1.1軟件需求工程概述
4.1.2需求過程系統(tǒng)模型
4.2需求開發(fā)
4.2.1需求獲取的過程和方法
4.2.2基于用例的需求獲取和分析
4.2.3需求定義
4.3需求管理
4.3.1需求確認(rèn)
4.3.2需求跟蹤
4.3.3需求變更控制
4.4小結(jié)
4.5習(xí)題
第5章軟件過程的技術(shù)管理
5.1軟件過程的技術(shù)架構(gòu)
5.1.1過程技術(shù)架構(gòu)的層次和內(nèi)容
5.1.2軟件過程資源的管理
5.2軟件過程的問題分析和決策方法
5.2.1過程問題解決的系統(tǒng)方法
5.2.2原因分析和缺陷分析
5.2.3決策分析與決定
5.3軟件過程的技術(shù)路線
5.3.1軟件項目過程的技術(shù)解決流程
5.3.2技術(shù)解決計劃的建立和實施
5.3.3開發(fā)設(shè)計
5.3.4編程和單元測試
5.3.5驗證、確認(rèn)與測試
5.4知識傳遞
5.5軟件過程管理工具
5.5.1需求管理工具
5.5.2面向?qū)ο蟮姆治鲈O(shè)計工具
5.5.3配置管理和變更管理工具
5.6小結(jié)
5.7習(xí)題
第6章軟件過程的項目管理
6.1軟件配置管理
6.1.1配置管理過程
6.1.2基線控制
6.1.3版本控制
6.1.4變更控制
6.2項目估算和資源管理
6.2.1規(guī)模度量
6.2.2成本估算
6.2.3資源管理
6.3項目風(fēng)險評估
6.3.1風(fēng)險識別
6.3.2風(fēng)險分析和評估
6.4制定項目計劃
6.4.1工作分解結(jié)構(gòu)表(WBS)
6.4.2日程和人員安排
6.5項目跟蹤和監(jiān)督
6.5.1項目跟蹤的重要性
6.5.2項目過程的跟蹤和控制
6.6小結(jié)
6.7習(xí)題
第7章軟件過程的質(zhì)量管理
7.1質(zhì)量管理概述
7.2軟件質(zhì)量方針和計劃
7.2.1軟件質(zhì)量方針
7.2.2質(zhì)量計劃
7.3軟件評審過程和方法
7.3.1角色和責(zé)任
7.3.2軟件評審過程
7.3.3軟件評審方法
7.4缺陷分析和預(yù)防
7.4.1缺陷分析
7.4.2魚骨圖
7.4.3缺陷預(yù)防
7.5質(zhì)量度量
7.5.1度量要素
7.5.2基于缺陷的質(zhì)量度量
7.6PSP過程質(zhì)量管理
7.6.1過程質(zhì)量度量
7.6.2缺陷移除和預(yù)防
7.7小結(jié)
7.8習(xí)題
第8章軟件過程的集成管理
8.1集成項目管理
8.1.1項目過程的集成管理
8.1.2集成管理流程
8.2集成項目的合成計劃
8.2.1合成項目計劃
8.2.2合成項目計劃的管理
8.2.3合成項目計劃的實施
8.2.4組間協(xié)調(diào)
8.3產(chǎn)品集成的過程管理
8.3.1軟件產(chǎn)品工程
8.3.2產(chǎn)品集成的管理流程
8.3.3軟件產(chǎn)品工程的實踐
8.4集成產(chǎn)品開發(fā)模式
8.4.1IPD產(chǎn)生的背景
8.4.2產(chǎn)品及周期優(yōu)化方法
8.4.3IPD核心思想
8.4.4IPD的過程框架模式
8.5IPD方法應(yīng)用和實踐
8.5.1IPD的方法體系
8.5.2IPD的方法啟動和建立
8.5.3市場過程管理
8.5.4流程重整
8.5.5產(chǎn)品重整
8.5.6新產(chǎn)品開發(fā)
8.6小結(jié)
8.7習(xí)題
第9章軟件過程的評估和改進(jìn)
9.1過程模型的剪裁
9.1.1軟件開發(fā)組織的類型
9.1.2CMMI表示方法
9.1.3模型剪裁的用途
9.1.4連續(xù)式表示模型的剪裁
9.2軟件過程度量
9.2.1過程度量的內(nèi)容
9.2.2過程度量的流程
9.2.3過程度量的方法
9.2.4過程度量技術(shù)
9.2.5過程能力度量
9.2.6軟件過程生產(chǎn)率的度量
9.3過程評估參考模型
9.3.1ISO/IEC 15504評估模型
9.3.2Bootstrap評估模型
9.3.3Trillium評估模型
9.3.4CMM/CMMI評估體系
9.4過程評估
9.4.1軟件過程評估的目標(biāo)和期望
9.4.2軟件過程評估的內(nèi)容和范圍
9.4.3軟件過程評估的方式和類型
9.4.4軟件過程評估的方法
9.5過程改進(jìn)的模型和方法
9.5.1質(zhì)量改進(jìn)范例
9.5.2過程改進(jìn)的IDEAL模型
9.5.3過程改進(jìn)的Raytheon方法
9.5.4過程改進(jìn)的6 Sigma方法
9.6組織和技術(shù)革新
9.7軟件過程改進(jìn)的實施
9.7.1過程改進(jìn)的原則和策略
9.7.2過程改進(jìn)的組織支持
9.7.3軟件過程改進(jìn)計劃
9.7.4過程改進(jìn)的具體實施步驟
9.7.5軟件過程改進(jìn)的自動化實現(xiàn)
9.8小結(jié)
9.9習(xí)題
第10章軟件過程的管理實踐
10.1IBMRational業(yè)務(wù)驅(qū)動開發(fā)的過程管理
10.1.1RUP的迭代過程
10.1.2提高過程的適應(yīng)性
10.1.3需求開發(fā)和質(zhì)量改進(jìn)
10.1.4架構(gòu)設(shè)計和組件復(fù)用
10.1.5跨團(tuán)隊協(xié)作
10.1.6過程實施的最佳實踐
10.2微軟公司的軟件開發(fā)過程模式
10.2.1MSF的過程模型
10.2.2MSF的團(tuán)隊模型
10.2.3MSF過程模型的特點和原則
10.2.4MSF過程模型的應(yīng)用
10.3敏捷模型的軟件過程管理
10.3.1敏捷方法的過程模型
10.3.2敏捷過程的最佳實踐
10.4面向構(gòu)件的軟件過程
10.4.1面向構(gòu)件軟件過程的思想
10.4.2面向構(gòu)件軟件過程的階段劃分
10.5軟件過程的自定義體系
10.5.1過程模式的對比分析
10.5.2自我定義的理想管理過程
10.6小結(jié)
10.7習(xí)題
附錄A軟件過程規(guī)范示例
A.1總則
A.2項目管理過程規(guī)范
A.2.1項目立項與計劃
A.2.2項目實施
A.2.3項目結(jié)束
A.3開發(fā)過程規(guī)范
A.3.1過程總述
A.3.2需求分析階段
A.3.3系統(tǒng)架構(gòu)設(shè)計階段
A.3.4細(xì)化設(shè)計階段
A.3.5編碼和單元測試
A.3.6系統(tǒng)集成與集成測試
A.3.7系統(tǒng)測試
A.3.8驗收測試與安裝
A.3.9維護(hù)
A.4需求變更管理過程規(guī)范
A.4.1過程總述
A.4.2過程規(guī)范
A.5配置管理過程規(guī)范
A.5.1配置管理的目標(biāo)
A.5.2配置管理過程規(guī)范
A.6附件
附錄BCMMI術(shù)語
附錄C
參考文獻(xiàn)