袁 霖,王懷民,尹 剛,史殿習(xí),朱沿旭
(1.信息工程大學(xué)電子技術(shù)學(xué)院,河南 鄭州 450004;2.國防科學(xué)技術(shù)大學(xué)計算機學(xué)院,湖南 長沙 410073)
開源軟件OSS(Open Source Software)是指源代碼可以自由獲取的計算機軟件。開源軟件的開發(fā)者通過一種開放的軟件許可協(xié)議保護其著作權(quán),開源軟件的源代碼、文檔、開發(fā)日志、缺陷等數(shù)據(jù)允許用戶自由地使用、修改和傳播,這種開放模式使開源軟件功能和質(zhì)量能夠得到迅速提升。據(jù)統(tǒng)計,截止到2010 年12 月,僅SourceForge(sourceforge.net)一個開源社區(qū)中注冊的軟件項目就已經(jīng)接近30萬個,注冊成員超過270萬,超過4 600萬用戶在使用該社區(qū)的開源項目,每天的下載量超過200萬次[1]。隨著開源軟件及其應(yīng)用的飛速發(fā)展,互聯(lián)網(wǎng)上已經(jīng)形成了規(guī)模巨大、種類豐富的開源軟件資源,這些資源以代碼、構(gòu)件等形式免費提供給全世界開發(fā)人員使用。高效、合理利用這些軟件資源能夠極大地提高自身軟件系統(tǒng)開發(fā)效率以及提升軟件項目質(zhì)量。因此,如何從公共可獲取的開源軟件資源中快速獲取和使用高質(zhì)量、滿足自身特定需求的開源軟件已經(jīng)成為了當前軟件工程領(lǐng)域的研究熱點。但是,現(xiàn)有針對開源軟件的質(zhì)量評估模型存在評估過程復(fù)雜、繁瑣,評估結(jié)果主觀性太強等問題,不能滿足用戶準確、快速、全面了解相關(guān)軟件可信性的需求,難以適應(yīng)互聯(lián)網(wǎng)時代大規(guī)模開源軟件項目評估的趨勢[2]。
可信證據(jù)是指經(jīng)過查證確定屬實,并能夠用來證明軟件資源質(zhì)量真實情況的證據(jù)[3,4]。開源軟件在整個生命周期中產(chǎn)生了大量的、各種類型的數(shù)據(jù),其中隱含了大量關(guān)于軟件項目性能和質(zhì)量方面的可信證據(jù)信息,這些信息能夠真實地反映軟件產(chǎn)生過程及其產(chǎn)品屬性,有助于對軟件進行評估和預(yù)測。本文通過對現(xiàn)有開源軟件質(zhì)量評估模型以及互聯(lián)網(wǎng)上與開源軟件質(zhì)量相關(guān)的信息進行分析和總結(jié),提出了一種開源軟件可信性自動化評估證據(jù)框架。該框架適用于采用開源方式開發(fā)的軟件可信評估,主要針對目前可自動化獲取的可信證據(jù),并且能夠由用戶自己選取其所關(guān)注的可信屬性及證據(jù)。不同于已有模型的人工評估方法,該方法避免了手動評估繁瑣、重復(fù)的過程,充分考慮了用戶個性需求及軟件的領(lǐng)域特征,提高了評估的靈活性?;谠撟C據(jù)框架設(shè)計的開源軟件可信證據(jù)查詢平臺,將有益于克服當前評估方法繁瑣、復(fù)雜、主觀性太強等一系列問題,能夠滿足面向互聯(lián)網(wǎng)的大規(guī)模開源軟件的評估需求。
現(xiàn)有大部分的軟件度量模型都具有層次式結(jié)構(gòu),主要包括傳統(tǒng)軟件度量模型和開源軟件度量模型兩大類,傳統(tǒng)模型主要關(guān)注產(chǎn)品本身及其軟件開發(fā)過程,開源軟件質(zhì)量評估模型更關(guān)注軟件項目的應(yīng)用和社區(qū)支持情況。目前,已經(jīng)存在的、具有較大影響力的開源軟件質(zhì)量評估模型主要有以下幾種:
(1)OSMM 模型。OSMM(Open Source Maturity Model)[5]是由世界知名的Capgemini咨詢公司發(fā)起并建立的。該模型主要基于如下假設(shè):開源項目的質(zhì)量與其成熟度成正比。其成熟度被分解為六個部分:產(chǎn)品軟件、社區(qū)支持、文檔、培訓(xùn)、產(chǎn)品整合度和專業(yè)服務(wù)。每個部分包含一個權(quán)重,評估人員對每個測度給出一個量化的分值,基于預(yù)先設(shè)定好的權(quán)重對其進行評分。盡管OSMM 評估方法相對較簡單易用,但沒有考慮軟件自身產(chǎn)品的特征。
(2)OpenBRR評估模型。OpenBRR(Open Business Readiness Rating)模型[6]是由卡內(nèi)基·梅隆大學(xué)的開放源代碼研究中心、O′Reilly CodeZoo、SpikeSource及Intel公司聯(lián)合發(fā)起的,其意圖是使整個開源社區(qū)(包括企業(yè)用戶和開發(fā)者)以標準和開放的方式對開放源代碼軟件進行評級,以方便對開源軟件進行評估并促進其應(yīng)用。Open-BRR 使用一系列較高級別的評估準則,如功能性、支持度、服務(wù)、應(yīng)用范圍以及開發(fā)過程等。評估的過程需要首先指定一組評估屬性的關(guān)注程度,進而通過打分和加權(quán)方法給出整體分值。OpenBRR 方法在軟件屬性設(shè)定上較之OSMM 更加完善,但在具體測度的設(shè)置上仍存在較大問題。此外,該評估模型的屬性測度設(shè)置過于主觀,難以實現(xiàn)自動化。
(3)QSOS模型。QSOS(Qualification and Selection of Open Source Software)模型[7]主要用于對開源項目進行質(zhì)量評估和選擇。其評估和選擇過程分四個重復(fù)的階段:定義評估指標;收集來自于開源社區(qū)的評估指標,并對質(zhì)量測度進行打分;基于用戶需求定義備選質(zhì)量測度;驗證被評估軟件對用戶需求的符合程度,進而選出較符合用戶需求的開源軟件。QSOS模型的主要問題在于整個評估過程過于復(fù)雜,難于掌握。
開源軟件在其整個生命周期內(nèi)產(chǎn)生了大量的、各種類型的、公開的數(shù)據(jù),這些數(shù)據(jù)主要包括以下形式:(1)項目開發(fā)過程日志;(2)源代碼數(shù)據(jù),包括項目開發(fā)的各個版本源代碼信息;(3)各種項目相關(guān)的項目文檔;(4)開發(fā)人員交互歷史信息,如email、論壇等信息;(5)缺陷跟蹤系統(tǒng)信息,包括項目所有缺陷當前狀態(tài)、嚴重類型、修改等信息。這些數(shù)據(jù)能夠真實地反映軟件產(chǎn)生過程及其產(chǎn)品屬性,有助于更好地理解軟件開發(fā)過程的本質(zhì)特征,對提高軟件開發(fā)效率及其產(chǎn)品質(zhì)量具有重要意義。研究發(fā)現(xiàn),上述數(shù)據(jù)主要分布在軟件的各種資源庫及相關(guān)Web頁面上。
軟件資源庫是指軟件演化過程中產(chǎn)生和歸檔的所有制品,是軟件生命周期中所有相關(guān)數(shù)據(jù)的總和,主要包括存儲于軟件控制管理系統(tǒng)、缺陷跟蹤系統(tǒng)以及交互文檔數(shù)據(jù)中的各種數(shù)據(jù)信息[7]。
(1)軟件配置管理系統(tǒng)。軟件配置管理系統(tǒng)對軟件開發(fā)過程中的源代碼數(shù)據(jù)及項目開發(fā)的相關(guān)文檔進行管理和版本控制。目前,軟件配置管理系統(tǒng)SCM(Software Configuration Management)主要可分為集中式與非集中式兩種,其中集中式SCM 系統(tǒng)的代表是Subversion(SVN)和CVS(Concurrent Version System),非集中式系統(tǒng)的代表是GIT 和Mercurial。開源領(lǐng)域早期最常用的是CVS,但之后出現(xiàn)了從CVS向SVN 移植的趨勢,近年來又開始從集中式系統(tǒng)向非集中式系統(tǒng)過渡。
(2)缺陷跟蹤系統(tǒng)。缺陷跟蹤系統(tǒng)BTS(Bug Tracking System)主要用于管理軟件生命周期中出現(xiàn)的缺陷信息,對各種缺陷進行記錄、狀態(tài)跟蹤。當前開源領(lǐng)域普遍使用的系統(tǒng)有Mazilla社區(qū)的Bugzilla系統(tǒng)、SourceForge的Tracker系統(tǒng)以及Debian社區(qū)的Debbugs系統(tǒng)。這些系統(tǒng)提供的功能大致相同,其中Bugzilla的可定制性更強,因為它允許在缺陷報告中擴展特定項目所獨有的域,因此多數(shù)大型的獨立項目都采用了Bugzilla系統(tǒng)。
(3)用戶及開發(fā)人員郵件列表。郵件是實現(xiàn)人員在開源開發(fā)中進行信息交互的主要方式。郵件列表的工作原理是將一組開發(fā)者郵箱用一個郵件地址來描述,向郵件列表地址投遞的郵件會被分發(fā)至該組中的所有郵箱。為實現(xiàn)訂閱和消息歸檔等管理工作的自動化,開源社區(qū)通常會使用高級的郵件列表管理軟件。網(wǎng)上的大多數(shù)開源項目通過Web界面的形式對外提供其郵件列表文檔,部分開源項目還提供了能夠?qū)⑺嗛喠斜碇械泥]件歸檔的在線服務(wù)。已有研究表明,通過一定的數(shù)據(jù)挖掘及文本分析技術(shù)可以從中獲取到與項目相關(guān)的大量有價值的信息。
除來自于開源軟件項目資源庫的各種數(shù)據(jù)外,目前還有大量與軟件質(zhì)量相關(guān)的信息分布在互聯(lián)網(wǎng)Web頁面上,如項目近期下載量、開發(fā)人員團隊信息、版本發(fā)布信息、補丁發(fā)布信息、安全漏洞等。在上述介紹的開源軟件質(zhì)量模型中,如OpenBRR、QSOS、OSMM 等都分別使用了這部分信息作為開源軟件的相關(guān)質(zhì)量測度,但這些模型在應(yīng)用過程中都以評估人員手動獲取并分析這些信息為主要評估途徑。這種方式造成了評估過程異常繁瑣、復(fù)雜,即使專業(yè)人員對一個軟件進行評估也要投入巨大的時間和精力,而有限的權(quán)威機構(gòu)顯然無法完成對大規(guī)模的開源軟件進行評估的任務(wù),這與互聯(lián)網(wǎng)時代軟件數(shù)量的飛速增長是非常不適應(yīng)的。因此,自動化地定位和獲取、合理組織和使用互聯(lián)網(wǎng)上的開源軟件質(zhì)量信息,可以避免手動評估的繁瑣重復(fù)過程,能夠極大地提高評估效率,使得用戶可以準確、快速、全面地了解相關(guān)軟件項目的各種信息,有益于面向互聯(lián)網(wǎng)的大規(guī)模開源軟件評估系統(tǒng)的實現(xiàn)。
通過分析可以發(fā)現(xiàn),開源軟件資源庫及相關(guān)項目頁面信息中包含了大量與可信性相關(guān)的證據(jù)信息,其中很多證據(jù)信息可以通過自動化的方法獲取到。本文在此基礎(chǔ)上構(gòu)造了基于互聯(lián)網(wǎng)的開源軟件可信證據(jù)查詢平臺,該平臺實現(xiàn)的基本流程如圖1所示,其基本步驟如下:
(1)目前,不論是軟件各種資源庫數(shù)據(jù)(如版本控制系統(tǒng)、缺陷跟蹤系統(tǒng)、郵件庫等)的鏡像技術(shù)還是Web頁面信息定位與提取技術(shù)都已存在較成熟的工具和方法[8~12]。通過使用bundle 或plugin形式的特定收集器,開源軟件可信證據(jù)查詢平臺可對不同組織方式、不同數(shù)據(jù)結(jié)構(gòu)的各種資源庫信息和Web頁面信息進行自動化的鏡像和爬取。所有收集器鏡像和爬取的原始數(shù)據(jù)被存入本地原始數(shù)據(jù)庫,本地原始數(shù)據(jù)庫支持增量式的鏡像和存儲策略,其主要功能是存儲項目資源元數(shù)據(jù),包括項目源代碼文件、項目版本信息、Email消息、缺陷狀態(tài)等相關(guān)數(shù)據(jù)。
(2)本地原始數(shù)據(jù)庫中存儲的數(shù)據(jù)主要是非結(jié)構(gòu)化的原始數(shù)據(jù),這些數(shù)據(jù)一般不能直接反映相關(guān)軟件項目的可信屬性,需要對其進行進一步的解析。可信證據(jù)收集與計算平臺通過特定的數(shù)據(jù)解析器,將同一項目來自于不同數(shù)據(jù)源的數(shù)據(jù)解析成標準的、格式化的數(shù)據(jù)存儲于本地結(jié)構(gòu)化數(shù)據(jù)庫,以便于進一步進行可信證據(jù)的挖掘與計算。
(3)可信證據(jù)計算工具集依據(jù)結(jié)構(gòu)化數(shù)據(jù)庫的更新信息,實時地對結(jié)構(gòu)化數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)(包括代碼提交行為、缺陷列表、角色分工、郵件列表)進行處理,采用聚類、相關(guān)性分析、頻繁項挖掘以及機器學(xué)習(xí)等方法,將結(jié)構(gòu)化數(shù)據(jù)庫中的數(shù)據(jù)進行量化處理,形成用戶可以直接感知的可信證據(jù),存儲至可信證據(jù)庫。
(4)用戶通過開源軟件項目名稱和版本號向可信證據(jù)平臺提出查詢請求,平臺把證據(jù)庫中所有關(guān)于該項目的證據(jù)信息返回給用戶,用戶根據(jù)這些證據(jù)信息可以迅速地對該項目進行準確、全面的了解。
Figure 1 Trustworthiness evidence inquire platform for open source software based on Internet圖1 基于互聯(lián)網(wǎng)的開源軟件可信證據(jù)查詢平臺
Table 1 Trustworthness evidence framework表1 可信證據(jù)框架
實現(xiàn)基于互聯(lián)網(wǎng)的開源軟件可信證據(jù)查詢平臺的關(guān)鍵是一組能夠準確反映開源軟件質(zhì)量信息的可信證據(jù)集合,并且所有可信證據(jù)項都可以在互聯(lián)網(wǎng)上自動地獲取。本文基于已有開源質(zhì)量模型,通過對上述主要數(shù)據(jù)源的組織方式、數(shù)據(jù)結(jié)構(gòu)進行深入研究后,提出了一種可自動實現(xiàn)的開源軟件可信評估證據(jù)框架,如表1所示。
表1中,I18N/L10N 是指對項目進行國際化和本地化的任務(wù),分別是單詞“Internationalization”和“Localization”的縮寫。
本節(jié)將通過一個著名開源瀏覽器軟件Mozilla Firefox(3.6.13)說明上述證據(jù)框架和可信證據(jù)查詢平臺的可行性,具體分析結(jié)果如表2所示。由表2的Firefox案例分析可知,由于該證據(jù)框架中的證據(jù)項能夠從Web頁面和各種項目相關(guān)資源庫中自動地獲取,因此可以極大地簡化開源軟件的評估過程,使得用戶可以準確、快速、全面地了解其所需要項目的所有相關(guān)信息,并且在開源軟件定位和搜索技術(shù)日益成熟的情況下,該證據(jù)框架中的可信證據(jù)項可以方便地添加和修訂,使其不斷準確和完善。需要指出的是,由于項目成熟程度、社區(qū)組織方式、開發(fā)人員任務(wù)分工等因素的影響,該證據(jù)框架不表示對任何一個開源項目均能完整地獲取其所有證據(jù)項,當項目相關(guān)數(shù)據(jù)的獲取受到限制時(如表2中平均文檔更新頻率和翻譯人員存在個數(shù))或許僅能夠獲取到其中部分的證據(jù)類型。為盡量克服這種情況,證據(jù)框架中的一些證據(jù)項存在互補情況,如項目下載量與所占市場比例,以及翻譯人員與支持語言版本數(shù)等證據(jù)。因此,本文所提出的證據(jù)框架致力于盡可能全面地、自動地為用戶提供相關(guān)軟件的證據(jù)信息,而在最終的證據(jù)使用上,由用戶根據(jù)自己需求靈活選取。
本文針對開源軟件評估過程中存在的問題,構(gòu)建了面向開源軟件的可信評估證據(jù)框架,并基于該框架提出了一種面向互聯(lián)網(wǎng)的開源軟件可信證據(jù)查詢平臺的實現(xiàn)方法,利用該平臺能夠極大地提高開源軟件可信評估的效率,使得用戶能夠準確、快速、全面地了解相關(guān)軟件項目的各種信息。最后,以一個知名開源軟件Firefox為例證實了該證據(jù)框架以及證據(jù)查詢平臺的可行性。該方法適用于采用開源方式開發(fā)的軟件可信證據(jù)獲取,不同于人工評估過程,該方法主要針對可自動獲取的可信證據(jù)項,避免了手動評估繁瑣重復(fù)的過程,可由用戶自己選取其所關(guān)注的可信屬性及其證據(jù)項,充分考慮了用戶個性需求及軟件的領(lǐng)域特征,提高了評估的靈活性,并能滿足大規(guī)模開源軟件評估要求。
Table 2 Firefox trustworthness evidence analysis表2 Firefox可信證據(jù)分析
[1]https:∥www.sourceforge.net.
[2]Wang Huai-min,Yin Gang.Software trustworthy evolution in cyber age[J].Communication of the CCF,2010,6(2):28-36.(in Chinese)
[3]TRUSTIE-STC.Software trustworthiness evidence framework specification(V2.0)[EB/OL].[2011-04-30].http:∥www.trustie.net/download/STEFS-2.0.pdf.
[4]TRUSTIE-STC.Software trustworthiness classification specification(V2.0)[EB/OL].[2011-04-30].http:∥www.trustie.net/download/STCFS-2.0.pdf.
[5]Golden B.Making open source ready for the enterprise:The open source maturity model[EB/OL].[2008-05-10].http:∥timreview.ca/article/145.
[6]Business Readiness Rating.Business readiness rating for open source[EB/OL].[2005-12-30].http:∥www.openbrr.org.
[7]QSOS.Method for qualification and selection of open source software(qsos)version 1.6[EB/OL].[2006-04-30].http:∥www.qsos.org.
[8]Keqdi H,Collard M L,Maletic J I.A survey and taxonomy of approaches for mining software epositories in the context of software evolution[J].Journal of Software Maintunauce and Evolution:Research and Practice,2007,19(2):77-131.
[9]Linstead E,Bajracharya S,Ngo T,et al.Sourcerer:Mining and searching internet-scale software repositories[J].Data Mining and Knowledge Discovery,2009,18(2):300-336.
[10]Godfrey M W,Zou L.Using origin analysis to detect merging and splitting of source code entities[J].IEEE Transactions on Software Engineering,2005,31(2):166-181.
[11]Ostrand T J,Weyuker E J.A tool for mining defect-tracking systems to predict fault-prone files[C]∥Proc of MSR'04,2.04:85-89.
[12]Gousios G,Spinellis D.A platform for software engineering research[C]∥Proc of MSR'09,2.09:31-40.
附中文參考文獻:
[2]王懷民,尹剛.網(wǎng)絡(luò)時代的軟件可信演化[J].計算機學(xué)會通訊,2010,6(2):28-36.