Model-Driven Software Engineering

Một phần của tài liệu A unified view approach to software development automation (Trang 34 - 38)

Historically, model-driven software engineering (MDSE) evolves from a general system engineering method called model-driven engineering (MDE) . MDE in turn was invented on the basis of model-driven architecture (MDA) [55]. Early works, especially by Kent et al. [38] and Schmidt [67], use the term MDE. A recent book by Brambilla et al. [9]

defines MDSE as a more specialised term. In particular, they relate MDSE to a form of MDE and highlights the differences between the latter and two other related terms (MDA and model-driven development (MDD)) that are also commonly used in the literature.

Basically,

MDD is smaller in scope than MDE (the letter ‘D’ means development, while ‘E’ means engineering). MDA, on the other hand, is a particular realisation of MDD by the Object Management Group (OMG)1.

Since our aim in this dissertation is to study the development of software systems, we will limit our focus to just MDSE. Before reviewing the related work, let us clarify the meaning of two basic and related terms: domain and domain model. We adopt the following recent definition of both terms from Brambilla et al. [9].

Definition 2.1. Domain (a.k.a problem domain) is a field of expertise that needs to be examined to solve a problem. Domain model is the conceptual model of the domain.

The work by Kent et al. [38] serves as a good light-weight introductory background for MDSE, not only because of the timing of its publication but because it broadly covers MDE and does so on the basis of an initial draft specification of the MDA by OMG. They define MDA as “...an approach to IT system specification that separates the specification of system functionality from the specification of the implementation of that functionality on a specific technology platform” [55]. This means that the same system model of the functionality can be applied to different implementation platforms. The two types of specification in the above definition are represented by two types of model: platform- independent model (PIM) (the system functionality) and platform-specific model (PSM) (the platform).

MDA defines four types of model transformations between PIM and PSM and suggests that, to ease maintenance, these transformations be automated as much as possible. The first model transformation type is PIM-to-PIM, which is used for design refinement. The second type is PIM-to-PSM, which is for realising PIM in a particular platform. The third type is PSM-to-PSM, which is for platform model refinement. The fourth type is PSM-to-PIM, which is for reverse engineering PIMs from PSMs of an existing platform.

Next, Kent et al. suggest that meta-modelling be used to specify the languages that are used to express models. This is attractive because it effectively reuses MDE to define itself. A meta-model is a model that expresses the shared structure of a set of related models. Among the key points about meta-modelling are: (i) language definitions are just models (called meta-models) with mappings defined between them, (ii) meta-modelling can be used to specify the abstract and concrete syntax, and the semantics of a language and (iii) meta-modelling is achievable with an object-oriented modelling language (e.g.

MOF [58]).

1 http://www.omg.org

Schmidt [67] both reinforces the work by Kent et al. and discusses another important contribution of MDE to software development. He argues that MDE had a potential for addressing the abstraction gap problem, through effective domain modelling. This prob- lem arised from a fact that software languages were primarily concerned with the solution spaces and, thus, were inadequate for effectively expressing the domain concepts. Schmidt next states that MDE technologies should be developed to use domain-specific modelling language (DSML) (a type of domain-specific language (DSL) [39] that is defined through meta-modelling) to construct models and transformation engine and generator to auto- matically produce other software development artefacts from the models. Before Schmidt, Czarnecki [16] also stated that MDA/MDD is a form of generative software development. We will discuss DSL shortly in Section 2.1.2.

More recently, Brambilla et al. [9] has studied MDSE as a method and how it is applied to engineering software. They define MDSE as “...a methodology for applying the advantages of modelling to software engineering activities”. The key concepts that MDSE entails are models and transformations (or “manipulation operations” on models). This definition then serves as the basis for integrating MDSE into four well-known software development processes. MDSE may be integrated into the traditional development processes (such as waterfall, spiral, and the like) by making models the primary artefacts and by using model transformation techniques to automate (at least partially) the activites that are performed within and at the transition between different phases.

MDSE can also be integrated into agile, domain-driven design (DDD) and test-driven development processes. Within the scope of this dissertation, we are interested in the integration capability of MDSE into DDD. We will discuss this capability in Section 2.1.6.

Một phần của tài liệu A unified view approach to software development automation (Trang 34 - 38)

Tải bản đầy đủ (DOCX)

(229 trang)
w