簡介
軟體過程(Software Process)是指一套關於項目的階段、狀態、方法、技術和開發、維護軟體的人員以及相關Artifacts(計畫、文檔、模型、編碼、測試、手冊等)組成。目前有三種方法:UP(the unified process),The OPEN Process,OOSP(The
Object-Oriented Software Process)。軟體過程(Software Procedure)是指
軟體生存周期所涉及的一系列相關過程。過程是活動的集合;活動是任務的集合;任務要起著把輸入進行加工然後輸出的作用。活動的執行可以是順序的、重複的、並行的、嵌套的或者是有條件地引發的。
軟體過程可概括為三類:基本過程類、支持過程類和組織過程類。基本過程類包括獲取過程、供應過程、開發過程、運作過程,維護過程和管理過程。支持過程類包括文檔過程、
配置管理過程、質量保證過程、驗證過程、確認過程、聯合評審過程、審計過程以及問題解決過程。組織過程類包括基礎設施過程、改進過程以及培訓過程。
軟體過程主要針對軟體生產和管理進行研究。為了獲得滿足工程目標的軟體,不僅涉及工程開發,而且還涉及工程支持和工程管理。對於一個特定的項目,可以通過剪裁過程定義所需的活動和任務,並可使活動並發執行。與軟體有關的單位,根據需要和目標,可採用不同的過程、活動和任務。
軟體過程是指軟體整個生命周期,從需求獲取,需求分析,設計,實現,測試,發布和維護一個過程模型。一個軟體過程定義了軟體開發中採用的方法,但軟體過程還包含該過程中套用的技術——技術方法和自動化工具。過程定義一個框架,為有效交付軟體工程技術,這個框架必須創建。軟體過程構成了軟體項目管理控制的基礎,並且創建了一個環境以便於技術方法的採用、工作產品(模型、文檔、報告、表格等)的產生、里程碑的創建、質量的保證、正常變更的正確管理。
作用
有效的軟體過程可以提高組織的生產能力:
■理解軟體開發的基本原則,可以幫我們做出明智的決定;
■可以標準化你的工作,提高軟體的可重用性和Team間的協作;
■我們所採用的這種機制本身是不斷提高的,我們可以跟上潮流,使自己不斷接收新的、最好的軟體開發經驗;
有效的軟體過程可以改善我們對軟體的維護:
■有效地定義如何管理需求變更,在未來的版本中恰當分配變更部分,使之平滑過渡;
■首先在具體操作和相關支持中定義如何平滑地改造軟體,並且這種具體操作和支持是可實施的;不可實施的軟體過程將很快被束之高閣;
為什麼要採用軟體過程?歸根結底,形勢所逼!
條件
成熟等級
初始級
在初始級,企業一般不具備穩定的軟體開發與維護的環境。常常在遇到問題的時候,就放棄原定的計畫而只專注於編程與測試。處於這一等級的企業,成功與否在很大程度上決定於有傑出的項目經理與經驗豐富的開發團隊。因此,能否僱請到及保有能幹的員工成了關鍵問題。項目成功與否非常不確定。雖然產品一般來說是可用的,但是往往有超經費與不能按期完成的問題。
可重複級
在這一級,建立了管理軟體項目的政策以及為貫徹執行這些政策而定的措施。基於過往的項目的經驗來計畫與管理新的項目。企業實行了基本的管理控制。符合實際的項目承諾是基於以往項目以及新項目的具體要求而作出的。項目經理不斷監視成本、進度和產品功能,及時發現及解決問題以便實現所作的各項承諾。
通過具體地實施這一級的各個關鍵過程領域的要求,企業實現了過程的規範化、穩定化。因而,曾經取得過的成功成為可重複達到的目標。
定義級
在這一級,有關
軟體工程與管理工程的一個特定的、面對整個企業的軟體開發與維護的過程的檔案將被制訂出來。同時,這些過程是集成到一個協調的整體。這就稱為企業的標準軟體過程。
這些標準的過程是用於幫助管理人員與一般成員工作得更有效率。如果有適當的需要,也可以加以修改。在這個把過程標準化的努力當中,企業開發出有效的軟體工程的各種實踐活動。
同時,一個在整個企業內施行的培訓方案將確保工作人員與管理人員都具備他們所需要的知識與技能。
非常重要的一點是,項目小組要根據該項目的特點去改編企業的標準軟體過程來制訂出為本項目而定義的過程。
一個定義得很清楚的過程應當包括:準備妥當的判據,輸入,完成工作的標準和步驟,審核的方法,輸出和完成的判據。因為過程被定義得很清楚,因此管理層就能對所有項目的技術過程有透徹的了解。
定量管理級
在這一級,企業對產品與過程建立起定量的質量目標,同時在過程中加入規定得很清楚的連續的
度量。作為企業的度量方案,要對所有項目的重要的過程活動進行生產率和質量> 一個企業範圍的資料庫被用於收集與分析來自各項目的過程的數據。這些度量建立起了一個評價項目的過程與產品的定量的依據。項目小組可以通過縮小他們的效能表現的偏差使之處於可接受的定量界限之內,從而達到對過程與產品進行控制的目的。
因為過程是穩定的和經過度量,所以在有意外情況發生時,企業能夠很快辨別出特殊的原因並加以處理
最佳化級
在這個等級,整個企業將會把重點放在對過程進行不斷的最佳化。企業會採取主動去找出過程的弱點與長處,以達到預防缺陷的目標。同時,分析有關過程的有效性的資料,作出對新技術的成本與收益的分析,以及提出對過程進行修改的建議。整個企業都致力於探索最佳
軟體工程實踐的創新。
項目小組分析引起缺陷的原因,對過程進行評鑑與改進,以便預防已發生的缺陷再度發生。同時,也把從中學到的經驗教訓傳授給其他項目。
降低浪費與消耗也是這個等級的一個重點。
處於這一等級的企業的軟體過程能力可被歸納為不斷的
改進與
最佳化。它們以兩種形式進行。一種是逐漸地提升現存過程,另一種是對技術與方法的創新。雖然在其他的能力成熟度等級之中,這些活動也可能發生,但是在最佳化級,技術與過程的改進是作為常規的工作一樣,有計畫地在管理之下實行的。
關鍵過程
初始級
(Level1: Initial)(無關鍵過程區域)
可重複級
■
需求管理(Requirements Management)
需求管理的目的是建立和維護用戶和軟體項目間的關於該軟體如何實現用戶需求的共識。
需求管理包括:
b.核查該軟體項目的計畫,活動和正在開發中的產品以確保它們是與分配該給軟體項目的需求一致。
■
軟體項目計畫(Software Project Planning)
軟體計畫的目的是建立合理的計畫用作軟體開發與軟體項目控制。
軟體計畫包含:
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.確保那些不符的問題得到處理。
軟體結構配置管理包括:
a.確定開發中的軟體產品在某一特定時刻的結構配置。
b.控制結構配置的組份的變更。
c.從結構配置庫中去製作開發的軟體產品。
d.貫穿軟體生命周期,維持維軟體產品
基線的完整性。
定義級
■企業對過程的重視(Organization Process Focus)
企業對過程的重視的目的是建立和維護對企業的軟體過程的理解和協調企業的件工程過程的改進活動。
企業對過程的重視包括:
a.評估企業和項目的軟體過程。
b.建立起一個計畫去改進軟體過程。
c.對建立、維護、改進和使用整個企業內共有的軟體過程的活動進行協調。
■企業過程定義(Organization Process Definition)
企業過程定義的目的是建立與維護一套可用的軟體過程資源去改進整個企業的程過程效果及為企業的積累性的長期收益提供一個堅實的基礎。
企業過程定義所建立的軟體過程資源包括:
a.一套企業的標準軟體工程過程。
c.關於如何剪裁企業標準的軟體過程以適應具體項目需要的原則和指導方針。
d.企業的軟體測量結果資料庫。
e.企業的與軟體過程有關的檔案資料庫。
■企業的培訓方案(Organization Training Program)
企業的培訓計畫的目的是增進工作人員的技能和知識,使他們能實質地和高效地擔當其軟體角色。
企業的培訓計畫包含:
a.找出什麼是企業的軟體培訓需要。
b.取得與提供所需的培訓。
■
集成化的
軟體管理(Integrated Software Management)
集成軟體管理的目的是把
軟體工程與管理集成為一個連貫涵接的、詳細定義了、基於企業標準軟體過程而剪裁出來的軟體過程。
集成軟體管理包括:
a.使用企業的軟體過程財富,並對之作出貢獻。
b.基於企業標準軟體過程而剪裁出詳細定義了的軟體過程。
c.積極主動地使用這個定義了的軟體過程。
d.積極主動地對軟體的風險進行管理。
■軟體產品工程(Software product Engineering)
軟體產品工程的目的是始終如一地執行明確定義了的、集成了所有軟體項目的術活動的工程過程,去實質地和高效率地製造正確的、穩定的軟體開發產品。
軟體產品工程包含:
a.按照項目的軟體過程,執行工程的各項任務去規定,設計,製品滿足其產品技術需求。
■項目間的協調(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)
企業過程與技術創新的目的是找出那些能夠在一定程度上改進企業的軟體過程而有助於達到企業改進軟體過程的目標的過程與技術上的改進。
企業過程與技術創新包括:
b. 收集與評價軟體過程改進的建議。
c. 找出與評價潛在的軟體過程和技術的創新。
d. 選擇在全企業展開改革與創新的候選項目。
■企業改進開展(Organization Improvement Deployment)
企業改進的開展的目的是通過把改進轉變為一種系統性的行為方式去持續地和計量地改進企業的軟體過程。
企業改進的開展包括:
b. 選擇要進行開展的軟體改進項目。
c. 開展改進。
d. 測量改進的效果。
從整體來說軟體能力成熟度級別從低到高的變化代表了企業的生產活動由高風險低效率到高質量、高生產率的進展。
這兒要注意的一點是每個能力成熟級別的關鍵過程區域是累加到上一級去的,例如在第三級時就要滿足所有第二級與第三級的關鍵過程領域的目標。
如果要用簡單的一句話來表達從一級到高一級所需要的努力的話,我們可以有:
從一級到二級的轉化:規範化過程
從二級到三級的轉化:標準化、穩定的過程
從三級到四級的轉化:可預測的過程
從四級到五級的轉化:繼續不斷地改進過程
配置管理
軟體過程的配置管理包括以下管理行為:對某個
配置項的功能和物理特性進行識別和編檔;對這些特徵的變動進行控制;對變動和事實進行記錄、匯報;驗證需求計畫的實現。
偏差(Deviation):
針對開發中的計畫、標準、規劃等的明顯偏離和變動。
同業複審(Peer Review):
軟體項目開發成員的同行遵循某一規則對項目產品所作的檢查,用於發現缺陷所在。
風險管理(Risk Management):
運用風險機率方法分析評估項目開發中設計的各類風險,包括風險識別,風險分析,風險等級排序和風險控制。
軟體工程過程組(Software Engineering Process Group):
協助開發機構對所採納的軟體過程進行制定、分析、監控和改進的專家組。它應直接想機構的最高領導層負責。
指軟體開發所涉及的全過程,包括從產品設計到產品終結的整個周期,一般分為概念階段,需求階段,設計階段,實施階段,測試階段,安裝調試階段,運行維護階段,終止階段。
軟體需求(Software Requirement):
用戶為實現某種目標或解決某種問題要求軟體給予滿足的條件。