摘 要:敏捷開發(fā)模式是近些年來國內(nèi)外軟件領(lǐng)域的研究熱點(diǎn),在大型商業(yè)軟件開發(fā)項(xiàng)目中使用敏捷開發(fā)模式并引入開源軟件提高開發(fā)效率已成為各軟件公司的開發(fā)優(yōu)選模式,如何對(duì)此開發(fā)模式進(jìn)行有效的風(fēng)險(xiǎn)管理就顯得尤為重要。文章分析了敏捷模式下引入開源軟件的主要風(fēng)險(xiǎn)類型,并對(duì)風(fēng)險(xiǎn)管理流程進(jìn)行了探析。
關(guān)鍵詞:敏捷開發(fā);開源軟件;風(fēng)險(xiǎn)管理
中圖分類號(hào):F270 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1008-4428(2017)02-12 -02
一、引言
現(xiàn)代商業(yè)環(huán)境充滿競爭,產(chǎn)品更新?lián)Q代越發(fā)得迅速。這樣就迫使軟件產(chǎn)品的開發(fā)周期大大縮短。為爭取或維持產(chǎn)品的領(lǐng)先地位,開發(fā)團(tuán)隊(duì)需要迅速作出決斷,縮短研發(fā)周期,傳統(tǒng)的瀑布式研發(fā)模式顯然無法適用。在此商業(yè)背景下,敏捷開發(fā)模式應(yīng)運(yùn)而生。敏捷開發(fā)模式的起源可以追溯到2001年的敏捷聯(lián)盟及其發(fā)表的《敏捷軟件開發(fā)宣言》。到了2007年大概有超過4700名專業(yè)人士同意并簽署了這份宣言,確認(rèn)敏捷方法是一種能夠容納變更的軟件工程架構(gòu)。敏捷開發(fā)模式是一種以人為核心,迭代、循序漸進(jìn)的開發(fā)方法。在這種模式下的軟件產(chǎn)品開發(fā)過程當(dāng)中,一個(gè)大項(xiàng)目會(huì)被拆分為多個(gè)功能上有聯(lián)系但是可以各自獨(dú)立進(jìn)行的小項(xiàng)目,并分布到不同的項(xiàng)目開發(fā)組中進(jìn)行獨(dú)立開發(fā),在此期間軟件產(chǎn)品一直處于可用的狀態(tài)。敏捷開發(fā)模式由其主要的價(jià)值關(guān)注點(diǎn)決定了其更看重產(chǎn)品開發(fā)對(duì)變化的迅速響應(yīng),同時(shí)也弱化了對(duì)過程和文檔的重視程度。因此這種模式下各個(gè)小項(xiàng)目組內(nèi)部溝通更順暢,自主行為更突出,各個(gè)項(xiàng)目組技術(shù)實(shí)力以及對(duì)產(chǎn)品理解能力也各有差距。
開源軟件已其快速、開放的代碼資源也已成為日漸流行、同時(shí)也廣受爭議的軟件模式。開源軟件(Open Source Software)定義為開放源代碼軟件的簡稱,這個(gè)概念起源于20世紀(jì)90年代。同時(shí)開放源代碼創(chuàng)始組織(Open Source Initiative Association,簡稱OSI)的定義指出,開源軟件是在滿足一定條件下,允許任何人使用、拷貝、修改、分發(fā)(免費(fèi)或少許收費(fèi))的軟件?,F(xiàn)在隨著開源軟件產(chǎn)業(yè)的蓬勃發(fā)展,已有越來越多的商業(yè)軟件公司選擇與成功開源項(xiàng)目合作,因?yàn)檫@樣可以通過重用開源軟件代碼來節(jié)省開發(fā)成本,在開發(fā)過程中跟敏捷開發(fā)模式結(jié)合更是將整個(gè)產(chǎn)品開發(fā)時(shí)間大大縮短,這種開發(fā)效率的大幅度提高對(duì)于商業(yè)軟件公司來講是面對(duì)激烈市場(chǎng)競爭的有力優(yōu)勢(shì)。因此各類大公司紛紛加入開源軟件的開發(fā)當(dāng)中,又或者選擇與開源組織合作,以確保競爭優(yōu)勢(shì)。
雖然敏捷開發(fā)中同時(shí)引入開源軟件對(duì)軟件產(chǎn)品的開發(fā)來說是極大的優(yōu)點(diǎn),但同時(shí)也存在一定的風(fēng)險(xiǎn)。從法律角度來說,開源軟件雖然不像商業(yè)軟件一樣有一個(gè)具體供應(yīng)商和確定的出售價(jià)格,但其仍然是受到知識(shí)產(chǎn)權(quán)相關(guān)法規(guī)的保護(hù)的。如果對(duì)開源協(xié)議不理解就直接引入開源軟件,依然會(huì)因?yàn)榍址噶碎_源軟件版權(quán)而受到開源組織甚至其他商業(yè)公司的法律追究。同時(shí)開源許可證的最為典型的通用公共許可證GPL(General Public License)規(guī)定,只要軟件中任何源代碼應(yīng)用了GPL許可證,此軟件的全部源代碼需公開,顯然,這對(duì)商業(yè)化的軟件產(chǎn)品而言是不能接受的。另外從技術(shù)角度來說,開源軟件本身的穩(wěn)定性以及引入開源軟件后軟件產(chǎn)品質(zhì)量的保證也是一個(gè)需要考慮的問題。這些都對(duì)敏捷開發(fā)項(xiàng)目組成員的開源軟件知識(shí)有很高的要求,如果希望獲得軟件開發(fā)過程當(dāng)中引入的每一個(gè)開源軟件具體信息并加以控制,完全依賴產(chǎn)品各個(gè)獨(dú)立項(xiàng)目組顯然是有極大風(fēng)險(xiǎn)的。本文將具體分析敏捷開發(fā)模式下引入開源軟件的主要風(fēng)險(xiǎn)類型,并將對(duì)風(fēng)險(xiǎn)管理流程進(jìn)行深入探析。
二、敏捷開發(fā)模式下產(chǎn)品引入開源軟件的風(fēng)險(xiǎn)分析
由于軟件產(chǎn)業(yè)的特殊性,使得產(chǎn)品在開發(fā)周期中存在眾多不確定因素??偟膩碚f,軟件開發(fā)的風(fēng)險(xiǎn)管理分為兩個(gè)部分:風(fēng)險(xiǎn)評(píng)估和風(fēng)險(xiǎn)控制,風(fēng)險(xiǎn)評(píng)估分為風(fēng)險(xiǎn)識(shí)別、分析和優(yōu)先級(jí)排序;風(fēng)險(xiǎn)控制分為風(fēng)險(xiǎn)計(jì)劃過程、解決過程和控制過程。其中風(fēng)險(xiǎn)識(shí)別和分析是最重要的部分。
由于敏捷開發(fā)模式下產(chǎn)品項(xiàng)目分為多個(gè)子項(xiàng)目,這就使得協(xié)調(diào)這些子項(xiàng)目、合理調(diào)配資源變得復(fù)雜。開源軟件的引入又進(jìn)一步帶來了法律風(fēng)險(xiǎn)和代碼穩(wěn)定性的風(fēng)險(xiǎn),使得整個(gè)項(xiàng)目的分析調(diào)控變得更為復(fù)雜。因此,在敏捷開發(fā)模式下引入開源軟件的風(fēng)險(xiǎn)的迅速識(shí)別分析顯得尤為重要。主要體現(xiàn)在以下幾個(gè)方面:
(一)環(huán)境內(nèi)部風(fēng)險(xiǎn)
1.技術(shù)風(fēng)險(xiǎn)。軟件開發(fā)的技術(shù)風(fēng)險(xiǎn)主要是不能或延遲完成技術(shù)突破的風(fēng)險(xiǎn)。由于突破技術(shù)難關(guān)是新產(chǎn)品開發(fā)項(xiàng)目的重中之重,所以,項(xiàng)目團(tuán)隊(duì)能否突破技術(shù)難關(guān)解決新產(chǎn)品技術(shù)問題是軟件開發(fā)項(xiàng)目的一個(gè)很大的技術(shù)風(fēng)險(xiǎn)。此外,在產(chǎn)品的設(shè)計(jì)、測(cè)試、接口維護(hù)等問題也存在著不可預(yù)見性,如果其中一環(huán)出現(xiàn)問題就可能會(huì)帶來巨大的軟件開發(fā)風(fēng)險(xiǎn)。
2.產(chǎn)品穩(wěn)定性風(fēng)險(xiǎn)。開源軟件的貢獻(xiàn)者是廣泛的,可能分布于世界各地,也有可能多位或者幾十上百位開發(fā)人員共同開發(fā)一個(gè)開源軟件,直接造成了開源軟件源頭的復(fù)雜性。開發(fā)人員的專業(yè)背景不同,代碼寫法也不盡相同。作為需要有穩(wěn)定產(chǎn)品輸出的商業(yè)軟件開發(fā)團(tuán)隊(duì)來說,使用開源軟件其對(duì)產(chǎn)品的穩(wěn)定性和成熟度方面是有較大風(fēng)險(xiǎn)的。
(二)環(huán)境外部風(fēng)險(xiǎn)
1.著作權(quán)保護(hù)問題。商業(yè)軟件是受著作權(quán)保護(hù)的。開源軟件的發(fā)布是采用Copyleft方式的但同樣是有版權(quán)保護(hù)的。它允許他人任意地散布、修改作品,但Copyleft的方式又會(huì)限制其行為和作法。開源軟件的著作權(quán)所有人擁有除復(fù)制權(quán)、修改權(quán)等以為所有的權(quán)利。所以認(rèn)為可以對(duì)開源代碼為所欲為的觀點(diǎn)是極具風(fēng)險(xiǎn)的。另外,開源軟件本身也存在著著作權(quán)歸屬不明確的問題。
2.專利保護(hù)問題。是一種保護(hù)力度還要高于著作權(quán)的保護(hù)權(quán)法,專利權(quán)對(duì)技術(shù)有更強(qiáng)的壟斷性,它是一種絕對(duì)權(quán),同時(shí)保護(hù)專利過程和方法。近些年,關(guān)于利用開源軟件涉嫌侵犯商業(yè)軟件專利的法律糾紛有許多。在開發(fā)環(huán)境下應(yīng)用開源軟件不得不考慮專利權(quán)方面的問題。
3.軟件開發(fā)許可證。許可證的定義不同是開源軟件和商業(yè)軟件的本質(zhì)區(qū)別。在商業(yè)軟件許可證中,許可方的版權(quán)歸屬和權(quán)利義務(wù)是明確的,被許可方要支付軟件使用的許可費(fèi)用。但在開源軟件許可證中,只是明確了被許可方是否能夠發(fā)布源代碼、對(duì)源代碼進(jìn)行修改需滿足的要求等,不涉及許可方軟件許可費(fèi)、維護(hù)支持的內(nèi)容。所以在進(jìn)行開源代碼研發(fā)時(shí),軟件開發(fā)許可證的有無和義務(wù)的界定也增加了軟件研發(fā)的風(fēng)險(xiǎn)。
三、敏捷開發(fā)模式下產(chǎn)品引入開源軟件的風(fēng)險(xiǎn)管理
風(fēng)險(xiǎn)管理的目標(biāo)不是拒絕使用開源軟件,而是通過有效的管理手段來使引入開源軟件后收益最大化,潛在風(fēng)險(xiǎn)最小化。
(一)敏捷開發(fā)模式下引入開源軟件的風(fēng)險(xiǎn)管理
敏捷開發(fā)模式下項(xiàng)目的執(zhí)行可以適應(yīng)前段需求的變化,在項(xiàng)目管理的過程中各個(gè)子項(xiàng)目的周期可以根據(jù)需求的變化及時(shí)調(diào)整項(xiàng)目的實(shí)施,從而可減小風(fēng)險(xiǎn),在每個(gè)子周期后向客戶交付成果并可以和客戶交流從而降低風(fēng)險(xiǎn)。敏捷開發(fā)環(huán)境下引入開源軟件的風(fēng)險(xiǎn)管理可以從以下幾個(gè)方面入手:
1.由于敏捷開發(fā)模式下的軟件開發(fā)項(xiàng)目被拆分成眾多子項(xiàng)目,降低風(fēng)險(xiǎn)可以通過縮短軟件的交付時(shí)間來實(shí)現(xiàn)。可以根據(jù)客戶隨時(shí)的新需求快速調(diào)整研發(fā)方向。另外要注重外部環(huán)境的變化,如市場(chǎng)創(chuàng)新技術(shù)的出現(xiàn)等,及時(shí)跟進(jìn)并作出調(diào)整,從而進(jìn)一步縮短研發(fā)周期,降低研發(fā)風(fēng)險(xiǎn)。
2.加強(qiáng)研發(fā)團(tuán)隊(duì)內(nèi)部開發(fā)人員的專業(yè)培訓(xùn)和培養(yǎng),對(duì)在項(xiàng)目開發(fā)過程中加入的新人員必須讓其快速有效地適應(yīng)工作,最好要引進(jìn)能夠解決關(guān)鍵技術(shù)的專業(yè)級(jí)優(yōu)秀人才,做好團(tuán)隊(duì)內(nèi)部的員工福利,防止關(guān)鍵人員的流失,聘請(qǐng)相關(guān)技術(shù)專家定期做專業(yè)培訓(xùn),已降低技術(shù)研發(fā)過程中造成的風(fēng)險(xiǎn)。
3.各個(gè)項(xiàng)目組之間和對(duì)客戶及時(shí)有效地溝通是降低風(fēng)險(xiǎn)的關(guān)鍵因素。不同于傳統(tǒng)的瀑布式開發(fā)環(huán)境,各個(gè)子項(xiàng)目組同時(shí)負(fù)責(zé)項(xiàng)目的不同部分,工作同時(shí)開展,項(xiàng)目之間及時(shí)有效地溝通就顯得尤為重要。通過溝通,可以有效地加強(qiáng)開發(fā)團(tuán)隊(duì)的凝聚力、向心力。加強(qiáng)客戶、管理者和開發(fā)者之間的溝通交流,通過網(wǎng)絡(luò)電話會(huì)議或現(xiàn)場(chǎng)辦公的形式,及時(shí)有效地傳達(dá)客戶的需求和反饋研發(fā)的進(jìn)度。
4.針對(duì)引用開源軟件造成的外部環(huán)境風(fēng)險(xiǎn),在研發(fā)組內(nèi)部引入第三方軟件協(xié)調(diào)員機(jī)制。其主要負(fù)責(zé)第三方開源軟件的引入、審核和對(duì)外溝通。確保在源頭上使得開源軟件的應(yīng)用風(fēng)險(xiǎn)降到最小。加強(qiáng)內(nèi)部開發(fā)人員開源軟件的專利、著作權(quán)意識(shí),做到“有需即用,用則無險(xiǎn)”。設(shè)立開源軟件內(nèi)部數(shù)據(jù)庫,用來存儲(chǔ)當(dāng)前公司已經(jīng)獲得了許可證的第三方軟件,以便于使用和對(duì)比。同時(shí),軟件研發(fā)企業(yè)必須規(guī)范管理和開發(fā)并建立嚴(yán)格的開源軟件審查機(jī)制,禁止開發(fā)人員在網(wǎng)上隨意抓取代碼。
(二)敏捷開發(fā)模式下引入開源軟件風(fēng)險(xiǎn)管理流程
圖1所示為敏捷開發(fā)模式下引入開源軟件的管理工作流程。第三方軟件協(xié)調(diào)員在整個(gè)產(chǎn)品開發(fā)過程當(dāng)中負(fù)責(zé)保證引入第三方軟件(包括商業(yè)軟件或開源軟件)后應(yīng)該遵循的步驟和采取的行動(dòng)。遵循的步驟和行動(dòng)需由公司內(nèi)部研發(fā)團(tuán)隊(duì)綜合具體分析得出。同時(shí)設(shè)立第三方軟件數(shù)據(jù)庫,用來存儲(chǔ)當(dāng)前公司已經(jīng)獲得了許可證的第三方軟件,以便于使用和比對(duì)。
從已有的敏捷開發(fā)模式下的第三方軟件策略開始,根據(jù)當(dāng)前策略對(duì)產(chǎn)品開發(fā)過程當(dāng)中各個(gè)項(xiàng)目組主動(dòng)上報(bào)或通過自動(dòng)化掃描工具發(fā)現(xiàn)的第三方軟件進(jìn)行鑒定。如果此第三方軟件是公司第三方軟件數(shù)據(jù)庫中已經(jīng)獲得安全使用權(quán)限的,則直接使用并正常進(jìn)行產(chǎn)品開發(fā);如果此第三方軟件是公司第三方軟件數(shù)據(jù)庫中沒有的,就需要第三方軟件協(xié)調(diào)員去申請(qǐng)相應(yīng)的許可證以確保第三方軟件的正常使用,在獲得批準(zhǔn)之后再繼續(xù)正常產(chǎn)品開發(fā);整個(gè)產(chǎn)品開發(fā)完成之后要進(jìn)行集成和產(chǎn)品發(fā)布,最后生成最終報(bào)告。
這個(gè)流程的實(shí)施就從源頭上止住了非許可的第三方開源軟件的流入,從而確保了研發(fā)產(chǎn)品的專業(yè)性和穩(wěn)定性,把外部環(huán)境風(fēng)險(xiǎn)降到最低。
四、結(jié)語
作為一種新興的商業(yè)軟件開發(fā)模式,在敏捷開發(fā)環(huán)境下引入開源軟件正在日漸成熟,它必將會(huì)改變未來軟件產(chǎn)業(yè)的格局,有利地促進(jìn)軟件技術(shù)研發(fā)的更新?lián)Q代。在開源軟件的法律保護(hù)還不完善的現(xiàn)狀下,引入開源代碼開發(fā)商業(yè)軟件確實(shí)存在一定的風(fēng)險(xiǎn),這些風(fēng)險(xiǎn)不應(yīng)被忽視,但也不應(yīng)被夸大。風(fēng)險(xiǎn)貫穿于項(xiàng)目的整個(gè)周期中,及時(shí)有效且持續(xù)的項(xiàng)目風(fēng)險(xiǎn)管理,建立優(yōu)良的風(fēng)險(xiǎn)管理機(jī)制及對(duì)應(yīng)的決策機(jī)制是當(dāng)今軟件研發(fā)項(xiàng)目成功之匙。
作者簡介:
劉海榮,東南大學(xué)MBA在讀研究生,現(xiàn)供職于南京愛立信熊貓通信有限公司。