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