The goal of this work is to facilitate the task of integrating measurement and redesign tools in modelling environments for Domain Specific Visual Languages (DSVLs), reducing or eliminating the necessity of coding. With this purpose, we have created a DSVL called SLAMMER that includes generalizations of some of the more used types of product metrics and frequent model manipulations, which can be easily customised for any other DSVL in a graphical way. The metric customisation process relies on visual patterns for the specification of the elements that should be measured in each metric type, while redesigns (as well as other actions) can be specified either personalizing generic templates or by means of graph transformation systems. The provided DSVL also allows creating new metrics, composing metrics, and executing actions guided by measurement values. The approach has been empirically validated by its implementation in a meta-modelling tool, which has been used for several DSVLs. In this way, together with the DSVL specification, a SLAMMER model can be provided containing a suite of metrics and actions that will become available in the final modelling environment. In this chapter we show a case study for a notation in the web engineering domain. As ensuring model quality is a key success factor in many computer science areas, even crucial in model-driven development, we believe that the results of this work benefit all of them by providing automatic support for the specification, generation and integration of measurement and redesign tools with modelling environments.
TopIntroduction
Diagrammatic notations are pervasive in software development, e.g. to specify, understand and reason about the system to be built. When the notations are constrained to a particular application domain, they are called Domain Specific Visual Languages (DSVLs) (Gray et al., 2004). These provide high-level, domain-specific, graphical primitives, having the potential to increase the user productivity for the specific modelling task. Being so restrictive they are less error-prone than general-purpose languages, and easier to learn.
DSVLs are frequently used in Model-Driven Software Development (MDSD) (Kent, 2002) as a means to capitalize the knowledge in a certain application domain. MDSD seeks increasing quality and productivity in software development by considering models as the primary asset, from which the application code is generated. Although its steep learning curve has been pointed out as one of its main disadvantages, its benefits outweigh the drawbacks, and the use of appropriate modelling tools can help developers to overcome this and other problems. Thus, many efforts are being currently spent in order to provide adequate tool support for the specification and generation of rich modelling environments for DSVLs (DSLTools, 2007; GMF, 2007; Lédczi et al., 2001; Pohjonen & Tolvanen, 2002) encompassing aspects of the MDSD process, such as facilities for code generation, reporting, formal verification, or quality assessment (Guerra et al., 2006), which is the topic of the present chapter.
Software quality is defined as “the totality of features and characteristics of a software product that bear on its ability to satisfy stated or implied needs” (ISO/IEC 9126, 1991). By stated needs we refer to explicit system requirements, mostly functional. Quality features of this type are product correctness, completeness and reliability, and the use of formal methods can help to achieve them. Implied needs are those ones that, although may be incomplete or not specified, if they are not present in the final product then this is considered to have less quality. Some features of this type are efficiency, usability, maintainability, extensibility or cohesion. Product metrics (Fenton, 1996) measure such features in order to control and improve the quality of software products. In this chapter, we are interested in generating tools to measure the quality of software system designs specified using any arbitrary (domain specific) visual notation. We will use the term “model quality” to refer to the quality properties of the software system that a model represents. Note that, as in MDSD code is generated from models, it is natural to lift up the mechanisms to check the quality and correctness of applications from code to models.
However, even if measurement is a key quality control activity in most engineering domains (Basili et al., 1994; Whitmire, 1997), this is sometimes neglected in Software Engineering. A factor that may attract a more widespread use is its support by tools, which is even more critical for automation-based processes such as MDSD. Its use helps detecting defects prior to implementation, saving time and budget. The problem is that adapting, implementing and integrating measurement mechanisms for the plethora of DSVLs and tools is costly and time-consuming, and usually does not take advantage of previous developments. Our goal is to reduce such cost, by making the customisation of measures for any kind of DSVL easy.
Additional techniques to enhance system quality from its very design are redesigns and design patterns. Redesigns are design modifications that do not change the functionality but improve model quality. This concept is similar to the concept of refactoring for code (Fowler, 1999). Design patterns (Gamma et al., 1995) are a catalog of best practices that can be applied in order to solve specific problems in software design. Again, the proliferation of notations and tools can hamper the automated application of redesigns and the use of patterns.