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
generate metamodels.
2004-10-18