From what has been explained up until now it is clear that when building an application framework we are generalizing across a set of systems that usually belong to a particular domain. We aim at offering the tools and the conceptual infrastructure needed to implement all those systems. A framework is not just about reuse of code but also about conceptual reuse. A well designed framework should present a precise model of computation and conceptual basis.
This ``conceptual framework'' is in fact a metamodel that can be instantiated as a model to implement a desired application or domain service.
In [Meequel et al., 1997] the authors explain a method for designing a framework. The method is based on a domain analysis. Although they recognize that the framework development process is iterative by nature, their method proposes the following phases for framework design:
We believe in an application-driven approach as that presented by
[Johnson, 1993] in which the framework
development process is iterative and where the user feedback is necessary
on a regular basis. Such a process model has proven useful in our
case. Not only is not necessary to have a previous domain analysis
model before starting the framework design, it is the framework design
that ends up generating an appropriate domain metamodel. Therefore,
and already commented in section 1.2.4, frameworks