李錫杰
摘要:文章對CMMI和敏捷的基本概念、管理思想、管理框架、基本內容、企業(yè)的應用情況等做了簡單的介紹,重點介紹了當前熱點的敏捷開發(fā)模式,為項目選用哪種方式提供了基本的信息。
中圖分類號:TP3文獻標識碼:A文章編號:1672-3791(2012)04(a)-0000-00
1 CMMI
1.1 CMMI的基本概念和企業(yè)應用
CMMI(Capability Maturity Model Integration)即能力成熟度模型集成,CMMI認證是由美國軟件工程學會(software engineering institute,簡稱SEI)制定的一套專門針對軟件產(chǎn)品的質量管理和質量保證標準。
近年來,很多軟件企業(yè)紛紛實施CMMI管理模式,不少企業(yè)如:東軟,托普,華為等企業(yè)通過了三級或四級評估。
1.2 CMMI框架
CMMI模型是基于眾多軟件專家的實踐經(jīng)驗,它把軟件開發(fā)組織的能力成熟度分為5個可能的等級,4個過程類別及22個關鍵過程域(圖一)。
所描述的5個成熟度等級中,每實現(xiàn)一次等級間的跨越,組織就致力于解決某一方面的問題。一個組織要達到某一個等級,必須滿足該等級及其低等級的所有過程域。
1.3CMMI的應用
CMM/CMMI主要應用在兩大方面:能力評估和過程改進。
1)能力評估
CMMI是基于政府評估軟件承包商的軟件能力發(fā)展而來的,有兩種通用的評估方法:軟件過程評估和軟件能力評價。
軟件過程評估:軟件過程評估集中關注組織自身的軟件過程,評估的成功取決于管理者和專業(yè)人員對組織軟件過程改善的支持。
軟件能力評價:軟件能力評價集中關注識別在預算和進度要求范圍內完成制造出高質量的軟件產(chǎn)品的軟件合同及相關風險。評價在審核的環(huán)境中進行,重點在于揭示組織實際執(zhí)行軟件過程的文檔化的審核記錄。
2)過程改進
軟件過程改進是一個持續(xù)的、全員參與的過程。CMMI建立了一組有效地描述成熟軟件組織特征的準則。該準則清晰地描述了軟件過程的關鍵元素,并包括軟件工程和管理方面的優(yōu)秀實踐。企業(yè)可以有選擇地引用這些關鍵實踐指導軟件過程的開發(fā)和維護,以不斷地改善組織軟件過程,實現(xiàn)成本、進度、功能和產(chǎn)品質量等目標。
2 敏捷
2.1敏捷的概念和企業(yè)應用
敏捷開發(fā)(Agile development)是一種以人為核心、迭代、循序漸進的開發(fā)方法。在敏捷開發(fā)中,軟件項目的構建被切分成多個子項目,各個子項目的成果都經(jīng)過測試,具備集成和可運行的特征。換言之,就是把一個大項目分為多個相互聯(lián)系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
采用敏捷開發(fā)的企業(yè):比如Google,IBM,愛立信,百度,騰訊,華為等。
2.2敏捷開發(fā)的價值觀和12條原則:
敏捷的價值觀:個人與交互重于開發(fā)過程與工具;可用的軟件重于復雜的文檔;尋求客戶的合作重于對合同的談判;對變化的響應重于始終遵循固定的計劃。
敏捷的12條原則:
1)我們最優(yōu)先要做的是通過盡早的、持續(xù)的交付有價值的軟件來使客戶滿意;
2)即使到了開發(fā)的后期,也歡迎改變需求;
3)經(jīng)常性的交付可以工作的軟件,交付的間隔可以從幾周到幾個月,交付的時間間隔越短越好;
4)在整個項目開發(fā)期間,業(yè)務人員和開發(fā)人員必須天天都在一起工作;
5)圍繞被激勵起來的人個來構建項目。給他們提供所需要的環(huán)境和支持,并且信任他們能夠完成工作;
6)在團隊內部,最具有效果并且富有效率的傳遞信息的方法,就是面對面的交談;
7)工作的軟件是首要進度度量標準;
8)敏捷過程提可持續(xù)的開發(fā)速度;
9)不斷地關注優(yōu)秀的技能和好的設計會增強敏捷能力;
10)簡單----使未完成的工作最大化的藝術----是根本的;
11)最好的構架、需求和設計出自與自組織的團隊;
12)每隔一定時間,團隊會在如何才能更有效地工作方面進行反省,然后相應地對自己的行為進行調整。
2.3敏捷實踐
1)Test-Driven Development,測試驅動開發(fā)。它是敏捷開發(fā)的最重要的部分如果沒有測試代碼,就不能編寫功能的實現(xiàn)代碼。
2)Continuous Integration,持續(xù)集成:一次集成至少包括:獲得所有源代碼、編譯源代碼、運行所有測試,包括單元測試、功能測試等;確認編譯和測試是否通過,發(fā)送報告。還包括代碼分析、測試覆蓋率分析等。
3)Refactoring,重構:在敏捷開發(fā)中,重構貫穿于整個開發(fā)流程,每一次開發(fā)者check in代碼之前,都要對所寫代碼進行重構,讓代碼達到clean code that works。
4)Pair-Programming,結對編程:敏捷開發(fā)中,做任何事情都是Pair的,包括分析、寫測試、寫實現(xiàn)代碼或者重構。
5)Stand up,站立會議:每天進行15-20分鐘的會議。每個人都回答三個問題: 你昨天做了什么? 你今天要做什么?你遇到了哪些困難?
3結束語
CMMI是“重量級”的開發(fā)模式,強調“過程”的重要性,每個過程都有嚴格的輸入和輸出;敏捷強調團隊和客戶好合作及團隊的自組織。在選用開發(fā)模式時可以根據(jù)公司的組織架構、環(huán)境背景及團隊的情況,采取單一或組合開發(fā)模式。