Article Preview
Top1. Introduction
Due to the complexity of modern software systems, it is de rigueur to build a model of the system prior to implementation. The Unified Modeling Language (UML) is a de facto standard for modeling software systems and is well-known for being a general-purpose modeling language (Booch, Jacobson, & Rumbaugh, 1998). Alongside the increasing variety in software projects comes the need for specialization within specific domains. Hence, in spite of numerous advantages of general purpose modeling languages, when the aim is to create a model for a specific domain, restrictions may arise for designers that reduce the speed of modeling (Fuentes-Fernandez & Vallecillo-Moreno, 2004). Software engineers have a special interest in utilizing domain-specific concepts when building their models (Selic, 2007). Models are the primary artifacts in model driven engineering (MDE). As such, the quality assessment of models is an important issue in MDE (Zamani & Butler, 2013). Additionally, the emergence of the MDE paradigm has increased interest in domain specific modeling languages (DSMLs). Since DSMLs are more expressive, solve complexity better, and render modeling simpler, they are becoming more common (Tolvanen, 2006). In this regard, in the general-purpose language of UML, a method is provided for extending this language to different domains, i.e., via the option of defining a “UML profile”. A UML profile consists of stereotypes, tagged values, and constraints. By using this option, one can extend UML to support the concepts of a particular domain (OMG, Unified Modeling Language Specification Version 2.5, 2015).
In a bid to produce quality models, designers apply best practices that are introduced by the experts as patterns. “A pattern is a solution to a problem in a context” (Zamani & Butler, 2013). As a useful set of patterns, Martin Fowler’s Patterns of Enterprise Application Architecture (PofEAA) (Fowler, 2002) is used for modeling enterprise applications. When using patterns for designing a large software system, a developer is required to have significant experience working with patterns. The problem is that, the beginners and novice designers in this area may make mistakes in selecting the right pattern and in applying the pattern correctly, which will lead to low quality software. Therefore, it will be helpful to establish an approach that will make the process of designing a system using the relationships between patterns easier. One way of doing so will be to have a DSML for the patterns that assist the designer through the process of modeling the system, which is a DSML that supports selected patterns and the relationships between these patterns.
In this work, we considered PofEAA patterns as our domain concepts. We organize our defined DSML as a UML 2.0 Profile (OMG, Unified Modeling Language Specification Version 2.5, 2015). A UML 2.0 profile provides language constructs such as stereotypes and tagged values, which allow for attaching domain specific semantic, thus enabling us to customize UML for our domain and apply domain specific modeling (DSM). However, we discovered that simply defining a UML profile was not adequate when using patterns as concepts, e.g., we were unable to create a class, attribute, or relationship with constraints or tagged values, and could not express other behaviors with object constraint language (OCL) or tagged values. Similarly, in the case of using patterns of PofEAA as concepts of our domain, we need to define the behavior of these pattern in order to use them correctly. Due to the fact that Rational Software Architecture (RSA)1 has included GoF design patterns, and designers can use them for their modeling, hence, we try to add PofEAA patterns to this tool as well, to help designers in using them correctly. We have implemented PofEAA patterns in RSA; also we have defined a UML profile in RSA that presents PofEAA patterns concepts. Profile can be used by designers while modeling the system; it is also used for implementing patterns completely. As our case study, we show that how the proposed tool can be used in designing an online shopping and hotel management system.
To summarize, the contribution of this paper is as follows:
- •
A UML profile which is a DSML to present concepts of the Patterns of Enterprise Application Architecture (PofEAA).
- •
A plugin with pattern templates that demonstrates pattern’s structure and behavior and helps designer to design enterprise systems with PofEAA.