The generator and the modeling language thus form a clear coupled pair, and it is
good to keep them together. This guarantees that when a user receives an updated
version of the modeling language, the latest version of the generator accompanies it??”
and vice versa, although that direction is less common.
While sometimes one may be updated without the other changing, there is no sense
in allowing the generator and modeling language to lead separate lives. The vast
majority of random combinations of generator versions with modeling language
versions will simply fail to work. Separating them would be like separating a lex
scanner from its yacc parser. While there is some degree of freedom, they are far from
orthogonal.
The coupling of the generator with the domain framework is also notable, and once
again it is mostly the generator that must change in response to changes in the
framework. In this case, however, there may be several different parallel versions of
the domain framework. The same generator produces code that runs with all of these
parallel framework versions, each of which provides the same services. The different
frameworks are used to abstract different underlying platforms, libraries, or
components, hiding the differences behind a consistent interface.
An overview of the directions of information and change propagation is shown in
Fig.
Pages:
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574