基于代码大数据的软件开发质量与效能分析

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 2020阿里巴巴质量创新大会 2020 TEST INNOVATION CONFERENCE OF ALIBABA
2. 基于代码大数据的软件开发质量与效能分析 演讲人:彭鑫 复旦大学计算机科学技术学院 pengxin@fudan.edu.cn https://cspengxin.github.io http://www.se.fudan.edu.cn
3. 01 传统分析度量的困境 目录 02 基于代码大数据的新思路 CONTENTS 03 实践探索 04 总结与展望
4. 01 传统分析度量的困境
5. 软件开发中的几个普遍问题 软件维护的冰山 随风消逝的知识 开发过程不透明 脆弱的软件供应链 冰冻三尺非一日之寒 代码中的“神秘主义” 程序员工作难以评价 失控的代码拷贝 击鼓传花、法不责众 重新发明轮子 能力基线难以建立 脆弱的第三方库依赖链 根本问题:软件制品及开发过程的不可见性
6. 代码分析与度量 静态缺陷扫描 代码克隆检测 代码度量 — 规模 — 复杂度 — 内聚/耦合度 如果你不能度量它,就无法改进它 — Peter Drucker —…
7. 传统分析与度量的困境 无差别攻击? 揭示问题能力弱 容易误报、误读、误用 良药? 毒药? 度量成为教条主义 • 忽略了软件开发上下文差异的影响 • 以度量为指挥棒,忘记度量的初心 开发人员趋利避害 • 你衡量什么,你就会得到什么 • 一抓就死,一放就乱
8. 02 基于代码大数据的新思路
9. 机会:企业软件开发的云化和流水线化 DevOps:开发运维一体化 软件工具高度集成化、流水线化、云化 覆盖软件开发运维全过程的丰富数据
10. 代码大数据平台内容 代码 快照 代码成分:类、 方法、API等代码 元素及其关系 演化 过程 演化分析:代码 差异理解、代码 演化过程追溯 质量分析:代码 度量、缺陷与漏 洞、代码克隆、 过程追踪:开发 任务、代码修改 与测试、评审、 代码坏味等 持续集成等 外部 依赖 制品与过程数据的全面链接与追踪 系统实现软件开发知识的反馈、收集和凝练 第三方库:第三 方库版本、依赖 链及其版本等 拷贝代码:拷贝 代码来源及其副 本分布情况
11. 基于演化追溯实现深层分析 需 求 feature 编码 bug 设计 设计 编码 编码 持续跟踪代码发展变化 通过代码提交追溯变化原因 深层代码质量及开 发效能分析 refactor enhance — 长期危害评估 — 代码生存期 ? … — 分类损耗率 — 程序员画像 — 协作关系分析 —…
12. 大数据视角的代码度量和质量分析 纵向追踪 基于代码演化历史持续追踪代码 的发展变化及其多方面影响 01 回归本源 从问题的实际影响而非表象 出发确定并使用度量指标 关联分析 02 04 融合多种不同分析手段和度量指标 并结合代码修改意图等上下文信息 进行深入分析 03 横向比对 将大量项目中的相似问题综合在 一起相互映证,抽取共性规律
13. 03 实践探索
14. 代码缺陷跟踪 演化过程追溯 代码资产抽取 第三方库版本管理 静态 分析 演化 分析 克隆 检测 依赖 分析 SonarQube等工具 代码度量、坏味道等 能力基线分析 代码逻辑差异比较 高性能代码克隆检测 演化历史切片 多粒度、多形态克隆 克隆危害分析 设计影响评价 代码内部依赖分析 第三方库依赖分析 第三方库影响分析
15. 代码克隆分析 程序员画像
16. 亿级代码高效克隆检测 多粒度:文件、方法、片段 多形态:Type-1/2/3 准确性高:95%以上 如何去掉无意义的代码克隆? 哪些代码克隆风险更高?哪些需要尽快干预? 哪些代码克隆是抽取可复用资产的合适候选?
17. 克隆副本无修改 无害 无害?有害? 额外的克隆副本维 护开销 遗漏修改导致的克 隆副本缺陷残留 克隆副本无需 一致性修改 克隆副本能保 证同步一致性 修改 克隆副本一致 性修改有时延 克隆副本时延 导致缺陷残留 无害 轻微 中等 严重 代码数据分析指标 ü 克隆代码修改率 ü 一致性修改率 ü 一致性修改时间差 ü 一致性修改延迟导 致缺陷数
18. 针对4个开源项目(Redis/SQLite/ArgoUML/Tomcat)和3个企业软件系统的案例研究 代码总行数约1700万行,其中克隆代码行约357万行(21%),共包含23,560个克隆组 每实例修改次数累计 一致性修改时间差分布 各项目55%-72%的克隆组从未修改过 一致性修改要么很容易保持(2天以内),要么很困难(1周以上)
19. 1. 代码规模 — 代码长度 — token数 2. 代码差异度 代码克隆分析 指标体系 3. 实例分布 — 实例数 — 涉及文件数 — 分散度 4. 实例变化 — 存活时间 — 实例增减趋势 — 变更活跃度 5. 一致性修改 — 一致性修改率 — 一致性修改时间差 — 一致性修改缺陷数
20. 代码克隆画像 稳定的通用功能代码 集中维护的相似功能 持续扩散的高风险克隆
21. 1. 设计贡献 2. 新增代码 3. 修改代码 程序员效能分析 指标体系 6. 代码重复率 — 与他人重复 — 与自己重复 — 修改自己 — 修改他人 7. 代码特异 4. 删除代码 8. 缺陷引入 — 删除自己 — 删除他人 5. 代码存活率 9. 缺陷消除 — 自己引入 — 他人引入
22. 程序员画像 架构奠基者 核心功能实现者 代码问题清理者 主要代码贡献者 简单功能实现者 修改存量代码 大量零散修改 新手上路 代码贡献少 代码问题多
23. 04 总结与展望
24. 来源可溯 去向可查 责任可追 质量可控 https://www.mmh.com/wp_content/barcoding_wp_traceability_030513.pdf DevOps与云化开发平台提供了全过程软件开发数据 通过有追溯的代码大数据分析实现有效度量和分析
25. 代码视角 程序员视角 基于代码大数据实现质量问题的持续追溯和有效管控
26. THANKS

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-24 11:18
浙ICP备14020137号-1 $Map of visitor$