一种面向移动应用软件的修改影响分析方法

文档序号:9564453阅读:727来源:国知局
一种面向移动应用软件的修改影响分析方法
【技术领域】
[0001] 本发明提出了一种面向移动应用软件的修改影响分析方法,属于软件维护领域。
【背景技术】
[0002] 随着软件的大量使用,大部分软件已不是从头开始开发,而是通过维护来不断适 应环境的变化,用户的需求,技术的更新,及市场的变化等。软件产品本身的固有属性就是 演化性。在软件演化过程中,修改影响分析起着越来越重要的作用。近20年来,研究人员 在这方面进行了大量的研究,在软件不同工件层次产生了各种修改影响分析技术,如需求 和设计层次的静态影响分析,基于历史库的影响分析,动态影响分析等等。
[0003] 然而,如今所存在的软件修改影响分析技术大都是面向传统软件的,对日渐兴起 的移动应用软件并没有针对性,不能满足移动应用软件快速响应,快速发布,快速反馈,快 速维护等特点,也不能明确修改到底影响了软件的什么功能,给用户带来了什么影响。这些 都给软件维护人员带来了很大程度上的修改困难,也造成了时间和资源的浪费,甚至影响 用户正常使用软件。
[0004] 所以,针对上述问题,本发明为移动应用软件量身打造了一种修改影响分析方法。 本发明从移动应用软件的代码,软件事件,以及用户群体三方面综合考虑修改的影响。对软 件事件分析,我们可以清楚知道修改对软件功能的影响。对用户群体的影响分析,更能让我 们知道用户的需求,以快速有效地做出修改。这两方面是之前修改影响分析所欠缺的,也是 本发明的重要所在。而对代码的分析,前人已有了不少的修改影响技术,特别是从软件历史 库中挖掘程序的依赖关系进行分析。例如Jashki等人从软件修改历史库中挖掘出各个源 文件的修改频率,然后存储于一个矩阵,构造程序文件的聚类,再通过该聚类计算影响集。 该影响分析方法有效降低了影响分析的复杂度,且计算影响集的过程也更高效。Canfora等 人也利用挖掘修改历史库信息的方法进行影响分析。他们的影响分析在两个层次进行:代 码层和源文件层。通过计算一个新的修改请求和源代码实体间的相似性来进行影响分析, 其中那些相似度最大的程序实体将作为最易受影响的部分。另外,Hattori等人提出了一 种混合的方法计算影响集。他们首先利用普通的修改影响分析方法计算一个初始影响集; 然后对初始影响集中每个元素计算其与修改集中元素在程序修改历史库中的相关性。但基 于移动应用软件代码的开放性,我们对代码分析,可以更快地挖掘到软件的修改历史库,并 找到与修改请求相关的代码,分析代码的影响率。

【发明内容】

[0005] 本发明的目的就在于克服上述缺陷,研制一种面向移动应用软件的修改影响分析 方法。
[0006] 本发明的技术方案是:
[0007] -种面向移动应用软件的修改影响分析方法,给定某个移动应用APP和修改请 求,其主要技术特征在于如下步骤:
[0008] 1)对该移动应用APP的软件历史库中的提交消息进行托肯化,去停用词,词干化 三步操作,生成去除噪声的预处理后的文档;
[0009] 2)将预处理后的文档使用K-Means算法聚类,得到k个修改簇,根据修改请求匹配 其修改簇,找到与其相关的修改文档,在文档里找到相关的修改代码;
[0010] 3)在修改代码中找到修改方法,修改类,利用调用和继承依赖关系计算代码层次 的影响集;先构建一个包含影响集中所有方法的调用以及所有类的继承关系的传播图,然 后通过数学公式
[0012] 其中,Mj是传播图中的方法,D(Mj)是影响方法到修改方法的最短距离,计算传播 图中被影响节点的可能性的总和,以量化整体的修改影响;
[0013] 4)从用户使用软件时生成的事件日志以及软件源代码中提取事件序列,最终以元 组 e;= <Activity,Window,GUI-Component,Action> 的形式表示,一个元组表示一个事件;
[0014] 5)将修改代码在源代码中找到其所在的Activity,与事件序列中的Activity相 匹配,得到修改对应的事件序列,分析其可能影响软件的功能;
[0015] 6)从移动应用市场利用网页爬虫技术收集APP的原数据,提取用户评论,并进行 预处理;
[0016] 7)将用户评论K-Means算法进行聚类,得到k个评论簇,然后与软件修改请求匹 配,找到与修改相关评论;
[0017] 8)对修改相关评论按时间间隔T进行划分,T可以为任意的时间间隔,将T设置为 月或周;当T为月时,表示按月进行划分;当T为周时,表示按周进行划分;然后生成时间序 列文档,记录一共有多少个时间段以及每个时间段内的提交消息数量,时间序列文档的格 式为:第一行记录一共有多少个时间段,其数目记为N ;第二行到第N+1行分别为每个时间 段内的提交消息数量,根据时间序列表分析不同时间段受影响的用户群;
[0018] 9)绘制直方图,更清晰方便地分析不同时间段受影响的用户群体。
[0019] 其特征在于:
[0020] 步骤1)中对修改特征信息的预处理及步骤6)中对评论的预处理的具体步骤如 下:
[0021] a)托肯化:去除标点符号、去除数字;
[0022] b)去除停用词、去除英文停用词、去除代词、去除冠词;
[0023] c)词干化:将每个单词转化为它的原型;
[0024] 其特征在于:
[0025] 步骤2)中对预处理文档的聚类K-Means算法具体步骤如下:
[0026] e)从η个文档任意选择k个对象作为初始聚类中心;
[0027] f)根据每个聚类对象的均值,计算每个对象与这些中心对象的距离,并根据最小 距离重新对相应对象进行划分;
[0028] g)重新计算每个聚类的均值;
[0029] h)计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不 满足则回到步骤b);
[0030] 其特征在于:
[0031] 步骤4)中从事件日志以及软件源代码中提取事件序列的具体步骤如下:
[0032] A.使用APK分析仪从程序源代码中静态挖掘事件序列:
[0033] a) APK-Analyzer先使用dex2 jar和Procyon工具反编译,然后通过srcML将源文 件转换为基于XML的表现形式,再依赖apktool,从XML文件中提取ID、类型和⑶I组件的 层次结构;
[0034] b)将每个⑶I组件链接到其各自的行为/手势:APK-Ana Iyzer将固定手势分配 给GUI组件的类型;对于标准的Android组件类型,与预期的手势做链接;对于自定义组 件,APK-Anal yzer解析源代码以确定手势处理器和事件侦听器;
[0035] c) APK-Analyzer将组件链接到它们出现的活动;
[0036] B.使用数据采集器从事件日志中挖掘事件序列:
[0037] a)收集low-level事件日志,在APP正常使用过程中,通过getevent命令产生单 击,长按,滑动以及一些复杂手势的事件日志,并保存在日志存储库中;
[0038] b)使用Data collector将事件日志转换成6;标志序列。
[0039] 本发明的优点和效果在于可以在软件修改历史库中挖掘到与某次修改相关的修 改代码,然后利用调用和继承等依赖关系计算代码层次的影响集以及预估修改影响软件事 件、修改影响用户群体的过程。具体主要有以下一些优点:
[0040] 本发明从事件方面进行影响分析,目前修改影响分析很多,但从事件方面的还没 有。从事件分析,可以了解某次修改请求可能给软件功能带来的影响。
[0041] 本发明从用户群体方面进行影响分析,挖掘与修改请求相关的用户评论,这是传 统的修改影响分析方法所欠缺的,也是移动应用软件与传统软件的不同之处。从用户群体 分析,可以挖掘与某次修改请求的相关评论,得到评论的时间序列表,来分析不同时间段受 影响的用户群。
【附图说明】
[0042] 图1--本发明的总体流程不意图。
[0043] 图2--本发明HAD00P软件修改历史库示意图。
[0044] 图3--本发明某次修改请求涉及到的修改代码示意图。
[0045] 图4--本发明中修改类的维承示意图。
[0046] 图5--本发明修改方法的调用关系示意图。
[0047] 图6--本发明中类和方法整体的影响传播示意图。
[0048] 图7-一本发明从源代码和事件日志中提取的事件序列示意图。
[0049] 图8--本发明与修改Activity对应的事件序列示意图。
[0050] 图9一一本发明百度手机上"拉钧"软件预处理后的用户评论示意图。
[0051] 图10--本发明时间序列文档(SEQ)的格式说明不意图。
[0052] 图11--本发明时间序列文档(SEQ)文档的示例示意图。
[0053] 图12--本发明中时间--评论数直方示意图。
【具体实施方式】
[0054] 本发明的技术思路是:
[0055] 将软件修改历史库中的提交信息进行聚类,找到与修改请求相关的修改代码,利 用调用继承等依赖关系计算代码层次上的影响集,并根据修改影响的Activity找到对应 的事件序列,预估对软件功能的影响,还挖掘与某次修改请求的相关评论,得到评论的时间 序列表,来分析不同时间段受影响的用户群。
[0056] 下面结合附图对本发明的技术方案进行详细说明:
[0057] 1)对软件历史库(版本控制库CVS)中的提交消息(comm
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1