|
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
|