|
A fundamental
principle in software development that is the driver and trigger of
different software development paradigms is the separation of concerns
principle. This principle states that a given problem involves different
kinds of concerns, which should be identified and separated to cope with
complexity, and to achieve the required engineering quality factors such as
robustness, adaptability, maintainability, and reusability.
The last years the
software engineering community is facing two important approaches that apply
the separation of concerns principle: model-driven software development (MDSD)
and aspect-oriented software development (AOSD).
MDSD
aims to tackle the problem of the loose, informal link between the developed
models and the executable code. Hereby, models do not constitute merely
documentation but are considered as executable specifications. MDSD aims to
utilize domain-specific languages to create models that express application
structure and behavior in a more efficient way. The models are then (semi)automatically
transformed into executable code by model transformations. MDSD defines
models and model transformations as first-class abstractions. There are many
variants of MDSD approaches including OMG MDA™, Microsoft Software
factories, Model Integrating Computing (MIC), Language-Oriented Programming,
Generative Programming, etc. All the variants have common focus on
techniques for explicitly defining models (and metamodels) and
(semi-)automatic transformations to enhance quality factors such as reuse,
portability and interoperability.
AOSD aims to tackle
the problem of concerns that cannot be easily captured in single modules but
tend to crosscut several modules. AOSD provides first class
abstractions for these crosscutting concerns, called aspects and
composition techniques (weaving) for composing aspects in base
modules. Several aspect-oriented approaches have been proposed to specify
aspects at different phases in the software life cycle. At the programming
level it appears that almost for every popular programming language there is
now an aspect-oriented version in which crosscutting concerns are
represented using dedicated language constructs. Aspect-oriented modeling
has proposed several design notations for representing aspects using for
example, UML-based approaches. Early aspects domain has focused on defining
approaches for modeling aspects at level of requirements engineering and
architecture design.
It
appears that MDSD and AOSD seem to be complementary and competing solutions
for the problem of separation and combination of concerns in the area of
software development and maintenance. All these areas are in the scope of
the present workshop. The identification of these areas of competition and
cooperation has currently also raised the interest of researchers and
practitioners in both fields.
_______________________________________________________________________________________________________
This website is maintained by: Bedir Tekinerdogan
|