Deriving and Manipulating Module Interfaces

Abstract

A formal method for systematically integrating general-purpose software modules into efficient systems is presented. The integration is accomplished through adjustment of abstract interfaces and transformation of the underlying data representations. The method provides the software designer with the ability to delay or revise design decisions in cases where it is difficult to reach an a priori agreement on interfaces and/or data representations. To demonstrate the method, the development of a text buffer for a simple interactive text editor is given. For each basic operation on the text buffer, a natural and efficient choice of data representation is made. This organizes the operations into several components, with each component containing those operations using the same data representation. The components are then combined using formal program-manipulation methods to obtain an efficient composite representation that supports all of the operations. This approach provides meaningful support for later adaptation. Should a new editing operation be added at a later time, the initial components can be reused in another combining process, thereby obtaining a new composite representation that works for all of the operations including the new one. There are also ramifications for the application of formal methods to larger-scale systems, as this method can be applied to the manipulation of the interfaces between modules in larger software systems.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
May 01, 1992
Accession Number
ADA253869

Entities

People

  • Robert Nord

Organizations

  • Carnegie Mellon University

Tags

Communities of Interest

  • C4I
  • Ground and Sea Platforms

DTIC Thesaurus Topics

  • Abstracts
  • Agreements
  • Algorithms
  • Automation
  • Computations
  • Computer Programming
  • Computer Science
  • Computers
  • Control Systems
  • Databases
  • High Level Languages
  • Language
  • Object-Oriented Database Management Systems
  • Operating Systems
  • Programming Languages
  • Software Development
  • Theses

Fields of Study

  • Computer science
  • Engineering

Readers

  • Database Systems and Applications
  • Systems Analysis and Design