Definitions and approaches to model quality in model-based software development - A review of literature <s> Introduction <s> Component-based development promises to revolutionize the way in which software is developed and maintained. However, contemporary component technologies, such as COM+/.NET, EJB/J2EE and CORBA, only support components in the final, implementation-oriented stages of development, leaving the earlier stages of analysis and design to be organized in largely traditional, non-component oriented ways. This book describes the KobrA method, which supports a model-driven, UML-based representation of components, and a product line approach to their development and evolution. This enables the benefits of component-based development to be realized throughout the software life-cycle, and allows the reusability of components to be significantly enhanced. <s> BIB001 </s> Definitions and approaches to model quality in model-based software development - A review of literature <s> Introduction <s> Use cases have become an important tool in software engineering. There has been much focus on the diagram notation but relatively little on use-case descriptions. As part of a welcome and important research project into the use of scenarios in requirements engineering, the CREWS (Co-operative Requirements Engineering With Scenarios, an EU funded ESPRIT project 21903) team has proposed a set of guidelines for writing use-case descriptions. This paper describes the replication of a CREWS project experiment that suggests CREWS use-case authoring guidelines improve the completeness of use-case descriptions. Our results show that the CREWS guidelines do not necessarily improve the use-case descriptions, only that the subjects implemented varying numbers of guidelines in their use-case descriptions. Subjects in the control group implemented a significant percentage of the guidelines by `chance.' To further justify our results, we also apply a different marking scheme to compare with the CREWS approach. The results from the alternative marking approach show that there was no significant difference between the qualities of the use-case descriptions across the various groups. <s> BIB002 </s> Definitions and approaches to model quality in model-based software development - A review of literature <s> Introduction <s> Model-driven development claims to offer the same improvement to developers that the step from assembly to procedural programming languages offered developers in the last century. In this paper we report on a project that assessed the feasibility of applying a model-driven development approach to the evolution of a non-trivial legacy system in an industrial setting. The project focused on whether the promises of model-driven development hold in the real world and whether it possible to adopt model-driven development without losing the investment in existing third generation language code. An existing component from a system was redeveloped and integrated back into the system using a current model-driven development tool at Invensys Rail Systems Australia. From experiences throughout the project, and with the tool, a set of requirements for future model-driven development and model-driven development tools was produced. These requirements are designed to both aid tool developers, and to give companies a way of assessing the maturity of both future model-driven development tools and model-driven development itself. <s> BIB003 </s> Definitions and approaches to model quality in model-based software development - A review of literature <s> Introduction <s> In model-driven engineering (MDE), models are the prime artifacts, and developing high-quality systems depends on developing high-quality models and performing transformations that preserve quality or even improve it. This paper presents quality goals in MDE and states that the quality of models is affected by the quality of modeling languages, tools, modeling processes, the knowledge and experience of modelers, and the quality assurance techniques applied. The paper further presents related work on these factors and identifies pertinent research challenges. Some quality goals such as well-formedness and precision are especially important in MDE. Research on quality in MDE can promote adoption of MDE for complex system engineering. <s> BIB004 </s> Definitions and approaches to model quality in model-based software development - A review of literature <s> Introduction <s> This paper reviews definitions of model quality before introducing six properties of models that are important for building high-quality models. These are identified to be correctness, completeness, consistency, comprehensibility, confinement and changeability. We have earlier defined a quality model that separates intangible quality goals from tangible qualitycarrying properties and practices that should be in place to support these properties. A part of that work was to define a metamodel for developing quality models with MDE in mind. In this paper we analyze existing literature in order to extract model quality properties and to build a quality model with focus on the quality of models. For this purpose the metamodel is implemented in a tool that allows us to model quality models. The advantage of defining the metamodel is learning how to precisely define quality elements and relations in the quality model, and building models that may be used to generate documentation, guidelines or checklists. The disadvantage is mainly in the research phase where the metamodel is not stable and undergoes changes. <s> BIB005
For years, modelling has been advocated as an important part of software development in order to tackle complexity by providing abstractions and hiding technical details. Due to the wide application of modelling, numerous informal and formal approaches to modelling have been developed, such as Entity Relationship Diagrams (ERD) for modelling data, Specification and Description Language (SDL) for modelling telecommunication systems, formal modelling languages such as Z and B, and the Unified Modeling Language (UML) which is the most widely modelling language used by industry today. Modelling was initially applied for communication between stakeholders and providing sketches (also called models or diagrams) of what a software system must do or its design. Nowadays, industry tends to use models more and more for tasks other than describing the system, for example simulation, generating test cases and parts or all of the source code. The growing attention on using models in software development has subsequently brought the quality of models as a research area in forefront. In late 2000, the MDA (Model-Driven Architecture) BIB001 initiative was launched by OMG (Object Management Group) to promote using models as the essential artefacts of software development. Followed by MDD (ModelDriven Development) or MDE 2 (Model-Driven Engineering), we face a new paradigm in software development where models are the primary software artefacts and transformations are the primary operations on models. In MDE, there is a lot to consider regarding the quality of models to ensure that right artefacts are generated. Finally, since defects can be earlier detected and corrected in models, improving the quality of models will ultimately reduce maintenance costs BIB003 . The QiM (Quality in Model-driven engineering) BIB002 project at SINTEF is concerned with the quality of artefacts and activities in model-based software development in general and MDE specifically. The term "model-based software development" in this article covers a spectrum of approaches where models are widely used in software development for more than visualizing the source code or providing informal sketches of design. Quality in model-based software development covers the quality of models, modelling languages, modelling tools, modelling processes and even transformations performed on models. One of the outcomes of the QiM project has been identification of constructs needed to develop quality models as described in  . With a "quality model" we mean a set of quality goals (also called quality attributes or quality characteristics in literature) and their relations, accompanied by a set of practices or means to achieve the quality goals, evaluation methods for evaluating quality goals and links to related literature. The focus of this article is on identifying quality goals for models together with practices in model-based software development that can improve the quality of models, by performing a systematic review of literature on model quality. By identifying practices we take a preventive approach to software quality. Some tools and methods for assessing model quality and empirical evidence that are reported in the covered literature are presented in this article as well. While model quality is covered in previous literature and various quality models are proposed; among them in [P15] [P19] [P22] [P26] [P38] 4 , these quality models have some shortcomings as discussed in BIB005 and none of them provide their classification of model quality goals based on an analysis of previous work. Therefore we have performed a systematic review of literature discussing model quality to answer the following research questions:  RQ1. What quality goals are defined in literature for models in model-based software development?  RQ2. What practices are proposed to achieve or improve the above quality goals?  RQ3. What types of models and modelling approaches are covered in literature? Since UML is currently the most widely used modelling language, UML models are the subject of most work related to the quality of models. However, UML may be used in multiple ways; from providing informal sketches to full system specification end even as a programming language and extended for specific domains. Therefore literature on UML models covers different approaches to modelling, while approaches where models play a central role in software development are in focus here. We emphasize that the focus of this article is on the quality of models representing or describing software systems and not the quality of system design or implementation; for example patterns and practices for object-oriented design and metrics on the design level. Unhelkar defines model quality as "the correctness and completeness of software models and their meanings" and separates it from code quality and architecture quality [P38] . We share the same view in this article. It is also clear that the quality of modelling languages, modelling tools and the expertise of people performing modelling will impact the quality of developed models. These issues are not covered in this article while some related work is discussed in BIB004 . The remainder of this article is organized as follows. The review process and the literature covered in this review are presented in Section 2 and validity threats are discussed. In Section 3, we discuss what models are and what roles they have in software development. Section 4 answers RQ1 by identifying six model quality goals. These quality goals have been discussed previously in literature but never put together and defined in relation to one another. In Section 5, we discuss RQ2 by presenting the practices proposed in literature in order to improve the quality of models, together with types of models and modelling approaches related to RQ3 and the results of empirical studies whenever reported. Section 6 provides a summary of the results while Section 7 is discussion. Finally, the article is concluded in Section 8, answers to research questions are summarized and gaps for future research are discussed.