• 沒有找到結果。

第二章、 背景介紹

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 用戶使用。

2.5 資料樣本結構分析

相關文件