CN105320525A - 一种面向移动应用软件的修改影响分析方法 - Google Patents
一种面向移动应用软件的修改影响分析方法 Download PDFInfo
- Publication number
- CN105320525A CN105320525A CN201510916069.3A CN201510916069A CN105320525A CN 105320525 A CN105320525 A CN 105320525A CN 201510916069 A CN201510916069 A CN 201510916069A CN 105320525 A CN105320525 A CN 105320525A
- Authority
- CN
- China
- Prior art keywords
- software
- amendment
- document
- sequence
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提出了一种面向移动应用软件的修改影响分析方法。本发明将软件修改历史库中的提交信息进行聚类,找到与修改请求相关的修改代码,利用调用继承等依赖关系计算代码层次上的影响集,并根据修改影响的Activity找到对应的事件序列,预估对软件功能的影响,还挖掘与某次修改请求的相关评论,得到评论的时间序列表,来分析不同时间段受影响的用户群。本发明克服了软件修改影响分析技术对移动应用软件没有针对性,不能满足移动应用软件快速响应,快速发布,快速反馈,快速维护等缺陷。本发明从用户群体分析,可以挖掘与某次修改请求的相关评论,得到评论的时间序列表,来分析不同时间段受影响的用户群。
Description
技术领域
本发明提出了一种面向移动应用软件的修改影响分析方法,属于软件维护领域。
背景技术
随着软件的大量使用,大部分软件已不是从头开始开发,而是通过维护来不断适应环境的变化,用户的需求,技术的更新,及市场的变化等。软件产品本身的固有属性就是演化性。在软件演化过程中,修改影响分析起着越来越重要的作用。近20年来,研究人员在这方面进行了大量的研究,在软件不同工件层次产生了各种修改影响分析技术,如需求和设计层次的静态影响分析,基于历史库的影响分析,动态影响分析等等。
然而,如今所存在的软件修改影响分析技术大都是面向传统软件的,对日渐兴起的移动应用软件并没有针对性,不能满足移动应用软件快速响应,快速发布,快速反馈,快速维护等特点,也不能明确修改到底影响了软件的什么功能,给用户带来了什么影响。这些都给软件维护人员带来了很大程度上的修改困难,也造成了时间和资源的浪费,甚至影响用户正常使用软件。
所以,针对上述问题,本发明为移动应用软件量身打造了一种修改影响分析方法。本发明从移动应用软件的代码,软件事件,以及用户群体三方面综合考虑修改的影响。对软件事件分析,我们可以清楚知道修改对软件功能的影响。对用户群体的影响分析,更能让我们知道用户的需求,以快速有效地做出修改。这两方面是之前修改影响分析所欠缺的,也是本发明的重要所在。而对代码的分析,前人已有了不少的修改影响技术,特别是从软件历史库中挖掘程序的依赖关系进行分析。例如Jashki等人从软件修改历史库中挖掘出各个源文件的修改频率,然后存储于一个矩阵,构造程序文件的聚类,再通过该聚类计算影响集。该影响分析方法有效降低了影响分析的复杂度,且计算影响集的过程也更高效。Canfora等人也利用挖掘修改历史库信息的方法进行影响分析。他们的影响分析在两个层次进行:代码层和源文件层。通过计算一个新的修改请求和源代码实体间的相似性来进行影响分析,其中那些相似度最大的程序实体将作为最易受影响的部分。另外,Hattori等人提出了一种混合的方法计算影响集。他们首先利用普通的修改影响分析方法计算一个初始影响集;然后对初始影响集中每个元素计算其与修改集中元素在程序修改历史库中的相关性。但基于移动应用软件代码的开放性,我们对代码分析,可以更快地挖掘到软件的修改历史库,并找到与修改请求相关的代码,分析代码的影响率。
发明内容
本发明的目的就在于克服上述缺陷,研制一种面向移动应用软件的修改影响分析方法。
本发明的技术方案是:
一种面向移动应用软件的修改影响分析方法,给定某个移动应用APP和修改请求,其主要技术特征在于如下步骤:
1)对该移动应用APP的软件历史库中的提交消息进行托肯化,去停用词,词干化三步操作,生成去除噪声的预处理后的文档;
2)将预处理后的文档使用K-Means算法聚类,得到k个修改簇,根据修改请求匹配其修改簇,找到与其相关的修改文档,在文档里找到相关的修改代码;
3)在修改代码中找到修改方法,修改类,利用调用和继承依赖关系计算代码层次的影响集;先构建一个包含影响集中所有方法的调用以及所有类的继承关系的传播图,然后通过数学公式
其中,Mj是传播图中的方法,D(Mj)是影响方法到修改方法的最短距离,计算传播图中被影响节点的可能性的总和,以量化整体的修改影响;
4)从用户使用软件时生成的事件日志以及软件源代码中提取事件序列,最终以元组ei=<Activity,Window,GUI-Component,Action>的形式表示,一个元组表示一个事件;
5)将修改代码在源代码中找到其所在的Activity,与事件序列中的Activity相匹配,得到修改对应的事件序列,分析其可能影响软件的功能;
6)从移动应用市场利用网页爬虫技术收集APP的原数据,提取用户评论,并进行预处理;
7)将用户评论K-Means算法进行聚类,得到k个评论簇,然后与软件修改请求匹配,找到与修改相关评论;
8)对修改相关评论按时间间隔T进行划分,T可以为任意的时间间隔,将T设置为月或周;当T为月时,表示按月进行划分;当T为周时,表示按周进行划分;然后生成时间序列文档,记录一共有多少个时间段以及每个时间段内的提交消息数量,时间序列文档的格式为:第一行记录一共有多少个时间段,其数目记为N;第二行到第N+1行分别为每个时间段内的提交消息数量,根据时间序列表分析不同时间段受影响的用户群;
9)绘制直方图,更清晰方便地分析不同时间段受影响的用户群体。
其特征在于:
步骤1)中对修改特征信息的预处理及步骤6)中对评论的预处理的具体步骤如下:
a)托肯化:去除标点符号、去除数字;
b)去除停用词、去除英文停用词、去除代词、去除冠词;
c)词干化:将每个单词转化为它的原型;
其特征在于:
步骤2)中对预处理文档的聚类K-Means算法具体步骤如下:
e)从n个文档任意选择k个对象作为初始聚类中心;
f)根据每个聚类对象的均值,计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分;
g)重新计算每个聚类的均值;
h)计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤b);
其特征在于:
步骤4)中从事件日志以及软件源代码中提取事件序列的具体步骤如下:
A.使用APK分析仪从程序源代码中静态挖掘事件序列:
a)APK-Analyzer先使用dex2jar和Procyon工具反编译,然后通过srcML将源文件转换为基于XML的表现形式,再依赖apktool,从XML文件中提取ID、类型和GUI组件的层次结构;
b)将每个GUI组件链接到其各自的行为/手势:APK-Analyzer将固定手势分配给GUI组件的类型;对于标准的Android组件类型,与预期的手势做链接;对于自定义组件,APK-Analyzer解析源代码以确定手势处理器和事件侦听器;
c)APK-Analyzer将组件链接到它们出现的活动;
B.使用数据采集器从事件日志中挖掘事件序列:
a)收集low-level事件日志,在APP正常使用过程中,通过getevent命令产生单击,长按,滑动以及一些复杂手势的事件日志,并保存在日志存储库中;
b)使用Datacollector将事件日志转换成ei标志序列。
本发明的优点和效果在于可以在软件修改历史库中挖掘到与某次修改相关的修改代码,然后利用调用和继承等依赖关系计算代码层次的影响集以及预估修改影响软件事件、修改影响用户群体的过程。具体主要有以下一些优点:
本发明从事件方面进行影响分析,目前修改影响分析很多,但从事件方面的还没有。从事件分析,可以了解某次修改请求可能给软件功能带来的影响。
本发明从用户群体方面进行影响分析,挖掘与修改请求相关的用户评论,这是传统的修改影响分析方法所欠缺的,也是移动应用软件与传统软件的不同之处。从用户群体分析,可以挖掘与某次修改请求的相关评论,得到评论的时间序列表,来分析不同时间段受影响的用户群。
附图说明
图1——本发明的总体流程示意图。
图2——本发明HADOOP软件修改历史库示意图。
图3——本发明某次修改请求涉及到的修改代码示意图。
图4——本发明中修改类的维承示意图。
图5——本发明修改方法的调用关系示意图。
图6——本发明中类和方法整体的影响传播示意图。
图7——本发明从源代码和事件日志中提取的事件序列示意图。
图8——本发明与修改Activity对应的事件序列示意图。
图9——本发明百度手机上“拉钧”软件预处理后的用户评论示意图。
图10——本发明时间序列文档(SEQ)的格式说明示意图。
图11——本发明时间序列文档(SEQ)文档的示例示意图。
图12——本发明中时间——评论数直方示意图。
具体实施方式
本发明的技术思路是:
将软件修改历史库中的提交信息进行聚类,找到与修改请求相关的修改代码,利用调用继承等依赖关系计算代码层次上的影响集,并根据修改影响的Activity找到对应的事件序列,预估对软件功能的影响,还挖掘与某次修改请求的相关评论,得到评论的时间序列表,来分析不同时间段受影响的用户群。
下面结合附图对本发明的技术方案进行详细说明:
1)对软件历史库(版本控制库CVS)中的提交消息(commitmessages)进行预处理。首先进行托肯化(tokenization),比如去除标点符号(例如“”,“?”),去除数字(例如“1”,“23”)等。其次去除停用词(stopping),比如介词“for”,“to”;代词“it”,“he”;冠词“a”,“an”“the”等。最后词干化(stemming),将每个单词转化为它的原型,比如“fixed”为过去时,转化为原型“fix”;“moving”为现在进行时,转化为原型“move”。词干化时选用的算法为Porterstemmingalgorithm。三步操作之后,产生去除噪声的预处理后的文档。
2)将预处理后的文档使用K-Means算法进行聚类,得到k个修改簇。然后根据修改请求匹配其修改簇,找到与其相关的修改文档,在文档里找到相关的修改代码。如图2,对HADOOP软件修改历史库的挖掘,并把修改分成了“INCOMPATIBLECHANGES”、“NEWFEATURES”、“IMPROVEMENTS”、“BUGFIXES”“OPTIMlZATIONS”。针对修改请求“RaceconditioninJMXcacheupdate”可知属于“BUGFIXES”,根据”BUGFIXES”中修改请求的预处理以及聚类,可看到与修改请求相关的修改文档以及其修改代码,如图3。
3)将修改方法、修改类映射到代码层次,利用调用和继承等依赖关系计算代码层次的影响集。构建一个包含影响集中所有方法的调用以及所有类的继承关系的传播图,然后通过推导的数学公式计算传播图中被影响节点的可能性的总和,以量化整体的修改影响。例如,类继承图,如图4AirExpressCenters类和GroundShippingCenters类继承FullfillmentCenters类。getEligibleCenters()在FullfillmentCenters中申明,AirExpressCenters中方法覆盖FullfillmentCenters中的方法。FullfillmentCenters类中方法的改变可能影响GroundShippingCenters类但不会影响AirExpressCenters中的方法。调用关系图,如图5,2,3调用1,4调用3,当1改变时,3会被直接影响,而4可能会间接被影响。然后将类继承图和方法调用图结合起来,构造整体的传播图,并用公式计算影响值,值越小,影响越小,如图6。
4)使用APK分析器组件从程序源代码中提取事件列表,使用数据采集器(DataCollctor)从事件日志中提取事件列表,如图7,最终以元组ei=<Activity,Window,GUI-Component,Action>的形式表示,一个元组表示一个事件。
5)将修改代码在源代码中找到其所在的Activity,与事件序列中的Activity相匹配,得到修改对应的事件序列,分析其可能影响软件的功能。例如,根据修改代码可知修改影响Activity为EditTaskActivity,则可找到关于EditTaskActivity对应的事件序列,如图8,影响了内容,文本的单击事件以及键盘的显示。
6)从移动应用市场利用网页爬虫技术收集APP的原数据,提取用户评论,并进行预处理;如图9,从百度手机助手上提取“拉钩”软件的用户评论,对其进行托肯化,去停用词,词干化三步操作。
7)对用户评论使用K-Means算法进行聚类,得到k个评论簇,然后与软件修改请求匹配,找到与修改相关的评论。
8)将评论按时间间隔T进行划分,T可以为任意的时间间隔。一般将T设置为月或周。当T为月时,表示按月进行划分;当T为周时,表示按周进行划分。划分的结果将记录在时间序列文档(SEQ)中。时间序列文档记录一共有多少个时间段以及每个时间段内的评论数量,其格式为:第一行记录一共有多少个时间段,其数目记为N;第二行到第N+1行分别为每个时间段内的提交消息数量。时间序列文档的格式见图10。时间序列文档的示例见图11,第一行的3代表一共有3个时间段,第二行的100代表第一个时间段内有100篇评论,第三行的90代表第二个时间段内有90篇评论,第四行的80代表第三个时间段内有80篇评论。
9)绘制直方图,更清晰方便地分析不同时间段受影响的用户群体。例如,如图12可知,前20天的时候,该修改对用户的影响很大,有将近43个人发现了此类的问题;后来,该修改对用户的影响很小很小。
Claims (4)
1.一种面向移动应用软件的修改影响分析方法,给定某个移动应用APP和修改请求,其特征在于如下步骤:
1)对该移动应用APP的软件历史库中的提交消息进行托肯化,去停用词,词干化三步操作,生成去除噪声的预处理后的文档;
2)将预处理后的文档使用K-Means算法聚类,得到k个修改簇,根据修改请求匹配其修改簇,找到与其相关的修改文档,在文档里找到相关的修改代码;
3)在修改代码中找到修改方法,修改类,利用调用和继承依赖关系计算代码层次的影响集;先构建一个包含影响集中所有方法的调用以及所有类的继承关系的传播图,然后通过数学公式
其中,Mj是传播图中的方法,D(Mj)是影响方法到修改方法的最短距离,计算传播图中被影响节点的可能性的总和,以量化整体的修改影响;
4)从用户使用软件时生成的事件日志以及软件源代码中提取事件序列,最终以元组ei=<Activity,Window,GUI-Component,Action>的形式表示,一个元组表示一个事件;
5)将修改代码在源代码中找到其所在的Activity,与事件序列中的Activity相匹配,得到修改对应的事件序列,分析其可能影响软件的功能;
6)从移动应用市场利用网页爬虫技术收集APP的原数据,提取用户评论,并进行预处理;
7)将用户评论K-Means算法进行聚类,得到k个评论簇,然后与软件修改请求匹配,找到与修改相关评论;
8)对修改相关评论按时间间隔T进行划分,T可以为任意的时间间隔,将T设置为月或周;当T为月时,表示按月进行划分;当T为周时,表示按周进行划分;然后生成时间序列文档,记录一共有多少个时间段以及每个时间段内的提交消息数量,时间序列文档的格式为:第一行记录一共有多少个时间段,其数目记为N;第二行到第N+1行分别为每个时间段内的提交消息数量,根据时间序列表分析不同时间段受影响的用户群;
9)绘制直方图,更清晰方便地分析不同时间段受影响的用户群体。
2.根据权利要求1所述的一种面向移动应用软件的修改影响分析方法,其特征在于:
步骤1)中对修改特征信息的预处理及步骤6)中对评论的预处理的具体步骤如下:
a)托肯化:去除标点符号、去除数字;
b)去除停用词、去除英文停用词、去除代词、去除冠词;
c)词干化:将每个单词转化为它的原型。
3.根据权利要求1所述的一种面向移动应用软件的修改影响分析方法,其特征在于:
步骤2)中对预处理文档的聚类K-Means算法具体步骤如下:
a)从n个文档任意选择k个对象作为初始聚类中心;
b)根据每个聚类对象的均值,计算每个对象与这些中心对象的距离,并根据最小距离重新对相应对象进行划分;
c)重新计算每个聚类的均值;
d)计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤b)。
4.根据权利要求1所述的一种面向移动应用软件的修改影响分析方法,其特征在于:
步骤4)中从事件日志以及软件源代码中提取事件序列的具体步骤如下:
A.使用APK分析仪从程序源代码中静态挖掘事件序列:
a)APK-AnaIyzer先使用dex2jar和Procyon工具反编译,然后通过srcML将源文件转换为基于XML的表现形式,再依赖apktooI,从XML文件中提取ID、类型和GUI组件的层次结构;
b)将每个GUI组件链接到其各自的行为/手势:APK-AnaIyzer将固定手势分配给GUI组件的类型;对于标准的Android组件类型,与预期的手势做链接;对于自定义组件,APK-AnaIyzer解析源代码以确定手势处理器和事件侦听器;
c)APK-AnaIyzer将组件链接到它们出现的活动;
B.使用数据采集器从事件日志中挖掘事件序列:
a)收集Iow-IeyeI事件日志,在APP正常使用过程中,通过getevent命令产生单击,长按,滑动以及一些复杂手势的事件日志,并保存在日志存储库中;
b)使用Datacollector将事件日志转换成ei标志序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510916069.3A CN105320525B (zh) | 2015-12-09 | 2015-12-09 | 一种面向移动应用软件的修改影响分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510916069.3A CN105320525B (zh) | 2015-12-09 | 2015-12-09 | 一种面向移动应用软件的修改影响分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105320525A true CN105320525A (zh) | 2016-02-10 |
CN105320525B CN105320525B (zh) | 2019-05-10 |
Family
ID=55247954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510916069.3A Active CN105320525B (zh) | 2015-12-09 | 2015-12-09 | 一种面向移动应用软件的修改影响分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105320525B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844218A (zh) * | 2017-02-13 | 2017-06-13 | 南通大学 | 一种基于演化切片的演化影响集预测方法 |
CN108089967A (zh) * | 2017-12-12 | 2018-05-29 | 成都睿码科技有限责任公司 | 一种爬取安卓手机App数据的方法 |
CN109144564A (zh) * | 2018-09-08 | 2019-01-04 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
CN117331849A (zh) * | 2023-12-01 | 2024-01-02 | 杭银消费金融股份有限公司 | 一种基于代码精准分析的测试方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132347A1 (en) * | 2003-08-12 | 2009-05-21 | Russell Wayne Anderson | Systems And Methods For Aggregating And Utilizing Retail Transaction Records At The Customer Level |
CN102135935A (zh) * | 2010-01-22 | 2011-07-27 | 华为技术有限公司 | 软件优化、调试的方法及装置 |
CN102508767A (zh) * | 2011-09-30 | 2012-06-20 | 东南大学 | 一种基于形式概念分析的软件维护方法 |
CN102609854A (zh) * | 2011-01-25 | 2012-07-25 | 青岛理工大学 | 一种基于统一相似度计算的客户划分方法及装置 |
CN102945283A (zh) * | 2012-11-19 | 2013-02-27 | 武汉大学 | 一种语义Web服务组合方法 |
-
2015
- 2015-12-09 CN CN201510916069.3A patent/CN105320525B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090132347A1 (en) * | 2003-08-12 | 2009-05-21 | Russell Wayne Anderson | Systems And Methods For Aggregating And Utilizing Retail Transaction Records At The Customer Level |
CN102135935A (zh) * | 2010-01-22 | 2011-07-27 | 华为技术有限公司 | 软件优化、调试的方法及装置 |
CN102609854A (zh) * | 2011-01-25 | 2012-07-25 | 青岛理工大学 | 一种基于统一相似度计算的客户划分方法及装置 |
CN102508767A (zh) * | 2011-09-30 | 2012-06-20 | 东南大学 | 一种基于形式概念分析的软件维护方法 |
CN102945283A (zh) * | 2012-11-19 | 2013-02-27 | 武汉大学 | 一种语义Web服务组合方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844218A (zh) * | 2017-02-13 | 2017-06-13 | 南通大学 | 一种基于演化切片的演化影响集预测方法 |
CN106844218B (zh) * | 2017-02-13 | 2020-06-23 | 南通大学 | 一种基于演化切片的演化影响集预测方法 |
CN108089967A (zh) * | 2017-12-12 | 2018-05-29 | 成都睿码科技有限责任公司 | 一种爬取安卓手机App数据的方法 |
CN109144564A (zh) * | 2018-09-08 | 2019-01-04 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
CN109144564B (zh) * | 2018-09-08 | 2022-03-25 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
CN117331849A (zh) * | 2023-12-01 | 2024-01-02 | 杭银消费金融股份有限公司 | 一种基于代码精准分析的测试方法及系统 |
CN117331849B (zh) * | 2023-12-01 | 2024-02-27 | 杭银消费金融股份有限公司 | 一种基于代码精准分析的测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105320525B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kulesza et al. | MCNP® code version 6.3. 0 theory & user manual | |
US11037078B2 (en) | Adjusting device settings based upon monitoring source code development processes | |
Poldrack et al. | AI-assisted coding: Experiments with GPT-4 | |
US20160306613A1 (en) | Code routine performance prediction using test results from code integration tool | |
CN108733532B (zh) | 大数据平台的健康度管控方法、装置、介质及电子设备 | |
CN105320525A (zh) | 一种面向移动应用软件的修改影响分析方法 | |
US9785421B1 (en) | External dependency attribution | |
Choi et al. | Inference for discretely observed stochastic kinetic networks with applications to epidemic modeling | |
Murgia et al. | On the influence of maintenance activity types on the issue resolution time | |
Kifer et al. | Guidelines for implementing and auditing differentially private systems | |
Rougier et al. | Global recording rates for large eruptions | |
CN113076104A (zh) | 页面生成方法、装置、设备及存储介质 | |
US20140173562A1 (en) | Automatic Documentation Generator | |
Turnu et al. | Entropy of the degree distribution and object-oriented software quality | |
Li et al. | Evaluating short-term forecasting of COVID-19 cases among different epidemiological models under a Bayesian framework | |
Saraf et al. | Modelling reliability growth for multi‐version open source software considering varied testing and debugging factors | |
US20200210439A1 (en) | Autonomous suggestion of related issues in an issue tracking system | |
US20200285569A1 (en) | Test suite recommendation system | |
Li et al. | Computer arithmetic for probability distribution variables | |
CN114402300A (zh) | 用于识别共享特征的事件的系统和方法 | |
US20230259337A1 (en) | Application development platform | |
Inokuchi et al. | From academia to software development: publication citations in source code comments | |
Lin et al. | MaskDensity14: An R package for the density approximant of a univariate based on noise multiplied data | |
CN114881521A (zh) | 业务评估方法、装置、电子设备以及存储介质 | |
CN111338609B (zh) | 信息获取方法、装置、存储介质及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |