Introduction to CoCompose:
The refinement of elements continues up to a point where they are
close to implementation language constructs, but still independent of
specific implementation languages. All these refinements require
additional design language constructs. For example, to refine an
association relation to an attribute, it must be possible to express
attributes. With the introduction of new software development
technologies, such as component-based software development
(CBSD), aspect-oriented software development
(AOSD), and design patterns, new
design language constructs are required to represent the concepts they
introduce. Extensions to UML have already been proposed to support
these technologies on design-level, introducing several
additional design language constructs.
The number/complexity of alternative refinements increases with each additional
design language construct. This makes it hard to choose one specific
refinement. Other feasible refinements are eliminated, since only
one refinement is chosen.
CoCompose is a design approach that
allows for defining several possible refinements for each design
element. CoCompose uses a design language that is based upon
conceptual elements. These elements can have several layered
refinements. Refinements are represented as structures of existing
design language constructs, instead of introducing new design language
constructs for each refinement. This way, refinement can be done up to
and including the
implementation level without introducing the implementation language
constructs to the design language.
The general idea behind CoCompose is based upon synthesis-based
design. This approach builds on the idea that
there are many possible ways to design each specific software
element. All these design alternatives create a design space of
possible combinations of these design alternatives. Design
algebra is introduced as a mechanism to eliminate non-feasible design
alternatives and derive the optimal alternative. The CoCompose design
language allows for modelling these design alternatives. An automated
translation process, based upon design algebra, has been developed
to determine which refinements to use and to generate an implementation.
Getting started with CoCompose: |