[ IBM Research ]Skip to main content
[ Find ] [ News ] [ Products ] [ Support ] [ Business solutions ] [ Inside IBM ] [ Interest groups ]

Hyper/JTM: Multi-Dimensional Separation of Concerns for JavaTM

See our demonstrations and poster at OOPSLA '01!
(The demos are not in the final prgoram, so follow the above link for details)

Hyper/J supports multi-dimensional separation of concerns for JavaTM. It provides the ability to identify concerns, specify modules in terms of those concerns, and synthesize systems and components by integrating those modules. It operates on standard Java class files -- without need of source -- and produces new class files to be used for execution. A control file specifies how to map Java members to concerns, which concerns are to be composed, and composition relationships giving details of how the composition is to be accomplished.

Hyper/J promotes a number of activities:

  • Flexible separation and modularization of concerns: Java software can be written with or without multi-dimensional separation of concerns, and with or without Hyper/J. Hyper/J permits the identification, encapsulation, and manipulation of concerns in standard Java software, either during initial system development or in retrospect, as the need arises during the course of evolution. The tool set works with any Java class files.
  • Composition: Given a set of modules encapsulating different kinds of concerns, it is possible to synthesize and integrate some or all of these concerns into systems and system components with the compositor tool. The compositor provides the ability to perform non-invasive mix-and-match and plug-and-play, with component adaptation when needed. This addresses a number of well-known problems in software development; e.g.,
    • Creation of extensions to, and configurations of, software, without modifying the original source. Multi-dimensional separation of concerns with composition also permits the encapsulation of deltas for multiple platforms, versions, features, etc.
    • Customization and integration of systems and reusable components.
    • Facilitate multi-team system development, where each person and team can use shared, related, or independent domain models, as appropriate for their particular tasks.
    • Permit decentralized development of classes, which eliminates the concurrency conflicts and centralization bottlenecks resulting from pure class-based development.
    • Maintenance of correspondence and traceability between all software artifacts--e.g., requirements, design, and code. This enables round-trip software engineering.
  • Evolution: Different kinds of modularizations are better or worse at limiting the impact of certain kinds of changes. For example, object concerns greatly facilitate changes to the representation of data, but they complicate changes to features. Hyper/J facilitates the separation and use of the kind of concern and modularization that best limits the impact of any given change. This permits changes to be made additively, using the compositor tool, while still producing a standard Java program.
  • Non-invasive, on-demand remodularization: Evolutionary changes may arise that require the introduction of a new type of modularization. Hyper/J facilitates on-demand remodularization; it permits the identification, encapsulation, and modularization of concerns from existing ones.

Hyper/J is available, free of charge, on IBM's alphaWorks. Sign the guestbook if you would like to be notified when new releases become available.

In addition, we have a prototype version of Hyper/J that provides visual, WYSIWYG support for building and editing the composition relaitonships. This allows trial-and-error synthesis and integration of concerns into systems or components. The user starts by choosing a set of concerns and an overall default composition rule, which is applied to the concerns to produce a composed system or component. Users can interact with the composed system or component, tailoring the composition using a variety of commands provided through menus and buttons. All changes are recorded as composition rules. The rules can be viewed and turned on or off individually. Traditional undo/redo is also supported. If the input concerns change, the rules can be reapplied, to yield a result that, in many cases, will be either correct or close to what is desired. Any rules that are no longer valid will turn themselves off. The user can interact further, improving the result in the light of the new inputs.

We will be demonstrating Hyper/J. Check our schedule of upcoming events to find out where you can see it, or send us mail if you would like to arrange to talk to us.

Want more information? Click here to send us mail.

Return to hyperspace home page