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

The Software Engineer's Guide to Hyperspace


A hyperspace is a concern space whose structure supports our approach to multi-dimensional separation of concerns:

  • Concerns are grouped into dimensions, giving hyperspaces an explicitly multi-dimensional structure. A dimension of concern is a set of concerns that are disjoint (i.e., they have no units in common). This disjointness property is important, and is standard in multi-dimensional spaces: a point in the space (a unit) projects onto exactly one coordinate (concern) in each dimension. It implies that concerns in the same dimension cannot overlap, though concerns in different dimensions can and do.
  • A hyperspace also contains a set of hypermodules, which are modules based on concerns. Each hypermodule specifies a set of hyperslices--collections of units specified in terms of the concerns in the hyperspace--and a composition rule that specifies how the hyperslices are to be integrated. Hyperslices are generalizations of subjects from subject-oriented programming, and hyperslice composition is derived from subject composition.
  • Hypermodules are building blocks, and are not, in general, complete, executable programs. A system is a hypermodule that is complete, and can therefore run independently.

A hyperspace can contain many hypermodules realizing different modularizations of the same units. Systems can be composed in many ways from these hypermodules.

Hyperspaces have many advantages; some are mentioned briefly here. The explicit identification of concerns and dimensions, and the alignment of units according to concerns, are significant aids to comprehensibility. Hyperspaces are intended to include artifacts from all phases of the software lifecycle (e.g., requirements, design, code), and the alignment of units promotes traceability. Changes that add functionality can always be accomplished by adding new units, and either including them within existing hypermodules or adding new hypermodules. The effects of other kinds of changes might not be as localized, but the structure of hypermodules and their composition rules significantly limits the impact of all changes.

Further details and illustrations of hyperspaces are available in the list of papers.

To find out where we will be demonstrating HyperJTM, which supports multi-dimensional separation of concerns for JavaTM, see our schedule.

Still have questions? Click here to send us mail.

Return to hyperspace home page