论文部分内容阅读
随着软件系统的广泛应用,软件工程的出现为规范软件项目管理,保障软件质量提供了强有力的保证。研究发现在现有的软件系统中,存在着大量的横切关注,这些横切关注散布于软件系统的诸多核心关注当中。原有的程序设计技术不能有效地模块化横切关注的实现,从而破坏了软件系统核心关注的模块化。为了模块化横切关注,需要在软件程序中发现横切关注所包含的程序元素并进行重构。现有的挖掘算法只利用了横切关注的引用频繁度,而没有考虑程序的结构信息。此外软件程序中大量出现由多个元素构成的组合横切关注,而原有的研究绝大部分针对的是简单的横切关注。因此寻求组合横切关注的挖掘和重构技术也显得十分重要。链接分析能够发现软件程序中的横切关注元素。分散性是横切关注中元素的主要特征,能够用于发现程序中的横切关注,但是引用频繁度并不完全等价于分散性。程序依赖图包含了程序元素及其之间的依赖关系,能够非常完整地表示程序语义信息。链接分析是一种基于图结构信息的图分析技术,其中双状态模型能够用于发现全局性的功能节点和整合节点,而横切关注元素类似于功能节点。结合频繁度模型和双状态模型,能够更准确地描述横切关注的耦合特征,有助于更有效地挖掘程序中的横切关注。软件程序可以使用依赖图进行表示,有向图聚类能够帮助发现软件程序中的各种关注。为了发现程序关注中的元素,首要的工作是定义程序元素之间的相关性度量。属于同一个关注的程序元素间不只是有较强的连接度,也可能有较强的相似度,因此可以构造包含两种不同类型边的异质图,来表示程序中元素之间的关系。现有的算法都是基于密度的有向图聚类算法,只考虑了原始有向图中元素间的连接度。为了对该异质图进行聚类,需要实现基于相似性的有向图聚类,从而更有效地发现程序关注包含的相关元素,并能利用原有的无向图聚类方法。基于权威转移的图层次聚类方法,能够帮助发现软件系统的层次结构,并能解决聚类初始化、簇个数选择等经典聚类难点。半监督图聚类技术能够发现组合横切关注。现有研究主要集中在简单的横切关注挖掘,而软件系统中的横切关注通常包含多个元素,因此当前方面挖掘的重点和是定义并发现组合横切关注。组合横切关注的元素中一部分是一组的横切关注种子,而另一部分是实现辅助功能。这些种子散布于多个模块并具有将强的相似性,是该横切关注的核心元素。而辅助元素没有散布特性,但是与核心元素有较强的相关性。属于相同横切关注的种子应当被分在同一个组,而属于不同横切关注的种子不能被分在同一个组。该约束符合半监督学习的约束定义,能用于改善聚类的效果。借助基于相似度的有向图聚类算法来实现该半监督聚类算法,并通过分析大型软件系统DAQ中大量的横切关注来验证算法的效果。组合重构是实现软件自动化重构的关键技术。软件工程实践中的绝大部分重构都是由多个子重构组成的,需要使用具有任务的表达、分解和约束能力的模型来形式化组合重构。而重构语言用于表示重构的意图,因此需要定义待重构的各种程序,能够描述各种重构组合以及重构前提条件,并且具有直观的表达能力。最后需要重构框架来实现自动化的组合重构。由于重构对象和重构类型的多样性,该框架要具有良好的可扩展性,能够提供自定义的重构检测功能。因此实现灵活的程序查询和转换功能显得尤为重要。