论文部分内容阅读
软件产品结构是软件工程领域的一个研究热点。在软件的再开发、缺陷修复、新人进入、遗产软件维护等开发活动中,了解软件的产品结构都可以帮助提高开发效率和产品质量。但是,在软件系统的演化过程中,软件的规模和复杂性不断增大,导致项目维护一个与产品进度一致的产品结构是很困难的。 因此,有许多研究工作致力于采用逆向工程的方法,从源代码中建立软件的体系结构。他们根据方法调用,或者类之间的依赖关系,建立软件的方法调用图和类图。然后,根据这些基本图中的节点之间的耦合程度,聚合得到更高抽象层次的图,例如,子系统图或者模块图。然而,这种方法只注重软件源代码,对于开发活动缺乏关注。 本文设计并实现了一个基于项目的版本控制数据建立产品结构的可视化工具,通过建立文件/模块结构和开发者协作结构,可以更好地帮助项目开发者进行产品组织和任务分配。为了从版本控制系统数据建立产品结构,本文的主要技术挑战是:如何确定产品结构中的元素以及元素之间的关系。 针对上述问题和挑战,本文从版本控制系统数据出发,根据开发者对文件变更的提交活动,逆向生成任意时间点的软件的文件组织结构,通过计算文件之间的关联度,建立文件关联图。然后,根据文件之间的关联程度,将文件聚类成模块并计算模块之间的关联关系。并且,根据开发者对文件的修改活动,确定了与文件/模块相关的开发者的协作结构。本文设计并实现了多个视图,用于展示文件之间的关联,模块之间的关联,模块与文件目录结构的对比,以及相关开发者协作的情况。