軟體數據分析的科學與藝術

軟體數據分析的科學與藝術

《軟體數據分析的科學與藝術》是2020年5月機械工業出版社出版的圖書,作者是克里斯蒂安·伯德(Christian Bird) 蒂姆·孟席斯。本書主要是探討了軟體數據分析的技術與藝術,來自微軟、NASA等的多位軟體科學家和數據科學家分享了他們的實踐經驗。

基本介紹

  • 中文名:軟體數據分析的科學與藝術
  • 作者:[美] 克里斯蒂安·伯德(Christian Bird)、 蒂姆·孟席斯(Tim)
  • 出版社:機械工業出版社
  • ISBN:9787111647607 
內容簡介,圖書目錄,

內容簡介

本書深入探討了軟體數據分析的技術與藝術,來自微軟、NASA等的多位軟體科學家和數據科學家分享了他們的實踐經驗。書中內容涵蓋安全數據分析、代碼審查、日誌文檔、用戶監控等,技術領域涉足共同修改分析、文本分析、主題分析以及概念分析等方面,還包括發布計畫和原始碼注釋分析等高級主題。通過閱讀本書,讀者將了解如何在工業領域和開源領域套用數據分析,以及如何向利益相關者和決策者呈現數據分析結果。

圖書目錄

出版者的話
譯者序
本書作者
第1章 軟體數據分析的過去、現在與未來1
1.1 定義1
1.2 過去(起源)3
1.2.1 代:初步工作3
1.2.2 第二代:學術實驗4
1.2.3 第三代:工業實驗4
1.2.4 第四代:數據科學無處不在4
1.3 現狀5
1.4 結論8
致謝8
參考文獻9
部分 技術教程
第2章 利用形式概念分析挖掘模式及其違約12
2.1 引言12
2.2 模式和塊13
2.3 計算所有塊15
2.4 使用Colibri挖掘購物車17
2.5 違約19
2.6 查找違約20
2.7 是兩種模式還是一種違約?21
2.8 性能22
2.9 編碼順序23
2.10 內聯24
2.11 相關工作24
2.11.1 挖掘模式24
2.11.2 挖掘違約25
2.11.3 PR-Miner26
2.12 結論26
致謝27
參考文獻27
第3章 軟體項目中的文本分析29
3.1 引言29
3.2 軟體項目的文本數據及其檢索29
3.2.1 文本數據29
3.2.2 文本檢索32
3.3 人工編碼33
3.3.1 編碼過程34
3.3.2 挑戰36
3.4 自動化分析37
3.4.1 主題建模37
3.4.2 詞性標記和關係抽取38
3.4.3 n-gram模型39
3.4.4 克隆檢測40
3.4.5 可視化42
3.5 兩個工業案例44
3.5.1 需求工程的痛點:需求工程調查45
3.5.2 需求規約中的克隆檢測49
3.6 結論52
參考文獻52
第4章 從軟體開發製品中合成知識54
4.1 問題描述54
4.2 軟體製品生命周期模型54
4.2.1 示例:補丁生命周期55
4.2.2 模型抽取56
4.3 代碼評審56
4.3.1 Mozilla項目56
4.3.2 WebKit項目57
4.3.3 Blink項目57
4.4 生命周期分析57
4.4.1 Mozilla Firefox項目57
4.4.2 WebKit項目60
4.4.3 Blink項目61
4.5 其他套用62
4.6 結論62
參考文獻63
第5章 分析IDE使用型數據的實用指南64
5.1 引言64
5.2 使用型數據的研究概念65
5.2.1 使用型數據概念及其分析意義65
5.2.2 基於目標選擇相關數據66
5.2.3 隱私問題66
5.2.4 研究範圍67
5.3 如何收集數據67
5.3.1 Eclipse使用型數據收集器68
5.3.2 Mylyn和Eclipse Mylyn Monitor75
5.3.3 CodingSpectator 77
5.3.4 為Visual Studio創建收集工具81
5.4 如何分析使用型數據87
5.4.1 數據匿名87
5.4.2 使用型數據的格式87
5.4.3 幅度分析88
5.4.4 分類分析88
5.4.5 序列分析89
5.4.6 狀態模型分析90
5.4.7 關鍵事件技術92
5.4.8 其他來源的數據93
5.5 使用型數據學習的局限性93
5.6 結論94
5.7 代碼清單95
致謝104
參考文獻104
第6章 隱含狄利克雷分布:從軟體工程數據中抽取主題106
6.1 引言106
6.2 LDA在軟體分析中的套用107
6.3 LDA工作原理108
6.4 LDA教程110
6.4.1 LDA來源110
6.4.2 獲取軟體工程數據111
6.4.3 文本分析和數據轉換111
6.4.4 LDA套用113
6.4.5 LDA輸出概要113
6.5 陷阱和有效性威脅117
6.5.1 標準有效性117
6.5.2 構造有效性119
6.5.3 內部有效性119
6.5.4 外部有效性120
6.5.5 可信性120
6.6 結論120
參考文獻121
第7章 分析產品和過程數據的工具與技術123
7.1 引言123
7.2 一種合理的分析流程124
7.2.1 獲取數據124
7.2.2 選擇數據125
7.2.3 處理數據126
7.2.4 匯總數據127
7.2.5 管道系統128
7.3 原始碼分析128
7.3.1 啟發式分析128
7.3.2 詞法分析129
7.3.3 語法和語義分析132
7.3.4 第三方工具132
7.4 編譯代碼分析137
7.4.1 彙編語言137
7.4.2 機器碼138
7.4.3 命名修飾處理140
7.4.4 位元組碼140
7.4.5 動態連結141
7.4.6 庫142
7.5 配置管理數據分析144
7.5.1 獲取存儲庫數據144
7.5.2 分析元數據145
7.5.3 分析時間序列快照148
7.5.4 檢出庫分析150
7.5.5 結合檔案與元數據分析151
7.5.6 組裝存儲庫152
7.6 數據可視化153
7.6.1 圖153
7.6.2 說明圖156
7.6.3 圖表157
7.6.4 地圖159
7.7 結論161
參考文獻161
第二部分 關注的數據和問題
第8章 安全數據分析166
8.1 漏洞166
8.2 安全性數據的注意事項167
8.2.1 注意事項1:有漏洞是正常的167
8.2.2 注意事項2:“更多的漏洞”並不總是意味著“更不安全”167
8.2.3 注意事項3:設計級別的缺陷通常不會被追蹤168
8.2.4 注意事項4:安全性是被消極定義的168
8.3 度量漏洞嚴重性169
8.3.1 CVSS概述169
8.3.2 CVSS套用示例170
8.3.3 CVSS的隱患170
8.4 收集、分析漏洞數據的方法170
8.4.1 步驟1:追蹤漏洞從報告到修復的全過程171
8.4.2 步驟2:聚合源控制日誌171
8.4.3 步驟3:確定漏洞覆蓋率172
8.4.4 步驟4:根據工程錯誤進行分類173
8.5 安全數據所提供的信息174
8.5.1 漏洞的社會技術要素174
8.5.2 漏洞具有長期複雜的歷史175
8.6 結論176
參考文獻176
第9章 混合的挖掘代碼評審數據的方法:多次提交評審與拉取請求的示例與研究178
9.1 引言178
9.2 使用混合方法處理的動機178
9.3 評審過程和數據179
9.3.1 軟體審查179
9.3.2 OSS代碼評審179
9.3.3 微軟的代碼評審180
9.3.4 基於Google的Gerrit代碼評審180
9.3.5 GitHub中的拉取請求180
9.3.6 數據度量和屬性181
9.4 定量的可重現性分析:分支的代碼評審182
9.4.1 研究問題1:每次評審的提交183
9.4.2 研究問題2:提交的大小183
9.4.3 研究問題3:評審間隔184
9.4.4 研究問題4:評審者的參與過程184
9.4.5 小結185
9.5 定性分析方法186
9.5.1 採樣方法186
9.5.2 數據收集187
9.5.3 微軟數據的定性分析189
9.5.4 將紮根理論套用于歸檔數據以理解OSS評審189
9.6 三角互證190
9.6.1 使用調查來三角互證定性結果191
9.6.2 Linux中多次提交的分支如何評審192
9.6.3 封閉式編碼:GitHub和Gerrit上的分支或修訂193
9.6.4 理解拉取請求為什麼被拒絕193
9.7 結論194
參考文獻195
第10章 挖掘安卓應用程式中的異常198
10.1 引言198
10.2 基於描述對套用進行聚類200
10.2.1 收集應用程式200
10.2.2 基於NLP對描述進行預處理201
10.2.3 基於LDA識別主題201
10.2.4 基於K-means算法對套用進行聚類203
10.2.5 找到的集群數量203
10.2.6 生成的應用程式集群204
10.3 通過API識別異常205
10.3.1 提取API的使用205
10.3.2 敏感和罕見的API206
10.3.3 基於距離的異常值檢測207
10.3.4 CHABADA作為惡意軟體檢測器208
10.4 實驗評估209
10.4.1 RQ1:異常檢測209
10.4.2 RQ2:特徵選擇211
10.4.3 RQ3:惡意軟體檢測211
10.4.4 有效性的限制和威脅214
10.5 相關工作215
10.5.1 挖掘APP描述215
10.5.2 行為和描述不匹配215
10.5.3 檢測惡意套用216
10.6 結論與展望216
致謝216
參考文獻216
第11章 軟體製品間的修改耦合:從歷史修改中學習219
11.1 引言219
11.2 修改耦合220
11.2.1 為什麼製品要一起修改?220
11.2.2 使用修改耦合的好處221
11.3 修改耦合的識別方法222
11.3.1 原始計數222
11.3.2 關聯規則228
11.3.3 時間序列分析232
11.4 識別修改耦合的挑戰234
11.4.1 提交習慣的影響234
11.4.2 檢測修改耦合的實用建議235
11.4.3 其他方法237
11.5 修改耦合的套用238
11.5.1 修改預測和修改影響分析238
11.5.2 設計缺陷的發現和重構240
11.5.3 評估軟體體系架構243
11.5.4 協作需求與社會技術的一致性243
11.6 結論244
參考文獻244
第三部分 實戰經驗
第12章 軟體數據分析在工業實踐中的套用:當研究遇上實踐250
12.1 引言250
12.2 背景251
12.2.1 Fraunhofer在軟體度量方面的經驗251
12.2.2 相關術語252
12.2.3 經驗方法252
12.2.4 在實踐中套用軟體度量—常規方法253
12.3 工業中實施度量方案的六個關鍵問題254
12.3.1 利益相關者、需求和規劃:成功度量方案的基礎254
12.3.2 度量收集:如何收集、何時收集、誰收集256
12.3.3 空有數據,沒有信息:當數據不是你所需要或期望的257
12.3.4 領域專家的關鍵作用259
12.3.5 順應不斷變化的需求261
12.3.6 向用戶傳達分析結果的有效方法262
12.4 結論264
參考文獻265
第13章 在軟體工程中使用數據進行決策:為軟體健康提供一種分析方法267
13.1 引言267
13.2 軟體工程度量簡史268
13.3 建立明確的目標269
13.3.1 基準270
13.3.2 產品目標271
13.4 度量評審271
13.4.1 上下文度量273
13.4.2 約束性度量274
13.4.3 開發度量276
13.5 軟體項目數據分析面臨的挑戰278
13.5.1 數據收集278
13.5.2 數據解釋280
13.6 示例:通過數據的使用改變產品開發281
13.7 用數據驅動軟體工程過程284
參考文獻285
第14章 基於社區數據進行開源軟體使用的風險管理287
14.1 引言287
14.2 背景288
14.2.1 風險和開源軟體的基本概念288
14.2.2 建模和分析技術290
14.3 OSS使用風險管理的一種方法292
14.4 OSS社區結構和行為分析:XWiki案例293
14.4.1 OSS社區的社交網路分析294
14.4.2 軟體質量、OSS社區行為和OSS項目的統計分析294
14.4.3 通過貝葉斯網路評估風險指標298
14.4.4 基於模型對開源軟體生態系統建模和推理300
14.4.5 整合分析以進行綜合風險評估302
14.5 一個風險評估的案例:Moodbile案例303
14.6 相關工作308
14.6.1 OSS社區的數據分析308
14.6.2 通過目標導向技術進行風險建模和分析309
14.7 結論309
致謝310
參考文獻310
第15章 大型企業軟體狀態評估—12年曆程312
15.1 引言312
15.2 過程和評估的演變313
15.3 Avaya軟體狀態報告的影響315
15.4 評估方法和機制315
15.5 數據來源318
15.5.1 數據精度320
15.5.2 分析的數據類型321
15.6 分析示例321
15.6.1 人員分析322
15.6.2 可預測性分析324
15.6.3 風險檔案管理325
15.7 軟體開發實踐328
15.7.1 七個原始的關鍵軟體領域329
15.7.2 四個有代表性的跟蹤實踐330
15.7.3 實踐領域示例:設計質量330
15.7.4 個體實踐的示例:靜態分析331
15.8 評估跟蹤:推薦和影響333
15.8.1 推薦示例334
15.8.2 推薦的部署335
15.9 評估的影響335
15.9.1 示例:自動化構建管理335
15.9.2 示例:風險檔案管理的部署336
15.9.3 客戶質

相關詞條

熱門詞條

聯絡我們