1 引言
軟件開發(fā)是一種組織良好、管理嚴(yán)格、各類人員協(xié)調(diào)配合、共同完成的工程項目。軟件開發(fā)的核心資源是人,這與那些自動化生產(chǎn)線主要靠機器來工作不同,軟件開發(fā)有太多的可變因素,因此對軟件開發(fā)的管理應(yīng)該也是具有一定的柔性,以適合不斷變化的開發(fā)過程。
軟件過程是生產(chǎn)軟件的一系列流程,是為了獲取所需要的軟件產(chǎn)品而需要完成的一系列有關(guān)軟件工程的活動。他一方面與軟件生命周期、軟件開發(fā)方法和工具、軟件開發(fā)人員等諸多方面都有著密切聯(lián)系,另一方面被軟件公司的傳統(tǒng)習(xí)慣、文化氛圍和企業(yè)領(lǐng)導(dǎo)人的領(lǐng)導(dǎo)風(fēng)格所影響。
軟件過程并不是一個單一體,他是由一個主過程和若干輔助過程共同構(gòu)成。一般的主過程就是軟件開發(fā)必須經(jīng)過的一些過程,稱為開發(fā)過程。此過程中的任何一個環(huán)節(jié)都不可缺少,如最傳統(tǒng)的瀑布模型中的軟件開發(fā)過程為:需求分析、總體設(shè)計、詳細(xì)設(shè)計、編碼、測試、部署和維護。輔助過程則一般指軟件開發(fā)中的配制管理、文檔管理、質(zhì)量保證、項目管理等過程。雖然軟件開發(fā)只需要開發(fā)過程就能開發(fā)出軟件,但是缺少輔助過程則會讓整個開發(fā)過程變得混亂,甚至失去控制,因此輔助過程也是軟件過程改進中的重要內(nèi)容。
2 軟件過程改進概述
軟件過程改進(Software Process improvement,SPI)幫助軟件企業(yè)對其軟件過程的改進進行計劃、過程診斷、過程改進方案制定以及實施。他的實施對象就是軟件企業(yè)的軟件過程,也就是軟件產(chǎn)品的生產(chǎn)過程,當(dāng)然也包括配制管理、軟件維護之類的輔助過程,而對于其他的過程并不關(guān)注。
在軟件企業(yè),軟件開發(fā)是企業(yè)最重要、最復(fù)雜的過程。軟件產(chǎn)品是軟件企業(yè)的生命,對軟件企業(yè)進行流程優(yōu)化和改進,最主要的還是對其軟件過程進行改進。一個軟件企業(yè)的消耗與收益都在軟件產(chǎn)品上,開發(fā)過程失敗則會給企業(yè)帶來致命的打擊,開發(fā)成功則能給企業(yè)帶來大量的收入,如何降低開發(fā)成本,多、快、好、省的開發(fā)出所需要的軟件是企業(yè)立足于市場的根本。
當(dāng)一個軟件企業(yè)一步步成長的時候,會發(fā)現(xiàn)原來的開發(fā)方法、管理模式開始不適應(yīng)目前的開發(fā)。需要開發(fā)的軟件越來越大、越來越復(fù)雜,而不斷的增加人手對開發(fā)的進度的幫助越來越小。由于開發(fā)人員數(shù)量越多,溝通成本就越高,使得總體開發(fā)效率反而下降,因此需要在管理方面進行提高、在流程上進行優(yōu)化,才能夠提高開發(fā)效率、縮短開發(fā)周期、降低開發(fā)成本。
軟件企業(yè)從軟件作坊”進化到軟件工廠”是一個跳躍式的改變,從開發(fā)模式、管理模式、企業(yè)運營模式都會發(fā)生質(zhì)的變化。很多從團隊發(fā)展起來的小軟件企業(yè)很難實現(xiàn)這一步的跨越,生搬硬套更是可能讓企業(yè)的生命過早結(jié)束。如何提升軟件開發(fā)模式和企業(yè)的管理是中小型軟件企業(yè)發(fā)展過程中遇到的最大問題,也是軟件過程改進需要解決的問題。
目前在世界上用的最多的軟件過程改進模型是CMM、CMMI和ISO9000系列標(biāo)準(zhǔn)。軟件企業(yè)根據(jù)自聲的軟件過程情況,參照模型標(biāo)準(zhǔn)進行對照,找出自身與標(biāo)準(zhǔn)的差異,然后對自身的過程進行改進,以達到標(biāo)準(zhǔn)的要求。在這個過程中需要根據(jù)企業(yè)自身的情況分步實施,有計劃、有組織的進行,如果一開始就全面鋪開,波及的范圍比較廣,則會給企業(yè)帶來較大的風(fēng)險。如同有些企業(yè)一年內(nèi)從CMM Level1級別一路升到CMM Level 4 級,不僅沒有實施效果,還可能會讓企業(yè)適應(yīng)不了新的流程,而造成企業(yè)內(nèi)部的混亂??傮w規(guī)劃、分步實施才能保證軟件過程改進的效果,先僵化,后優(yōu)化,再固化”才能夠讓過程改進落到實處。
3 國內(nèi)軟件過程改進的現(xiàn)狀分析
自從2000 年,中國通過了第一個1+3 的評估以來,實施CMM/CMMI 的顧問團,中國在2006 年1 月份的企業(yè),中國到目前為止已經(jīng)有 128 家企業(yè)通過了評估,美國是158 家。在CMM認(rèn)證通過的企業(yè)數(shù)量來看,考慮到中國第一次做評估的是2000 年,而印度要早十年,中國與印度的差距在一步步縮小。
國內(nèi)能夠如火如荼的開展CMM/CMMI評估的原因主要有:
3.1 政府的大力扶持
國務(wù)院2000年18號文件《鼓勵軟件產(chǎn)業(yè)和集成電路產(chǎn)業(yè)發(fā)展的若干政策》的發(fā)布表示了我國政府和領(lǐng)導(dǎo)對計算機軟件產(chǎn)業(yè)的重視和支持。寬松的審批條件、優(yōu)惠的退稅政策、對ISO9000和CMM認(rèn)證支持的專項資金,激勵著國內(nèi)軟件企業(yè)通過認(rèn)證的激情。在政府的扶植下,越來越多的軟件企業(yè)通過了CMM認(rèn)證。
3.2 外包業(yè)務(wù)的要求
新一輪全球產(chǎn)業(yè)布局調(diào)整的大潮,為中國軟件外包市場賦予了高速成長的強大推進力。來自IDC的數(shù)據(jù)顯示,全球應(yīng)用軟件外包服務(wù)市場正以平均每年29.2% 的速度增長,其中,中國軟件外包市場在2004年的增長速度為49.9%,市場規(guī)模達到5.99億美元。而Gartner研究公司更是預(yù)測,在2007到 2010年間,中國將成為全球最大的軟件外包市場。國外軟件公司選擇外包軟件公司的時候,一般都要求通過CMM3級認(rèn)證,如果沒有CMM證書的話,在軟件外包市場這塊就幾乎無法進入。因此,軟件外包業(yè)務(wù)的拓展,加速了我國軟件企業(yè)通過CMM認(rèn)證的進程。
3.3 軟件企業(yè)本身發(fā)展的需求
軟件過程改進是軟件企業(yè)發(fā)展過程中的必經(jīng)階段,一個軟件企業(yè)在業(yè)務(wù)越來越多,項目越來越復(fù)雜,開發(fā)對于日益龐大的情況下,為了降低開發(fā)和管理成本,必須對整個企業(yè)進行流程優(yōu)化,在這個意義上BPR和CMM的目標(biāo)是一致的。
4 軟件過程改進中的問題
不管是CMM/CMMI還是ISO9000是一個相當(dāng)復(fù)雜的標(biāo)準(zhǔn),它為如何改進軟件開發(fā)過程提供了很好的指導(dǎo),它規(guī)定了應(yīng)該做哪些事,沒有規(guī)定應(yīng)該如何去做。這種方法給客戶留下了很大的空間來開發(fā)適合自己的軟件過程、規(guī)范和標(biāo)準(zhǔn),但是,也對客戶提出了非常高的要求。而且,CMM標(biāo)準(zhǔn)本身就是一個理想化的東西。CMM有18個關(guān)鍵實踐域,每個關(guān)鍵實踐域的第一條基本原則就是,必須為這項管理/技術(shù)工作提供充足的資金、時間和資源。這條原則卻是絕大多數(shù)企業(yè)無法滿足的。
國內(nèi)企業(yè)在進行CMM評估時,存在很多誤區(qū)。例如,有的企業(yè)將CMM當(dāng)成解決一切問題的圣經(jīng),沒有很好地理解CMM的內(nèi)涵;有的企業(yè)盲目追求轟動的市場效應(yīng),為了獲得所謂的國際市場的入場券”,沒有扎扎實實地進行企業(yè)軟件工程能力的提高,純粹是為了過級而過級,通過評估后,所有的開發(fā)過程基本上又回到原來的狀態(tài),完全違背了CMM的思想。
絕大多數(shù)企業(yè)希望通過CMM來提高自己的軟件工程化水平,但卻無從下手。其中,很多企業(yè)在準(zhǔn)備實施CMM的初期,就被其繁瑣的過程和高昂的費用所嚇退。每一個采用傳統(tǒng)的方法實施CMM認(rèn)證的企業(yè)都需要大動干戈”,首先是全公司的培訓(xùn);然后,把項目停下來補文檔;最后,準(zhǔn)備各種各樣的問題和答案,準(zhǔn)備應(yīng)付評估師的隨時提問,鬧得整個企業(yè)不得安寧。因為即使CMM二級也有近百種實踐要求,就是每個人培訓(xùn)一個星期,他還是很難記住這些操作。短時間參加CMM培訓(xùn)的人員的一個最顯著的特征就是迷茫,不知道該怎么去實施,好像以前在開發(fā)軟件方面還有一些心得,培訓(xùn)完后,就完全不知所措了,更別提將這些管理要求有機地結(jié)合到一個項目里去了。
這種做法的后果可想而知,這就是為什么很多企業(yè)在通過了評估以后,又回到原來做法的原因??偠灾?,傳統(tǒng)的CMM實施方法要求按部就班地進行,不僅周期長,對人員和經(jīng)費要求高,而且,實施后效果保持難度很大。因此,如何真正快速有效地實施CMM,提高軟件生產(chǎn)率是一個亟待解決的難題。
5 成功實施軟件過程改進的三個要素
對于軟件過程改進策略的選擇,實在是仁者見仁,智者見智。也許并沒有什么絕對的對錯,關(guān)鍵看是否符合自身的實際情況。對國內(nèi)廣大中小軟件企業(yè)而言,存在什么樣的實際情況?應(yīng)該采取什么樣的軟件過程改進策略呢?
中小企業(yè)的實際情況大致如下:管理基礎(chǔ)薄弱,資源不足,生存壓力大,缺乏統(tǒng)一而有力的文化,人員素質(zhì)良莠不齊。在這中環(huán)境下實施軟件過程改進,有很多因素是需要特別注意的。
5.1 企業(yè)領(lǐng)導(dǎo)樹立正確的軟件過程改進觀點,全體員工有軟件過程改進意識。
所謂態(tài)度決定一切”,正確的軟件過程改進意識是軟件過程改進成功實施的前提條件,那種為證書而改進,為CMM而CMM的改進過程除了能夠取得證書外,并不能為企業(yè)的發(fā)展帶來多大的幫助,最后高級低能”的企業(yè)現(xiàn)狀并不能為企業(yè)發(fā)展助一臂之力。
過程改進不是領(lǐng)導(dǎo)的事情,而是企業(yè)的每一個員工的事情,過程改進實施能否進行得下去,由每個員工的態(tài)度來決定。一開始實施過程改進的時候,有些眾所周知的煩瑣、缺乏效率的流程被改進會贏得員工的支持,但是有些過程改進肯定會影響到部分員工的利益或者是工作量,會讓那一部分人多過程改進產(chǎn)生排斥。另外一些要求規(guī)定了,對員工也提出了一些要求,如果員工因此而產(chǎn)生抵觸情緒的話,過程改進的貫徹實施是比較困難的。國內(nèi)一些公司出現(xiàn)CMM實施完畢后,文件都在,證書也下來了,但是員工還是按老方法做事情,最后再去補CMM要求的文檔。這樣的改進可以說比改進前的效率更低了。
因此,不管是企業(yè)的領(lǐng)導(dǎo),還是企業(yè)的員工,在實施軟件過程改進前,應(yīng)該先將軟件過程改進的理念貫徹到每個人的心中。這樣在后面的實施過程中,每個人才能夠主動的去接受改進。
5.2 客觀準(zhǔn)確的做好實施前的評估工作,掌握評估結(jié)果的實質(zhì)。
在進行軟件過程改進前,先要對軟件企業(yè)目前的過程進行評估,評估的結(jié)果決定軟件企業(yè)是否要進行改進,哪些方面需要改進,需要改進成什么樣子。應(yīng)該說,由咨詢公司主持,公司改進項目組參加的評估過程是公正、客觀的。但是,對于評估的結(jié)果還是需要仔細(xì)的推敲與檢查。作為咨詢公司從自己利益的角度考慮,可能會將企業(yè)軟件過程方面的問題夸大。在對待評估結(jié)果上,需要冷靜的思考與對待,客觀的評價。
5.3 確定合理的目標(biāo)
CMM模型劃分為5個級別,共計18個關(guān)鍵過程域,52個目標(biāo),300多個關(guān)鍵實踐。每一個CMM等級的評估周期(從準(zhǔn)備到完成)約需12-30個月。無論一個軟件企業(yè)的軟件過程處于什么樣的水平,都可以在CMM框架的5個級別中找到自己的位置。CMM框架的不同級別是針對處于不同管理水平的軟件企業(yè)制定的,一個軟件企業(yè)實施CMM,首先必須了解自己的管理現(xiàn)狀,對照CMM的級別,找到自己在CMM中所處的位置,然后有針對性采取與自己所處級別相適應(yīng)的措施,使企業(yè)遲早納入CMM的進化階段,使軟件過程管理早日得到改善,最終達到提高軟件質(zhì)量,獲取經(jīng)濟效益的目的。
因此,要實施CMM,首先應(yīng)該對本企業(yè)的現(xiàn)狀有一個準(zhǔn)確的評估。企業(yè)目前處于什么水平,企業(yè)發(fā)展的問題是什么,借助CMM要達到的目的是什么。然后再結(jié)合企業(yè)的實際情況選擇CMM的切入點,確定總體目標(biāo)。這個目標(biāo)包括在多長時間之內(nèi),需要投入多少人力、物力和財力,要達到哪一級。
由于軟件過程的建立和改進是一個漸進的、分輕重緩急的、逐步完善的過程。所以,在總體目標(biāo)已經(jīng)確定的前提下,還要制訂近期目標(biāo)和長期目標(biāo)。
6 總結(jié)
軟件企業(yè)進行軟件過程改進是一項大工程,是一個讓企業(yè)脫胎換骨的過程。改進成功可以為企業(yè)帶來廣闊的發(fā)展前景,失敗則可能讓企業(yè)從此一蹶不振。因此在實施過程改進前,需要對本企業(yè)的現(xiàn)狀有客觀的了解,讓全員樹立改進意識,確定明確的改進目標(biāo),制定周詳?shù)母倪M計劃,將改進貫徹到實處才能夠確保軟件過程改進的成功。