The process of software development is gradually achieving more rigor. Proficient developers now construct indirectly through the abstraction of models. Models allow a developer to focus on the essential aspects of an application and defer details. Transformations extend the power of models, as the developer can substitute refinement and optimization of models for tedious manipulation of code. This paper catalogs object modeling transformations that we have encountered in our application work.
Michael R. Blaha, William J. Premerlani