An Approach to Checking Consistency between UML Class Model and Its Java Implementation

Author(s): Hector M. Chavez, Wuwei Shen, Robert B. France, Benjamin A. Mechling, Guangyuan Li
Venue: IEEE Transactions on Software Engineering
Date: 2016

Type of Experiement: Other
Data Collection Method: Code Metric


Model Driven Engineering (MDE) is a methodology concerned with the construction of accurate and expressive models prior to development of large software projects. Research in MDE has led to the creation of several tools which allow for the generation of a skeletal framework in order to expedite implementation, producing fields and method stubs which developers then proceed to fill out. However, depending on the complexity of the project and the features of some such “forward engineering” tools, the generated code can be difficult for developers to understand and to reconcile with the initial design. In many cases, the issues caused from a lack of understanding of the original design when implementing the skeleton code can cost far more time than working without the forward engineering tool. Thus, this paper presents an approach to checking the consistency between UML class models and their java implementations.

The authors developed the Conformance Checking between UML and Java (CCUJ) tool as a test-based verification approach for verifying correctness in a Java implementation based on the UML model. CCUJ analyzes the original model and generates tests that insure the implementation keeps within the constraints defined by the model. The authors define the main algorithm used for their tool, provide a formal proof of correctness, and provide details on the implementation of the algorithm. This is followed by effectiveness and efficiency experiments of CCUJ on Eclipse’s open source UML2 project. Pertaining to the effectiveness, the results were that several faults in UML2 were found CCUJ and confirmed by the developers of that project, faults that current similar tools couldn’t catch. Pertaining to efficiency, thanks to its efficient pruning technique to reduce test case input space, CCUJ is fast than many other similar tools. Further work includes extending CCUJ to also verify the correctness of the skeletal code generated from the model (prior to implementation by a developer).