989412-科学进展-新时代的软件工程-大数据

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)
运用机器学习、数据挖掘、信息可视化以及大规模数据处理等技术, 旨在帮助软件从业者以数据驱动的方式进行软件的开发、运行和维护, 有效处理、浏览和分析软件生命周期中生成的数据,从中提取有用的 信息,做出正确决策。
相关文档
最新文档