program       registration       lodging       call for contributions       organization       [aosd home]

overview       technical papers       practitioner reports       workshops       tutorials       demos       exhibits      
Go back to Tutorials Home

T3: Hyper/J: Multi-Dimensional Separation of Concerns for Java

Peri Tarr, IBM T. J. Watson Research Center
  - Harold Ossher, IBM T. J. Watson Research Center
  - Stanley M. Sutton, Jr., NFA

Date: Monday, March 17, afternoon (half day)

Level: Introductory

Attendees should have some experience with object-oriented development, but no prior exposure to AOSD is assumed.


Multi-dimensional separation of concerns (MDSOC) is an AOSD approach that promotes flexible, powerful separation and integration of software based on all kinds of concerns. MDSOC allows developers to encapsulate overlapping, interacting and crosscutting concerns, including features, aspects, variants, roles, business rules, components, frameworks, etc. MDSOC further supports developers in specifying relationships among concerns to allow concerns to be systematically separated, combined, and traced.

MDSOC treats all concerns as first-class and co-equal, including components and aspects, allowing them to be encapsulated and composed at will. This is in contrast to most aspect-oriented approaches, which enable aspects to be composed with components but do not support composition of components (or aspects) with one another. Some other key benefits of MDSOC include the ability to identify and modularize concerns at any stage of the software lifecycle (prospectively and retrospectively); the ability to define, manipulate, and integrate different decompositions of the same software simultaneously; the ability to customize, adapt, reuse, and evolve software non-invasively; and the ability to reconcile different class hierarchies modeling overlapping domains from different perspectives. MDSOC can therefore reduce complexity, improve reusability, and simplify evolution and integration.

This tutorial describes how to accomplish MDSOC with Hyper/J™, a prototype tool available for free download, in the context of standard Java™ development. It will demonstrate how Hyper/J addresses some real, pervasive problems in participants' own Java development. Example problems include adding a feature; adding instrumentation; creating and evolving product lines; separating concerns in retrospect (i.e., extracting concerns from existing software); supporting team development, including use of different domain models by different teams; separating, integrating, retrofitting and reusing design patterns; and facilitating unplanned integration. Hyper/J works on Java class files, so it can be used on any off-the-shelf Java software, even when source code is not available. It requires no special compilers, development tools, or processes.


Peri Tarr is a researcher at the IBM Thomas J. Watson Research Center. She co-invented hyperspaces, leads the Hyper/J tool development effort, and has been exploring issues in MDSOC throughout the software lifecycle. She has presented or co-presented a number of tutorials on subject-oriented programming and Hyper/J, and has co-organized workshops on multi-dimensional separation of concerns and AOSD at several conferences. She has been on the program and conference committees for ICSE and OOPSLA, is on the ICSE '03 program committee, is the OOPSLA '03 tutorial chair, and was a program committee member for AOSD '02.

Harold Ossher is a researcher at the IBM Thomas J. Watson Research Center. He co-invented subject-oriented programming and hyperspaces, and leads a group that conducts research and technology transfer in these areas. He has presented or co-presented tutorials on subject-oriented programming and Hyper/J, and has co-organized workshops on subjectivity in object-oriented systems and on MDSOC at several conferences. He was the General Chair of AOSD '02.

Stanley Sutton invented the Cosmos approach to defining and representing multi-dimensional concern spaces, has been performing research on MDSOC in middleware, and is an active Hyper/J user. He presented this tutorial at Net.Object Days 2001 (an invited presentation).


For additional information, clarifications, questions, or special requirements, please contact the AOSD 2003 Tutorial Chair: Eric Eide (

 Send comments to: