軟件數據分析的科學與藝術
作 者:(美)克裡斯蒂安·伯德(Christian Bird) 等 著 孫小兵,,汪盛 譯
定 價:159
出 版 社:機械工業出版社
出版日期:2020年04月01日
頁 數:488
裝 幀:平裝
ISBN:9787111647607
●出版者的話
譯者序
本書作者
章軟件數據分析的過去、現在與未來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.3PR-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.3n-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.1Mozilla項目56
4.3.2WebKit項目57
4.3.3Blink項目57
4.4生命周期分析57
4.4.1MozillaFirefox項目57
4.4.2WebKit項目60
4.4.3Blink項目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.1Eclipse使用型數據收集器68
5.3.2Mylyn和EclipseMylynMonitor75
5.3.3CodingSpectator77
5.3.4為VisualStudio創建收集工具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.2LDA在軟件分析中的應用107
6.3LDA工作原理108
6.4LDA教程110
6.4.1LDA來源110
6.4.2獲取軟件工程數據111
6.4.3文本分析和數據轉換111
6.4.4LDA應用113
6.4.5LDA輸出概要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.數據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.1CVSS概述169
8.3.2CVSS應用示例170
8.3.3CVSS的隱患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.2OSS代碼評審179
9.3.3微軟的代碼評審180
9.3.4基於Google的Gerrit代碼評審180
9.3.5GitHub中的拉取請求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.2Linux中多次提交的分支如何評審192
9.6.3封閉式編碼:GitHub和Gerrit上的分支或修訂193
9.6.4理解拉取請求為什麼被拒絕193
9.7結論194
參考文獻195
0章挖掘安卓應用程序中的異常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.4CHABADA作為惡意軟件檢測器208
10.4實驗評估209
10.4.1RQ1:異常檢測209
10.4.2RQ2:特征選擇211
10.4.3RQ3:惡意軟件檢測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
1章軟件制品間的修改耦合:從歷史修改中學習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
第三部分實戰經驗
2章軟件數據分析在工業實踐中的應用:當研究遇上實踐250
12.1引言250
12.2背景251
12.2.1Fraunhofer在軟件度量方面的經驗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
3章在軟件工程中使用數據進行決策:為軟件健康提供一種分析方法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
4章基於社區數據進行開源軟件使用的風險管理287
14.1引言287
14.2背景288
14.2.1風險和開源軟件的基本概念288
14.2.2建模和分析技術290
14.3OSS使用風險管理的一種方法292
14.4OSS社區結構和行為分析:XWiki案例293
14.4.1OSS社區的社交網絡分析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.1OSS社區的數據分析308
14.6.2通過目標導向技術進行風險建模和分析309
14.7結論309
致謝310
參考文獻310
5章大型企業軟件狀態評估—12年歷程312
15.1引言312
15.2過程和評估的演變313
15.3Avaya軟件狀態報告的影響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客戶質量度量的改進336
……
6章從軟件解析實踐中獲得的經驗教訓341
第四部分不錯主題
7章提高軟件質量的代碼注釋分析370
8章基於日志挖掘的目標驅動型軟件根本原因分析389
9章分析產品發布計劃417
第五部分大規模數據分析(大數據)
第20章Boa:一種支持超大規模MSR研究的使能語言和基礎設施446
第21章可擴展的並行化分布式規約挖掘469
參考文獻486
內容簡介
本書深入探討了軟件數據分析的技術與藝術,來自微軟、NASA等的多位軟件科學家和數據科學家分享了他們的實踐經驗。書中內容涵蓋安全數據分析、代碼審查、日志文檔、用戶監控等,技術領域涉足共同修改分析、文本分析、主題分析以及概念分析等方面,還包括發布計劃和源代碼注釋分析等不錯主題。通過閱讀本書,讀者將了解如何在工業領域和開源領域應用數據分析,以及如何向利益相關者和決策者呈現數據分析結果。