Application Development through Reuse:
the Ithaca Tools Environment*
M.G. Fugini, O. Nierstrasz, B. Pernici?
This paper presents the architecture and basic features of the Ithaca Application Development Environment based on a Software Information System for enhancing reusability of both software components and artifacts about development of these components. Object-oriented techniques are used in the Environment at all levels of the development of an application: requirement specification, scripting, implementation through class refinement and tailoring. In the Environment, it is tracked how the various products of the development phases were produced by providing tools for the Application Engineer who is responsible for abstracting application skeletons and development information and storing these as Application Frames into a Software Information Base. In particular, the paper describes the Requirement Collection And Specification Tool (RE- CAST) and the Visual Scripting Tool (Vista) of the Ithaca Development Environment.
*.In ACM SIGOIS Bulletin., Vol. 13, No. 2, Aug. 1992, pp. 38-47.
?.Authors? addresses: Dr. Fugini, Politecnico di Milano, piazza Leonardo da Vinci 32, I-20133 Milano MI, Italy; e-mail: email@example.com. Dr. Nierstrasz, Centre Universitaire d?Informatique ? Universit? de Gen?ve, rue du Lac 12, CH-1207 Gen?ve, Switzerland; e-mail: firstname.lastname@example.org. Prof. Pernici, Universit? di Udine, via Zanon 6, I-33100 Udine UD, Italy; e-mail: email@example.com
The use of Software Information Systems  is considered an effective way of achieving some basic goals in software development today. These goals are centered around the idea of reusing software components developed in various projects in order to streamline the development of ?similar? applications in selected application domains. The approach based on component reuse needs support both for the process of developing specific applications and for the activity of developing generic, reusable software. In particular, concepts, methods and tools are needed (1) to organize and manage software and information about its development; (2) to identify and reuse useful software components developed in various projects; (3) to manage long-term evolution of reusable software components.
This paper describes the approach to application development
considered in the Ithaca (Intelligent Tools for Highly Advanced
Commercial Applications) Esprit II Project, started in
January 1989 and extending over 5 years ?. In Ithaca it is
considered that the traditional software engineering methods
that have worked reasonably well in the past for stable, longlived
applications fail to yield good results today because of
two central assumptions that no longer hold : (1) that the
application requirements be stable and well-defined, and (2)
that the application run in a closed and finite universe. Increasingly,
applications are open systems, which can be ?open? in
each of the three following ways :
1. Platform: the hardware and software platform continuously expands.
2. Interoperability: open applications must be prepared to exchange information and otherwise interact with systems that may not yet exist.
?.Esprit II is the second phase of the European Strategic Programme for Research in Information Technologies of the European Communities.
3. Evolving requirements: the application must be flexible enough to adapt to continuously changing requirements.
Moreover, a basic assumption of Ithaca is that applications are not unique, but rather share many common functionalities which can be factored out into reusable elements . On this assumption, application generators and fourth generation languages have based their success, however limited. In Ithaca, a global view of the issues related to software development is considered using a Software Information System approach: the Ithaca Application Development Environment (ADE) is being developed as an integrated environment where a software base contains reusable components and development information, and where a set of development tools supports the application developer in finding and combining components to produce a specific application. Reusability considerations of the approach suggest that object-oriented techniques, which are wellsuited to factoring out common functionalities into often highly reusable object classes, offer a more general way of allowing many applications in similar domains to share a large part of their code .
Reuse of object classes is likely to entail overhead, and application development based on reusable components may turn out not to be a straightforward process of moving along sequences of development steps, but rather may require cycling along various phases, and in particular may require effort in identifying and adapting components. Unfortunately, it is not possible to just sit down and write libraries of instantly reusable classes : the design of reusable classes is necessarily an iterative, evolutionary process .
For these reasons, Ithaca proposes a model of software development in which application engineers are responsible for developing generic, reusable software for specific application domains, and application developers are their clients, reusing not just object classes but also pre-designed Application