论文部分内容阅读
软件技术的快速发展为人民的日常生活、社会生产等带来了巨大的便利和进步,已成为现代社会发展中不可或缺的支撑力量。然而,随着经济与社会的迅猛发展,人们对于已有软件系统的功能要求越来越复杂,其变化也越来越频繁。这使得遗产软件的重构、复用、维护越来越富挑战性,而程序理解是使得这些工作得以高质量、高效率完成的中心活动。
软件分簇技术是一种通过构建程序的高层视图来辅助理解程序的方法,该技术基于“分而治之”的策略将待理解系统中相似或紧密相关的软件成分聚集来构建高层的概念子系统。设计模式检测是一种通过识别和恢复程序代码中的设计模式信息来辅助理解程序的技术,试图让程序理解人员从设计模式角度容易、快速、高效地构建程序代码的智力模型。近年来,软件分簇技术和设计模式检测技术均受到研究者们的广泛关注,然而现有研究工作大多将它们分离看待。
本文针对现有软件分簇方法的特点和不足,基于现有设计模式检测技术的研究成果,将设计模式信息引入到软件分簇过程中,研究设计模式指导的软件分簇方法,主要工作有:
(1)从设计模式的构成角色入手,研究设计模式中蕴藏的功能含义,特别是设计模式角色间的功能关联,提出了紧密角色关系的概念,并采用紧密角色集来对其进行了描述。紧密角色集为本文提出的软件分簇方法提供了分簇的基础和依据。
(2)基于设计模式的紧密角色集,提出一种设计模式指导的软件分簇方法。该方法关注的分簇对象是面向对象程序类(或接口)的集合:以待分簇的程序类集合为输入,采用设计模式检测技术从输入的程序代码中抽取设计模式信息,表示成设计模式实例集;然后,将程序类集合和设计模式实例集提交给分簇引擎,分簇引擎依据设计模式中的紧密角色关系进行增量式分簇;最后,对分簇引擎的输出结果可视化。
(3)基于以上研究工作,开发了原型工具TasteJ并进行了实例研究。本文设计并实现了两个以人为主体的实验来检验本文提出的软件分簇方法,并通过7个软件分簇度量函数,从统计的角度将其与现有主流软件分簇方法进行分析和比较。