没有合适的资源?快使用搜索试试~ 我知道了~
西斯博士一个是如果你是PolytechnI qUE HaT-DE-flrance一年前INSAHAUT-S-DE-Flrance主题:计算机科学由Bruno Góis Mateus主持和辩护2021年3月26日,巴伦西亚博士学校:工程科学研究团队,实验室:计算机科学系工业和人类自动化控制、机械工程和计算机科学实验室(LAMIH UMRCNRS 8201)使用Kotlin实现陪审团委员会主席- 卡西亚·马沙尔·德·奥利维拉。上法兰西理工大学教授评审员- Guilherme Horta Travassos。里约热内卢联邦大学教授- 雅克·克莱因。卢森堡大学教授检查- 达利拉·塔姆扎利特。南特大学副教授主管- 克里斯托弗·科尔斯基。上法兰西理工大学教授共同主管- 马蒂亚斯·马丁内斯。上法兰西理工大学副教授CO LOP HON博士论文题为"Towards High-quality Android applications development with Kotlin",由Bruno GÓIS M ATEUS撰写,com pleted on M a y 4,2021,Typeset与文件n t prepa r a tion system L A T E X和yathesis类致力于在法国准备的论文奥克托拉特的论文一个是PolytechnIQUE Ha t-DE-flrance和纪律:信息学由Bruno GÓIS MATEUS2021年3月26日,巴伦西亚博士学校:工程科学研究团队,实验室:计算机科学系工业和人类自动化控制、机械工程和计算机科学实验室(LAMIH UMRCNRS 8201)使用Kotlin实现高质量的Android应用程序开发陪审团评审团主席- 卡西亚·马沙尔·德·奥利维拉。上法兰西理工大学教授报告员- Guilherme Horta Travassos。里约热内卢联邦大学教授- 雅克·克莱因。卢森堡大学教授审查员- 达利拉·塔姆扎利特。南特大学人类发展研究讲师论文主任- 克里斯托弗·科尔斯基。上法兰西理工大学教授共同监督- 马蒂亚斯·马丁内斯。上法兰西理工大学的mcf上法兰西理工大学和INSA上法兰西学院均不审查论文中表达的作者观点:这些观点必须被视为其作者的观点关键词:Android开发,Kotlin,采用,进化,迁移,机器学习关键词:Android开发,Kotlin,采用,进化,迁移,机器学习本文是在计算机科学系工业和人类自动化控制、机械工程和计算机科学实验室(LAMIH UMR CNRS 8201)上法兰西理工大学胡伊山F-59313巴伦西亚Cedex 9教育的根是苦的,但果实是甜的。亚里士多德十三摘要近年来,Google的Android应用程序在其fficial商店中拥有超过300万个应用程序,主导了全球移动操作系统市场。尽管取得了这一成功,但谷歌仍在不断改进其操作系统和工具包,以简化应用程序开发。2017年,谷歌宣布Kotlin为Android编程语言。最近,在Google I/O 2019期间,Google宣布Android将成为"Kotlin优先",这意味着新的API、库和文档将以Kotlin为目标,并最终以Java和Kotlin为目标,作为创建新Android应用程序的首选语言。Kotlin是一种在Java虚拟机(JVM)上运行的编程语言,它与Java完全互操作,因为两种语言都编译为JVM字节码。由于这一特性,Android开发人员不需要将现有应用迁移到Kotlin就可以在这些应用中开始使用Kotlin。此外,Kotlin提供了一种独特的方法来编写应用程序,因为它结合了面向对象和功能特性。因此,我们假设开发者对Kotlin的采用可能会影响Android应用程序开发的各个方面。 然而,在这第一次宣布一年后,关于科特林的文献中还没有研究。 在本论文中,我们进行了一系列实证研究,以解决这些缺陷,并更好地了解如何使用Kotlin创建高质量的Android应用程序。首先,我们进行了一项研究,以衡量Kotlin的采用程度我们的结果显示,11%的研究Android应用程序采用了Kotlin。然后,我们分析了Kotlin的采用如何影响Android应用程序的代码气味质量。我们发现,在最初用Java编写的Android应用程序中引入Kotlin,根据所考虑的代码气味,质量分数从50%提高到80%。我们分析了Kotlin引入的功能(如Smart cast)的使用演变,以及Kotlin代码的数量如何随着应用程序的演变而变化我们发现,随着应用程序的发展,功能实例的数量趋于增长。最后,我们专注于将Android应用程序从Java迁移到Kotlin。 我们发现,25%最初用Java编写的开源应用程序已经完全迁移到Kotlin,19%的迁移是逐步完成的,通过几个版本,这要归功于Java和Kotlin之间的互操作性。此迁移活动具有挑战性,因为:a)每个迁移的代码片段在迁移后都必须进行详尽的测试,以确保其保持预期的行为; b)项目可能很大,由要迁移的多个候选文件组成。在本文中,我们提出了一种支持迁移的方法,该方法建议,给定一个用Java编写的应用程序版本,并可能在Kotlin中,最适合迁移的文件。 我们通过应用两种不同的机器学习技术来评估我们的方法的可行性:分类和按等级学习。我们的结果表明,两种技术的性能都适度优于随机方法。我们的方法是第一个提出使用机器学习来推荐文件级迁移的方法。因此,我们的研究结果为未来的工作奠定了基础由于从Java迁移到Kotlin会对应用程序的维护产生积极的影响,而且迁移既耗时又具有挑战性,因此开发人员可以使用我们的方法首先选择要迁移的文件。最后,我们讨论了我们的结果所开启的几个研究视角,这些视角可以改善使用Kotlin创建高质量Android应用程序的体验。关键词:Android开发,Kotlin,采用,进化,迁移,机器学习十四摘要近年来,谷歌的Android在其商店中拥有超过300万个应用程序,主导了全球尽管取得了这一成功,谷歌仍在继续发展其操作系统和工具包,以使应用程序开发更2017年,谷歌宣布Kotlin为Android或fficiel编程语言最近,在Google I/O 2019期间,Google宣布Android将成为"Kotlin优先",这意味着新的API、库和文档将优先针对Kotlin,并可能针对Java和Kotlin,作为构建新Android应用的首选语言。Kotlin是一种在Java虚拟机(JVM)上运行的编程语言,它与Java完全互操作,因为这两种语言都 由于这一功能,Android开发人员不需要将现有应用程序迁移到Kotlin就可以开始在这些应用程序中使用Kotlin。此外,Kotlin提供了一种不同的方法来编写应用程序,因为它结合了面向对象和函数式特性。因此,我们假设Android开发者采用Kotlin可能会然而,在首次宣布一年后,文献中没有关于Kotlin的在这篇论文中,我们进行了一系列的实证研究,以填补这些空白,并更好地理解如何使用Kotlin创建高质量的Android应用程序。首先,我们进行了我们的结果显示,11%的Android应用程序采用了Kotlin。然后,我们分析了采用Kotlin对Android应用程序代码缺陷我们发现,在最初用Java编写的Android应用程序中引入Kotlin代码会使质量分数提高50%到80%,具体取决于所我们分析了Kotlin引入的功能(如Smartcast)的使用情况,以及Kotlin代码的数量如何随着应用程序的发展而变化。 我们发现,在应用程序的整个发展过程中,功能实例的数量往往会增加。最后,我们专注于将Android应用程序从Java迁移到Kotlin。 我们发现,25%最初用Java编写的开源应用程序已经完全迁移到Kotlin,19%的应用程序由于Java和Kotlin之间的互操作性而在多个版本之间逐步迁移。此迁移活动之所以重要,是因为:a)迁移后必须对每段迁移的代码进行详尽的测试,以确保其保持预期的行为; b)项目可能很大,由多个要迁移的在本文中,我们提出了一种支持迁移的方法,该方法在给定用Java和Kotlin编写的应用程序版本的情况下,提出了最方便的文件迁移。我们通过应用两种不同的机器学习技术来评估我们的方法的可行性:分类和基于等级的学习。 我们的结果表明,这两种技术都略优于随机方法。然而,我们的方法是第一个建议使用机器学习来建议文件级迁移的方法因此,我们的研究结果为未来的工作奠定了参考基础。 由于从Java迁移到Kotlin可以对应用程序的维护产生积极的影响,并且迁移时间长且耗时,因此开发人员可以使用我们的方法选择首先迁移哪些文件。最后,我们讨论了我们的发现所开辟的几个研究视角,这些视角可以改善使用Kotlin创建高质量Android应用程序的体验关键词:Android开发,Kotlin,采用,进化,迁移,机器学习确认文件我想对所有为这篇论文的实现做出贡献的人表示感谢。首先,我要感谢西尔万·勒孔特给我这个机会,让我完成这项博士工作。特别感谢我的共同主管马蒂亚斯·马丁内斯,感谢你每天几个小时的会议,感谢你的许多建议和讨论,帮助我完成了这项工作。 我也要感谢你的精神支持,帮助我超越了博士学位。挑战。 我真的很感激你所做的一切,使这三年对我来说是一个愉快的经历。我从你身上学到了很多我还要感谢我的顾问克里斯托夫·科尔斯基,他在最后的直道上发挥了关键作用。谢谢你这么好,接受了这个挑战。你的经验给了我信心。 作为我的顾问和联合顾问,我想感谢我的论文委员会成员:GuilhermeHorta Travassos、Jacques Klein、DalilaTamzalit和Káthia Marçal de Oliveira,感谢他们的时间和反馈。我想向LAMIH团队的现任和前任成员表示感谢感谢午餐时有趣的谈话,慷慨的罐子,和博士生的日子 我想非常感谢上法兰西地区的财政支持,使这项研究成为可能。最后但并非最不重要的是,感谢我的家人和朋友,他们在我的生活中为我提供了道德和情感上的支持。十五第十六章确认内容物摘要十三摘要xiv确认十五内容十七表十九列表悲伤列表xxi1 引言11.1背景。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......11.2问题。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......21.2.1 问题1:对收养Kotlin的了解不足。... ... ... ...21.2.2 问题2-对Android应用程序质量的影响。... ... ... ... ...31.2.3 问题3:Kotlin代码的演变。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......31.2.4 问题4 -将应用程序从Java迁移到Kotlin. . . . . . . ......31.3论文贡献。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 41.3.1 贡献1-关于Kotlin收养的研究。... ... ... ... ... ... ... ...41.3.2 贡献2-展示采用Kotlin对质量的影响Android应用程序。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 41.3.3 贡献3-Kotlin代码在Android应用程序中的演变。41.3.4 贡献4-支持Android应用迁移的方法51.4大纲。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......52 最新技术水平72.1科特林。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......72.1.1科特林的历史。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......72.1.2使用Kotlin开发Android。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......82.1.3关于Kotlin的文献。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......102.1.4总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......112.2Android应用程序的质量。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......122.2.1 识别移动应用程序中的代码气味。... ... ... ... ... ... ... ... ... ... ...122.2.2 分析代码气味的时间。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......142.2.3 编程语言对代码气味的影响。142.2.4 Android应用程序上的进化模式。... ... ... ... ... ... ... ... ... ... ... ... ... ......15十七2.2.5总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......162.3软件维护和演进。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......162.3.1 编程语言的发展。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......172.3.2 编程语言迁移。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......182.3.3总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......202.4机器学习应用于软件工程。... ... ... ... ... ... ... ... ... ... ... ... ... ......202.4.1 应用于软件工程的分类。... ... ... ... ... ... ... ... ... ... ... ... ......202.4.2 从学习到排名应用于软件工程。... ... ... ... ... ... ... ... ... ... ......252.4.3总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......272.5结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......273 衡量Android开发人员对Kotlin的采用率3.1Kotlin收养研究。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......303.1.1寻找基于Kotlin的Android应用程序。... ... ... ... ... ... ... ... ... ... ... ......303.1.2分析方法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......323.1.3结果。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......353.2Kotlin代码在Android应用程序中的比例研究。... ... ... ... ... ... ... ...363.2.1 研究中分析的应用程序。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 372.2分析方法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......373.2.3结果。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......383.3有效性威胁。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......383.1内部。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......393.2外部。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......393.4总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......394 测量和比较用Kotlin41编写的Android应用程序的质量4.1研究设计。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......424.1.1工具选择。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......424.1.2代码气味选择。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......434.2比较基于Kotlin和Java的Android应用程序的质量。454.2.1 研究中分析的应用程序。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 452.2分析方法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......454.2.3结果。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......464.3测量引入Kotlin对质量的影响。... ... ... ... ... ... ... ... ......504.3.1 研究中分析的应用程序。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 504.3.2定义质量模型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......504.3.3培训质量模型。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......513.4分析方法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......514.3.5结果。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......534.4有效性威胁。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 564.1内部。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......564.2外部。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......564.5总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......575 分析Kotlin代码在Android应用程序中的5.1分析Android应用程序的代码演变。... ... ... ... ... ... ... ... ... ... ... ......605.1.1 研究中分析的应用程序。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 605.1.2代码演变趋势。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......605.1.3分析方法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......62内容xix5.1.4结果。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......635.1.5有效性威胁。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......665.2Kotlin功能的使用和演变。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......665.2.1研究设计。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......675.2.2 Kotlin功能的采用。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......705.2.3 Kotlin功能的介绍。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......745.2.4 Kotlin功能的使用演变。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... 755.2.5讨论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......815.2.6有效性威胁。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......825.3总结。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......836 应用机器学习帮助Android应用856.1研究设计。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......886.1.1方法。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......886.1.2研究中分析的项目。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......916.1.3特征提取。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......926.2研究问题9.... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......95
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功