We elaborate models if complete modeling is not possible or if it does not meet all of the nonfunctional requirements of a software development process. In addition, we may elaborate a generated model by reorganizing it.
Protected model areas enable us to regenerate the model at will and so work iteratively. Elaborated models, legacy code, and libraries can be fully integrated into MDA either by generating forward to a (possibly wrapped) API, or by harvesting the existing code and storing it as a MOF metamodel. As always, it's a matter of trade-offs.
Elaboration assumes that the models are incomplete or will require tuning. An alternative approach, which we take up in Chapter 9 and Chapter 10, is to assume that the models are complete.