CODEWISDOM

2023年10月26日,OpenHarmony的4.0版本正式上线,引发了用户,开发者和学术圈广泛讨论。作为新兴的移动端平台,OpenHarmony以其突破性的创新频频“出圈”,至今已经走过三载春秋。以史为鉴,可以知兴替。为了更好地了解OpenHarmony平台的特点和优势,现有移动平台的不足之处,以及如何在OpenHarmony平台上进行移动软件工程相关的开发和研究,北京航空航天大学联合四大洲11个大学的学者近日共同发布了题为《OpenHarmony软件工程研究路线图》的论文。

本文由北京航空航天大学软件学院的黎立教授领衔,联合北京航空航天大学软件学院的高祥副教授、孙海龙教授、胡春明院长,澳大利亚国立大学的Xiaoyu Sun助理教授,华中科技大学的王浩宇教授、华盛顿州立大学的Haipeng Cai副教授、华东师范大学的苏亭教授,香港理工大学的Xiapu Luo教授、卢森堡大学的Tegawende Bissyande教授和Jacques Klein教授、澳大利亚蒙纳士大学的John Grundy教授,北京大学的谢涛教授、上海交通大学的陈海波教授、国防科技大学的王怀民院士共同合作完成。

论文全文可通过以下链接访问:https://arxiv.org/abs/2311.01311

研究背景

随着移动互联网的快速发展,移动应用程序的需求也越来越多元。虽然现有的移动平台,如Android和iOS,拥有庞大的生态系统来支持它们的发展,但是他们无法原生地满足各方日益增长的使用需求和管理需求。因此,开发人员急需一种新的移动平台,OpenHarmony应运而生。作为一个新型移动平台,它的开源性质和灵活性使得它成为了移动开发人员的新宠,预计OpenHarmorny将在五年内达到三分之一的市场占有率。OpenHarmony的目标是提供一种开放、灵活、安全和可靠的移动操作系统,并提供匹配的原生开发支持。过去两年内,OpenHarmony迭代了30个版本,提供的API数量从不到1000急速增长到10000+,反映出蓬勃的发展态势。不过与Android和iOS相比,OpenHarmony平台仍处于早期阶段,因此需要更多系统性的软件工程研究支持。为了帮助研究者和开发人员更好地了解和利用OpenHarmony平台,OpenHarmony软件工程研究路线图应运而生。

动机

本文研究人员首先对现有移动软件工程方法进行了批判性评估,指出了现有方法的不足之处,并提出了OpenHarmony平台如何提供更好的解决方案。这些解决方案包括更好的安全性、更好的性能和更好的用户体验等。此外,本文还提供了详细的研究路线图,涵盖了从软件开发到测试和部署的各个方面。这些路线图可以帮助开发人员更好地了解OpenHarmony平台,并指导他们在开发过程中遵循最佳实践。最后,作者展望了未来的研究方向,包括如何进一步改进OpenHarmony平台,以及如何将其应用于实际应用场景中。这些展望可以帮助移动软件开发人员更好地了解OpenHarmony平台的未来发展方向,并为他们提供更好的指导。通过本路线图,开发人员可以了解到如何在OpenHarmony平台上进行软件开发,包括如何使用开发工具和框架。同时,本文档还介绍了如何进行测试和部署,以确保应用程序在OpenHarmony平台上的稳定性和可靠性。

OpenHarmony现状

OpenHarmony计划是由OpenAtom Foundation支持的全面开源项目。该项目由运营委员会管理,技术方面主要由技术指导委员会(TSC)领导。目前,OpenHarmony框架提供的了丰富的官方工具链以支持应用程序的开发。这些工具链除了提供基本功能外,还为更高级的OpenHarmony专用工具链的实施打下了坚实的基础。这些工具链涵盖了应用程序开发的完整生命周期,包括开发、构建、测试、调试、代码审查和发布。目前,这些工具链几乎覆盖了前述的生命周期阶段,包括与应用程序开发相关的工具(如IDE、模拟器、设备管理器)、应用程序构建工具(如hvigor)、应用程序测试工具(如jsunit、uitest)、调试工具(如HiLog、性能分析器)、代码审查工具(如代码检查器)、命令行工具(如hdc)以及包管理工具(如ohpm)。

目前,OpenHarmony框架的API数量仍在不断增加中,而开源应用数量还非常有限,其中GitHub和Gitee上的174个仓库可能包含OpenHarmony应用。用于支撑应用快速开发的第三方库数量也非常有限,其OHPM中心仓中仅收录了135个三方件。作为一个新兴的平台,OpenHarmony的应用市场尚未完全建立,但OpenHarmony应用的信息可与Android或iOS类似,对OpenHarmony应用商店数据的挖掘有望成为未来研究方向。

OpenHarmony相关的研究也还处于起步阶段。目前,研究者们仅发现了8篇与OpenHarmony相关的出版物。与基于Android的移动软件工程研究相比,OpenHarmony相关的科研挑战与机遇并存。作者也因此鼓励社区加大力度开发OpenHarmony的软件工程方法,并在主流会议上发表更多相关研究论文。

移动软件工程现状

为了挖掘OpenHarmony未来的研究发展方向,研究人员们从现存的移动软件工程领域入手,从安卓和ISO生态系统中学习已有的研究经验。研究人员们进行了系统性文献综述,从39篇移动软件工程论文中,总结出 1)Android/iOS生态系统内急需要解决的问题,2)Android/iOS生态系统内解决软件工程问题所用到的技术类型。考虑到OpenHarmony可能会面临与Android和iOS类似的问题,挖掘软件工程的研究现状为未来OpenHarmony的研究指明了清晰的方向。

1)Android/iOS生态系统内急需要解决的问题

研究人员们发现,开发者在软件工程中扮演着核心角色,他们影响了软件开发过程的每一个环节。比如,开发人员会基于Android/IOS框架开发各类应用,向应用商店发布移动应用程序,提供提三方库来为开源社区做贡献,遇到问题时会求助于问答网站(如Stack Overflow)以寻找解决方案,在代码托管网站上对源码进行管理。

研究人员们进一步总结了目前软件工程领域最受关注的研究热点问题(见上表)。这些问题主要分为九个类别,包括应用程序开发、应用程序部署、用户体验、安全和隐私、质量、可靠性、性能、能源以及社会技术问题。为了进一步清晰地展示这些问题的分类,研究人员还把他们总结成以下的图示。

2)Android/iOS生态系统内解决软件工程问题所用到的技术类型

现有的软件工程技术可以被分为静态分析、动态分析和基于机器学习的方法。

  • 静态分析是在不执行程序的情况下进行的程序分析。静态分析已经被广泛应用于移动应用程序来解决软件工程问题,例如污点分析、符号执行、代码仪器、模型检查常常被用于检测应用程序错误,包括功能错误、代码异味、安全漏洞/弱点、能源和性能错误、权限提升等。

  • 动态分析 是通过动态执行来测试程序。广泛使用的动态测试技术包括基于搜索的测试、黑盒/随机测试、灰盒模糊测试、合同执行、事件驱动的测试生成、突变测试等。动态分析常用于程序安全性分析(例如动态污点分析和运行时监控)和自动化程序修复。

  • 基于机器学习的方法 通过从大型程序中提取特征来训练模型,并在代码分析领域取得了显著的成功。基于机器学习的技术已经应用于解决许多移动软件工程任务,包括漏洞检测、隐私问题检测、程序测试、代码异味检查,防范Android恶意软件攻击等。

OpenHarmony研究路线图

研究人员们总结了Android/iOS与OpenHarmony之间的研究差距,为同行研究人员指明方向,激励更多的科研人员,开发者一同加入建设OpenHarmony的队伍。研究人员总结了3个大类 (针对应用程序的研究,针对系统框架的研究,针对生态系统的研究),27个研究方向。

1. 针对应用程序的研究,研究人员们分别从软件开发过程的各个维度进行了总结,包括需求、设计、开发、测试、代码审查和部署:

  • 需求:为了解决用户需求难以获取的问题,研究者认为可以通过自动化分析和挖掘用户评论从而提取用户需求。这可以帮助提升OpenHarmony应用的用户满意度。

  • 设计:设计师通常需要手动绘制应用UI,但手绘的UI无法进行自动化测试。因为研究者们需要有自动化识别草图并转化为UI组件的方法,从而帮助OpenHarmony开发人员快速设计应用。

  • 开发:开发人员从成千上万的第三方库中挑选适合的API是一个众所周知的难题。因此,自动化地推荐OpenHarmony应用开发人员所需的库至关重要。

  • 测试:测试是保证程序质量的必要基础设置,OpenHarmony也同样需要自动化的随机测试方法,比如自动化生成单元测试用例,验证特定功能的正确性。

  • 代码审查:为了保证代码质量,静态的分析工具可以被用来检查代码功能的实现,如控制流图构建、调用图构建等。

  • 部署:移动应用程序会受到逆向攻击,为了防止这种情况的发生,OpenHarmony有必要发明代码混淆技术,以保护OpenHarmony应用免受攻击者的利用。

2. 针对系统框架的研究,研究人员们分别从应用技术选型进行总结,包括静态分析,动态分析:

  • 静态分析可以被用来分析移动系统框架的代码,比如检测系统代码的版本变化,权限系统的分析,用户访问控制分析,厂商自定义框架代码分析。

  • 动态分析可以被用来插桩并控制移动程序的执行。

3. 针对生态系统的研究,研究人员们分别从应用发布平台,应用的人文价值来总结:

  • 为了维护生态系统的健康,应用发布平台需要建立代码审核系统

  • 为了保证移动应用输出正确的人类价值观,如隐私、公平、诚实、好奇心、诚实或社会正义等。自动化的方法需要被用来检测侵犯行为。

此外,作者也讨论了时代赋予鸿蒙独特的一些未来研究方向。包括:

1. 基于大语言模型(LLM)的OpenHarmony研究方向:大多数移动软件工程研究工作侧重于分析阶段,对于应用开发阶段的研究有限。这在Android应用开发已经相对成熟(得到Google和社区的大力支持)的情况下是合理的,因此研究者在进入这一领域时已有丰富的经验。然而,对于OpenHarmony而言情况不同。实际上,OpenHarmony目前仍处于早期阶段,只有少量应用程序开发,社区可用的第三方库有限。如果有更多的工作能够提出来支持OpenHarmony应用程序的开发,将对OpenHarmony社区非常有益。现在,随着大型语言模型(特别是面向开发的模型,如GitHub的Copilot)的快速发展,现在是支持OpenHarmony发展的更好机会。LLM可以帮助开发者迅速学习OpenHarmony的基础知识,理解API的用法,自动生成代码(一行或多行),生成单元测试用例,提供修复选项等。

2. 支持OpenHarmony的跨平台框架:为了实现“一次开发,处处运行”的理念,MSE社区发明了ReactNative和Flutter等跨平台框架,以支持这一目标。这些跨平台框架定义了一种开发通用应用程序的方法。例如,使用ReactNative,应用程序的代码基本上是通过JavaScript编写的。这个代码库然后可以编译成本地的Android应用程序和本地的iOS应用程序。跨语言平台的最大优势在于应用程序的维护也是统一的。无论是修复错误还是添加新功能,只需要进行一次。考虑到这一重大优势,如果这些跨平台框架可以支持OpenHarmony,将对OpenHarmony的生态系统非常有帮助。在这种情况下,所有使用跨平台框架开发的现有应用程序都可以直接在OpenHarmony设备上运行。因此,强烈建议其他研究者同行考虑探索这一研究方向。

3. 向Android/iOS平台学习:他山之石,可以攻玉。本文研究者总结了大量与Android/iOS相关的方法,并认为有必要通过建立专门的方法来从它们中学习,用于OpenHarmony。软件内容挖掘(MSE)社区已经积累了许多工件,包括数百万的真实应用程序、数千个开源应用程序、文档、问答记录、用户评论等。尽管这些工件来自不同的平台,但我们认为它们仍然可以用于支持OpenHarmony相关任务的实施。例如,一个可能性是探索将用Java编写的Android应用程序(或用Swift编写的iOS应用程序)自动转换为用ArkTS编写的OpenHarmony应用程序的方向。

结语

本文旨在向开发人员和研究人员介绍OpenHarmony平台以及与之相关的软件工程研究机会。研究者们主要介绍了OpenHarmony平台的特点和优势,现有移动平台的不足之处,以及如何在OpenHarmony平台上进行移动软件工程相关的开发和研究。无论是开发人员还是研究人员,本文都将提供宝贵的信息和指导,帮助其更好地了解和利用OpenHarmony平台。最后,希望更多研究者加入OpenHarmony研究,站在巨人的肩膀上,使OpenHarmony生态系统繁荣起来!

CODEWISDOM