withDevelopers
withDevelopers withDevelopers withDevelopers

OI Design Methodologies

We are developing a design methodology that we call Open Implementation Analysis and Design (tm), or OIA/D (tm) for short. OIA/D provides a set of techniques for determining the requirements for an Open Implementation, and some constraints on the design.


We have done our best to provide useful file formats. For greatest ease and document fidelity, we recommend using a PDF viewer .

A white paper describing OIA/D is available in these formats:

Analysis Components

OIA/D has 4 analysis components for capturing design requirements and design constraints for an OI software module.
Black Box Abstraction
Determine the abstract interface to the module, independent of implementation issues.

Inherent Implementation Structure
Identify the implementation strategies used by every implementation of the module.

Implementation Strategy Dilemmas
Identify the implementation strategies that vary from implementation to implementation, and when each of these strategies is a good idea.

Decision Control
Determine how clients can tell the module how to select the correct choice for each Implementation Strategy Dilemma.

Design

A paper describing OI design guidelines is available in these formats:

We recommend using a PDF viewer, such as Adobe Acroread

The analysis components are used to capture design constraints and design requirements. Once this information is available, the OI can be designed. We don't have a concrete methodology for designing an OI yet, but we have developed some implementation techniques, like MOPs , and we are investigating how existing object-oriented methodologies relate to OIA/D.

An Example

We applied OIA/D to file buffer cache management in operating systems.
  • The Black Box Abstraction is the Open File abstraction seen in all operating systems. The Open File abstraction implements an open, close, read, write, and seek interface.
  • The Inherent Implementation Structure is to store the file data and metadata on a disk and to employ a main memory cache of the disk blocks in order to mask the slowness of the disk.
  • An Implementation Strategy Dilemma is how to allocate and manage the slots of the main memory cache so that clients of the file system get good performance.
  • For Decision Control, some clients can easily tell the operating system how they will access a file. Other clients prefer to be given a pool of cache slots and to manage it themselves.

Based on this analysis, we designed a metaobject protocol for controlling file buffer caches. The metaobject protocol is described in the following paper.

Chris Maeda. A Metaobject Protocol for Controlling File Buffer Caches. Proceedings of ISOTAS '96. To appear.

Return to the Open Implementation Site Guide
Return to the Open Implementation Home Page