摘要: 首先介紹小型軟件企業進行過程改進所面臨的困難,解釋為什么小型企業和項目實施CMMI時會遇到很多阻力,然后基于作者參與的一個典型組織CMMI改進進程,分析為什么CMMI有關內容不適合于小型企業和項目的實際情況,并概括如何在文檔、管理、評審、資源和培訓等方面進行剪裁和改進,使之適合于小型企業和項目的實際需求。
關鍵字: 軟件過程;過程改進模型;CMMI;剪裁
中圖分類號:TP311 文獻標識碼:A
Reaseach and Practices of CMMI Process Improvement
in Small Software Organizations
Abstract: The article explains the difficulties of process improvement in small software organizations, the resaons of emerging the difficulities,finally we analyze why CMMI model partially don’t meet requirements of small organizations or small projects,and conclude how to tailor CMMI model.
Key Words: Software Process ;Process Improvement Model;CMMI;Tailoring
1.引言
在過去十年中,高質量軟件生產變得越加復雜和難以管理,其中部分原因是生產軟件的技術和方法快速變革,要開發的應用程序愈加復雜。這兩個因素是密切相關:技術的快速發展促使新產品、服務和活動不斷產生,不斷替換舊產品,而此也對技術產生新的需求。其次,軟件過程是面向人的[2],人之間,以及人與工具之間具有高度可變性和不可預測性。這個事實進一步增加軟件過程的復雜性,對管理提出更高要求。最后,軟件過程也許持續很長一段時間,在其生命周內也許會出現很多新需求,經歷許多變更[3],這類變更涉及到開發技術改變、開發策略和規程更新。軟件過程改進的其他重要原因包括動態調整軟件過程以適應項目參與人的需求和偏好,或者處理不可以預測的情況。
現在業界最成熟的過程評估和改進方法是美國卡內基-梅隆大學的軟件工程研究所(SEI)提出的過程能力成熟度模型。這些模型描述了有效的過程單元的框架,為組織描述了從混亂的、不成熟的過程向成熟的、有紀律的過程改進的一條途徑。自從1991年SEI發布SW-CMM(V1.0)以來,SEI逐漸開發了多種CMM模型,其中最有影響的包括:系統工程(SE-CMM)、軟件工程(SW-CMM)、軟件采辦(SA-CMM)、人力資源管理(P-CMM),以及集成的化產品和過程開發(IPPD-CMM)等。雖然這些模型對許多組織是有用的,有助于改善組織過程,以構造更好的產品,提高質量,降低成本。但是多種模型的共存逐漸顯露出弊端。
于是出現了能力成熟度模型集成(Capability Maturity Model Integration ,CMMI)。集成的目的是通過以下手段降低基于多學科模型的過程改進成本:消除不一致性;減少重復;增加透明度和可理解性;提供公共術語;提供一致的風格;建立統一的構造規則;維護公共構件;確保與ISO 15504保存一致;實現盡量好的可繼承性。SEI計劃逐步用CMMI取代現行的包括SW-CMM和SA-CMM在內的多個現行的成熟度模型 [11][12]。
1.1小型企業實施過程改進遇到的困難
實施CMM和ISO 9001的經驗表明:在人員只有15人,甚至更少的小型軟件企業中,應用這些模型時會遇到很多困難。即使對于大型軟件企業來言,其中的小部門和小項目在單獨應用這些模型時也會遇到這種問題,需要對這些模型進行調整,以適應小型企業、小部門和小項目(SB/SO/SP)的資源、結構和實踐。SB/SO/SP環境下遇到的問題可以分成三大類[1]:
(1)與軟件企業組織結構相關的問題
小型軟件組織的組織結構是實施過程改進的最大困難,通常這種企業沒有正式定義角色、職責和過程。做法經常是每日都變化,沒有長期計劃,這種結構使得軟件企業很難生成高質量大規模軟件,或者及時滿足不斷變化的用戶需求?偨Y如下:
l 缺乏負責質量的專門人員。在小型企業中,通常沒有人具備軟件過程改進的經驗和相關培訓,即使知道基本概念和技術,但是對底層原理缺乏正確認識,無法解釋本組織的質量模型需求。
l 人員有限。在小型軟件企業中,難以形成專職的過程改進團隊。
l 資金有限。小型軟件企業通常資金有限,很容易受到市場的影響。
l 當前過程的狀態。小型軟件企業通常只處于CMM等級1的水平。經驗表明等級1的公司需要花費4或者6年的水平才能達到CMM 3級的水平。對于大多數小型企業而言,這么長時間難以忍受。
l 非軟件過程的問題。在小型軟件企業中,對于那些與軟件開發不直接相關的組織過程,通常缺乏所必需的成熟度。這個問題進一步加劇解決軟件開發相關問題的難度。
l 黑客文化。小型軟件企業通常具有黑客文化,嚴重依賴于少數高水平的程序員。
l 缺乏定量數據。小型軟件企業通常沒有收集數據以度量過程和執行情況,這與它們缺乏定義明確的過程和固有開發模式緊密相關。
(2)與軟件過程改進模型相關的問題
諸如CMM和ISO 9001之類被廣泛應用的軟件過程改進模型有很多不適合小型軟件企業的固有問題,總結如下:
l 缺乏指導。質量模型,尤其是ISO 9001,解釋了應該具備的質量系統基本元素,但是沒有提供何處啟動和如何啟動這些屬性的指南。CMM稍強一點,定義了關鍵過程域,然而對于小型企業而言,沒有那么多資源來實現這么多關鍵過程域,而且沒有關于如何實施的詳細指南。如果操作順序不符合規范,則所有努力有可能付之東流。
l 缺乏行動知識。缺乏軟件過程改進專門知識的小型軟件企業需要如何在企業內部應用質量模型需求的詳細步驟說明。
l 沒有從小型企業角度考慮。已有的軟件過程改進模型沒有考慮到小型軟件企業的特點,那就是靈活、快速反應和溝通能力。
l 假設具備多種領域的專門知識。當前過程改進模型隱含地假設軟件組織具備形成能夠在不同過程域中并行實施的資源,而小型企業沒有那么多人力資源來組建這么多成員組。
(3)與小型企業所面對市場相關的問題
小型軟件企業面對的市場有很多影響改進活動的特性。通常而言,小型軟件企業與其顧客關系緊密溝通,容易受到市場經濟的影響。與市場相關的問題總結如下:
l 應變能力假設。小型軟件企業的軟件的用戶群較小(相對于龐大的軟件企業),與客戶關系很密切。這種密切關系有助于企業更加快捷了解用戶需求,同時這也是一個問題。正如Brooks所說的那樣,當用戶的需求發生變化時,它們首先想到修改軟件,而且認為軟件修改起來更加容易。
l 低投資回報率。小型軟件企業通常的市場用戶比較少,如果組織不能顯著的擴展其市場份額,則投資回報率也許會使公司上層喪失信心。
2.案例
由于多種CMM模型引起的混亂,以及在CMMI推出之后,SEI宣稱在不久將來不再進行支持CMM,我們決定使用CMMI作為研究課題,研究如何在小型軟件企業中剪裁CMMI,克服“小”帶來的問題,以適應小型軟件企業的改進需求。
本文研究對象是一家小型軟件組織A1,有員工12人,其中10人從事軟件開發,2人從事管理、市場和銷售等其他事務。A1細分為兩個部門:生產部門和研發部門。這個組織屬于典型的CMM級別1的組織,沒有明顯的過程支持,靠的是精英,沒有質量控制和度量數據。
我們從2002年10月開展對這家企業的過程改進,按照CMMI模型提出一套簡單可行的實施過程和模型,給出簡單可行的操作步驟,大大減輕了企業的過程改進壓力,充分利用兼職和全職資源,并同時提供“小型軟件企業過程改進支持環境(SSE-PISE)”過程改進支持軟件來支持其過程改進。
3.相關研究
關于小型企業如何實施過程改進問題,已經引起美國和歐洲等國家等重視,并就此開展多項研究和試驗。
[1]中提出一個基于CMM、ISO 9001和ISO 9000-3的綜合模型,該模型改造ISO 9001和CMM的需求以滿足小型企業的需求,本模型包含三個階段,分別是:準備階段、控制階段和穩定階段。[4]提出改造IDEAL模型的各個階段和步驟,給出比較仔細的行動計劃。[5]嘗試在小型軟件企業中創建ISO 9001兼容的質量系統。[6]介紹了European Commission支持的項目SPIRE( Software Process Improvement in Region of European)的進展情況,”SPIRE Handbook——Better ,Faster, Cheaper, Software Development in Small Organization” 使用SPICE自評估指南的結果,提供在小型軟件企業中實施過程改進的詳細指南。改進方法分為6個步驟,分別是:(1)細化與軟件相關的商業目標;(2)評估當前軟件實踐;(3)評價員工態度;(4)開發過程改進的焦點計劃;(5)基于既定改進目標來實施計劃;(6)評價改進過程和結果。本改進方法的一個特點是專門對員工態度進行特殊評價。[7]分析小型軟件企業實施過程化改進時應該包含的8種SPI特性,分別是:與企業商業目標相關;集中于最重要的軟件過程;充分利用資金;進行能夠在盡可能短時間內提供盡可能大收效的改進;提供快速的投資回報;面向過程;與其他軟件模型相關;足夠靈活和易于使用。[8]簡單介紹LOGOS Tailored CMM的基本思想,以及簡單實施指南,并給出剪裁過程,宣稱本方法適合于所有規模的組織和項目,不是CMM的簡單重寫和改進。
文章來源于領測軟件測試網 http://www.k11sc111.com/