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