1. 什么是軟件過程?
軟件過程(Software Process)是指一套關(guān)于項目的階段、狀態(tài)、方法、技術(shù)和開發(fā)、維護軟件的人員以及相關(guān)Artifacts(計劃、文檔、模型、編碼、測試、手冊等)組成。目前有三種方法:UP(the unified process),The OPEN Process,OOSP(The Object-Oriented Software Process)。
軟件過程(Software Procedure)是指軟件生存周期所涉及的一系列相關(guān)過程。過程是活動的集合;活動是任務(wù)的集合;任務(wù)要起著把輸入進行加工然后輸出的作用。活動的執(zhí)行可以是順序的、重復(fù)的、并行的、嵌套的或者是有條件地引發(fā)的。
軟件過程可概括為三類:基本過程類、支持過程類和組織過程類。基本過程類包括獲取過程、供應(yīng)過程、開發(fā)過程、運作過程、維護過程和管理過程。支持過程類包括文檔過程、配置管理過程、質(zhì)量保證過程、驗證過程、確認過程、聯(lián)合評審過程、審計過程以及問題解決過程。組織過程類包括基礎(chǔ)設(shè)施過程、改進過程以及培訓(xùn)過程。
軟件過程主要針對軟件生產(chǎn)和管理進行研究。為了獲得滿足工程目標(biāo)的軟件,不僅涉及工程開發(fā),而且還涉及工程支持和工程管理。對于一個特定的項目,可以通過剪裁過程定義所需的活動和任務(wù),并可使活動并發(fā)執(zhí)行。與軟件有關(guān)的單位,根據(jù)需要和目標(biāo),可采用不同的過程、活動和任務(wù)。
2. 為什么我們需要一個軟件過程?
有效的軟件過程可以提高組織的生產(chǎn)能力:
■理解軟件開發(fā)的基本原則,可以幫我們做出明智的決定;
■可以標(biāo)準(zhǔn)化你的工作,提高軟件的可重用性和Team間的協(xié)作;
■我們所采用的這種機制本身是不斷提高的,我們可以跟上潮流,使自己不斷接收新的,最好的軟件開發(fā)經(jīng)驗;
有效的軟件過程可以改善我們對軟件的維護:
■有效地定義如何管理需求變更,在未來的版本中恰當(dāng)分配變更部分,使之平滑過渡;
■首先在具體操作和相關(guān)支持中定義如何平滑地改造軟件,并且這種具體操作和支持是可實施的;不可實施的軟件過程將很快被束之高閣;
為什么要采用軟件過程?歸根結(jié)蒂,形勢所逼!
3. 實施軟件過程的必要條件
CMM(Capability Maturity Modeling)作出了明確的定義(由The Software Engineering Institute提出 http://www.sei.cmu.edu )
4. 五個成熟等級
第一級:初始級
在初始級,企業(yè)一般不具備穩(wěn)定的軟件開發(fā)與維護的環(huán)境。常常在遇到問題的時候,就放棄原定的計劃而只專注于編程與測試。處于這一等級的企業(yè),成功與否在很大程度上決定于有杰出的項目經(jīng)理與經(jīng)驗豐富的開發(fā)團隊。因此,能否雇請到及保有能干的員工成了關(guān)鍵問題。項目成功與否非常不確定。雖然產(chǎn)品一般來說是可用的,但是往往有超經(jīng)費與不能按期完成的問題。
第二級:可重復(fù)級
在這一級,建立了管理軟件項目的政策以及為貫徹執(zhí)行這些政策而定的措施。基于過往的項目的經(jīng)驗來計劃與管理新的項目。企業(yè)實行了基本的管理控制。符合實際的項目承諾是基于以往項目以及新項目的具體要求而作出的。項目經(jīng)理不斷監(jiān)視成本、進度和產(chǎn)品功能,及時發(fā)現(xiàn)及解決問題以便實現(xiàn)所作的各項承諾。
通過具體地實施這一級的各個關(guān)鍵過程領(lǐng)域的要求,企業(yè)實現(xiàn)了過程的規(guī)范化、穩(wěn)定化。因而,曾經(jīng)取得過的成功成為可重復(fù)達到的目標(biāo)。
第三級:定義級
在這一級,有關(guān)軟件工程與管理工程的一個特定的、面對整個企業(yè)的軟件開發(fā)與維護的過程的文件將被制訂出來。同時,這些過程是集成到一個協(xié)調(diào)的整體。這就稱為企業(yè)的標(biāo)準(zhǔn)軟件過程。
這些標(biāo)準(zhǔn)的過程是用于幫助管理人員與一般成員工作得更有效率。如果有適當(dāng)?shù)男枰?,也可以加以修改。在這個把過程標(biāo)準(zhǔn)化的努力當(dāng)中,企業(yè)開發(fā)出有效的軟件工程的各種實踐活動。
同時,一個在整個企業(yè)內(nèi)施行的培訓(xùn)方案將確保工作人員與管理人員都具備他們所需要的知識與技能。
非常重要的一點是,項目小組要根據(jù)該項目的特點去改編企業(yè)的標(biāo)準(zhǔn)軟件過程來制訂出為本項目而定義的過程。
一個定義得很清楚的過程應(yīng)當(dāng)包括:準(zhǔn)備妥當(dāng)?shù)呐袚?jù),輸入,完成工作的標(biāo)準(zhǔn)和步驟,審核的方法,輸出和完成的判據(jù)。因為過程被定義得很清楚,因此管理層就能對所有項目的技術(shù)過程有透徹的了解。
第四級:定量管理級
在這一級,企業(yè)對產(chǎn)品與過程建立起定量的質(zhì)量目標(biāo),同時在過程中加入規(guī)定得很清楚的連續(xù)的度量。作為企業(yè)的度量方案,要對所有項目的重要的過程活動進行生產(chǎn)率和質(zhì)量的度量。軟件產(chǎn)品因此具有可預(yù)期的高質(zhì)量。
一個企業(yè)范圍的數(shù)據(jù)庫被用于收集與分析來自各項目的過程的數(shù)據(jù)。這些度量建立起了一個評價項目的過程與產(chǎn)品的定量的依據(jù)。項目小組可以通過縮小他們的效能表現(xiàn)的偏差使之處于可接受的定量界限之內(nèi),從而達到對過程與產(chǎn)品進行控制的目的。
因為過程是穩(wěn)定的和經(jīng)過度量,所以在有意外情況發(fā)生時,企業(yè)能夠很快辨別出特殊的原因并加以處理
第五級:(不斷)優(yōu)化級
在這個等級,整個企業(yè)將會把重點放在對過程進行不斷的優(yōu)化。企業(yè)會采取主動去找出過程的弱點與長處,以達到預(yù)防缺陷的目標(biāo)。同時,分析有關(guān)過程的有效性的資料,作出對新技術(shù)的成本與收益的分析,以及提出對過程進行修改的建議。整個企業(yè)都致力于探索最佳軟件工程實踐的創(chuàng)新。
項目小組分析引起缺陷的原因,對過程進行評鑒與改進,以便預(yù)防已發(fā)生的缺陷再度發(fā)生。同時,也把從中學(xué)到的經(jīng)驗教訓(xùn)傳授給其他項目。
降低浪費與消耗也是這個等級的一個重點。
處于這一等級的企業(yè)的軟件過程能力可被歸納為不斷的改進與優(yōu)化。它們以兩種形式進行。一種是逐漸地提升現(xiàn)存過程,另一種是對技術(shù)與方法的創(chuàng)新。雖然在其他的能力成熟度等級之中,這些活動也可能發(fā)生,但是在優(yōu)化級,技術(shù)與過程的改進是作為常規(guī)的工作一樣,有計劃地在管理之下實行的。
5. 關(guān)鍵過程領(lǐng)域
第一級:初始級(Level1: Initial)(無關(guān)鍵過程區(qū)域)
第二級:可重復(fù)級
■需求管理(Requirements Management)
需求管理的目的是建立和維護用戶和軟件項目間的關(guān)于該軟件如何實現(xiàn)用戶需求的共識。
需求管理包括:
a. 建立和維護分配該給軟件項目的需求的基線。
b.核查該軟件項目的計劃,活動和正在開發(fā)中的產(chǎn)品以確保它們是與分配該給軟件項目的需求一致。
■軟件項目計劃(Software Project Planning)
軟件計劃的目的是建立合理的計劃用作軟件開發(fā)與軟件項目控制。
軟件計劃包含:
a.選擇一種軟件生命周期
b.建立一個開發(fā)工作的分解構(gòu)造
c.對與開發(fā)工作有關(guān)的、重要的計劃參數(shù)進行估計。
d.識別軟件項目的風(fēng)險。
e.作出必要的承諾。
f.制訂軟件開發(fā)工作的計劃。
■軟件項目控制(Software Project Control)
軟件項目控制的目的是為軟件項目的過程提供足夠的能見度,從而可以在執(zhí)行過程中發(fā)生對計劃的嚴重偏離時能夠采取適當(dāng)?shù)母袆印?
軟件項目控制包括:
a.追蹤軟件項目的進展與表現(xiàn),從而與所作的估計、承諾和計劃作出對比。
b.追蹤軟件項目的風(fēng)險。
c.在發(fā)生對計劃的嚴重偏離時采取更正行動。
■軟件獲取管理(Software Acuisition Management)
軟件獲取管理的目的是有效地管理從軟件項目外部來源獲取軟件。
軟件獲取管理包括:
a.找出軟件項目對取得外部軟件的需要。
b.識別和選擇供應(yīng)者。
c.與供應(yīng)者達成協(xié)議。
d.處理與供應(yīng)者之間的關(guān)系。
e.收取軟件項目所需的外部軟件。
f.安排對所取得的外部軟件的維護與支持。
■軟件質(zhì)量保證(Software Quality Assurance)
軟件質(zhì)量確保的目的是為了客觀地核實軟件項目的實施行動與開發(fā)中的產(chǎn)品遵從于對應(yīng)的需求、過程描述、標(biāo)準(zhǔn)及規(guī)程。
軟件質(zhì)量確保包括:
a.客觀地核實軟件項目的實施行動與開發(fā)中的產(chǎn)品遵從于對應(yīng)的需求、過程描述、標(biāo)準(zhǔn)及規(guī)程。
b.找出及記錄所發(fā)現(xiàn)的不一致的問題。
c.向項目成員與經(jīng)理提供反饋。
d.確保那些不符的問題得到處理。
■軟件組配管理(Software Configuration Management)
軟件結(jié)構(gòu)配置管理(SCM)的目的是貫穿軟件生命周期,建立和維持軟件項目的產(chǎn)品完整性。
軟件結(jié)構(gòu)配置管理包括:
a.確定開發(fā)中的軟件產(chǎn)品在某一特定時刻的結(jié)構(gòu)配置。
b.控制結(jié)構(gòu)配置的組份的變更。
c.從結(jié)構(gòu)配置庫中去制作開發(fā)的軟件產(chǎn)品。
d.貫穿軟件生命周期,維持維軟件產(chǎn)品基線的完整性。
第三級:定義級
■企業(yè)對過程的重視(Organization Process Focus)
企業(yè)對過程的重視的目的是建立和維護對企業(yè)的軟件過程的理解和協(xié)調(diào)企業(yè)的件工程過程的改進活動。
企業(yè)對過程的重視包括:
a.評估企業(yè)和項目的軟件過程。
b.建立起一個計劃去改進軟件過程。
c.對建立、維護、改進和使用整個企業(yè)內(nèi)共有的軟件過程的活動進行協(xié)調(diào)。
■企業(yè)過程定義(Organization Process Definition)
企業(yè)過程定義的目的是建立與維護一套可用的軟件過程資源去改進整個企業(yè)的程過程效果及為企業(yè)的積累性的長期收益提供一個堅實的基礎(chǔ)。
企業(yè)過程定義所建立的軟件過程資源包括:
a.一套企業(yè)的標(biāo)準(zhǔn)軟件工程過程。
b.對每一種經(jīng)審核批準(zhǔn)用于工程項目的軟件生命周期模型的描述。
c.關(guān)于如何剪裁企業(yè)標(biāo)準(zhǔn)的軟件過程以適應(yīng)具體項目需要的原則和指導(dǎo)方針。
d.企業(yè)的軟件測量結(jié)果數(shù)據(jù)庫。
e.企業(yè)的與軟件過程有關(guān)的文件資料庫。
■企業(yè)的培訓(xùn)方案(Organization Training Program)
企業(yè)的培訓(xùn)計劃的目的是增進工作人員的技能和知識,使他們能實質(zhì)地和高效地擔(dān)當(dāng)其軟件角色。
企業(yè)的培訓(xùn)計劃包含:
a.找出什么是企業(yè)的軟件培訓(xùn)需要。
b.取得與提供所需的培訓(xùn)。
■集成化的軟件管理(Integrated Software Management)
集成軟件管理的目的是把軟件工程與管理集成為一個連貫涵接的、詳細定義了、基于企業(yè)標(biāo)準(zhǔn)軟件過程而剪裁出來的軟件過程。
集成軟件管理包括:
a.使用企業(yè)的軟件過程財富,并對之作出貢獻。
b.基于企業(yè)標(biāo)準(zhǔn)軟件過程而剪裁出詳細定義了的軟件過程。
c.積極主動地使用這個定義了的軟件過程。
d.積極主動地對軟件的風(fēng)險進行管理。
■軟件產(chǎn)品工程(Software product Engineering)
軟件產(chǎn)品工程的目的是始終如一地執(zhí)行明確定義了的、集成了所有軟件項目的術(shù)活動的工程過程,去實質(zhì)地和高效率地制造正確的、穩(wěn)定的軟件開發(fā)產(chǎn)品。
軟件產(chǎn)品工程包含:
a.按照項目的軟件過程,執(zhí)行工程的各項任務(wù)去規(guī)定,設(shè)計,制造,遞交,和維護軟件。
b.檢驗與證實軟件產(chǎn)品滿足其產(chǎn)品技術(shù)需求。
■項目間的協(xié)調(diào)(Project Interface Coordination)
項目界面協(xié)調(diào)的目的是確保軟件工程人員主動地與企業(yè)內(nèi)的其他功能部門交流協(xié)調(diào)和合作,以便更好地滿足客戶的需求。這些功能部門包括技術(shù)的功能(例如,系統(tǒng)測試),支持功能(例如,記錄),和組上的功能(例如,培訓(xùn)和合同)。
項目界面協(xié)調(diào)牽涉到經(jīng)埋與員工,其內(nèi)容包含:
a. 與項目內(nèi)其他功能部門一道處理系統(tǒng)要求,計劃,目標(biāo),困難問題和風(fēng)險。
b. 確定與維持對其他涉及項目的功能部門的承諾。
c. 辨明、跟蹤和解決項目內(nèi)功能間配合的行動與問題。
■交換審核(Peer Reviews)
交互審核的目的是盡早地和有效地從開發(fā)中的軟件產(chǎn)品中除去缺陷。一個重要的必然結(jié)果是對軟件過程和開發(fā)中的軟件產(chǎn)品有一個更好的理解,從能夠預(yù)防缺陷產(chǎn)生。
交互審核是由軟件寫作者的同事使用既定的辦法去對開發(fā)中的軟件產(chǎn)品進行檢查來找出缺陷與需要作出更改的地方。
交互審核辦法的例子包括:檢查,結(jié)構(gòu)化走通和積極審核。
第四級:定量管理級(Level4: Quatitative Management)
■企業(yè)軟件資產(chǎn)共通性(Organization Software Asset Commonality)
企業(yè)軟件資源共通性的目的是找出企業(yè)軟件產(chǎn)品之間的共通性,以便在成本,量和生命周期等方面取得收益。
企業(yè)軟件資源共通性包含:
a. 與企業(yè)的其他功能部門合作去定義出共同軟件資源的技術(shù)要求,從而使項目與企業(yè)的戰(zhàn)略經(jīng)營目標(biāo)保持一致。
b. 建立與維護一套能用于各個項目的開發(fā)與產(chǎn)品維護的共同軟件資源。
c. 協(xié)調(diào)對企業(yè)內(nèi)所有項目的共同軟件資源的部署,以便取得在成本、質(zhì)量和生命周期等方面的得益。
■企業(yè)過程表現(xiàn)(Organization Process Performance)
企業(yè)過程效能的目的是建立和維護用于重要的過程和產(chǎn)品特性的測量、數(shù)據(jù)與分折技術(shù),去支持對企業(yè)與項目的軟件過程進行運用統(tǒng)計學(xué)方法的管理。
企業(yè)過程效能包括:
a. 定義出表征企業(yè)軟件過程效能的各種測量項目和與之關(guān)聯(lián)的過程效能模型。
b. 從各個軟件項目收集這些過程效能的測量結(jié)果。
c. 使用這些測量數(shù)據(jù)來表征企業(yè)的標(biāo)準(zhǔn)軟件過程。
d. 使用這些測量數(shù)據(jù)來為整個企業(yè)建立軟件過程效能模型。
■統(tǒng)計法過程管理(Statistical Process Management)
統(tǒng)計法的過程管理的目的是使所選擇到的所有次級過程穩(wěn)定化及透徹掌握它們的能力,從而達到統(tǒng)計法意義上的產(chǎn)品質(zhì)量及過程效能的目標(biāo)。
統(tǒng)計法的過程管理包括:
a. 建立產(chǎn)品質(zhì)量及過程效能的目標(biāo)。
b. 選擇項目的設(shè)定過程中的一些次級過程來進行運用統(tǒng)計法的管理。
c. 找出、測量和分析那些(被選中的)次過程的關(guān)鍵產(chǎn)品和過程的屬性持征。
d. 確定每個次過程的關(guān)鍵的屬性特征的自然界限。
e. 使得(選中的)次過程成為可預(yù)測的。
f. 測量與分析(選中的)次過程的過程效能。
g. 把產(chǎn)品質(zhì)量和過程效能的測量結(jié)果與所定的目標(biāo)進行比對以便確定相關(guān)過程的能力。
第五級:(不斷)優(yōu)化級(Level: Optimizing)
■缺陷預(yù)防(Defect Prevention)
缺陷預(yù)防的目的是找出缺陷和其他問題產(chǎn)生的共同原因。采取行動去預(yù)防它們再次發(fā)生,或者采取措施去克服那些產(chǎn)生不及格的過程效能的原因。
缺陷預(yù)防包括:
a. 分析過去產(chǎn)生的缺陷和其他的問題。
b. 采取特定的行動來預(yù)防那些類型的缺陷與問題在將來再次出現(xiàn)。
c. 采取持定的改進行動去糾正那些產(chǎn)生不及迅程格效能的共同原因。
■企業(yè)過程與技術(shù)創(chuàng)新(Organization Process and Technology Innovation)
企業(yè)過程與技術(shù)創(chuàng)新的目的是找出那些能夠在一定程度上改進企業(yè)的軟件過程而有助于達到企業(yè)改進軟件過程的目標(biāo)的過程與技術(shù)上的改進。
企業(yè)過程與技術(shù)創(chuàng)新包括:
a. 建立和維護企業(yè)的定量法的軟件過程改進目標(biāo)。
b. 收集與評價軟件過程改進的建議。
c. 找出與評價潛在的軟件過程和技術(shù)的創(chuàng)新。
d. 選擇在全企業(yè)展開改革與創(chuàng)新的候選項目。
■企業(yè)改進開展(Organization Improvement Deployment)
企業(yè)改進的開展的目的是通過把改進轉(zhuǎn)變?yōu)橐环N系統(tǒng)性的行為方式去持續(xù)地和計量地改進企業(yè)的軟件過程。
企業(yè)改進的開展包括:
a. 評價軟件過程改進的候選項目。
b. 選擇要進行開展的軟件改進項目。
c. 開展改進。
d. 測量改進的效果。
從整體來說軟件能力成熟度級別從低到高的變化代表了企業(yè)的生產(chǎn)活動由高風(fēng)險低效率到高質(zhì)量、高生產(chǎn)率的進展。
這兒要注意的一點是每個能力成熟級別的關(guān)鍵過程區(qū)域是累加到上一級去的,例如在第三級時就要滿足所有第二級與第三級的關(guān)鍵過程領(lǐng)域的目標(biāo)。
如果要用簡單的一句話來表達從一級到高一級所需要的努力的話,我們可以有:
從一級到二級的轉(zhuǎn)化:規(guī)范化過程
從二級到三級的轉(zhuǎn)化:標(biāo)準(zhǔn)化、穩(wěn)定的過程
從三級到四級的轉(zhuǎn)化:可預(yù)測的過程
從四級到五級的轉(zhuǎn)化:繼續(xù)不斷地改進過程
jwebee
我的個人網(wǎng)站