互聯(lián)網(wǎng)應(yīng)用的迅速普及,推動了Web軟件技術(shù)的飛速發(fā)展,同時也導(dǎo)致了傳統(tǒng)應(yīng)用軟件的Web化趨勢。SaaS、SOA、云計算這些響當(dāng)當(dāng)?shù)募夹g(shù)名詞,無一不是這種現(xiàn)象的最佳注解。不過,調(diào)查卻顯示W(wǎng)eb軟件項目在沒有達(dá)到商業(yè)要求、沒有具備應(yīng)有的功能、延期和超支這四項失敗情況的比例竟然分別達(dá)到了84%、53%、79%和63%。那么,Web軟件項目與傳統(tǒng)軟件項目究竟有何不同,為什么它的失敗率竟如此之高?它面臨哪些風(fēng)險,我們又該如何識別并管理這些風(fēng)險以將損失降到最低呢?本文針對Web軟件項目快速開發(fā)的特點(diǎn),在總結(jié)前人對軟件項目風(fēng)險管理研究的基礎(chǔ)之上,首先提出了適用于Web軟件項目到風(fēng)險管理模型設(shè)計原則,隨后提出了針對Web軟件項目的快速風(fēng)險管理模型,并提出了Web軟件項目風(fēng)險的控制方法,最后對該模型提出了改進(jìn)意見。
Web軟件項目的風(fēng)險
從實踐中我們知道,軟件項目的風(fēng)險來源于不確定性。在軟件項目建設(shè)過程中,項目本身的不確定性表現(xiàn)在以下幾個方面:
(1)項目需求的不確定性。人們不可能在軟件開發(fā)之前準(zhǔn)確地把握當(dāng)時的需求及其之后的走勢,這一點(diǎn)已經(jīng)由Peter Wegner利用數(shù)學(xué)的方法給出了嚴(yán)格的證明。
(2)從需求到設(shè)計和實施轉(zhuǎn)換的不確定性。軟件項目不同于傳統(tǒng)的建筑項目,它既是現(xiàn)實的又是抽象的,至今也不能將設(shè)計和實施完全分離,人們很難確定需求規(guī)格說明對后續(xù)設(shè)計是否是完整、充分的。
(3)重用項目成果的不確定性。重用已有項目成果從理論上講可以回避上述兩個方面的不確定性,但在實踐當(dāng)中,仍然無法有效達(dá)到目的。重用構(gòu)件的接口描述是否準(zhǔn)確?如何確定現(xiàn)有構(gòu)件或子系統(tǒng)可否滿足當(dāng)前任務(wù)的要求?
相較于傳統(tǒng)軟件項目,Web軟件項目的特征可歸納為創(chuàng)新性、需求變化頻繁、小團(tuán)隊、技術(shù)更新快、生命周期短等。首先,Web軟件工程的研究起步較晚,Web軟件的開發(fā)方法學(xué)還在不斷地完善當(dāng)中,目前多采用被稱為敏捷(Agile)方法的輕量級開發(fā)方法。這里的“輕”指的就是這些方法不像傳統(tǒng)方法那樣強(qiáng)調(diào)管理和控制,追求項目的可預(yù)測性和過程狀態(tài)的可視性,而是盡可能地減少開發(fā)過程中的中間制品(文檔),從而減輕開發(fā)人員的負(fù)擔(dān)。不過遺憾地是,這類方法通常只關(guān)注于軟件開發(fā)的技術(shù)層面,還沒有對項目的風(fēng)險管理給予足夠的重視,采用這類方法可能導(dǎo)致對風(fēng)險管理的忽視。同時,由于Web軟件項目涉及到的開發(fā)人員具有多學(xué)科性,項目成員之間的不同專業(yè)背景也給項目帶來了更大的組織風(fēng)險。其次,Web軟件開發(fā)技術(shù)日新月異,特別是在開源軟件模式興起以后,各類技術(shù)框架(Framework)層出不窮,這為開發(fā)者帶來很多可復(fù)用的組件,可以說Web軟件項目是建立在大規(guī)模復(fù)用基礎(chǔ)之上的。但是由于開源軟件組織的松散性和開發(fā)人員對這些組件的不夠精通,往往給項目帶來額外的系統(tǒng)風(fēng)險。再次,由于Web軟件項目工期短以及要求盡快推向市場的特點(diǎn),在項目實施時也容易因為盲目地追求開發(fā)速率而忽視對風(fēng)險的管理,最終導(dǎo)致風(fēng)險太晚被發(fā)現(xiàn)而需要消耗大量成本才能解決。最后,由于Web軟件項目開發(fā)團(tuán)隊小、成員少,往往無力進(jìn)行有效的風(fēng)險管理。所有的這些特點(diǎn)使得Web軟件項目面臨高風(fēng)險,同時還更加容易被人忽視。
國內(nèi)外針對Web項目風(fēng)險的研究現(xiàn)狀
國外對于軟件項目風(fēng)險管理的研究始于上世紀(jì)70年代對軟件缺陷預(yù)測的研究。普遍認(rèn)為1989年Boehm發(fā)表的專著《軟件風(fēng)險管理》奠定了該領(lǐng)域的理論基礎(chǔ)。Boehm軟件風(fēng)險管理體系把風(fēng)險管理分成兩大階段,每一階段具有三個步驟,如表1 Boehm軟件風(fēng)險管理體系所示。
自1990年以來,美國卡耐基-梅隆大學(xué)的軟件工程研究所SEI在