[ IBM Research ]
[ Find ] [ News ] [ Products ] [ Support ] [ Business solutions ] [ Inside IBM ] [ Interest groups ]

Morphogenic Software

Welcome to the home page of the Software by Composition group at the IBM T.J. Watson Research Center!

Software needs to undergo changes all the time, for many reasons. Typical causes for change include requests for added, changed, and removed functionality, and the deployment of previously developed software in new and unanticipated contexts. There are many reasons why making changes is difficult. To name just a few of them:

Modifications may not ``fit'' with an application's design because they were not anticipated by the developers.
The extension mechanisms offered by object-oriented languages often require up-front knowledge of the extensions that will be made in the future, and allowing multiple extensions in different ``dimensions'' poses well-known problems.
Changing unfamiliar software is hard, because code is hard to understand, and tends to get harder to understand as more changes are made.
Our group is interested in techniques and methodologies for creating morphogenic software that is malleable for life: adaptable to different contexts with acceptable effort, repeatedly, as new, unanticipated contexts arise. This includes techniques for multi-dimensional separation of concerns, as well as tools and analyses for refactoring and maintenance of existing software.

Research Themes

The following is a summary of current and recent activities by group members.
Multi-Dimensional Separation of Concerns. Many different kinds of concerns occur in software systems, and it is important to be able to keep them separate. Traditional languages and modularization mechanisms suffer from a limitation we call the tyranny of the dominant decomposition: the program can be modularized in only one way at a time, and the many kinds of concerns that do not align with that modularization end up scattered across many modules and tangled with one another. Multi-dimensional separation of concerns is aimed at breaking the tyranny, allowing separation of all kinds of concerns of importance simultaneously, including overlapping, interacting and crosscutting concerns. Our approach to achieving this is called Hyperspaces, and we have an implementation for Java(tm) called Hyper/J(tm).
XML Transformation: Matching and Reconciliation. Interacting applications must exchange or share data, often XML (eXtensible Markup Language) files, call one another's interfaces, or exchange messages. Especially when these requirements are not anticipated, such applications are developed with different views of the data, interfaces, and messages involved. Our research on matching and reconciliation is aimed at providing support for matching up corresponding elements of different data definitions or interfaces and reconciling differences between them, allowing them to be shared, exchanged, or integrated. The XML Transformation project provides semi-automatic support for matching and reconciliation of XML Schemas. This enables integration and translation between instances of multiple Schemas with shared content.
Extraction of Library-Based Object-Oriented Applications. The goal of the recently concluded Jax project was to reduce the size of Java applications using whole-program analysis and size-reducing program transformations. We experimented with various algorithms for detecting unreached methods, and with transformations such as name compression and class merging. We successfully applied Jax to real-life Java applications of up to 2300 classes, and measured size reductions of up to 90% (on average about 50%), where the larger size reductions generally occur for large, library-based applications. Recent work has focused on the design issues that arise when extracting software components other than traditional applications (e.g., extensible class libraries), and on scalable call graph construction algorithms. Plans for future work include the application of whole-program analysis and whole-program transformations to the areas of software maintenance and refactoring.

Group Members

Michael Burke
Lee Carver
Matthew Kaplan
Vincent Kruskal
Harold Ossher (manager)
Peri Tarr
Frank Tip