Metaphor Project Approach

Our Approach: The Metaphor Project is a study of real-time software metamorphosis. We are interested in ways that software changes form and meaning over time. Our focus is on the transformation from requirements analysis (problem space) to design (solutions space). Composed from primitive and reusable software components, these solutions are instantiations of architectural templates. We are working on analytical techniques to partition software solutions into reusable components that minimize the complexity of change. We are also studying analytical ways to map application requirements to reusable software solutions.

Motivation for Our Research A software solution is reusable if its design (blue-print for building the software) or if the implemented software components are useful in applications other than that for which they were originally constructed. The solution (or parts of the solution) must be easily modified to fit into the new application. Complicated or extensive changes to translate an existing solution into the desired new solution are expensive and probably not desirable.

Ideally, the functionality is partitioned in a way that promotes reuse and simplifies changes to the solution. The question of how much and which functionality should be contained in each component is important to the changeability of the solution.

Though our study targets hard real-time applications such as aircraft control and air traffic control, we are also conducting research that involves multimedia systems with soft real-time performance requirements. In the I/O centric world of multimedia, quality of service is an important theme. We are interested in how changes in application requirements result in changes to the quality of service achievable by reusable system solutions. The goal is to design reusable solutions whose quality of service can be easily adjusted.

Metaphor Results to Date: Our research results include a design for change process that includes decomposing solutions to promote reusability, a mathematical representation of dependencies in the decomposed parts, and an algorithm for localizing dependencies. The process can be applied to various levels of abstraction from systems and sub-systems (high-level design components) to packages and modules (low-level design components). We are currently targeting data-operational dependencies and changes to control flow.

We have also developed a generic data model for organizing information about changes to software systems. Some aspects of the model can be tailored to suit the needs of a particular product-line, project group, or organization for which a history of change is being recorded. Our long-term goal is to automatically feed this information into our process of designing for change.

We have developed the first prototypes of our CARAT and ACT tools.

CARAT: is a tool for collecting/organizing/searching information about change to software solutions or systems in which software solutions are embedded. Future versions of CARAT will assist the designer in mapping requirements to existing software solutions.

ACT: is a tool to provide the designer recommendations on how to partition the functionality in a solution to localize changes. The tool automates those parts of our design for change process that can be modeled mathematically and algorithmically analyzed.

Please stay tuned for on-line versions of our prototype tools and tutorials for using them!


Explanation for the Name Metaphor: So how does the term metaphor apply to the study of software metamorphosis?

A metaphor is literally a "figure of speech in which a word or phrase denoting one kind of object or idea is used in place of another to suggest a likeness or analogy between them."

You may recall that on our Metaphor Objectives page we said that we were interested in how software engineers think about what they do. As knowledge engineers, we are also studying ways to represent information that software engineers use to develop real-time software applications. For instance, we are starting to develop a way to represent analytical transformations between application requirements (problem statements) and software solutions (solution statements) so that the software engineer can more easily reuse and tune existing solutions. Likewise, we are studying ways to represent metrics that define quality of service.

Previous Research: Our previous research resulted in the development of a real-time operating environment for reconfigurable sensor-based applications (Chimera), an iconically programmable human-machine interface for developing control systems (Onika), and computer-based approaches for managing task assembly.

The Chimera real-time operating system provides most of the features of a commercial real-time operating system such as multitasking, interprocess communication and synchronization, priority-based scheduling, and error handling. In addition, Chimera provides multiprocessor real-time solutions with features such as the following.

1. Support for periodic and aperiodic processing.
2. Deadline-based static and dynamic scheduling.
3. Automatic creation and initialization of tasks on multiple real-time processors.
4. Interprocessor communication and synchronization.
5. Dynamically allocatable and globally shared memory.
6. Remote semaphores and procedure calls.

Most importantly, the Chimera infrastructure guides the software engineer in the creation of dynamically reconfigurable and reusable control applications. Software engineers following the Chimera method create software modules that have a standard form and that communicate via prescribed protocols. They design software systems which have a port-based architecture. Software modules can be interchanged so long as input/output requirements of the system are met.

The Chimera method supports a standard directory structure for organizing and naming application modules, library routines, and lower-level (device driver) software. Development on a Unix workstation is integrated with the target operating environment.

Questions regarding Chimera should be directed to Dr. David B. Stewart.

Onika is a software design environment that enables the software engineer to associate icons with existing software modules. They can sequence these icons to create real-time jobs. Onika verifies that the jobs are complete and syntactically correct. Onika communicates with the Chimera operating environment to enable these jobs to executed and controlled from within Onika.

This integration with a Unix host environment enabled a connection to be made to the Internet. Application engineers at Sandia National Laboratories were able to create control applications using software modules residing at Carnegie Mellon University (CMU) and to execute these applications remotely on CMU target processors. The concept of virtual laboratories became a reality. We are now involved in a new study of virtual software design environments.


For further information about this project, please contact Carol Hoover at clh@cs.cmu.edu .

Last edit on 13 April 1998.