当前位置: 首页 > 专利查询>南京大学专利>正文

基于预测性分析的安卓应用程序数据竞争检测制造技术

技术编号:12583349 阅读:100 留言:0更新日期:2015-12-23 23:37
本发明专利技术方法是基于安卓开发框架和其多线程模型,插桩安卓应用程序并动态运行提取单个执行轨迹,再使用预测性分析方法对执行轨迹进行分析,构造其活动间的发生序关系(Happens-Before)并预测生成多个执行轨迹,在此基础上结合变量松弛和路径松弛对执行轨迹中的所有活动进行约束编码,最终放入约束求解器中进行求解来完成数据竞争的检测。本发明专利技术能有效降低数据竞争的误报率,扩展性好,效率高,只需收集单个运行轨迹,大大降低了人工成本。

【技术实现步骤摘要】

本专利技术属于计算机
,尤其是软件
本专利技术提供了一种使用预测 性分析方法检测安卓应用程序中的数据竞争问题,用于软件质量保障。
技术介绍
网络时代中,移动手机携带方便,其上应用程序(MobileApp)得到了广泛用户的 青睐。由于安卓的开放性W及无缝结合的众多Google应用,使得厂商可W低成本地推出丰 富多彩、各具特色的多种产品。安卓所占市场份额从2013年第二季度的79. 6%增长到了 2014年第二季度的84. 7%。但由于安卓平台的开放性和自由性,安卓应用程序具有种类 繁多、异构自治的特点,且开发口槛低、开源代码的盛行使得应用程序在软件质量上先天不 足,如何保证安卓应用的质量对开发人员来说是一个巨大的难题。 安卓应用程序是事件驱动的,且安卓系统具有独特的线程机制、回调方法和多入 口等特性。安卓系统为开发人员提供4大组件: (1)活动,Activity,为用户提供了可W与之进行交互的界面,每一个用户交互的 界面都是一个Activity并且整个应用程序中有一个mainActivity,即最初用户启动时候 所进入的界面; 阳〇化](2)服务,Service,在后台执行长时间运行的任务,其他的组件可W开启并且绑定 一个Service; (3)内容提供者,ContentProviders,提供了在安卓系统中的一种数据存储管理 机制,其它组件可W把必要的数据存取在ContentProviders中用于和用户之间信息的交 流; (4)广播,化oadcast,用来监听安卓系统所产生的一些活动,比如接受信息、接受 电话等,App会通过化oadcastReceiver接受此类活动,并通过它可W做出相应处理。 安卓系统通过调用一系列的组件的生命周期方法来管理组件的运行。创建一个新 的组件,必须要继承一个安卓系统已经提供的组件类。在子类中,也必须要实现一些固定的 回调方法,用于在组件进行状态转换时能很好地管理组件的运行。 在Activity中有W下几种生命周期的回调方法: 1.onCreate0 :创建; 2.onStart0 :在onCreate0回调方法后立即调用启动; 3.onResumeO:所处状态用户可W与界面进行交互; 4.onPause:暂停当前组件; 5.onStop0 :停止并释放一些资源; 6.onDestory0 :摧毁组件; 7.onRestart0 :重启组件。 Service则是W下回调方法: 启动Service:onCreate0,onStartCommand0,onDestroy0 ;绑定Service:onCreate0,onBind0,onUnBind0,onDestroy0。 默认情况下,安卓系统中一个应用的所有组件运行在相同的处理器和相同的线程 上面。当然也可W通过设置组件的An化oichprocess属性来指定所运行的处理器。在组 件运行当中,考虑到运行的效率,开发人员经常使用不同的线程执行不同的任务,W提高应 用的性能。从应用启动开始,系统会维持一个主线程,贯穿应用的整个生命周期,用于分配 活动、管理界面、处理相应逻辑操作。同时开发者会创建额外的异步线程来并发进行相应工 作,也称之为工作线程,包括:直接继承化read类或实现Runn油le接口;开启或绑定一个 额外的Service在后台执行任务;使用Async化sk开启一个工作线程执行异步任务。 由于安卓系统的多线程机制和其特有的回调方法,开发人员很容易会写出导致流 程中存在诸如死锁、执行不可达活动、数据竞争等问题的代码,其中数据竞争现象最为普 遍。数据竞争是指:在多线程程序中,不同线程的两个操作对相同的共享变量的访问没有特 定的顺序,且其中至少有一个是写操作的情况。一旦数据竞争发生,则可能导致应用程序奔 溃、数据不一致等情况,带来严重危害。 传统并发程序领域对数据竞争进行了比较深入的研究,常用的方法有基于发生序 和基于锁集的检测方法。在安卓应用程序数据竞争检测方面,现有方法局限于发生序。本 专利技术将提供一种新的、基于预测性分析的方法来检测安卓应用程序中的数据竞争问题,W 提高检测的精度和效率。
技术实现思路
本专利技术要解决的问题是:模拟安卓应用程序运行环境,制定安卓并发语义规则,并 使用新的、基于预测性分析的检测技术来检测安卓应用程序的数据竞争,W保障其质量。 本专利技术的技术方案为:基于预测性分析的安卓应用程序数据竞争检测,其特征是 基于安卓开发框架和其多线程模型,插粧安卓应用程序并动态运行提取单个执行轨迹,再 使用预测性分析方法对执行轨迹进行分析,构造其活动间的发生序关系(Happens-Before) 并预测生成多个执行轨迹,在此基础上结合变量松弛和路径松弛对执行轨迹中的所有活动 进行约束编码,最终放入约束求解器中进行求解,来完成数据竞争的检测。专利技术具体包括W下步骤: 1)根据安卓开发框架和其多线程模型,设计插粧点和所要记录的活动,插粧安卓 应用源程序,并动态执行获得单个执行轨迹。 2)根据安卓应用程序的并发语义规则,构造执行轨迹的Happens-Before关系集。 3)分析执行轨迹的Happens-Before关系集,使用预测性分析方法合理改变活动 之间的调度,W生成多个执行轨迹。 4)对执行轨迹中的所有活动进行约束编码,并结合变量松弛和路径松弛降低误报 率。5)通过约束求解器求解约束条件,完成数据竞争的检测。 步骤1)中,分析安卓开发框架,结合其特有的多线程模型,插粧原安卓应用程序, 动态运行W获取安卓应用执行轨迹。 其中,执行轨迹T= <61,62,…,e。〉是一个活动流,对于源程序SourceAPK,我们 认为其内的每一个语句都进行了不同的操作,称其为活动。我们记录其中与并发相关、可能 会导致数据竞争的活动,包括:线程的初始化、开启一个线程等线程操作;共享变量的读写 操作;锁集的申请释放操作;与任务相关的授权、开始、结束任务等操作。 步骤2)中,基于安卓的并发语义规则,构造活动间的Happens-Before关系集。 安卓的并发语义规则包括线程内规则(Intra-T虹eadHa卵ens-Before)、线程间规则 (Inter-T虹eadHa卵ens-Before)、回调方法规则(CallBackHa卵ens-Before)。 线程内规则包括:线程内序列(Order-Intra)、线程内授权分 配(Powerfost-Intra)、线程内分配开始(Pos1:Begin-Intra)、任务原子性 (TaskAtomic-Intra)、活动传递(Trans-Intra)。 W35] 线程间规则包括:线程间授权分配(Powerfost-Inter)、线程间分配开始 (Pos1:Begin-Inte;r)、线程间活动传递性(Trans-Inter)、Fork、Join、锁规则(Xock)。回调方法规则包括:活动回调(activitycaUback)、服务回调(service callback)。 Ha卵ens-Before关系集=<E,R〉,其中E是执行轨迹中的活动<ei,62,…,e。〉,R ={<e.j<eJj,kG八j声k〉},e.j<ek表示本文档来自技高网
...
基于预测性分析的安卓应用程序数据竞争检测

【技术保护点】
基于预测性分析的安卓应用程序数据竞争检测,其特征是基于安卓开发框架和其多线程模型,插桩安卓应用程序并动态运行提取单个执行轨迹,再使用预测性分析对执行轨迹进行分析,构造其活动间的发生序关系(Happens‑Before)并预测生成多个执行轨迹,在此基础上结合变量松弛和路径松弛对执行轨迹中的所有活动进行约束编码,最终放入约束求解器中进行求解来完成数据竞争的检测。

【技术特征摘要】

【专利技术属性】
技术研发人员:许蕾孙全陈林徐宝文
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1