一种通信设备及其软件升级的方法

文档序号:6441941阅读:146来源:国知局
专利名称:一种通信设备及其软件升级的方法
技术领域
本发明涉及重构识别技术领域,尤其涉及一种通信设备及其软件升级的方法。
技术背景
在通信设备软件的生命周期中,需要不断对软件进行升级、更改,以适应新的需求。而对软件的更改往往都是在一些外部压力下进行的,如客户或行业竞争。这些更改势必会破坏程序原有的结构,提高程序复杂度,降低代码的质量。结果导致软件的维护成本显著提高,对软件的升级将变得更加困难。
任何软件开发方法和工具都不能避免这个问题,为了解决这个难题,需要一种技术能够降低软件复杂度,提高软件的内部质量。重构就是解决该问题的一项重要技术手段, 识别程序中哪些地方存在坏味道Bad Smells (如重复的代码、过长的函数、过长的类等)、 哪些代码需要被重构是重构的难点。目前采用的重构技术主要有以下几种
1)静态分析技术
静态分析技术是Kamiya首先提出的一种自动识别克隆代码的技术,这是自动化识别重构对象的雏形。主要是通过一些规则,把源程序转换成token序列,然后分析这些 token,从中找出克隆的代码。根据这种静态分析的思想,开发出能够自动识别克隆代码的工具一 CCFinder,这是一种早期的自动识别重构对象的工具。
静态分析只能静态的对现有代码进行分析,而不能分析程序运行流的状态,故能识别出一些克隆代码或不合理的代码,而不能直接支持重构。这需要加入经验分析,进一步识别出可利用何种重构技术来对现有代码进行调整。
2)动态分析技术
Kataoka利用动态分析技术,开发出能够自动检测程序中不变量的工具-Daikon。 它指导目标程序去跟踪一些兴趣变量(包括方法、类、变量等程序元素),然后在这些变量上运行一些测试套件,最后推断出哪些变量是不变量。
动态分析技术虽然加入程序运行时信息,但它限于识别不变量的重构,对其他重构没有很好的支持。而这种重构技术在应用过程,对于降低软件复杂度,提高软件的内部质量的支持不是很理想,对软件的改善效果不明显。
3)可视化技术
可视化技术可以辅助维护人员识别程序中哪些地方应该被重构。具体为根据不同需求,把程序在不同层次进行抽象,然后在这个抽象层次上发现潜在的“坏味道”,但它不能直接识别重构对象,而仅能向维护人员提供一种特殊的程序表示。Simon利用基于度量的可视化技术,把程序的内聚度在2D图上抽象出来,辅助维护人员识别重构对象。Bohnet把组件之间的交互(如调用关系)可视化在3D空间,在不同的抽象层次(从函数间的交互到系统间的交互)上分析组件之间的交互,维护人员可以在这个三维空间观察组件间的交互, 从而识别不合理的调用关系。
可视化技术能够直观的识别不良代码,给维护人员重构建议,但使用该技术的条件比较严格,需要较高的硬件配置,而且欠缺实时性,需要大量的分析时间。 发明内容
本发明提供一种通信设备及其软件升级的方法,用以在自动化优化程序结构的基础上实现软件升级,降低软件升级的复杂度及提高软件升级效率。
本发明提供一种通信设备软件升级的方法,包括
确定目标程序中耦合度高于设定值的各对程序元素分别作为关注点;
以任一对关注点涉及的程序元素为节点,根据所涉及的程序元素间的依赖关系确定出节点之间的带方向箭头的边,由所述节点及边构造出程序依赖根据构造的程序依赖图,以每个关注点为起点,分别按照切片准则进行前向切片和后向切片,得到每个关注点的切片后的程序依赖根据切片后的程序依赖图,识别需要进行重构的程序元素,并对需要进行重构的程序元素进行重构;
对完成程序元素重构的目标程序进行升级。
本发明还提供一种通信设备,包括
关注点确定单元,用于确定耦合度高于设定值的一对程序元素分别作为关注点;
依赖图构造单元,用于根据确定的每个关注点,按照自底向上的顺序,构造出面向所述关注点的程序依赖切片单元,用于根据构造的程序依赖图,以确定的每个关注点为起点,分别按照切片准则进行前向切片和后向切片,得到切片后的程序依赖识别单元,用于根据切片后的程序依赖图,识别需要进行重构的重构对象,并对需要进行重构的程序元素进行重构;
升级单元,用于对完成程序元素重构的目标程序进行升级。
利用本发明提供的通信设备及其软件升级方法具有以下有益效果
1)以耦合度高的程序元素为关注点进行分析,与内聚度相比,耦合度更能反映程序中元素间的交互关系,从而更有利于分析类之间的重构,因此为从整体上提高了软件升级效率提供了基础;
2)通过程序依赖图的构造,根据不同的依赖关系,可以识别出不同的重构对象,从而使得该方法具有很大的可扩展性,从而使重构应用的程序元素类型多,重构效果好,则可以全面提高软件升级效率;
3)因为引入了程序切片技术,所以提高了度量的准确性,使得度量结果更准确,从而优化程序结构的准确度高,克服软件升级过程中的兼容性问题。


图1为本发明实施例通信设备软件升级方法流程图2为本发明实施例目标程序中方法内依赖图3为本发明实施例目标程序中方法间依赖图4为本发明实施例目标程序中类依赖图5为本发明实施例中目标程序后向切片结果图6为本发明实施例中目标程序前向切片结果图;图7为本发明实施例中通信设备结构图。
具体实施例方式下面结合附图和实施例对本发明提供的通信设备及其软件升级方法和进行更详细地说明。识别通信设备程序中哪些地方存在坏味道、哪些代码需要被重构是重构的难点, 因为对于坏味道的理解取决于很多因素,在很大程度上存在主观性。因此,如何自动识别重构对象是限制重构技术发展的瓶颈,也就使得软件升级的兼容性差及升级效率低。本文在一些简单重构识别的基础上,提供了一种基于识别重构对象的通信设备软件升级方法,在构建依赖图的基础上,定义了基于切片的重构识别技术,进而来识别程序中的“坏味道”。如图1所示,本发明提供的通信设备软件升级方法包括以下步骤步骤101,确定目标程序中耦合度高于设定值的各对程序元素分別作为关注点;具体地,耦合度通过交互次数来衡量,可以通过执行程序代码,统计程序元素同其他程序元素间的交互次数,如果两个程序元素间的交互次数超过设定值,则说明耦合度高于设定值,可以将这两个程序元素作为关注点。步骤102,以任ー对关注点涉及的程序元素为节点,根据所涉及的程序元素间的依赖关系确定出节点之间的带方向箭头的边,由所述节点及边构造出程序依赖图;具体地,程序依赖图程序依赖图由节点和边组成,节点代表程序中的程序元素,边代表程序元素间的关系,通过箭头指示依赖关系,程序元素可以程序中变量、方法、类等,程序元素间的关系包括数据依赖关系和控制依赖关系。步骤103,根据构造的程序依赖图,以每个关注点为起点,分别按照切片准则进行前向切片和后向切片,得到每个关注点的切片后的程序依赖图;进行前向切片和后向切片,可以删除一些不影响程序执行轨迹的节点和边,从而得到影响程序执行轨迹的程序依赖图。步骤104,根据每个关注点切片后的程序依赖图,识别需要进行重构的程序元素, 并对需要进行重构的程序元素进行重构;步骤105,对完成程序元素重构的目标程序进行升级。本发明实施例提供的通信设备软件升级方法,重构过程中以耦合度高的程序元素为关注点进行分析,与内聚度相比,耦合度更能反映程序中元素间的交互关系,从而更有利于分析类之间的重构,因此为从整体上提高了软件升级效率提供了基础;通过程序依赖图的构造,根据不同的依赖关系,可以识别出不同的重构对象,从而使得该方法具有很大的可扩展性,从而使重构应用的程序元素类型多,重构效果好,则可以全面提高软件升级效率; 因为引入了程序切片技木,所以提高了度量的准确性,使得度量结果更准确,从而优化程序结构的准确度高,克服软件升级过程中的兼容性问题。下面给实例代码为例给出本发明通信设备软件升级方法优选实施方式,该代码示例包含了本发明实施例处理对象的各种特征,可辅助对相关概念的理解。该实例代码如下
权利要求
1.一种通信设备软件升级的方法,其特征在于,包括确定目标程序中耦合度高于设定值的各对程序元素分别作为关注点; 以任一对关注点涉及的程序元素为节点,根据所涉及的程序元素间的依赖关系确定出节点之间的带方向箭头的边,由所述节点及边构造出程序依赖图;根据构造的程序依赖图,以每个关注点为起点,分别按照切片准则进行前向切片和后向切片,得到每个关注点的切片后的程序依赖图;根据切片后的程序依赖图,识别需要进行重构的程序元素,并对需要进行重构的程序元素进行重构;对完成程序元素重构的目标程序进行升级。
2.如权利要求1所述的方法,其特征在于,所述涉及到的程序元素间的依赖关系包括数据依赖关系,所述数据依赖关系包括设变量ν和语句节点Iii为关注点,若变量ν在语句节点Iii的定义是语句节点的一个可到达定义,则语句节点η」数据依赖于语句节点η”所述程序依赖图中语句节点η」和语句节点Iii间的箭头方向是从语句节点r^.指向语句节点IV
3.如权利要求1所述的方法,其特征在于,所述涉及到的程序元素间的依赖关系包括控制依赖关系,所述控制依赖关系包括在条件语句的条件体内,语句S对判断谓词语句P具有控制依赖关系,所述程序依赖图中语句S节点和语句P节点之间的箭头从判断谓词语句P指向语句S ;在循环语句的循环体内,语句S对判断谓词语句P具有控制依赖关系,所述程序依赖图中语句S节点和语句P节点之间的箭头从判断谓词语句P指向语句S。
4.如权利要求1所述的方法,其特征在于,以每个关注点为起点,分别按照切片准则进行后向切片,具体包括从关注点开始,在所述程序依赖图中沿着除参数输出边以外的边反向遍历,并标记所有达到的节点和边;从反向遍历被标记的节点和边开始,沿着除参数输入边以外的边反向遍历,标记到达的节点的边;所有被标记的节点和边的集合组成所述关注点的后向切片; 以每个关注点为起点,分别按照切片准则进行前向切片,具体包括 从关注点开始,沿着除参数输出边以外的边正向遍历,并标记所有达到的节点和边; 从正向遍历被标记的节点和边开始,沿着除参数输入边以外的边正向遍历,标记到达的节点的边;所有被标记的节点和边的集合组成所述关注点的前向切片。
5.如权利要求1所述的方法,其特征在于,根据切片后的程序依赖图,识别需要进行重构的程序元素,具体包括根据每个关注点切片后的程序依赖图,确定该关注点对应的程序元素对; 确定该对程序元素分别作为关注点的切片后的程序依赖图中,该对程序元素间的交互所经历的节点和边数,在所经历的节点和边数超过设定数量时,确定该对程序元素需要重构。
6.如权利要求1所述的方法,其特征在于,所述作为关注点的程序元素为变量、方法或类。
7.一种通信设备,其特征在于,包括关注点确定单元,用于确定目标程序中耦合度高于设定值的各对程序元素分别作为关注占-I—I— ^ \\\ 依赖图构造单元,用于以任一对关注点涉及的程序元素为节点,根据所涉及的程序元素间的依赖关系确定出节点之间的带方向箭头的边,由所述节点及边构造出程序依赖图;切片单元,用于根据构造的程序依赖图,以每个关注点为起点,分别按照切片准则进行前向切片和后向切片,得到每个关注点的切片后的程序依赖图;识别单元,用于根据根据切片后的程序依赖图,识别需要进行重构的程序元素,并对需要进行重构的程序元素进行重构;升级单元,用于对完成程序元素重构的目标程序进行升级。
8.如权利要求7所述的通信设备,其特征在于,依赖图构造单元确定的所述涉及到的程序元素间的依赖关系包括数据依赖关系,所述数据依赖关系包括设变量ν和语句节点Iii为关注点,若变量ν在语句节点Iii的定义是语句节点的一个可到达定义,则语句节点η」数据依赖于语句节点η”所述程序依赖图中语句节点η」和语句节点Iii间的箭头方向是从语句节点r^.指向语句节点IV
9.如权利要求7所述的通信设备,其特征在于,依赖图构造单元确定的所述涉及到的程序元素间的依赖关系包括控制依赖关系,所述控制依赖关系包括在条件语句的条件体内,语句S对判断谓词语句P具有控制依赖关系,所述程序依赖图中语句S节点和语句P节点之间的箭头从判断谓词语句P指向语句S ;在循环语句的循环体内,语句S对判断谓词语句P具有控制依赖关系,所述程序依赖图中语句S节点和语句P节点之间的箭头从判断谓词语句P指向语句S。
10.如权利要求7所述的通信设备,其特征在于,切片单元以每个关注点为起点,分别按照切片准则进行后向切片,具体包括从关注点开始,在所述程序依赖图中沿着除参数输出边以外的边反向遍历,并标记所有达到的节点和边;从反向遍历被标记的节点和边开始,沿着除参数输入边以外的边反向遍历,标记到达的节点的边;所有被标记的节点和边的集合组成所述关注点的后向切片; 以每个关注点为起点,分别按照切片准则进行前向切片,具体包括 从关注点开始,沿着除参数输出边以外的边正向遍历,并标记所有达到的节点和边; 从正向遍历被标记的节点和边开始,沿着除参数输入边以外的边正向遍历,标记到达的节点的边;所有被标记的节点和边的集合组成所述关注点的前向切片。
11.如权利要求7所述的通信设备,其特征在于,识别单元根据切片后的程序依赖图, 识别需要进行重构的程序元素,具体包括根据每个关注点切片后的程序依赖图,确定该关注点对应的程序元素对; 确定该对程序元素分别作为关注点的切片后的程序依赖图中,该对程序元素间的交互所经历的节点和边数,在所经历的节点和边数超过设定数量时,确定该对程序元素需要重构。
全文摘要
本发明公开了一种通信设备及其软件升级的方法,该方法包括确定目标程序中耦合度高于设定值的各对程序元素分别作为关注点;以任一对关注点涉及的程序元素为节点,根据所涉及的程序元素间的依赖关系确定出节点之间的带方向箭头的边,由所述节点及边构造出程序依赖图;根据构造的程序依赖图,以每个关注点为起点,分别按照切片准则进行前向切片和后向切片,得到对应关注点的切片后的程序依赖图;根据切片后的程序依赖图,识别需要进行重构的程序元素。本发明以耦合度为切入点构造依赖图,与内聚度相比,耦合度更能反映程序中元素间的交互关系,从而更有利于分析类之间的重构,引入切片技术增加了度量的准确性。
文档编号G06F9/445GK102541592SQ201110424629
公开日2012年7月4日 申请日期2011年12月16日 优先权日2011年12月16日
发明者张重峰 申请人:上海大唐移动通信设备有限公司, 大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1