一、引言1,、過程是活動的集合,,軟件過程是與軟件開發(fā)與維護相關的活動的集合。 2,、過程管理是制定過程和對過程活動進行動態(tài)監(jiān)管,。軟件過程管理的目的是最大限度地提高軟件產(chǎn)品的質量和軟件開發(fā)過程的生產(chǎn)率。 3,、軟件過程管理的途徑:軟件過程模型→ 組織標準軟件過程→ 項目定義軟件過程→ 過程實施與監(jiān)控→ 軟件過程改進,。 4、過程的分類:產(chǎn)品實現(xiàn)過程,;管理過程,;支持過程。在軟件過程中,,產(chǎn)品實現(xiàn)過程被稱為“工程過程”,。
軟件工程( Software Engineering) l 指導計算機軟件開發(fā)和維護的工程科學。 l 旨在確定軟件開發(fā)技術規(guī)范,,其中軟件開發(fā)技術包含:軟件開發(fā)方法學,、軟件工具和軟件工程環(huán)境。 l 應用計算機科學(用于構造模型預算法),、工程科學(用于制定規(guī)范,、設計模型、評估成本及權衡利弊)和管理科學(用于計劃,、資源,、質量、成本等管理)的基本原理,。 l 與其他工程的區(qū)別:產(chǎn)品是程序,。 l 特點:規(guī)范化、文檔化,。
l 軟件過程是指軟件開發(fā)人員開發(fā)和維護軟件以及相關產(chǎn)品(如項目計劃,、設計文檔、代碼,、測試用例和顧客手冊)的一套行為,、方法、實踐以及變化過程,。 l 軟件過程管理的重要前提是:軟件產(chǎn)品質量的好壞主要取決于開發(fā)和維護該產(chǎn)品所使用的軟件過程質量,。 l 有效的軟件過程可將人員、工具和方法進行有機結合。
二,、軟件與軟件產(chǎn)業(yè)的發(fā)展過程軟件過程管理 l 對軟件開發(fā)全過程規(guī)范化及標準化的管理,。 l 軟件過程管理技術包括:軟件管理學和軟件工程經(jīng)濟學。 l 目前,,國外普遍采用的軟件過程管理方法是:美國卡內基·梅隆大學軟件工程研究所(SEI) 提出的軟件能力成熟度模型(SW-CMM),。 l 目的:研究如何有效地對軟件開發(fā)項目進行管理,以便按照進度和預算完成軟件項目計劃,,實現(xiàn)預期的經(jīng)濟效益和社會效益,。 l 包括:成本估計、進度計劃,、人員組織,、質量保證等。
三,、軟件危機及其原因軟件成本高軟件特殊性 l 軟件開發(fā)的進度難于控制 l 估計軟件工作量很困難 l 軟件質量難于保證 l 修正維護軟件困難
軟件項目出現(xiàn)的典型問題 l 缺少用戶的參與 l 需求及其說明不完整或經(jīng)常變更 l 項目得不到高層管理者的支持 l 技術能力不足或對新技術不熟悉 l 資源投入不足 l 預期要求過高 l 項目目標不清晰 l 人員配合存在問題
四,、過程及其要素l 軟件開發(fā)項目是在規(guī)定的成本和時間內,開發(fā)和提交滿足客戶某些需求的軟件產(chǎn)品,。 l 項目的三個基本特征是:成本,、進度和質量(代表軟件在多大程度上滿足客戶的要求)。 l 一個項目的成功與否在于它是否達到或者超過成本,、進度或者質量的預期目標,。 l 項目失敗的原因可能有:不正確的估計、松散的需求管理,、薄弱的項目管理,、不正確的風險管理以及不好的工程解決方案等,這些原因都可以歸結為過程失敗(用于執(zhí)行軟件項目的過程),。
軟件項目失控的主要原因是: 過程失敗 l 目標不明確 l 計劃差 l 沒有項目管理方法 風險管理 l 使用新技術 l 沒有足夠的人員
軟件過程: l 軟件過程是指軟件開發(fā)人員開發(fā)和維護軟件以及相關產(chǎn)品(如項目計劃,、設計文檔、代碼,、測試用例和顧客手冊)的一套行為、方法,、實踐以及變化過程,。 l 軟件過程管理的重要前提是:軟件產(chǎn)品質量的好壞主要取決于開發(fā)和維護該產(chǎn)品所使用的軟件過程質量。 l 有效的軟件過程可將人員,、工具和方法進行有機結合,。 l 對于機構而言,包含多個項目,,而實現(xiàn)機構的高質量和生產(chǎn)率,,依賴于三個因素:過程、人和技術,。 l 其中過程不僅僅是一系列步驟,,還包含了機構所積累的經(jīng)驗,,包含了機構可以從已成功的項目中所學到的一切。 l 通過以過程的形式獲取成功的經(jīng)驗,,并在將來的項目中使用這些過程,,機構就可以確保項目的持續(xù)成功。 l 過程在有效地控制機構發(fā)展方面充當了關鍵角色,。
一個組織的生產(chǎn)率及其產(chǎn)品的質量取決于所采用的過程的質量,。——Watts S.Humphrey
不成熟過程和成熟過程的比較
不同成熟度的過程管理特征
基本術語 軟件過程能力software process capability:描述了遵循某軟件過程可能達到的預期結果的范圍。 軟件過程效能(性能)software process performance:表示遵循一個過程所達到的實際結果的一種度量,。 由于項目要求和客觀環(huán)境的差異,,軟件過程性能不可能充分反映軟件過程的整體能力,即軟件過程能力受限于它的環(huán)境,。 軟件過程成熟度:是指針對具體的軟件過程進行明確定義,、管理、測量,、控制以及有效的程度,。表明軟件工程能力增長的潛力,表明機構軟件過程的豐富性以及其應用于項目的一致性,。
過程管理原則(五個) 過程的穩(wěn)定性: 片面強調個性的過程不可能進行有序而持久改進,。 過程的明確性: 組織必須識別復雜過程的關鍵步驟,將關注焦點放在對其改進上,。 過程和產(chǎn)品檢驗: 過程檢驗和產(chǎn)品檢驗同樣重要,。 系統(tǒng)方法: 孤立地解決問題將導致過程惡化。 過程支持: 不要期望過程能通過自身獲得改進,。
五,、CMM與軟件產(chǎn)業(yè)軟件產(chǎn)業(yè)與CMM的提出 l 專門針對軟件產(chǎn)業(yè)制定的CMM認證體系(SW-CMM) l 世界上軟件發(fā)展的水平參差不齊。 n 美國、歐洲,、日本和印度等國家:水平高,、質量好、規(guī)模大 n 我國進展顯著,,發(fā)展速度相對落后,。
六、CMM的發(fā)展過程什么是CMM l CMM概況 l 用于解決“軟件危機” l 將工程的概念,、原理,、技術和方法引入了軟件系統(tǒng)開發(fā),在一定程度上解決了軟件生產(chǎn)過程中遇到的問題,。軟件工程成為軟件產(chǎn)業(yè)的重要分支,。 l 管理是影響軟件研發(fā)項目全局的因素,而技術只影響局部,。 l 1987年9月,,美國卡內基-梅隆大學軟件工程研究所發(fā)布了軟件過程成熟度框架,并提供了軟件過程評估和軟件能力評價兩種評估方法和軟件成熟度提問單,。 l 4年之后,,SEI將軟件過程成熟度框架進化為軟件能力成熟度模型(Capability Maturity Model For Software,簡稱SW-CMM),。 l 自CMM 1.1發(fā)布起,,SEI相繼研制并發(fā)布了“人員能力成熟度模型”(P-CMM),“軟件訪問能力成熟度模型”(SA-CMM)和“系統(tǒng)工程能力成熟度模型”(SE-CMM)及其支持文件,。 l 經(jīng)過試運行,,產(chǎn)生了把SW-CMM, P-CMM, SA-CMM和SE-CMM合并在一起的想法,于是開始了名為“綜合能力成熟度模型”(英文縮寫為CMMI)的一個綜合性模型投入研制,。 l 圍繞以CMM為基礎的軟件過程評估和軟件能力評價,,建立了從審核員培訓到提供評估和評價的一整套服務體系。
CMM的理論基礎 “丹明鏈” “全面質量管理” “質量管理顧問公司(質量研究所)”
SEI給CMM下的定義 對于軟件組織在定義,、實現(xiàn),、度量、控制和改善其軟件過程的各個發(fā)展階段的描述,。這個模型便于確定軟件組織的現(xiàn)有過程能力和查找出軟件質量及過程改進方面的最關鍵的問題,,從而為選擇過程改進戰(zhàn)略提供指南。
CMM的發(fā)展方向 CMM的主要特點 l 基于實際實踐 l 最好的反映了實踐的情況 l 反映了軟件過程改進和軟件過程評估執(zhí)行人員的需求 l 形成文檔 l 文檔可以公開使用 CMM是活的文檔,,在穩(wěn)定性需求和不斷的過程改進之間提供適當和實際的平衡點。
l CMM為軟件企業(yè)的過程能力提供了一個階梯式的進化框架,,它基于過去所有軟件工程成果的過程改善的框架,,吸取了以往軟件工程的經(jīng)驗教訓。 l 它指明了一個成熟的軟件組織在軟件開發(fā)方面需要管理的那些主要工作、這些工作之間的關系,、以及以怎樣的先后次序,,一步一步的做好這些工作使軟件組織走向成熟。是目前國際上最流行也是最實用的軟件生產(chǎn)過程標準,。
CMM的用途包括:軟件過程改進;軟件過程評估;軟件組織開發(fā)能力評價.但它不是特定的軟件開發(fā)技術,。 設計CMM,就是為了指導軟件企業(yè)通過判斷當前自身的過程成熟度,,提出幾個對軟件質量和過程提高最為關鍵的問題,,以此來選擇過程的提高策略。 CMM是一個模型,,人稱“事實上的標準”
為什么我們需要學習CMM 對軟件企業(yè)而言: l 規(guī)范軟件開發(fā)過程及其管理 l 規(guī)范市場競爭 l 幫助企業(yè)進行內部軟件過程改進 l 增加企業(yè)的國際競爭力 l 降低軟件開發(fā)風險
理解CMM需要注意以下幾點 l 它僅指明該做什么,,而沒有指明如何做,它不是方法論,。 l 它僅指明該做的關鍵內容,,它僅描述軟件過程的本質屬性,而并非面面俱到,。抓問題的主要方面的思想貫穿在整個CMM模型中,。 l 軟件過程是指軟件工程過程、軟件管理過程和軟件組織的過程三者的有機結合,。 l 它是從軟件過程的角度考慮問題,,而并非關注軟件開發(fā)工具。 l CMM為改善整個企業(yè)的軟件過程提供了指南,,而并非針對某個具體項目,。 l SW-CMM認為過程的不斷改進基于許多小的、進化的步驟而不是革命性的創(chuàng)新,。 l 基于CMM的過程改善投資力度大,、周期長,而技術投資則可能在短期內有較快回報,。單獨依靠技術改進可能在短期內有較快回報,,但最終可能一無所獲。
ISO 9001與CMM異同 CMM與ISO9001的設計思路不同,,并且一個是“專用”,,一個是“泛用”,因此,,盡管兩者都由于涉及質量管理和過程而有著相似之處,,但也存在很大差別。
與ISO標準系列相比,,CMM更為軟件產(chǎn)業(yè)所看好 原因是它專門針對軟件工程控制而設置的,,不僅進行軟件企業(yè)工程能力的評估,,更致力于軟件開發(fā)過程的管理,強調“對軟件開發(fā)過程進行持續(xù)改進”,,引導軟件開發(fā)過程走向成熟,。
七,、CMMI簡介CMMI的起源 l CMMI 的全稱為Capability Maturity Model Integration,,即能力成熟度模型集成。CMMI是CMM模型的最新版本,。 l CMMI 有兩種表示方法,,一種是大家很熟悉的,和軟件CMM 一樣的階段式表現(xiàn)方法,,另一種是連續(xù)式的表現(xiàn)方法,。 l 這兩種表現(xiàn)方法的區(qū)別是:階段式表現(xiàn)方法仍然把CMMI 中的若干個過程區(qū)域分成了5 個成熟度級別,幫助實施CMMI 的組織建議一條比較容易實現(xiàn)的過程改進發(fā)展道路,。而連續(xù)式表現(xiàn)方法則通過將CMMI 中過程區(qū)域分為四大類:過程管理,、項目管理、工程以及支持,。 l CMMI不是傳統(tǒng)的,、僅局限于軟件開發(fā)的生命周期,它應該被運用于更廣泛的一個范疇——工程設計的生命周期,。TSP的建立,,也是為了支持CMMI的這樣一個系統(tǒng)。 l 用一句話來概括什么是CMMI,,它就是各個進程的一個關鍵的元素,,在很多領域里面一個集成的點,。
CMMI的兩種實施方法 CMMI有兩種不同的實施方法,不同的實施方法,,其級別表示不同的內容。 CMMI的一實施方法為連續(xù)式,,主要是衡量一個企業(yè)的項目能力,。企業(yè)在接受評估時可以選擇自己希望評估的項目來進行評估。僅僅表示企業(yè)在該項目或類似項目的實施能力達到了某一等級,。 而另一種實施方法為階段性,。它主要是衡量一個企業(yè)的成熟度,亦即是企業(yè)在項目實施上的綜合實力,。企業(yè)在進行評估時,,一定要由評估師來挑選企業(yè)內部的任何項目,甚至于任何項目的任何部分,。 |
|