Article Preview
TopIntroduction
Software is becoming increasingly complex. So complex, in fact, that it is widely acknowledged that it is impossible to test every aspect of system software or application programs before release. One method of increasing understanding between the software developer and the customer, ofdeepening the understanding of how software works, and ultimately of reducing the complexity of software, is through the use of models (Thomas, 2004). Over the years, we have come to understand that modeling offers benefits to different stakeholders in software projects (Selic, 2003). In the very early stages of a project, models aid in understanding and communicating requirements. During development, architecture and design models guide the implementation of the system. Finally, models are used for test-generation (Offutt & Abdurazik, 1999) and for easing maintenance activities (Dzidek, Arisholm, & Briand, 2008).
Software development itself is becoming more model-centric (Mohagheghi, Dehlen, & Neple, 2009). The OMG Model Driven Architecture (OMG, 2003) and the recent growth of the Model-Driven Development (MDD) software engineering paradigm (Atkinson & Kühne, 2003) emphasizes the role of modeling in the development of software systems. MDD treats software development as a set of transformations between successive models from requirements to analysis, to design, to implementation, and to deployment (Thomas, 2004). MDD’s defining characteristic is that software development’s primary focus and products are models rather than computer programs.
The dominant question is no longer “Should we do modeling?” but “How should we do modeling?” This new focus on the modeling process, rather than on the software product resulting from the development activities, puts model quality in the forefront. There has been increasing interest, both in industry and academia, on methods and techniques for quality assessment, assurance, and improvement of models in software development and maintenance (Mohagheghi, Dehlen, & Neple, 2009). While there has been a great deal of research on software quality, there has been relatively little work on the quality of models, and the concept of model quality is poorly understood. Existing knowledge on software quality has limited applicability to model quality. Models have very different characteristics than source code: models have multiple views, may be used informally and casually rather than formally and with precision, can be used throughout all phases of the project, and so on.
In an effort to bring together the wide variety of modeling methods and forms, the Unified Modeling Language (UML) emerged in the 1990s as a standard modeling language for a wide spectrum of application domains (Rumbaugh, Booch, & Jacobson, 1998). This standardization has driven the advancement of modeling methods and tools and has enabled academics and practitioners alike to improve on the core structure of UML and engage in a healthy debate about the use, advancement, and basic beliefs about the modeling process. However, modeling research has tended to be more about improving UML to deal with special modeling cases than with improving model quality (Dobing & Parsons, 2006; Grossman, Aronson, & McCarthy, 2005).
In order to advance the field of conceptual modelling quality research, it is useful to explore the history of the field and to determine its current state of the art by locating, evaluating, and interpreting relevant research to date that is related to model quality with a focus on UML. This paper presents a systematic literature review (SLR) of papers dealing with the quality of UML models. A proper systematic literature review follows a rigorous and systematic approach, in particular that described by Brereton, Kitchenham, Budgen, Turner, and Khalil (2007), Kitchenham (2004), and Kitchenham and Charters (2007).