Extracting formal domain models from exsisting code for generative reuse

The existence of a domain model that formally describes the meaning of a piece of software can be helpful for re-use. We illustrate an approach, where by reengineering a formal domain model out of an existing system, one can generalize the existing system to an application generator: we map a domain model for program representations into the front end of a compiler, using the Genii system, and use this in Genoa, an application generator for language tools. This approach shows promise in other domains, as well.