Contemporary approaches to raising the abstraction level in software design—namely, model-driven engineering, product lines, and metaprogramming—are addressed in this paper. The author elaborates on the possibility of using an object-oriented (OO) approach to creating product lines that enables a recursive multilevel paradigm for representing designs of applications, metaprograms generating such application designs, and meta-metaprograms generating such metagenerators.
The lessons learned in all of the approaches repeat the theme of metamodeling, the explicit study of which can help generations of future designers to fulfill a promise of automated implementation from specifications. The principles of uniformity and of succinctly representing the emerging unified vision in an elegant manner are clearly and simply stated. This emerging vision can be summarized as follows: OO is good for both defining the structure of models and for defining methods as transformations on these models.
This paper is highly recommended to reflective practitioners, teachers, and students of software engineering who are interested in the future of software development.