【摘 要】軟件行業(yè)的人們通常都會(huì)感到“軟件危機(jī)”的痛苦。為解決該危機(jī),必須進(jìn)行軟件過程管理與軟件過程改進(jìn)。本文首先提出了過程思維的這一新理論概念;其次剖析了軟件過程改進(jìn)的框架;最后給出軟件過程的評(píng)估方法。
【關(guān)鍵詞】軟件過程管理 軟件過程改進(jìn) 過程思維 CMM
一、產(chǎn)生背景
目前,軟件行業(yè)正處于從手工作坊到在其它工業(yè)生產(chǎn)中普遍使用的工程化的進(jìn)化之中。人們通常都會(huì)感到“軟件危機(jī)”的痛苦:軟件的推出總是晚于計(jì)劃,而成本卻往往高于預(yù)算,但功能卻往往沒有預(yù)先設(shè)計(jì)的那么多,并且后期對(duì)軟件產(chǎn)品的維護(hù)比較困難。
為了解決這個(gè)危機(jī),軟件開發(fā)領(lǐng)域中已經(jīng)逐步開始引入軟件過程管理與軟件過程改進(jìn)的概念。軟件過程改進(jìn)是指在軟件開發(fā)過程中除了應(yīng)用先進(jìn)的軟件開發(fā)技術(shù)和軟件開發(fā)方法外,還有一整套的軟件管理和改進(jìn)技術(shù)。常見的軟件過程改進(jìn)方法有:CMM、ISO9000、ISO/IEC 15504 等,其中CMM又是事實(shí)上的軟件過程改進(jìn)的工業(yè)標(biāo)準(zhǔn)。
二、過程思維
“為了解決軟件問題,重要的第一步就是將整個(gè)軟件開發(fā)任務(wù)看作一個(gè)可控的,可度量的以及可改進(jìn)的過程。”,倡導(dǎo)過程思維的先驅(qū)Watts Humphrey在他的著作中是這么闡述過程的。過程思維也是一種自然的思維方式,我們所擁有的知識(shí)和經(jīng)驗(yàn)實(shí)際上也是采用和過程相類似的方法保存在大腦中;但過程思維方式和傳統(tǒng)思維方式有所不同。
對(duì)于一個(gè)軟件項(xiàng)目組的成員來說,如果每個(gè)成員都能采用相同的過程思維方法,將會(huì)統(tǒng)一各個(gè)成員的工作目標(biāo),為實(shí)現(xiàn)最終的目標(biāo)而共同努力。如果軟件的開發(fā)沒有圍繞過程為中心進(jìn)行,往往會(huì)導(dǎo)致軟件開發(fā)過程的混亂,使得開發(fā)人員不得不到處救急,來維護(hù)軟件。
三、軟件過程改進(jìn)的框架
當(dāng)有效的軟件過程環(huán)境建立好了以后,過程環(huán)境中的機(jī)制有利于我們建立過程文化和過程架構(gòu)。軟件過程改進(jìn)的戰(zhàn)略應(yīng)該建立在當(dāng)前的軟件過程改進(jìn)環(huán)境下的一個(gè)整體框架之上。這些整體框架中標(biāo)識(shí)出了軟件過程改進(jìn)中必須包括的關(guān)鍵的領(lǐng)域。
下面我們介紹一種軟件過程的改進(jìn)框架。該軟件過程的改進(jìn)框架包括以下四個(gè)方面的內(nèi)容:
(一)軟件過程架構(gòu):支持過程環(huán)境需要兩種類型的架構(gòu)。一為組織及管理方面的架構(gòu),包括角色和職責(zé);另一為技術(shù)方面的架構(gòu),包括技術(shù)工具和相關(guān)的設(shè)備。
(二)軟件過程改進(jìn)規(guī)劃圖:它指定一個(gè)將要采用的軟件過程模型,并且規(guī)劃出實(shí)現(xiàn)高效的軟件過程的步驟。軟件過程改進(jìn)規(guī)劃圖為我們指明了實(shí)現(xiàn)軟件過程所要經(jīng)歷的各個(gè)階段及層次以及為了實(shí)現(xiàn)這些目標(biāo)所必經(jīng)的關(guān)鍵點(diǎn)。這些過程模型可以是CMM/CMMI或者ISO/IEC 15504等。
(三)軟件過程評(píng)估方法:它指出對(duì)組織當(dāng)前軟件過程,活動(dòng)以及架構(gòu)進(jìn)行評(píng)估所采用的方法及技術(shù).通常評(píng)估是根據(jù)軟件過程改進(jìn)規(guī)劃圖而進(jìn)行的。
(四)軟件過程改進(jìn)計(jì)劃:為進(jìn)行軟件過程改進(jìn),根據(jù)評(píng)估中所發(fā)現(xiàn)的各種問題,提出相應(yīng)的改進(jìn)解決方案。通過實(shí)施軟件過程改進(jìn)計(jì)劃,可以提高現(xiàn)有的軟件過程水平。
構(gòu)成框架的這四個(gè)部分是相互關(guān)聯(lián)的,任何一個(gè)軟件過程的改進(jìn)策略都應(yīng)該包括這幾個(gè)部分,否則會(huì)造成沖突。通常是先根據(jù)軟件過程改進(jìn)規(guī)劃圖對(duì)已有的架構(gòu)進(jìn)行評(píng)估,然后制定軟件過程改進(jìn)計(jì)劃,再進(jìn)行改進(jìn),從而達(dá)到改進(jìn)規(guī)劃圖中的軟件過程成熟度的級(jí)別。
四、基于CMM的軟件過程改進(jìn)
在軟件過程改進(jìn)中,關(guān)鍵要做好軟件過程改進(jìn)規(guī)劃圖的分析工作,并在此基礎(chǔ)上進(jìn)行軟件過程評(píng)估分析。下面結(jié)合CMM(Capability Maturity Model for Software---軟件能力成熟度模型)綜合分析軟件過程改進(jìn)。
(一)軟件過程改進(jìn)規(guī)劃圖
軟件過程改進(jìn)規(guī)劃圖會(huì)劃分出過程改進(jìn)中不同的階段,并告訴我們?cè)诿恳粋€(gè)階段過程應(yīng)該具備的特點(diǎn)和屬性。
軟件過程改進(jìn)規(guī)劃圖中應(yīng)該先定義好目標(biāo),然后通過過程改進(jìn)活動(dòng)提高整個(gè)組織的能力成熟度,并且達(dá)到最終的目標(biāo)。目前最為著名的過程改進(jìn)規(guī)化圖是由美國卡內(nèi)基——梅隆大學(xué)軟件工程研究所(SEI)提出的能力成熟度模型(CMM)。CMM主要用于軟件開發(fā)過程和軟件開發(fā)能力的評(píng)估和改進(jìn),其目的是讓從事軟件開發(fā)的公司和人員從被動(dòng)地去解決所碰到的難題轉(zhuǎn)變?yōu)橐猿墒斓?、?guī)范化的方式來解決問題,從而提高軟件企業(yè)生產(chǎn)軟件的能力和水平。
(二)軟件過程評(píng)估
軟件過程評(píng)估是對(duì)一個(gè)組織的軟件過程進(jìn)行評(píng)估與檢查。軟件過程評(píng)估可以為我們提供關(guān)于當(dāng)前組織內(nèi)部所采用的軟件過程狀態(tài)的基本情況描述,而它正是我們進(jìn)行軟件過程改進(jìn)的基礎(chǔ)。
軟件分析業(yè)中經(jīng)常使用CMM進(jìn)行過程評(píng)估與改進(jìn)。CMM是一個(gè)框架,是軟件組織提高過程能力的一種途徑。CMM在設(shè)計(jì)時(shí)就以考慮到各種使用問題,所以評(píng)估組可以將CMM作為他們對(duì)組織內(nèi)已存在過程進(jìn)行評(píng)估的基礎(chǔ),從而確定出過程的強(qiáng)項(xiàng)和弱點(diǎn)(與CMM中過程定義有關(guān)的內(nèi)容)。這種評(píng)估方法通常分被描述為基于CMM的評(píng)估。
五、結(jié)束語
要克服軟件生產(chǎn)中的這些不如人意的地方,我們就必須采用系統(tǒng)的改進(jìn)方法。對(duì)一個(gè)軟件而言,要降低成本,提高效率,提高軟件的質(zhì)量,一個(gè)規(guī)范化的,系統(tǒng)的軟件過程和質(zhì)量改進(jìn)方法是非常重要的。
總之,要有效的進(jìn)行軟件的開發(fā),必須進(jìn)行軟件過程的改進(jìn),就必須要有效的過程環(huán)境,為了使過程環(huán)境更加有效,我們需要以下角色和機(jī)制的支持:明確的過程職責(zé);關(guān)于過程的培訓(xùn);對(duì)過程的度量;對(duì)過程執(zhí)行情況的監(jiān)控;來自于過程使用者的反饋;來自于外部環(huán)境的反饋;過程的強(qiáng)制和檢測。這樣才能進(jìn)行有效的過程改進(jìn),從而最終實(shí)現(xiàn)我們的目標(biāo)以及提高軟件的質(zhì)量。
參考文獻(xiàn):
[1]吳天榮,智明.CMM在軟件過程中的一些思考[J].福建電腦,2007,(5).
[2]劉莉,傅英亮,陶強(qiáng).基本質(zhì)量的軟件過程研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,(5).
[3]陳新煒.軟件外包服務(wù)中的CMM應(yīng)用[J].商場現(xiàn)代化,2007,(1).
[4]李興峰,馮苗.CMM在教學(xué)信息平臺(tái)開發(fā)中的實(shí)施[J]. 中國水運(yùn),2007,(12).