Changing module interfaces
Date
1989
Authors
Tilley, Scott R.
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
A common problem in large, evolving software systems is the difficulty of changing the interfaces of low level components. The traditional (re)compilation rule in strongly typed, separately compiled programming languages is the recompilation of all modules that use resources provided by the changed interface. In many cases this conservative rule causes unnecessary recompilations thus was ting time and resources bringing the system back up to a consistent state.
The global interface analysis algorithms, as proposed by I load, Kennedy and Muiler [HoKM 87], analyze, predict, and limit the effects of a change to a basic interface in a software system. The CMI (Changing Module Interfaces) implementation of these algorithms is targeted to the programming languages Ada, Modula-2, and CM I. The implementation is based on an attributed graph model of the software system, and solves the persistent problems of interactive change consequence analysis and minimal interface recompilation. CMI is a module interconnection language developed to capture essential interface relationships. It features a strict, explicit, and concise mechanism to describe the inter-object dependencies and the flow of resources through the network.
CMI is intended to be an integral part of the Rigi software development environment for programming-in-the-large, but can also be used as a stand -alone tool for both software development and maintenance. It is written in portable, object-oriented C and was developed on an ll3M 3090 running VM /CMS, but may be easily re-hosted on a variety on operating systems using various compilers and support tools.