Application Development through Reuse ? M.G. Fugini, O. Nierstrasz, B. Pernici 2
Frames that guide the developer towards standard ways of constructing applications.
Initially, class libraries and Application Frames may be developed by re-engineering existing applications in an objectoriented way (that is, so as to factor out common functionalities). As application developers encounter more demanding requirements, the software base must evolve to improve its generality and reusability. Application engineers and application developers thus cooperate in a producer/consumer relationship .
To support such an object-oriented software life-cycle, tools for storing and managing software information are essential in addition to tools to support the development of classes and applications. Ithaca is a 5-year, 100 person-year/year Esprit II Project to build an environment supporting the development of object-oriented applications . The Ithaca environment includes an object-oriented language (CooL ) closely integrated with an object-oriented database (NooDLE ), in addition to tools to support application engineers and applications developers. A central component in the environment is the Software Information Base (SIB)  which stores and manages structured ?descriptions? of software (i.e., interface descriptions of object classes, Application Frames, documentation, etc.). The other tools interact primarily by exchanging and manipulating information stored in the SIB. They include  a Selection Tool for browsing and querying the SIB; MaX, a monitoring debugger for CooL classes; RECAST, a requirements collection and specification tool; Vista, a visual scripting tool.
In Ithaca, it is considered that application engineers have stocked the SIB with a library of classes and Application Frames clustered byapplication domains. A sample domain is, for example, the ?Public Administration? domain  that includes classes belonging to Information Systems for office applications, such as the Office, Document, Form, Letter, Employee classes. Public Administration is one of the ?demonstrator? domains for Ithaca  which has been modeled in a set of classes being used as a common work platform by the various tools.
The application developer is expected to proceed in the following way to produce a specific application:
1. Select an Application Frame: using only a rough sketch of the application requirements, the developer searches and browses the SIB to find an Application Frame corresponding to the application domain and requirements of the application being designed.
2. Select useful classes: the Application Frame drives requirement collection and specification according to preexisting, generic specifications and designs, thus guiding the developer in the selection of reusable classes.
3. Tailor classes: the selected classes are incrementally modified using design suggestions given by the specification classes; tailoring occurs by supplying parameters or by modifying class behavior through inheritance.
4. Script application: link the selected design classes together by means of a ?script? that specifies how the ob-
jects will cooperate to implement the required application.
5. Monitor behavior and continuously develop: test and validate; as requirements change, adapt the application.
As the understanding of the application domain evolves, the application engineer upgrades the contents of the SIB with new reusable components and development information.
The purpose of this paper is to illustrate the overall architecture of the Ithaca ADE. The organization of the paper is as follows. In ?2, the Ithaca approach to application development is described and the ADE is introduced. In ?3, the approach to requirements reuse in Ithaca is presented, and RECAST, the RE- quirement Collection And Specification Tool supporting the approach is described. In ?4, the Ithaca activity of designing through scripting, and the associated Visual Scripting Tool, Vista are illustrated. Finally, in ?5, concluding observations and further research in Ithaca are given.
2 Ithaca Scenario
The goal of the Ithaca Application Development Environment is to reduce the long-term costs of application development and maintenance for standard applications in selected application domains .
By ?standard? applications we mean classes of similar applications that share concepts, domain knowledge, functionality and software components. Standard applications are classified in Ithaca according to application domains: the key assumption is that selected application domains can be adequately characterized in order that an individual application can be constructed largely from standard object-oriented software components belonging to that domain. Therefore, achieving reusability of not just software but also of development experience is an essential activity of this approach.
The key benefit expected of this approach is that applications developed using the Ithaca environment be flexible and open-ended: it should be possible both to develop applications quickly and flexibly and to reconfigure applications to adapt to evolving requirements.
This, in turn, implies the need for a different kind of software life-cycle in which the long-term development and evolution of reusable software proceeds in parallel with the shortterm development of specific applications.
Accordingly, we distinguish between two activities:
? Application engineering, which refers to the activity of preparing the reusable components, that is, developing a set of Application Frames to be stored in the SIB. An Application Frame consists of reusable application domain specific components and of the guidelines driving the reuse of those components;
? Application development, which refers to the development of specific applications by reusing available components through the Ithaca development tools.
Application engineering is the incremental, long-term activity of preparing and maintaining Application Frames, since reusable software can only be developed on the basis of experience gained from the development of specific applications. The