所有分类
  • 所有分类
  • 机械工业
  • 人民邮电
  • 清华大学
  • 电子工业

软件数据分析的科学与艺术 扫描版 PDF下载

软件数据分析的科学与艺术 扫描版 PDF下载插图

软件数据分析的科学与艺术封面

软件数据分析的科学与艺术 扫描版 PDF下载插图1

软件数据分析的科学与艺术书签

基本信息
作者: [美] 克里斯蒂安·伯德(Christian Bird) 蒂姆·孟席斯(Tim Menzies) 托马斯·齐默尔曼(Thomas Zimmermann)
丛书名: 计算机科学丛书
出版社:机械工业出版社
ISBN:9787111647607
上架时间:2020-4-14
出版日期:2020 年4月
开本:16开
页码:511
版次:1-1
所属分类:计算机 > 软件工程及软件方法学 > 软件方法/软件工程

内容简介
书籍
计算机书籍
本书深入探讨了软件数据分析的技术与艺术,来自微软、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 客户质量度量的改进336
15.10 结论337
15.11 附录:用于输入会话的示例问题338
致谢339
参考文献339
第16章 从软件解析实践中获得的经验教训341
16.1 引言341
16.2 问题选择342
16.3 数据收集344
16.3.1 数据集344
16.3.2 数据抽取350
16.4 描述性解析352
16.4.1 数据可视化352
16.4.2 统计报告353
16.5 预测性解析356
16.5.1 各种条件下的预测模型356
16.5.2 性能评估359
16.5.3 规范性解析362
16.6 未来之路364
参考文献365
第四部分 高级主题
第17章 提高软件质量的代码注释分析370
17.1 引言370
17.1.1 研究及分析代码注释的益处370
17.1.2 研究及分析代码注释面临的挑战372
17.1.3 针对规约挖掘和缺陷检测的代码注释分析372
17.2 文本分析:技术、工具和度量374
17.2.1 自然语言处理374
17.2.2 机器学习374
17.2.3 分析工具375
17.2.4 评估度量指标375
17.3 代码注释的相关研究376
17.3.1 代码注释的内容376
17.3.2 代码注释的常见主题376
17.4 面向规约挖掘和缺陷检测的自动化代码注释分析377
17.4.1 应该抽取什么?378
17.4.2 应该如何抽取信息?380
17.4.3 推荐阅读383
17.5 API文档的研究和分析384
17.5.1 API文档的研究384
17.5.2 API文档的分析384
17.6 未来的方向和挑战385
参考文献386
第18章 基于日志挖掘的目标驱动型软件根本原因分析389
18.1 引言389
18.2 根本原因分析方法390
18.2.1 基于规则的方法390
18.2.2 基于概率统计的方法390
18.2.3 基于模型的方法390
18.3 根本原因分析框架总览391
18.4 根本原因分析的诊断建模391
18.4.1 目标模型391
18.4.2 反目标模型393
18.4.3 模型注解393
18.4.4 贷款申请场景394
18.5 日志约简396
18.5.1 潜在语义索引397
18.5.2 概率潜在语义索引397
18.6 推理技术397
18.7 内部故障引起失效的根本原因分析399
18.7.1 知识表示399
18.7.2 诊断405
18.8 外部威胁引起失效的根本原因分析407
18.8.1 反目标模型规则408
18.8.2 推理408
18.9 实验评估410
18.9.1 检测内部故障的根本原因410
18.9.2 检测外部操作的根本原因411
18.9.3 性能评估413
18.10 结论414
参考文献415
第19章 分析产品发布计划417
19.1 引言和动机417
19.2 数据密集型发布计划问题的分类418
19.2.1 发布计划中应包含什么418
19.2.2 发布计划的主题418
19.2.3 发布计划的时间418
19.2.4 发布计划的质量419
19.2.5 可操作的发布计划419
19.2.6 发布计划的技术债420
19.2.7 涉及系列产品的发布计划420
19.3 软件发布计划的信息需求420
19.3.1 特征421
19.3.2 特征价值421
19.3.3 特征依赖422
19.3.4 利益相关者422
19.3.5 利益相关者意见和优先事项422
19.3.6 发布准备423
19.3.7 市场趋势423
19.3.8 资源消耗和限制423
19.3.9 结果合成423
19.4 基于分析法的开放式创新范式424
19.4.1 AOI@RP平台424
19.4.2 分析技术425
19.5 分析发布计划—案例研究428
19.5.1 互联网电视案例研究—背景与内容428
19.5.2 问题定义429
19.5.3 案例研究过程430
19.5.4 高级特征依赖和协同作用下的发布计划431
19.5.5 实时的发布计划433
19.5.6 基于众包聚类的重新规划436
19.5.7 结果讨论437
19.6 结论与展望438
19.7 附录:特征依赖约束440
致谢440
参考文献441
第五部分 大规模数据分析(大数据)
第20章 Boa:一种支持超大规模MSR研究的使能语言和基础设施446
20.1 目标446
20.2 Boa入门指南446
20.2.1 Boa的架构446
20.2.2 提交任务448
20.2.3 获取结果449
20.3 Boa的语法和语义449
20.3.1 基本类型和复合类型450
20.3.2 输出聚合451
20.3.3 用量词表示循环453
20.3.4 用户自定义函数453
20.4 挖掘项目和仓库元数据454
20.4.1 挖掘软件仓库的类型454
20.4.2 示例1:十大编程语言挖掘455
20.4.3 内置函数456
20.4.4 示例2:挖掘缺陷修复的修订版本457
20.4.5 示例3:计算项目的搅动率457
20.5 使用访问者模式挖掘源代码458
20.5.1 挖掘源代码的类型458
20.5.2 内置函数460
20.5.3 访问者语法461
20.5.4 示例4:挖掘抽象语法树统计461
20.5.5 自定义遍历策略462
20.5.6 示例5:挖掘添加的空检查463
20.5.7 示例6:找到不可达的代码464
20.6 可复现研究的指南465
20.7 结论466
20.8 动手实践466
参考文献467
第21章 可扩展的并行化分布式规约挖掘469
21.1 引言469
21.2 背景471
21.2.1 规约挖掘算法471
21.2.2 分布式计算472
21.3 分布式规约挖掘473
21.3.1 原则473
21.3.2 特定算法的并行化475
21.4 实现和实验评估480
21.4.1 数据集和实验设置480
21.4.2 研究问题和结果480
21.4.3 有效性威胁和当前局限性484
21.5 相关工作484
21.5.1 规约挖掘及其应用485
21.5.2 软件工程中的MapReduce485
21.5.3 并行数据挖掘算法486
21.6 结论与展望486
参考文献486

资源下载此资源下载价格为3积分点击检测网盘有效后购买,VIP免费
客服QQ:3599229794
资源下载
下载价格3 积分
客服QQ:3599229794
0

评论0

请先

显示验证码
没有账号? 注册  忘记密码?