● 摘要
软件开发是一个反复迭代和持续演化的过程。在这个过程中,依照软件设计进行编码,并保持软件设计与实现之间的一致性,有利于对软件的理解和检验,有助于修改与维护工作的顺利进行。
然而,软件设计只是关注于软件的整体框架,而在编码实现中则不仅需要增加许多实现的细节,还会进行必要的优化和修改,导致了二者的抽象层次不同,为二者的一致性分析带来了诸多困难。
本文主要研究Java源码与设计类图的一致性分析方法。目前对于程序源码与设计类图的一致性的研究成果较少,本文在进行调研和总结之后,提出了一种基于类图抽象的一致性分析方法。该方法将一致性分析分为三个阶段:代码的静态分析阶段,实现类图抽象阶段、一致性分析阶段。首先,在静态分析阶段,分析Java程序中的类及其之间的关系,提取实现类图;其次,在实现类图抽象阶段,根据类名匹配,在实现类图中自动选择与设计类图相匹配的类,作为骨干类,然后根据现有研究成果,结合实现类图的特点,提出一组抽象规则,对实现类图进行抽象,得到只包含骨干类及其之间关系的骨干类图;最后,根据Java及UML语义,给出了一组一致性分析的补充规则,支持对骨干类图与设计类图的进一步一致性分析。
基于上述方法,本文设计并实现了一个代码与设计类图的软件结构一致性分析工具ConsistencyAnalyzer,并将其与北航软件所的分析与测试工具QESat集成。该工具是一个Eclipse插件,提供了程序静态分析、实现类图抽象、一致性分析、可视化展示等功能,可建立由代码实现到设计类图的可追踪性,并支持二者的一致性分析。通过对具体案例的分析,验证了该方法的有效性,以及工具的可操作性。