989412-科学进展-新时代的软件工程-大数据
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
服务故障分析诊断报告样例
思考题:
1. 什么是大数据?大数据有何特点? 2. 大数据分析的一般过程是什么? 3. 大数据下的软件工程有哪些新的研究课题? 4. 你认为大数据时代的机遇和挑战是什么? 5. 从Internet上你能得到哪些学习数据?请举例说明。
小结
大数据时代为软件工程研究提出了新的挑战 大数据的产生也为软件工程的发展提供了新的机会 软件工程研究将关注于:
大数据时代的软件工程
主要内容
1. 大数据的生态环境 2. 软件工程中的数据 3. 大数据下的软件工程研究 4. 软件解析学
大数据生态环境
大数据的生态系统
大数据计算范式
软件工程中的数据
ຫໍສະໝຸດ Baidu
1.霍桑(Hawthorne)现象
在实际项目开发中度量和评估并非首要任务,从而很难得 到开发人员的重视,也就很难进行有针对性的数据收集;
4.大数据的获取和组织
下述步骤的一个迭代: 首先,获取原始数据; 其次,清洗数据; 再次,针对问题建立相关量度,并对这些量度进行分 析得到研究结果; 最后是应用和验证。
5.大数据的网上抓取
获取开源项目数据主要是采用爬虫从互联网上抓取相关项 目的缺陷网页、提交日志、邮件列表等。
面临的主要问题是需要爬取的数据类型多、量大且数据持 续更新,而且爬取活动不能对开源项目的正常运转产生过 多影响(开源项目对数据抓取有严格控制)
美国西弗吉尼亚大学的蒂姆·孟席斯(Tim Menzies) 倡导建立了Promise Data 软 件数据仓库(http://promisedata.googlecode.com),旨在为软件工程研究人员提 供一个共同的公共数据平台。
AVAYA研究室的莫库斯(Mockus) 曾提出建立一个公共代码资源库的设想,北 大软件所联合AVAYA研究室建立了一个近乎开源世界全镜像的数据池 (https://passionlabpassionlab.org)
6.软件工程中数据处理的分层结构
7.软件过程数据中心
Sonar(http://nemo.sonarsource.org /) 和FOSSmole(http://flossmole.org/),主 要提供(开源)项目各种维度的( 统计) 信息, 例如参与人员、开发语言、 软件许可证(license),以及代码行数统计、代码测试覆盖率统计、代码注释的 比例等。
3. 实例1:StackMine ——基于大规模运行时数据的操作系统性能分析
任务描述 基于大规模ETW trace (事件跟踪)数据,帮助系统性能分析师更高 效地发现并分析那些影响巨大、程度严重的Windows性能缺陷
数据描述 每一个ETW trace 数据文件包含某一次Windows 性能缺陷发生时 间段内重要的系统级事件(线程上下文切换、CPU 采样、磁盘读 写等)
社会化开发的复杂性研究 如何利用海量软件数据和丰富的软件知识? 如何对程序员的技能、成长途径进行评估? 程序员与环境的交互、环境对他们的影响。
3.软件工程研究新课题-2
基于大数据的需求工程 需要设计自动化工具或者算法来分析用户评论,以获取需求 基于语义规则的需求获取方法 基于信息检索模型的需求获取方法
8.移动应用中的大数据
应用商店数据 苹果公司的App Store,收集了超过100 万个移动应用,下载次数超过 600亿次 谷歌公司的Google Play ,收集了超过100 万个移动应用,下载次数超过 500 亿次 移动应用商店中保存的信息包括:移动应用、评论、推荐信息、功能信 息、用户信息、开发者信息
移动应用开发; 软件开发的社会化; 超大规模系统(SOS)的构造;
智能移动设备数据 通讯录、通话记录、短信、安装的移动应用、照片、视频、上网记录等
9.部分主流移动开发平台
大数据下的软件工程研究
1.软件的发展与解耦
2.软件工程的新思维
版本控制系统、缺陷追踪系统、邮件列表和论坛等工具在软件开发活 动中得到普及,这些工具产生了海量的数据,记录了开发的过程。
输出
有揭示性(insightful):必须表达出对于完成特定任务来说有意义和有用的知 识;
可操作性(actionable) :必须能够指导软件从业者很容易地制定出具体的决 策或方案来解决相关问题。
相关技术
大规模数据的存储和计算 机器学习和数据挖掘 数据可视化
3. 实例1:StackMine ——基于大规模运行时数据的操作系统性能分析
4. 实例2:SAS(Service Analysis Studio) ——基于数据的在线系统的性能分析
任务描述 对大规模数据进行自动分析 对来自不同数据源的不同类型的数据进行分析 针对历史上发生过的服务事故,提供一种机制用于积累和利用其相关知 识 支持交互式的分析(human-in-the-loop)
即使开展了数据收集活动,被观察者也可能因为察觉到观 察行为的存在而改变其真实的开发行为。
2.软件工程中的大数据
现代软件开发数据知多少?以开源软件为例:
Gnome(桌面工作站),一个开源项目,超过70 万个缺陷数据,每天有上百 个新的缺陷提出;
阿帕奇(Apache,服务器软件) 开源社区,拥有超过600 万封邮件,平均每天 有1000 多封新邮件;
数据描述 关键性能指标(key performance indicators, KPI) 系统性能计数器(performance counters) 系统运行日志
解析技术 可疑信息挖掘,在大量数据中自动找出可能与当前服务事故相关联的信 息 缺陷组件定位,探测表现与众不同的实例 诊断信息重用,使用相似案例解决方案 分析结果综合
解析技术 对数据的深刻理解 对已有实践中重要技术的理解 对已有分析算法和技术的定制和改进 对复杂的分析结果进行数据可视化呈现
3. 实例1:StackMine ——基于大规模运行时数据的操作系统性能分析
实践应用 从超过6000 个ETW trace 文件中提取的1.8 亿条调用栈数据 StackMine 节省了超过90% 的用来定位性能缺陷的人力成本 在针对1000个ETW trace 文件及同等规模的分析任务中,StackMine 节 省4 到6 周的时间
Mozilla(浏览器) 社区,有超过2 亿条的代码提交日志,每天有2 万多条新 的提交;
Github.com (开源项目网站)拥有超过1000 万个的项目; SourceForge.net 和GoogleCode (开源项目网站)则分别有超过30 万个的
项目; 互联网上所有开源项目的版本控制系统数据总量估计在70TB 的级别。
3.软件的数字考古
人类考古学,人类祖先有意或无意留下的痕迹为考古学家 提供了研究古代文化历史的可能。
软件的数字考古,项目过程数据留下了软件的开发历史轨 迹,使得人们能够从中挖掘有价值的内容。
经验软件工程(empirical software engineering) 挖掘软件库(mining software repositories) 商业智能(business intelligence)
软件工程所需的新思维: 如何有效收集、组织和运用这些大数据? 探索新的开发模式和规律 改进互联网时代软件开发方法 辅助商业决策 。。。。。。
3.软件工程研究新课题-1
软件工程微过程研究((micro-pattern或micro-practice) 我的合作者在干什么? (what have my coworkers been doing?)” “在什么情况下会失效? (in what situations does this failure occur?)” 开源项目中的缺陷分类 (bug triage) 重复的缺陷报告(duplicate bug) 最适合解决某个缺陷报告的人员 哪个缺陷会被修复? 哪个代码片段将发生问题?
开发平台数据 微软的移动应用开发平台TouchDevelop,开发者发布了72384 个脚本, 并在Windows Store 上发布了636个移动应用
代码仓库数据 GitHub , 托管的代码库超过1000万个
技术论坛数据 Stack Overflow 网站,已经拥有190 万名注册用户,存储了超过550 万个 技术问题。
软件解析学关注大数据分析技术在软件行业中的具体应用,是对现代 软件工程方法的有效拓展,同时也与软件开发的实践密切相关。
2.软件解析学概述
研究领域
软件系统、软件用户、软件开发过程三个方向的研究和应用
目标用户
软件开发工程师、测试工程师、程序经理、产品经理、运维工程师、用户体 验设计师、售前售后支持工程师、数据分析师以及软件项目的管理人员等
基于大数据的软件重用 分析现有的类似功能的应用,从中发现与新应用相关的API 函数
基于大数据的软件质量度量 软件分析和验证 软件测试和调试
软件解析学
1.软件解析学(Software Analytics)
运用机器学习、数据挖掘、信息可视化以及大规模数据处理等技术, 旨在帮助软件从业者以数据驱动的方式进行软件的开发、运行和维护, 有效处理、浏览和分析软件生命周期中生成的数据,从中提取有用的 信息,做出正确决策。