软件数据分析技术与应用 课件第1章-初始软件数据分析_第1页
软件数据分析技术与应用 课件第1章-初始软件数据分析_第2页
软件数据分析技术与应用 课件第1章-初始软件数据分析_第3页
软件数据分析技术与应用 课件第1章-初始软件数据分析_第4页
软件数据分析技术与应用 课件第1章-初始软件数据分析_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2-4人组团队3月24日:每个团队汇报自己小组的调研方案和计划,20分钟4月28日:中期检查,原型、完善6月9日:试用、验收、总结实践成果选择上半年的某类研究生竞赛(榜单)参加1软件数据分析课程实践©YZU•Ying

WeiRissGroupYing

Wei第一章初始软件数据分析目录3软件与软件数据软件数据分析背景软件数据分析软件数据分析的发展现状本章小结课后练习©YZU•Ying

Wei软件与软件数据4软件自从第一台计算机诞生,就开始了软件的生产,到目前为止经历了程序设计(1946-1956)、程序系统(1956-1968)和软件工程(1968至今)三个时代。软件工程时代的生产方式是工程化的生成,使用数据库、开发工具、开发环境、网络、分布式、面向对象等技术。软件生命周期(softwarelifecycle,SLC)

包含可行性研究、需求分析、概要设计、详细设计、实现、集成测试、确认测试,以及使用与维护。©YZU•Ying

Wei软件开发过程模型软件与软件数据5©YZU•Ying

Wei瀑布模型(1970年)快速原型模型(1979年)软件与软件数据6©YZU•Ying

Wei螺旋模型(大型软件)(1988年)敏捷开发模型(灵活)(2001年)敏捷宣言的12个原则软件与软件数据7软件数据软件数据是软件开发期间和之后由软件工程过程和产品产生的数据。可能包含数以千计项目版本开发细节,软件数据的产生贯穿于整个项目过程。©YZU•Ying

Wei软件数据分析背景8为什么要进行软件数据分析?软件数据蕴含软件项目过程的各种信息,提供了实现软件系统所采取的实际演化过程的独特视图。为了更直观,下面以软件漏洞报告分析为例,对软件数据分析的价值进行初步阐释。©YZU•Ying

Wei软件数据相关网站软件缺陷报告网址:/home软件漏洞报告网站:/、/

软件漏洞类型网站:/软件数据分析背景9©YZU•Ying

WeiLinux

Kernel在CVE中每年提交的漏洞数据(1999-2021)Linux

Kernel系统不同类别漏洞数量及趋势(1999-2021)软件数据分析背景10软件数据分析的目标了解项目情况:例如项目质量状况,缺陷趋势、项目成本效益分析、开源代码复用情况等。改进项目流程:例如将缺陷优先级、开发人员指派等工作自动化。提高项目质量:包括功能、性能、安全性、可靠性等各个方面。降低项目成本:例如通过将人工工作自动化(自动编码、自动缺陷定位、修复等),减少人员及时间投入。加快项目进度:主要通过自动化、智能化的引入来提高效率。评价项目团队能力(如开发人员、测试人员质量):例如不少企业通过缺陷数据分析进行开发人员绩效评价。©YZU•Ying

Wei软件数据分析背景11软件数据分析发展契机开源生态日趋成熟近年来,以Gighub、StackOverflow、码云为代表的软件开源社区发展异常迅速,对软件开发技术、运行形态和服务模式都产生了前所未有的影响,软件技术已进入网络时代。开源软件仓库托管了数千万乃至上亿的软件项目,涵盖不同编程语言、操作系统平台以及业务领域。支持大众化软件生产和应用活动的开源社区包含了大量有价值的数据,这些数据规模巨大且具有高度开放性。©YZU•Ying

Wei软件数据分析背景12软件数据分析发展契机开源数据应用面临挑战可复用软件资源快速增长且广泛分布:如何在开源社区数据中有效定位高度相关且高可信的可信软件资源,成为软件复用环节迫切需要解决的瓶颈问题。外部贡献比例不断增大(外部开发者和用户):如何利用不同开源社区中的信息预测大众参与的任务优先级和潜在参与者,成为软件协同开发能否高效推进的关键。开源社区形成了海量软件知识文本:如何从社区数据中获取高质量软件开发相关知识并推荐给软件项目,是实现软件知识管理的新挑战。©YZU•Ying

Wei软件数据分析背景13软件数据分析发展契机机器学习赋能软件大数据分析基于机器学习的自然语言智能处理技术使计算机对于自然语言的处理能力上了一个新的台阶,使得机器自动翻译、自动问题解答、语义主题分类等传统的自然语言处理应用取得重要突破。深度学习可以避免传统机器学习过程中需要手动设定数据特征的过程,并且通过大数据的训练,深度学习模型会自动获得更有表达力的特征。机器学习方法通过数据学习产生模型,成为计算机模拟人类学习过程中智能数据分析技术的创新源泉,使得大规模复杂软件数据分析成为可能。©YZU•Ying

Wei软件数据分析14根据不同的任务目标,软件数据分析的数据对象和方法有所不同进行软件缺陷报告分析,辅助项目团队进行缺陷报告管理工作识别重复缺陷和缺陷严重程度,自动分配对应开发人员自动缺陷定位与修复,辅助开发人员进行软件维护机器学习、自然语言处理是当前主流的软件数据分析方法软件数据分析是一项错综复杂的任务,涉及广泛而复杂的工具组合需要技能熟练的从业者、广博的专业知识和组织知识、丰富的技能集和方法大工具包,才能从数据分析中提取有用的信息和知识©YZU•Ying

Wei机器学习、自然语言处理是当前主流的软件数据分析方法软件数据分析任务目标及其所对应的分析对象、分析方法和技术15©YZU•Ying

Wei软件数据分析发展现状16软件数据分析技术发展自然语言处理技术自然语言处理的初期,人们根据语言学理论建立自然语言分析或生成的规则,描述语言的各种成分以及成分之间的结构关系和意义关系。基于统计的方法是根据概率统计的方法建立统计语言模型,揭示语言中各种成分以及成分之间关系的统计规律,并用来分析或生成自然语言的语句。随着深度学习技术不断发展,深度学习技术应用在自然语言处理领域,使计算机能够更准确有效地处理自然语言。©YZU•Ying

Wei软件数据分析发展现状17软件数据分析技术发展机器学习和人工智能的复苏使得传统算法转向机器学习来分析大量的软件数据。但机器学习并不能替代传统编程,机器学习只是对传统编程方法的补充。例如:机器学习可用于为在线交易平台构建预测算法,而该平台的UI、数据可视化和其他元素将使用主流编程语言执行信息检索技术是从大型数据库中组织和检索信息,找到满足用户需求的相关信息或文档,适用于文档数据等非结构化文本的软件数据。典型模型:布尔模型、向量空间模型、经典概率模型和推理网络模型(一般化)©YZU•Ying

Wei软件数据分析发展现状18软件数据分析技术发展人工智能赋予万物智能,知识图谱作为一种新颖的知识表示形式广为人知,如今已经成为现如今最重要的知识表示技术之一。传统知识图谱以三元组的形式表示和存储数据,由头实体、尾实体和两者间的关系组成。同时,知识图谱用本体对知识框架进行描述和约束。©YZU•Ying

Wei姚明明星男汉叶莉属性属性属性关系软件数据分析发展现状19软件数据分析技术发展传统知识图谱VS事件知识图谱VS事理知识图谱传统知识图谱大多是基于实体的静态特征,用三元组形式表达的一系列图形事件知识图谱是从人机物的活动状态、行为、事件、场景等多模式(维度)的数据中抽取。人类的记忆是以事件为存储单位的,事件可以更客观地反应知识,尤其是动态的知识,更加符合人类的思维习惯事理知识图谱则表征了如何运用知识的经验总结/逻辑规则,是方法论层级©YZU•Ying

Wei传统知识图谱(Knowledgegraph)事件知识图谱(Eventknowledgegraph)事理认知图谱(Eventlogiccognitivegraph)实体事件规则软件数据分析发展现状20软件数据分析应用发展软件数据分析是数据科学的一个重要分支,作为软件工程和数据科学两大学科领域的交叉领域。广泛应用在多个领域,如程序理解、软件演化建模、API代码推荐、缺陷分析、缺陷预测、开发者推荐、缺陷定位和回归测试。©YZU•Ying

Wei软件数据分析发展现状21软件数据分析应用发展程序理解程序理解是软件工程领域的一个重要部分,但也是最基础的部分定义:从计算机程序中获取信息,建立认知模型的过程,通常通过建立一些人们能理解的模型来弄清程序是做什么以及如何做的问题目标:理解程序功能和目标、掌握程序的结构信息、了解数据流和控制流信息、理解程序操作方式、理解面向的对象(对象、类、继承等)应用:程序排错、增强程序、重用程序以及整理文档等方面©YZU•Ying

Wei软件数据分析发展现状22软件数据分析应用发展软件演化模型软件演化建模建立将时间因素考虑在内的主题模型,允许文档包含时间轴,可以用来探测和分析主题是如何随时间演变的软件演化是一个增量的过程,在这个过程中,软件特性的实现与新的需求保持一致开发人员使用来自第三方库的应用程序接口(API)大型第三方库以及每个库中包含的大量API软件庞大而复杂,难以在源代码中确定使用这些API实现特性请求的位置软件演化过程随着代码提交和软件版本的更新,必然会产生软件缺陷。软件数据分析可以让大家更全面准确地了解软件缺陷,并形成对缺陷更完整的认知,包括软件缺陷预测和开发者推荐等©YZU•Ying

Wei软件数据分析发展现状23软件数据分析应用发展软件缺陷预测软件缺陷预测是保证软件质量的重要技术定义:软件缺陷预测是指在软件开发周期过程中使用历史数据进行挖掘与分析,设计出与软件缺陷存在强相关性的度量元,并对程序模块进行度量,再采用统计学或机器学习技术构建缺陷预测模型,实现目标软件的缺陷预测过程意义:随着软件规模的扩大,缺陷预测技术能够在软件的开发周期中起到至关重要的作用,并且能有效地节约开发资源,从而大大缩短开发周期帮助开发团队更好的了解软件质量及问题帮助用户了解软件风险和问题帮助提高软件质量和可靠性©YZU•Ying

Wei软件数据分析发展现状24软件数据分析应用发展开发者推荐对软件相关数据(包括缺陷数据、代码数据、开发者信息等)开展有效分析,是开发者推荐和缺陷定位的基础目标:在软件维护的过程中及时有效地分析软件缺陷,并分配给合适的开发者进行解决意义:推荐出合适的开发者解决相应的软件缺陷,能提高缺陷修复的有效性和准确性©YZU•Ying

Wei软件数据分析发展现状25软件数据分析应用发展回归测试软件数据分析可以为回归测试提供辅助信息,有利于更加高效地进行回归测试定义:回归测试是指变更或修改后的软件需要进行的测试目标:确认代码修改没有引入新的错误或导致其他代码产生错误意义:提高测试效率,降低系统测试、维护升级等阶段的成本确保修改的正确性,防止版本回退确保软件质量,有助于提高软件质量和可靠性©YZ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论