Content area
There is currently a large research effort underway to develop new techniques and methods for the efficient development of software. However, much of this effort ignores the vast sum of knowledge that has been acquired through our experiences in the field of engineering CAD, especially in the area of VLSI design. Much of what has been learned in this area centers on database support for the design process, and in particular, efficient object-oriented modeling techniques for software design data. It is believed that the data model for software is a central issue surrounding the development of CASE systems.
Recognizing that great gains in software productivity will be realized only when software developed for one application is reused in subsequent applications, it is necessary to consider ways to support reuse through the data model used in these CASE environments. However, the reuse of software components is a complex problem involving methods of capturing, classifying, storing, and retrieving the program design. Unlike CAD, these issues are made additionally complex by the relatively abstract nature of the algorithms and ideas that make up software, as well as the rather specific textual representation of the end product.
Awareness of these reusability issues has led to the development of a new object-oriented semantic data model for use in CASE environments. The proposed semantic data model for software is based on the molecular object model used in CAD, but has been enhanced to capture and support more of the software development cycle. The model differs from the molecular object model in that where the molecular model defines an object as being composed of only an interface and an implementation, this model distinguishes between the interface used for defining an object and an interface that is used to call an object.
The most important consequence of this enhancement is in supporting the reuse of software components. The comprehensive model structure incorporates a classification and retrieval mechanism designed to help map conceptual requirements to existing components in the software archive. This process is further accomplished by providing the designer with specialized operations on the model that assist him in matching an interface calling for service with an interface defined to provide that service.