Detection of Java EE EJB Antipattern Instances using Framework-Specific Models

TitleDetection of Java EE EJB Antipattern Instances using Framework-Specific Models
Publication TypeThesis
Year of Publication2009
AuthorsStephan, M.
AdvisorCzarnecki, K.
Academic DepartmentElectrical and Computer Engineering
Number of Pages113
Date Published04/2009
UniversityUniversity of Waterloo

Adding flexibility to a process or technology often comes with a price. This holds true in the case of the amendments made to Java EE platform to upgrade to version 5. Java EE 5 allows Enterprise Java Bean (EJB) developers the ability to configure EJBs via Java 5 annotations, through XML deployment descriptors, or through a combination of both. While this adds flexibility to the EJB configuration process, it also comes with the price of an EJB project's stakeholder not being able to ascertain the current configuration of an EJB project until runtime, due to the multiple sources of configuration and the complex overriding rules. Furthermore, to detect errors in configuration or perform antipattern instance detection it is clearly beneficial to have a representation of an EJB project that accurately represents the current configuration of the system. This thesis first presents an EJB Framework Specific Modeling Language (FSML) that formalizes the EJB domain's specific components in the form of a cardinality-based feature model. By having such a model and using and extending the existing FSML infrastructure, one retrieves a Framework Specific Model (FSM) through reverse engineering that represents all the information from the various sources of EJB configuration. By analyzing this FSM, we can create another model that represents the resolved configuration of an EJB project. We employ model filtration to highlight specific sources of configuration. We then use open-source and custom EJB projects to evaluate the EJB FSML and the resolved model. Models admit antipattern instance detection. This thesis presents two methods for running antipattern instance detection on an EJB project using existing EJB antipatterns in literature: 1) queries in Java that execute against the resolved configuration model; and 2) queries written in .QL, an object-oriented query language, against the EJB project's source code. We compare these two techniques qualitatively and propose a new approach based on this comparison that entails modeling the antipatterns and their symptoms within an FSML model declaratively.