您好, 访客   登录/注册

利用群落技术来优化软件的模块结构

来源:用户上传      作者:

  摘 要:众所周知软件建立的整个生命周期中,软件开发人员要花费很大的时间与精力在软件的建模中,但是后期的各种维护与软件功能的改进都必须要对最初建立的模型进行更改,因此前期建立简单有效的软件模型对软件的整个生命周期具有非常大的意义。本文主要通过群落技术来对软件模型中的模块化的结构进行改进,群落技术的核心利用的是软件模块之间的耦合性与模块内部的内聚性来建立耦合内聚的关系图,进而完成对软件的模块化的优化,使软件的模块化结构更加地清晰易懂,使软件各种性能的改进变得更加地简洁方便。
  关键词: 软件;模块结构;群落技术
  文章编号: 2095-2163(2019)03-0298-02 中图分类号: TP311.5 文献标志码: A
  0 引 言
  在对软件进行设计的过程中,模块化的运用可以起到非常关键的作用,因此对软件进行设计时除了应该得到最佳的模块的数目之外,提高模块的性能也具有至关重要的意义。模块的耦合性与内聚性是软件性能的重要指标。其中,模块的内聚性通常用来描述软件某个模块本身关联的联系程度,耦合性多是用于描述不同的模块之间的联系程度,模块存在主要是为了软件开发人员在对软件进行设计时能够分离某些功能,为了达到统一细小的功能存在于同一个模块中的目的,这样在后期进行维护以及功能变更时只需要对于相应的模块,不必每次都对整个软件来进行修改,因此模块化在软件的设计中占据很重要的位置[1]。通常来说,软件的模块化就是根据软件本身需要完成的功能来对软件进行整体的划分,本文研究的群体检测技术本质上就是采用将整个的软件看作一个群落的技术来探索更加合理化的软件模块划分方法,因而在实践中有着强大的应用研发价值。
  1 群落技术的理论基础
  对于软件模块结构的优化已经发表了一系列的研究成果,同时还有众多的工具以及理论可供调取选用[2],但是模块结构的优化却仍具可观潜力亟待开发,现存的研究很多都是封闭软件或者是优化度不够,本文提出的群落技术是在不同的层次上来完成对于软件结构的调整,最终实现軟件模块的优化的目的。
  1.1 基本层次的技术运用
  基本层次主要针对的是理论的运用,为此最先处理的是已经存在的模块,对其进行优化时将主观设定每个模块作为一个群落,如前文所述的内聚性主要是各个群落内部的关联性,耦合性是不同群落之间的联系,最终的目的是降低不同群落之间的联系、增强群落内部的联系,因此在对数据进行归类时通常将观察不同群落以及每个群落之间属性点的联系程度。如果群落中的属性点有联系就记为1,否则为0,这就是适用于群落内部各个属性点之间的关系的最基本的计数办法。
  1.2 研究层次的发掘技术运用
  研究可知,当有针对性地分析与解读最底层基本的群落内部的计数办法后,在实际的运用过程中还需要对于群落之间的属性点的联系进行合理的规定,本文中的规定办法与前面阐述的非常类似。如果2个不同的群落之间的2个属性具有联系,计数为1;但是如果2个群落之间非常多的属性之间具有联系,研究人员则应深入探寻查找出具有联系的数目,此时就是重点根据整个软件各个群落之间联系的综合结果作为计算的依据[3]。究其本质来说,各个群落之间的联系值的大小也就是在最基本层次得到的联系值大小的推演及运用。
  基于此,研究又给出一个简单的概念例子来进行释义讲解:假如有3个基本模块并且定义为群落A、模块B与群落D,在群落A中有3个属性,假设为(1,2,3),在群落B中也有3个属性,假设为(4,5,6),D中也有3个属性,假设为(7,8,9),并且群落A、B、D中各个属性都有简单的联系。在研究定义时将群落A、B与D视作为功能的最基本层次,则群落A,B与群落D之间的属性值为1;在A与B的上一个层次假设有更大的模块,定义为群落a,群落D的上一级为群落b,此时D与A,B都有联系,这样就可将群落a与群落b之间的属性值定义为2。如此一来,在设计应用过程中也就是将依据软件整个的属性值Q的变化来判断软件模块性的变化。若将其运用在本文的实例中,就是通过确定群落a中的A,B与b中D之间的移动来获得Q的最小值。
  1.3 群落技术的核心思想
  群落技术在根本上就是将整个软件看成一个大的群落,不同的子功能视作小的群落,最终完成的任务是将各个小的群落之间的联系降到最低、且将各个群落自身的模块性提高。在研究构建的实验中规定一个值Q来对整个群落总体的这些仿真值来进行判断。Q值越大,带边采用群落方法进行移动将会明显降低了模块性,反之就是实现了优化。
  2 群落技术的应用
  本文的应用在开源的Java代码Trama,其具备的功能是对矩形的图形化来进行讲解,而本文据此展开实验则能切实有效地对软件的性能进行检验。
  2.1 数据选取与收集
  这里,研究拟对于Trama的各项数据进行统计,得到的结果见表1。
  2.2 群体检测技术的运用
  在实际的运用过程中统计出所需要的数据,并且借助时下优良的实例化工具将研究的软件具体化,最终找到群落中所需要的属性。运行结果详见表2。
  2.3 结果分析
  由表2可以看出,有9个不同的模块需要从原来的群落中移动到新的群落中去,为了更好地验证本文采用方法的准确性,启用了开源软件Trama,并对软件进行了手工查找,最终结果发现本文求得的各移动模块都是有必要的,准确率已然高达百分之百,只是完整率却还并未臻至令人满意程度。
  3 结束语
  尽管本文的方法展示出了可行性与简易性,但是方法却并未得到广泛应用,因此下一步的主要工作是:采用来自不同领域的各种软件,用不同的尺度来对本文的群落方法进行检验;开发出能在各种水平上进行实践操作的工具。
  参考文献
  [1]钟林辉, 张能伟, 候长源, 等.  一种改进的基于层次聚类的软件重构技术研究[J]. 计算机工程与应用,2015,51(20):50-54.
  [2]PRESSMAN R S. 软件工程:实践者的研究方法[M]. 黄柏索,梅宏,译. 北京:机械工业出版社,1999.
  [3]AMBLER S W. 软件工程技术丛书:数据库重构[M]. 王海鹏 译. 北京:机械工业出版社,2011.
  [4]SENG O, STANMMEL J, BURKHART D. Search-based determination of refactoring for improving the class structure of object-oriented system[C]// Proceedings of the 8th Annual Conference on Genetic and Evolutionary Computation Conference. NewYork,USA: ACM, 2006:1909-1916.
转载注明来源:https://www.xzbu.com/8/view-14888227.htm