CMM/CMMI 與敏捷的比較 cmmi3
多年來網絡上存在一些對 CMM、敏捷似是而非的觀點,這里糾正一下,望讀者朋友和 CMM/CMMI 專家們指正。 張恂認為,CMM 基本上是 15 年之前比較傳統、陳舊的東西,現在我們更多地應該拿 CMMI-SW 與 Agile 進行比較。目前有關 CMM/CMMI 與 Agile 比較的最權威的一本名著是:Barry Boehm 與 Richard Turner 大師的 Balancing Agility and Discipline: A Guide for the Perplexed(BAND)。CMMI 到底與 Agile 有何不同?我向國內每一位軟件項目經理、架構師和過程改進相關負責、研究人員推薦這本必讀之作。 cmm/cmmi 與 agile 的區別主要有: 1、CMM更注重質量,Agile更注重生產率 錯。 Agile 至少與 CMM 一樣注重質量,只不過它采取了更為輕便的、成本更低的方式來保證質量。生產率并不是 Agile 追求的主要目標,只是一個迭代輕量過程的副產品。 正確的說法是: Agile 與 CMM/CMMI 都非常注重質量,差別在于一種是輕量方法,另一種是重量方法,分別有各自適用的項目開發環境。 2、CMM強調過程的可觀測性,Agile強調可觀測的結果(可運行軟件) 大致對。 3、CMM注重管理和過程,Agile注重技術和效率 錯。 Agile 不但包含敏捷工程技術,也包含敏捷管理和敏捷過程。Agile 至少與 CMM 一樣注重管理和過程,區別在于 Agile 采用的是一種更為輕便、靈活、高效的方式。 難道一定要采用重型方法,制定大量的細節行為規范,編寫大量的文檔,采集大量的數據,才叫管理和過程?輕型方法就不能做好軟件研發的管理和過程?顯然,這沒有道理。 在 Agile 支持者眼中,對于他們所從事的項目開發環境,Agile 是遠比 CMM 更為有效、先進和成熟的方式方法。 認為只有 CMM 注重管理、過程和質量,而 Agile 不注重管理、過程和質量,顯然是一種錯誤的偏見。 正確的說法是: CMM/CMMI 與 Agile 是兩種不同的軟件研發管理和過程體系,區別在于前者重量,后者輕量;Agile 包含了更多具體、實用的軟件工程技術方法,而 CMM/CMMI 提供了更多以數學統計為基礎的過程管理和質量控制技術方法。在適用條件下,輕量過程通常會帶來了更高的開發效率。 4、CMM注重組織,Agile注重個人 錯。 Agile 不但注重個人,也注重團隊和組織。敏捷可以分為三個層次:敏捷個人、敏捷團隊、敏捷企業。 正確的說法是: CMM/CMMI 與 Agile 都注重組織、團隊,Agile 更強調發揮個人的主觀能動性。由于價值觀、出發點和適用條件不同,導致兩者的具體做法和關注面有所不同。 5、CMM無所不包(Universal),Agile有明確的適用范圍 錯。 我不知道有什么理由說 CMM/CMMI 無所不包?通常一個號稱無所不包的東西,同時也意味著它是一件無用的東西。 事實上,僅管 CMM/CMMI 體系龐大、內容繁雜,但它的目標依然只是作為一個成熟的過程改進和評價模型,必然缺少了軟件工程領域的其他許多內容。張恂認為,CMM/CMMI 體系對于國內大多數軟件企業、研發機構而言,可能過度成熟了,有點過猶不及。CMM/CMMI 中不包括如何寫好需求,如何做好設計,如何寫好測試等許多方面的軟件工程技術、技能方面的指導,而這些恰好是敏捷的強項。敏捷方法整合了一套輕量的管理、過程和工程技術方法,這是它作為 21 世紀的先進方法體系優于 CMM 的地方。 正確的說法是: CMM/CMMI 與 Agile 都有各自明確的適用范圍。在一些價值觀、原則和實踐做法上,它們既存在著明顯的區別或對立,同時又存在著一定的互補關系。 [Page]6、它們都包含了一些軟件工程的好的實踐(Practices) 對。 CMM/CMMI 作為一個復雜的過程體系,有著大量的參考實踐做法。Agile 的實踐做法數量要少得多,也更容易操作。兩套實踐做法集在各自的適用環境下,可能都是最優的。 為什么 CMMI 與敏捷的許多最佳實踐看上去差異較大?張恂認為,這是因為它們是兩套分別歸納自工作在不同軟件工程行業、領域的科學家、工程師群體的成熟經驗,而兩者的價值觀、目的和用途也有著較大的差異。 科學的結論 那么,CMM/CMMI 與 Agile 方法或體系到底有哪些異同,什么是更為科學和準確的說法?CMMI 與 Agile 到底是完全對立,還是可以彼此借鑒,揚長避短、互補融合?... 為解答這一連串有趣而有益的問題,我建議您首先認真地研讀 BAND 這本名著,了解國際上前沿的研究成果和結論,并獨立思考,大膽地進行實踐和嘗試。期待您的反饋意見。
原文轉自:http://www.kjueaiud.com