The complexity of software development has
been growing up drastically. In this sense, developers
noted in models, an alternative for addressing this
complexity. MDE emerged to address the complexity
of software systems in order to express the concepts
of the problem domain in an effective way (Schmidt,
2006). Thus, in the early stages of development,
models are more abstract than in the final stages
where the models are much closer to implementation.
It means, abstract models are transformed into
concrete ones the aim of producing software.
Studying this process, (Brambilla et Al., 2012)
defined the two fundamental pillars of the MDE
paradigm for creating software automatically: models
and transformations.
Models must be defined according to the rules
of a concrete Modelling Language (ML). This
language defines the syntax and semantic of the
model (Metzger, 2008). The ML syntax is
composed of a concrete and an abstract syntax.
The abstract one defines the language structure
and how the different elements can be
combined, regardless of its representation. The
semantic one, that provides the static and
dynamic part, poses restrictions and establishes
the meaning of the elements of the language
and different ways to combine them. In this
moment, it appears the concept of metamodel.
A metamodel can be defined as a special type
of model that specifies a ML. The metamodel
defines the structure and constraints for a
family of models (Mellor et al., 2004).
Transformations are the mechanisms that
allow to derive models from other existing
ones. A transformation between models
represent a relation between two abstract
syntaxes and it is defined by a set of relations
between the elements of the metamodels (Thiry
& Thirion, 2009). There are two types of
transformations: horizontal (the derived model
and the original one have the same abstraction
level) and verticals (the derived model has a
lower abstraction level than the original one).
A very interesting concept found in the MDE
literature is proposed by Bézivin, (2005) where
“Everything is a model”. In this sense,
transformations themselves, are also considered as
models. Generally, a transformation models program
takes as input a model according to an origin
metamodel and produces as output a model according
to the target metamodel. The transformation program,
should be considered as a model itself.
One of the advantages of MDE is its support for
automation, as the models can be automatically
transformed from the early stages of development to
the final stages. Therefore, MDE allows automating
the tasks involved in a software development, such us
the testing tasks.
2.2 Navigational Development
Techniques (NDT)
NDT is a Model-Driven Engineering-based
methodology that provides formal and complete set
of processes that allow to support for software
lifecycle management. Using NDT, it is possible
cover the phases of the software engineering life
cycle in a structured way, reducing errors and
redundancies (Escalona & Aragón, 2008).
NDT Framework (Figure 1), stablishes six big
groups of processes that allow to develop a complete
software system in all its phases. These groups are:
project management process, software development
process, maintenance process, testing process, quality
process and security process. For the scope of this
paper, the focus will be put in the software
development process group.
Figure 1: NDT Framework.
Software development process group describes all
the processes, activities, artefacts and documents that
makes a software engineer be able to satisfy the
software development lifecycle. In this sense, NDT
methodology, to carry out this objective, stablishes
the following set of processes: feasibility process,
requirements process, system analysis process,
system design process, system building process and
system implementation process.
Feasibility Process. In this process the
feasibility of a particular software project