陳若愚,林 磊,胡忠宇
(北京信息科技大學 計算機學院,北京 100101)
近年來,互聯網的普及、社交網絡的發展以及開源軟件的興起使得在線協作的研究與應用成為人們關注的熱點.從廣泛使用的Linux操作系統,到市場占有率第一的Android手機操作系統,再到當前社會熱點大數據所使用的Hadoop、Spark等分布式計算平臺,這些都是為現代化生活做出巨大貢獻的開源軟件,也都采用了分布式協作的方式進行開發.
開源軟件的開發過程中,普遍使用分布式版本控制系統進行協作,如Git,SVN,CVS等.其中,Git以其極其優秀的分支創建、操作以及刪除的能力,成為目前使用最為廣泛的版本控制系統.
在Git的基礎上,2008年4月,現今全球最大的社交編程及代碼托管平臺GitHub正式上線.GitHub除了基本的Git代碼倉庫托管和基于Web的管理界面外,還提供了文檔管理、問題追蹤與訂閱、在線討論組等功能,為專業的開發人員提供了一片高效交流的樂土,開啟了人人都可以做開源項目的新時代.但是,GitHub主要面向開發及測試人員等專業用戶,相對比較小眾;同時,對普通用戶而言,使用門檻和學習成本都比較高.
近年來,隨著移動互聯網和智能終端的發展,直接面向最終用戶的應用軟件越來越多,傳統的軟件工程方法已經不能完全適應這一轉變,如何更有效、更準確地把握最終用戶的需求,對企業來說具有重要的意義.
本文提出了一種基于成熟度的開源軟件項目立項評估模型,包含項目需求評估及項目組評估兩個主要的階段,通過成熟度機制對項目立項的進程進行評估與控制,幫助最終用戶、開發人員、項目管理人員等多方參與到項目的立項評估過程中,促進相互交流,確保最終用戶能夠充分參與到開源軟件項目的需求分析過程中.
第二節將介紹相關的研究工作;第三節將詳細介紹基于成熟度的軟件項目立項評估模型及評估流程;第四節通過一個例子完整展示軟件項目的立項評估過程;最后對全文內容進行總結并提出未來可能的研究方向.
“眾包”(crowdsourcing)一詞是美國雜志《連線》的記者杰夫·豪(Jeff Howe)在2006年5月提出的,從提出至今得到了工業界和學術界的廣泛關注.他對“眾包”的定義是:“一個公司或機構把過去由員工執行的工作任務,以自由自愿的形式外包給非特定的(而且通常是大型的)大眾網絡的做法.眾包的任務通常由個人來承擔,但如果涉及到需要多人協作完成的任務,也有可能以依靠開源的個體生產的形式出現”[1].
Google提供的reCAPTCHA服務是使用最廣泛的驗證碼服務,也是最典型的眾包項目.reCAPTCHA提供了最基本的驗證碼服務,同時,還利用大量用戶的人工識別結果,來幫助對掃描版的圖書做數字化,還能幫助改善地圖的準確度,為更深層次的AI提供海量的寶貴數據.
“眾包”所呈現的參與式文化和所體現的集體智慧加速了創意的產生,但是同時也伴隨著巨大的潛在風險[2,3],在享受眾包帶來的創新資源的同時,還需規避眾包帶來的風險.
Scrum方法是目前全球最流行與最有效的敏捷項目管理理念與方法之一,是一種快速增量交付軟件產品的模型,在構建產品過程中創建產品的內部團隊并與其他用戶高度協作[4].Scrum方法能夠很好的應對快速變化的需求,強調面對面式的緊密協作與溝通,頻繁的交付新版本.
成熟度旨在確定被評估對象的成熟程度,是對與評估對象有關的概念、狀態、以及能力等進行的檢查活動[5].項目成熟度的衡量是為用戶的選擇做參考,為開發者提供項目質量的評估,促進軟件開發的同時對項目有推廣作用[6].
在眾包更加廣泛應用的現在,用戶群體開始變大,不再僅僅局限于開發人員,普通用戶也可以是提出自己需求、展示市場痛點的策劃人.這些用戶沒有足夠的開發能力,也無法通過軟件工程的相關工具、圖表來給其他用戶展示想法,只能通過自然語言來表達.本文所構思的平臺就是將最終用戶、開發人員、項目經理多方參與到項目的立項評估過程中,讓沒有開發能力的用戶也能參與項目的執行,以此來拓展用戶群體.
理想的項目成熟度計算是通過系統智能地抓取項目相關信息進行智能地判斷給分的,這里只從項目最主要的三個因素考慮:項目需求,項目人員分工,關注度.以下的成熟度計算將以這三個因素作為評判依據分成三個階段的評定,每個階段設置一個合適的條件來控制跳轉至下一階段.
3.1.1 項目需求成熟度
項目需求是一個項目最開始就要討論分析的重要因素,而需求分析對軟件項目后續階段的工作具有直接的指導性作用,需求分析執行的程度會直接關系到項目開發的成敗[7].成熟度最主要的衡量因素也就是項目需求成熟度.
項目需求成熟度有如下定義:
定義1.項目需求成熟度.

項目需求成熟度被定義為如下的公式:其中,R定義為項目組提出的需求集合,函數m(r)計算某一個需求項r的成熟度,定義為:

vs為需求項r獲得的贊成票數,va為需求項r獲得的反對票數.

項目需求成熟度的計算流程(1)項目組成員進行討論,詳細列舉并修改項目的各項需求;(2)用戶對每一項未確定的需求投上贊成或者反對的一票;(3)計算項目需求成熟度;(4)若項目需求成熟度大于等于 80 則可以進入下一個階段,否則返回步驟(1).
需求成熟度計算流程圖如圖1所示.

圖1 需求成熟度計算流程圖
3.1.2 項目組成熟度
項目組成熟度是指項目組人員的能力與擔任職務的契合程度.一個專業的用戶只有在扮演了他所擅長的角色之后才能最大化地發揮他的能力.而項目人員分配是否合理,會直接影響到項目的運作效率[8].
為了量化項目組參與人員的質量,設立帶等級標簽制度,將用戶所擅長的技能設定為帶有等級的標簽,用戶在平臺上參與的活動獲取積分,根據積分提升等級(等級上限為5).在項目分工時標簽可作為評分依據,通過標簽與職務的適配情況來判斷是否分配合理.若在CSDN、Linkedin、GitHub等較為出名的網站上有較高的知名度,平臺可以直接賦予其一定的積分和高等級標簽.
定義2.項目組成熟度.
項目組成熟度被定義為如下的公式:

其中,G定義為項目組分組集合,函數g(r)計算某一個分組r的成熟度,定義為:

其中,pl、pm為分組r的組長和組員的標簽等級,sl、sm為標準的組長和組員的標簽等級(默認為5、3),函數x(r)為分組r的標準人數,表1列出默認的值.

表1 分組人數標準表
項目組成熟度計算流程圖如圖2所示.
3.1.3 項目關注度
項目關注度是指一個項目應該引起用戶對其關注的程度.其值越高,表明該項目內容足夠豐富、創意足夠新穎,更容易引起用戶的高度關注.因此項目關注度也應該作為成熟度的評定依據之一.
關注度的計算需要用到信息檢索與信息分析的技術,最基本的信息就是關注量與瀏覽量,以下計算不做過于復雜的計算,主要使用這兩個信息做簡單計算來表示關注度.
定義3.項目關注度.

圖2 項目組成熟度計算流程圖
項目關注度被定義為如下的公式:

其中,l為項目的關注數,r為項目的被瀏覽數.

項目關注度的計算(1)從數據庫獲取項目的關注量與瀏覽量;(2)計算項目關注度;(3)若關注度大于等于 80 則可以進入下一階段,否則返回步驟(1).
3.1.4 計算總成熟度
由以上三個階段得出成熟度的三個主要因素,由以下公式計算得出最終的總成熟度:

得出總成熟度后,項目正式開始進入編碼階段,平臺與GitHub對接.
當有一個策劃者有靈感的時候,就可以直接在平臺上提出此想法,然后系統會由標題抓取關鍵詞,并首先自動向策劃者推薦類似的項目.如果策劃者覺得系統推薦的創意項目符合自己的預想,那么可以自行關閉想法;如若覺得并不符合自己的需求,可以再添加更加具體的描述,然后發布此想法.平臺用戶一起討論可行性以及再進一步的潤色想法.如果經過討論發現此想法實現難度極大甚至無法實現,策劃者可以自行關閉想法;如果經過潤色補充后,想法逐漸成為一個充實、可執行的項目,那么策劃者可以廣招賢士,組建項目團隊,開始項目的實現.
開始實現項目后,就必然要進入上文中成熟度評估的流程.一系列的計算過后,得出項目的成熟度,可作為項目質量的憑證.隨后進入開發階段.
進入正式開發階段后,平臺對接GitHub以便開發協作.開發團隊應該選擇一種軟件開發模型,平臺推薦使用Scrum敏捷開發過程模型,并為此提供了充分的作業空間.接下來平臺對開發過程不做干涉直到開發完成,結束.
完整的執行流程如圖3所示.

圖3 開源項目立項評估模型流程圖
現有用戶如表2所示.

表2 實例一:用戶標簽表
黃琦在平臺上提出一個想法“設計一個可以即時分享想法的平臺”,吸引眾多用戶進行討論,組成討論組.
王毅提出“不只是要分享想法,還要做到可以討論完善想法,并將想法實現”,98%的用戶表示同意.張珊認為“可以從即時記錄入手,寫一個有較強功能的記事本”,66%的用戶表示同意,其他用戶認為“記事本產品太多,沒必要”.
經過討論完善后,多數用戶認為可以實現,于是組成項目組,有王毅、李爾、張珊、劉肆、陳武、楊柳志愿加入項目組,王毅被推舉為組長,黃琦作為用戶組參與其中.
進入成熟度機制的三個階段:
(1)進入需求分析階段,項目組與用戶組進行討論,列出以下需求.
1)想法可以用富文本編輯,可插入圖片;
2)加入手動繪制圖案的功能;
3)對想法可以評論,點贊,關注,分享;
4)每個想法可以內設提供聊天的討論組功能;
5)想法可以轉化為項目的形式來實現,成立項目組來執行.
隨后過了一周,有233個用戶參與了投票,每項需求獲得的贊成投票數分別為:1)215,2)198,3)204,4)208,5)168.經過計算后得出需求成熟度為85.2,大于80,進入下一階段.
(2)進入成員分工階段,組內討論后成員分工如表3所示.

表3 實例一:成員職位表
經過計算后得出項目組成熟度為80.6,大于80,進入下一階段.
(3)進入關注度分析階段,由系統給出的項目的瀏覽量為568,關注量為474,進行關注度分析算法計算后得出的關注度為83.5.
根據三個階段獲取的三個數據,計算得出總成熟度:

項目正式成立,進入編碼階段,平臺對接GitHub,項目組以Scrum敏捷開發的理念來執行項目開發.
現有用戶如表4所示.
朱偉提出一個想法“設計一個可以用攝像頭拍攝并掃描物體,然后構建一個類似的3D立體模型的軟件”,吸引眾多用戶進行討論,組成討論組.

表4 實例二:用戶標簽表
趙剛提出“這種技術已經有了,有個叫3D掃描儀的機器就可以實現,如果要用手機攝像頭來實現的話,索尼出的Xperia XZ1實現了這種技術,可以掃描人臉和3D建模.如果要自己實現的話,需要有這方面的專家,否則難度非常大.”,98%的用戶表示同意.
經過討論后,多數用戶認為難度過高難以實現,而且沒有專業人員參與,于是想法作廢.
本文針對傳統的開源軟件開發模式在獲取用戶需求方面存在的問題,提出了基于項目成熟度評估的開源軟件立項評估模型,從需求成熟度、項目組成熟度、關注度三個角度對項目進行項目成熟度評估,并通過實例分析模擬了立項評估模型的執行過程.在未來的工作中,將嘗試在大規模分布式環境下進行實際運行測試,從而進一步對本文所提出的模型進行細節優化和參數調整.