1.1 The Basic Idea of the Watch Example
Why develop a DSM environment for modeling watches instead of
adopting some pre-existing general-purpose modeling language and a
‘standard’ modeling tool? While it would be possible to apply such
‘standard’ technology here, there is much more to be gained by using
DSM. Let us consider the following reported benefits of the use of DSM in
software development:
1) |
Productivity increases by as much as a factor of 10. Traditional
software development has required several error-prone mappings from one set of
concepts to another. First the domain concepts must be mapped to the design
concepts and then further mapped to the programming language concepts. This is
equivalent to solving the same problem over and over again. With DSM, the
problem is solved only once on the best possible level of abstraction by working
with pure domain concepts. After that, there is no need for mapping as the final
products are automatically generated from these models. Studies have shown that
this kind of approach is 5–10 times faster than the usual current
practices. |
2) |
Better flexibility and response to change. Focusing on design rather than
code results in a faster response to requests for changes. It is easier to make
the changes at the domain concept level and then let the tool generate code for
multiple platforms and product variants from a single set of
models. |
3) |
Domain expertise shared with the whole development team. The usual
problem within development teams is the lack of domain knowledge among the
developers. It takes a long time for a new developer to learn enough to become
productive. Even the more advanced developers need to consult with domain
experts frequently. In the approach presented in this tutorial, the expert
defines the domain concepts, rules and mapping to code. Developers then make
models with the concepts guided by the rules, and code is automatically
generated. |
These are very important issues if
your development involves more than one of the following: domain-specific
knowledge, product families (variants of similar products), medium to large
development teams, critical time-to-market factors, and a strong need for
quality.
Thus the basic idea here is to show you, through the watch
example, how you too can reap these benefits by developing a DSM environment for
software development in your own domain. This is done in two stages. To begin
with we will explain how such an environment is developed in the first place.
Secondly we will show how it is used to develop applications for its specific
domain.