原文出處:
近來筆者所在公司正在為過cmmi3做各種準備,對公司的員工進行了一些相關的培訓,作為專案管理人員的我,在學習cmmi3的過程中,也有了自己的一點對於cmmi3的思考。
cmmi將軟體過程中的很多步驟都通過步驟規範起來,它並沒有告訴我們應該怎麼去做,而只是告訴我們應該做些什麼。因為軟體過程中的每一步都需要經過思考、決策、有依據才能得出過程的結果,所以減少了每一步發生錯誤的可能性。
一.cmmi概述
cmmi是capacity maturity model integrated的簡稱,即整合的軟體能力成熟度模型,cmm是cmmi的早期版本,它主要用於軟體工程,而cmmi是一種綜合性模型,它是工程實施和管理方法,它在軟體與系統整合以外的如科研、工程等領域都得到了廣泛的應用。
cmmi是乙個由理論和經驗部分組成的模型。它有連續式和階段式兩種表述方式,其中連續式主要用於衡量乙個企業的專案能力,而階段式主要用來衡量乙個企業的成熟度。在連續式表述下,企業在接受評估時可以選擇自己希望評估的專案來進行評估,所以評估通過率相對比較大,但它反映的那個相對比較窄,因為它僅僅反映該企業的該專案或類似專案達到了對應的等級。而用階段式來進行評估時,需由評估師自己來挑選內部的任何專案或其中的某一部分來進行評估。
階段式的cmmi有5個等級,如下:
第一級(初始級):在該等級下,專案的目標雖然得以實現,但它的實現帶有很多的偶然性和風險性,該級對人員的依賴性比較大,效能依賴個人的能力,且隨個人固有的效能、知識和動機的不同而變化。
第二級(受管理級):在該等級下,意味著組織要確保策劃、文件化、執行、監督和控制專案級的過程,並且需要為過程建立明確的目標,並能實現成本、進度和質量目標等。在這種情況下,組織已經營造了乙個穩定的、受控的開發環境,專案已經在受控制的狀態下執行。該級包括如下7個過程域:需求管理(rm)、專案策劃(pp)、專案監督與控制(pmc)、供方協定管理(sam)、測量與分析(ma)、過程和產品質量保證(ppqa)和配置管理(cm)。
第**(已定義級):在等級三下,專案執行過程是通過裁剪組織的標準過程集合和組織過程財富產生的「已定義過程」,並具備與該過程相適應的執行環境。該級報刊如下11個過程域:需求開發(rd)、技術解決(ts)、產品整合(pi)、驗證(ver)、確認(val)、組織過程聚焦(opf)、組織過程定義(opd)、組織培訓(ot)、整合專案管理(ipm)、風險管理(rskm)和決策分析和決定。
第四級(定量管理級):在等級四下,組織建立了產品質量、服務質量以及過程效能的定量目標,運用統計技術和定量目標作為判斷過程管理成功的標準。在過程的生存週期裡,對產品質量、服務質量和過程效能做到統計意義上的了解和管理。該級包括如下兩個過程域:組織過程效能和定量專案管理。
第五級(持續優化級):該等級的突出特徵是過程效能的持續改進。組織建立起整個組織的定量過程的定量過程改進目標,並且把它們作為過程改進的判斷標準;這些目標將適時修改,以反映不斷變化的本組織的業務目標。實際實施的過程和組織的標準過程集合都是改進活動的物件。該級包括如下兩個過程域:組織革新和部署和原因分析和決定。
二.cmmi給我們帶來了什麼好處?
概括來說,cmmi給我們帶來了如下好處:改進進度和預算的可**性、改進開發周期、提高生產率、改進質量(質量缺陷)、增加客戶的滿意度、提高員工的士氣、增加投資回報和低質量成本。
對於不同的人來說,cmmi給他們帶來的好處各有不同,例如,對於企業的老闆來說,cmmi不僅提高了企業整體的管理水平,而且為企業引進了科學高效的管理觀念、創造了更好的利益。而對於專案經理來說,對cmmi技術的學習掌握能夠提高自身的專案管理能力,因此能夠更好的提高專案質量,低成本、按期限的完成既定的任務。等等。
cmmi的實施包括如下幾個步驟:差距分析、過程定義、過程部署和實施、預先評估和正式評估五步。它的實施能夠提高我國企業的管理水平,使我國的企業在管理上能夠盡快地引入國際上的先進技術。調整了我國企業的管理體制,使其從無序變成有序、主觀變成客觀、人治變為體制。cmmi應用將產生的直接效果是提高了工程專案的質量、降低了工程的成本,保證了工程的週期、提高我國企業的在國內與國際市場上的競爭能力。
來越多的大型企業業開始要求其工程承包商具有一定的cmmi級別。級別高的企業在贏得專案的競標中具有一定的優勢。 因此,如果沒有cmmi的等級評估,企業就會失去很多商機。另一方面,企業通過cmmi評估也是為了提公升企業內部的管理水平,降低企業的工程成本,得到更加豐厚的回報,對企業來說受益不少。
就拿筆者所在公司來說,從cmmi實施中進行差距分析來說,測量與分析、風險管理、組織培訓等地方明顯做得不夠。因為沒有測量與分析的資料的採集,導致過程中的很多地方無法進行估量。因為對風險管理得不夠,使得風險散播到專案過程中的各個地方,無法從某處獲得對風險的集中管理。因為上級的組織培訓的不重視,導致很多技能不能被相關人員較快較好的掌握。除此以外,還存在很多的問題,cmmi的實施給公司專案管理者帶來了福音。
三.對cmmi的思考
筆者在學習cmmi的過程中,也產生過一些疑問,進行過一些思考,具體如下:
1. 實施cmmi最好採用什麼方式來驅動?
cmmi只是告訴我們需要做什麼,但具體如何做,以及採用什麼工具、方法和技術等去做,這些答案需要我們自己去找。
實施cmmi最好採用什麼方式來驅動呢?
答案是以實際需求來驅動,真正遵循ideal(i-初始;d-診斷;e-建立;a-執行;l-學習)組織過程改進模型。
我們不應該過分的追求採用什麼方法或工具來做好某件事情,例如設計圖我們並不一定需要採用專門的rose的工具來做;對需求等的跟蹤並不一定要採用專門的需求跟蹤工具來做,很多時候excel就能夠達到很好的跟蹤效果。在以實際需求來驅動的過程中,可以靈活的採用適合的方法或工具,不應該太過拘泥。
2. cmmi與iso9000存在哪些區別?
取得iso 9000認證不意味著完全滿足cmmi的某等級要求。取得cmmi第二級或第**也不能籠統地認為可以滿足iso 9000的要求。
3. cmmi過時了嗎?
迭代開發技術、軟體產業最佳實踐、和經濟動機推動組織採用基於結果的方法:開發業務案例、構想和原型方案;細化後納入基線結構、可用發布,最後定為現場版本的發布。雖然cmmi保留了基於活動的方法,它的確整合了軟體產業內很多現代的最好的實踐,因此它很大程度上淡化了和瀑布思想的聯絡。
分析cmmi和迭代開發之間有什麼聯絡,方法之一就是看每個模型的kpa是否為這種開發方法激發了合理的軟體管理原理。cmmi和迭代思想聯絡得很緊密,所以說cmmi並沒有過時。
4.cmmi與敏捷開發的關係?
最近幾年來,cmmi已經成為一項主流開發技術。很多成功的企業都在使用這個技術。
那麼cmmi與敏捷之間存在怎麼樣的關係呢?分析如下:
使用敏捷式方法要求it和業務方面的參與者緊密溝通,更快的交付業務需求從而更快的獲取效益。降低改變的成本、提高系統的靈活性,以及降低投資的風險。敏捷式開發能在質量上有很大的提高。大概在60年代的時候,軟體開發是沒有計畫性的,基本是寫出來,誰也不知道什麼時候能交付,但也就是在那個時候,軟體工程學的概念在美國召開的一次會議上頭一次被提出來,傳統工程學通常是把專案分成三步或者四步,先把需求確立起來,進行設計構建。應用到軟體裡是開始先由分析人員對需求進行分析,然後設計,架構師把整體的東西設計出來,再確定下來交給程式設計的團隊,程式設計的團隊按照需求規約,把東西給做出來,所有的這些東西都是由不同的人在不同的時間完成的。
這種模式的優點是:開發計畫性非常強,因為你知道什麼人在什麼時候做什麼事情。但也存在一些缺點,這些缺點主要由軟體開發和傳統的建築工程學的不同引起。客戶需求的不斷變化,特別是商業 軟體,跟隨市場的變化,客戶需求也在不斷變化。客戶本身在腦子裡並不是很清楚自身需要什麼,在它看到了產品後,在使用的過程中,他對自己想要的東西才有了一些更加確定的想法,知道了怎樣的東西才是自己所需要的。但在這個階段的需求變化使得專案步履維艱、使得成本大幅度增加。所以工程學裡乙個核心的概念,變化是最可怕的一件事情,從設計角度也好、分析的角度也好,不管怎麼,不要變化,這樣就使成本增加。
敏捷式開發最核心的東西是它不排斥變化,對變化採取的是適應性的態度。敏捷式的開發針對一小部分進行設計測試,對每乙個迴圈時間非常短,軟體從小到大,從很小的一點到不斷的增加擴大,而且增長的過程中是對軟體不斷修改的過程。
敏捷開發還有乙個很大的特點就是它是以人為本,而不是以方法為本的。我們的軟體開發是腦力勞動,而不是簡單的工作。如果你設計出一套方法來,不管什麼方法,讓每個人去適應的方法,最後開發效應反而不如你組建乙個具有進取心的團隊,這個團隊通常情況下是先選擇一種方法,細節也一樣,在開發過程中,不斷對方法反思,直到達到這個團隊的最高開發效應為止。
四.總結
本文對cmmi進行了概述,並分析了實施cmmi給我們帶來的好處,以及筆者對cmmi的一些思考。
CMMI3級評估工作的總結 引用
1.做cmmi應該是從上到下來做,而不應該是從下到上。首先,我覺得公司領導必須要知道我們為什麼要過cmmi,也就是說過cmmi的目的是什麼。只有真的相信通過cmmi這種過程改進方式能夠為公司帶來管理 專案實施 成本 收益等方面的改善,才能夠為cmmi相關工作的開展鋪平道路。第二,最先應該被培訓的是各...
對自己的學習方式的思考
前兩天跟老大討論起關於知識學習的問題。他說到很佩服自己的記憶力,因為經常能看到我對那些錯綜復 雜的目錄結構,原始碼位置,檔名之類的資訊記得都很清楚。然後自陳他自己的記憶力就不夠好。對於那 些目錄結構,原始碼位置的資訊記憶得就不是很牢固,總是需要在 cd到某個目錄之前要 ls一下才能確定。但是在我看來...
對3維向量及3維張量關係的思考
在各種程式語言中,張量是以多維陣列的形式表示的,1個三維 階 rank 張量a shape 3,2,1 1 2 3 4 5 6 張量的rank是由第乙個元素左邊的左括號 數量決定的,張量的shape是由每一層括號中元素的數量決定,最裡面的括號元素只有1個,倒數第二層的括號即每行包含的最小括號數量為2...