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