軟件開發大數據分析研究與實踐

彭鑫,吳毅堅,陳碧歡

  • 出版商: 電子工業
  • 出版日期: 2025-01-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 220
  • ISBN: 7121496739
  • ISBN-13: 9787121496738
  • 相關分類: 大數據 Big-dataData Science
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

本書圍繞"軟件開發大數據分析”這一主題介紹相關研究與實踐。其中,第1章對軟件開發大數據分析的問題背景及軟件開發的數字化和智能化發展目標進行介紹和分析,同時對本書的內容進行概述;第2章對軟件開發大數據分析中常用的程序分析技術進行介紹,包括靜態程序分析、動態程序分析、代碼差異分析、演化分析等;第3章和第4章針對軟件質量問題分析這一主題分別介紹代碼層面的軟件缺陷分析及設計層面的軟件設計質量分析;第5~7章圍繞數據驅動的軟件開發質量追溯體系這一目標,分別介紹代碼克隆分析與管理、軟件供應鏈風險分析、代碼質量與開發效能分析三方面技術;第 8 章圍繞軟件開發智能化這一主題,具體介紹代碼資產挖掘與推薦,包括基於克隆分析的代碼資產抽取、搜索式代碼推薦、生成式代碼推薦技術。 本書適合IT及因特網行業從事軟件質量與流程管理、軟件研發效能管理的技術專家和工程師閱讀,也適合對軟件開發大數據分析與挖掘及軟件智能化開發等領域感興趣的學生和研究人員閱讀。

目錄大綱

第1章 軟件開發大數據分析概述········································································1
1.1 問題背景····························································································1
1.1.1 快速交付與可信保障的雙重壓力······················································1
1.1.2 軟件的復雜性··············································································2
1.1.3 問題與挑戰·················································································2
1.2 軟件開發的數字化和智能化····································································4
1.3 軟件分析基礎······················································································8
1.4 代碼與設計質量分析············································································11
1.4.1 軟件缺陷分析·············································································12
1.4.2 軟件設計質量分析·······································································13
1.5 軟件開發質量追溯體系·········································································14
1.6 小結·································································································16
參考文獻··································································································17
第2章 軟件分析技術基礎···············································································18
2.1 靜態程序分析·····················································································18
2.1.1 程序的表示················································································18
2.1.2 程序語義···················································································21
2.1.3 靜態程序分析簡介·······································································23
2.2 動態程序分析·····················································································25
2.2.1 Tracing和Profiling······································································25
2.2.2 動態切片···················································································28
2.2.3 動態符號執行·············································································28
2.3 代碼克隆檢測·····················································································30
2.3.1 代碼克隆相關概念·······································································30
2.3.2 代碼克隆檢測的總體流程······························································32
2.3.3 代碼克隆檢測方法·······································································33
2.4 代碼差異分析·····················································································37
2.4.1 基於文本的差異分析····································································37
2.4.2 基於語法樹的差異分析·································································38
2.5 代碼演化分析·····················································································41
2.5.1 代碼共變的識別··········································································41
2.5.2 代碼共變識別的挑戰及解決方案·····················································43
2.5.3 代碼共變分析的應用····································································43
2.6 小結·································································································44
參考文獻··································································································45
第3章 軟件缺陷分析·····················································································49
3.1 基於靜態分析的缺陷分析······································································49
3.1.1 程序的狀態和語義·······································································49
3.1.2 抽象解釋理論·············································································51
3.1.3 基於抽象解釋的程序分析······························································58
3.1.4 案例分析···················································································59
3.2 基於深度學習的缺陷分析······································································67
3.2.1 基於代碼快照表示學習的缺陷檢測··················································67
3.2.2 基於代碼變更表示學習的缺陷檢測··················································69
3.3 基於大模型的缺陷分析···································································70
3.3.1 基於大模型的缺陷定位·································································70
3.3.2 基於大模型的缺陷檢測·································································71
3.3.3 基於大模型的缺陷修復·································································72
3.4 缺陷案例挖掘與分析············································································76
3.4.1 缺陷庫概述················································································76
3.4.2 基於自動化測試的缺陷案例收集·····················································77
3.4.3 缺陷案例分類與利用····································································80
3.5 小結·································································································82
參考文獻··································································································82
第4章 軟件設計質量分析···············································································85
4.1 概述·································································································85
4.1.1 軟件設計質量分析的目標······························································85
4.1.2 軟件設計質量分析的方式······························································86
4.2 模塊級軟件設計質量分析······································································87
4.2.1 代碼內聚度················································································87
4.2.2 代碼耦合度················································································88
4.2.3 代碼復雜度················································································89
4.2.4 代碼重復度················································································89
4.3 架構級軟件設計質量分析······································································90
4.3.1 架構復雜度分析··········································································90
4.3.2 模塊化······················································································91
4.3.3 層次結構分析·············································································93
4.3.4 軟件實現與架構設計的一致性分析··················································95
4.3.5 基於變更傳播的設計質量分析························································97
4.4 軟件設計異味檢測···············································································98
4.4.1 設計異味概述·············································································98
4.4.2 典型的設計異味········································································100
4.5 微服務架構設計質量分析····································································102
4.5.1 單體應用拆分方法·····································································102
4.5.2 微服務架構反模式·····································································103
4.6 小結·······························································································104
參考文獻································································································105
第5章 代碼克隆分析與管理···········································································107
5.1 概述·······························································································107
5.2 代碼克隆分析技術·············································································108
5.2.1 代碼克隆量與代碼克隆比例分析···················································108
5.2.2 代碼克隆譜系分析·····································································110
5.2.3 代碼克隆一致性修改分析····························································111
5.2.4 代碼克隆與缺陷的關系分析·························································113
5.2.5 代碼克隆危害分析·····································································114
5.3 代碼克隆管理技術·············································································116
5.3.1 代碼克隆的監控········································································116
5.3.2 基於危害分析的代碼克隆管理······················································118
5.3.3 代碼克隆一致性維護的推薦·························································119
5.3.4 面向軟件維護的代碼克隆可視化···················································120
5.4 小結·······························································································122
參考文獻································································································123
第6章 軟件供應鏈風險分析···········································································124
6.1 軟件供應鏈風險概述··········································································124
6.2 軟件成分分析···················································································126
6.2.1 基於包管理器的成分分析····························································126
6.2.2 基於代碼指紋的成分分析····························································129
6.3 安全風險分析···················································································131
6.3.1 漏洞數據庫構建········································································132
6.3.2 漏洞傳播影響分析·····································································137
6.3.3 惡意軟件包檢測········································································141
6.4 許可證風險分析················································································144
6.4.1 許可證沖突檢測········································································144
6.4.2 許可證違反檢測········································································145
6.5 維護風險分析···················································································147
6.5.1 組件沖突檢測···········································································147
6.5.2 組件版本統一分析·····································································148
6.5.3 組件版本升級推薦·····································································149
6.6 小結·······························································································150
參考文獻································································································150
第7章 代碼質量與開發效能分析·····································································153
7.1 概述·······························································································153
7.1.1 軟件開發質量和效能分析的挑戰···················································153
7.1.2 面向質量和效能的代碼大數據分析思路··········································154
7.2 代碼質量分析···················································································156
7.2.1 概述·······················································································156
7.2.2 靜態缺陷·················································································157
7.2.3 代碼克隆·················································································160
7.2.4 代碼復雜度··············································································163
7.2.5 第三方庫·················································································165
7.2.6 代碼質量的可視化·····································································166
7.3 開發效能分析···················································································173
7.3.1 概述·······················································································174
7.3.2 開發效能分析的指標體系····························································174
7.3.3 代碼貢獻·················································································175
7.3.4 代碼損耗·················································································175
7.3.5 開發任務與代碼的關聯分析·························································176
7.4 小結·······························································································178
參考文獻································································································178
第8章 代碼資產挖掘與推薦···········································································180
8.1 概述·······························································································180
8.2 基於克隆分析的代碼資產抽取······························································181
8.2.1 抽取通用功能實現·····································································181
8.2.2 抽取軟件設計模板·····································································184
8.3 搜索式代碼推薦················································································185
8.3.1 基於信息檢索的自然語言代碼搜索················································185
8.3.2 基於深度學習的自然語言代碼搜索················································194
8.3.3 基於相似性的代碼到代碼搜索······················································197
8.4 生成式代碼推薦················································································199
8.4.1 生成式代碼推薦技術思路····························································199
8.4.2 基於傳統方法的生成式代碼推薦技術進展·······································202
8.4.3 基於大模型的生成式代碼推薦技術進展··········································203
8.5 小結·······························································································205
參考文獻································································································206