第二章、 背景介紹
2.4 資料集介紹
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
2.3 MSR 相關分析主題
MSR
[2]
所涵蓋的分析主題甚多,例如 CVS log 是一種最常被用來分析的資料種類,因為此類資料最容易取得,也可反應出軟體的真實情況,便於分析出軟體 bug 的增 量,因此稱之此類的分析領域為 metadata analysis。或者透過分析靜態的原始碼(static source code analysis),來了解軟體的歷史演進與個人版本的變化,進而比較不同版 本,適用於發現系統漏洞與修復 bug。之後可進一步找出更好的方法去察覺程式版 本的修改與差異(source code differencing and analysis),例如透過語法或語義去識別 程式碼的改變。也可以以定量方式進行整體軟體評估(software metrics),衡量軟體各 個方面,包括系統規模、工作量、成本、功能、質量、複雜性、效率、可靠度與系 統可維護性等。
另一方面,則針對程式碼相似文本,結構和語義成分做分析,稱之 source code clone-detection methods。或者利用信息檢索(information-retrieval methods,IR)來進行 分類或分群文本,應用於許多軟體工程的問題,例如問題可回溯性、程式理解分析 以及軟體重複使用等問題。最後,透過機器學習的概念來進行分析(classification with supervised learning),使用監督式學習讓機器不斷的整合資訊與預測結果,即利用訓 練與測試資料兩種資料交互使用來形成分類與預測模型。而近幾年興起的社群網絡 也可應用於 MSR 分析,利用社會與行為科學理論,評估或推論無形的社群網絡關 係(social network analysis),找出在軟體開發過程中,開發人員的角色與貢獻,並分 析出軟體開發的過程中各種行為或是人員之間的關聯性,最後,再使用互動式的視 覺化數據(data visualization),可以具體的表示軟體維護與演進,增強使用者的認知。
2.4 資料集介紹
MSR 官方於 2014 年釋出 GitHub 平台上使用者操作與修改之紀錄,擷取原始的
‧
種為 MongoDB,MongoDB 所儲存格式為 JSON(javascript object notation)。資料來源部分除了直接從官方網站5上取得外,亦可使用呼叫 API 方式,即查詢 GitHub 上 API 的結果也可取得相同格式的資料。MongoDB 資料集還原後,有效資 料表有 15 個,其資料表名稱、對應筆數與所涵蓋的時間區間等資訊彙整於表 1。 repo_collaborators 協同成員 1,941 2007/10 - 2013/12 repos 軟體庫 108,710 2008/02 - 2013/10 repo_labels 軟體庫標籤 1,206 2008/02 - 2013/10 forks 複製專案事件 107,984 2008/02 - 2013/10 commits 提交事件 601,080 2008/02 - 2013/10 commit_comments 提交事件留言 60,845 2008/02 - 2013/10 pull_requests 提交合併要求 79,359 2010/08 - 2013/10 pull_request_comments 提交合併要求留言 93,198 2010/08 - 2013/10 issues 問題 126,308 2010/08 - 2013/10 issue_events 問題提交事件 618,408 2010/08 - 2013/10 issue_comments 問題提交事件留言 583,794 2010/08 - 2013/10
而本研究使用 MSR 官方 2014 年所釋出的 MongoDB 資料集當作研究資料來源,
資料期間涵蓋 2007/10/19 至 2013/10/10,且此資料集含有後續資料錯誤更正處理,
至今已釋放四個更新版本,最後更新日為 2013/12/13。
4 http://2014.msrconf.org/challenge.php
5 http://2015.msrconf.org/
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
表 2:資料集更新時程與修正內容 版本 釋出日期 修正內容
1.3 2013/12/13 更正遺失的專案成員資料。
1.2 2013/10/22 更正 commit_comments 表單中的 user_id。
1.1 2013/10/09 更正部分專案遺失的 commits 與 comments 資料。
1 2013/09/28
2.4.1 Table Schema
下圖(圖 2)顯示的是 MSR 於 2014 年所提供資料集當中,也就是本研究所使用的資 料及當中,資料表的綱目(schema)。此綱目主要用途為了解各資料表之間的關聯與 欄位定義,已利後續使用資料庫管理工具或撰寫程式取得欲分析之欄位。
圖 2:MSR 2014 資料集的資料表綱目6
6 http://ghtorrent.org/relational.html
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
2.4.2 GitHub 相關名詞說明
以下針對 GitHub 上重要之名詞與操作事件進行說明,以下名詞亦使用於本研究之其 他章節。organization members 表示此用戶是屬於哪一個組織(或公司)。repo collab-orators 表示此用戶是屬於哪一個專案的協同開發成員,但不一定為同一組織。值得 一提的是 follow 事件與 watch 事件,前者為追蹤另一用戶之動態,後者為關注某一 專案之動態,關注後將會收到有關專案更新之訊息通知。fork 事件則是指用戶複製 他人專案(軟體庫)至本地端,且納入本身專案(軟體庫),進行協同開發。之後透過 commit 事件提交程式源碼至本身或組織的專案中。若用戶修改他人專案後,可利用 pull request 事件提出要求加入(或合併)至專案版本中,而專案擁有者可決定是否合 併此版本至專案中,以發佈成最新版本。最後,GitHub 針對軟體庫相關的問題,區 分出數種觸發事件,例如用戶可訂閱或退訂問題的通知訊息,或者當問題中提到另 外一位用戶,可使用@User 方式來表示此問題提到此用戶,另外有引用或分配問題、
關閉或重新啟動問題等多種觸發事件可供 GitHub 用戶使用。