Multidimensional Separation of Concerns using HyperJ - PowerPoint PPT Presentation

About This Presentation
Title:

Multidimensional Separation of Concerns using HyperJ

Description:

Using Multidimensional Separation of Concerns to (Re)Shape ... Hyperspace File. hyperspace hyperspaceName. classFileSpecification; classFileSpecification; ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 20
Provided by: neeraj
Category:

less

Transcript and Presenter's Notes

Title: Multidimensional Separation of Concerns using HyperJ


1
Multidimensional Separation of Concerns using
HyperJ
  • by
  • Neeraj Sangal

2
Sources
  • Using Multidimensional Separation of Concerns to
    (Re)Shape Evolving Software by Ossher et al Comm
    ACM October 2001
  • Separating Concerns with Hyper/J An Experience
    Report by Lai et al ICSE 2000 Workshop
  • HyperJ Manual

3
Benefits
  • Easier Evolution Handles unanticipated changes
    better
  • Easier Maintenance - Changes are localized
    because concerns are localized
  • Easier Reuse - Unit of reuse is a concern
  • Easier Integration Concerned only with relevant
    interactions

4
Comparison with AspectJ
  • AspectJ supports augmentation of a single model
    Hyper/J allows you to integrate multiple models
  • Each concern (called Hyperslice) can be
    understood in isolation
  • No distinction between classes and aspects

5
Example Combining Methods
6
Example Class Hierarchy
7
Example Combining Class Hierachies
8
Concerns - Unit of Mapping
  • Package Mapping
  • Class Mapping
  • Interface Mapping
  • Operation Mapping
  • Field Mapping
  • Each unit can be in only one concern

9
Operation mapping
  • operation Pkg.Class.method Feature.concern
  • operation foo Feature.Foo
  • Implicit wild carding
  • Currently methods are represented by name only

10
Field Mapping
  • Pkg.class.var Feature.concern
  • field fooVar Feature.Foo
  • Note the implicit wild carding

11
Hyperspace File
  • hyperspace hyperspaceName
  • classFileSpecification
  • classFileSpecification
  • composable class pkg2. except pkg2.name
  • composable class pkg3. including subclasses
  • uncomposable class java.lang., java.io.

12
Hypermodule File
  • hypermodule hypermoduleName
  • hyperslices
  • dimensionName1.concernName1,
  • relationships
  • mergeByName nonCorrespondingMerge
  • overrideByNam
  • end hypermodule

13
Composition Strategy
  • mergeByName (most common)
  • nonCorrespondingMerge
  • overrideByName (only for methods)

14
Equate
  • equate class dimension1.concern1.class1,
  • dimension2.concern2.class2
  • equate operation Feature.Kernel.process,
  • Feature.Check.check_process,
  • Feature.Eval.eval_process
  • into myProcess

15
Order
  • order action dim2.concern.class.foo
  • before action dim2.concern2.class2.foo
  • Used for methods. If class is specified then
    applies to all methods in the class

16
Merge
  • merge class dim1.concern1.class1,
  • dim2.concern2.class2

17
Bracket
  • bracket .foo
  • from action Appl.Concern.Class.bar
  • before Feature.log.LogClass.invokeBefore(ClassNa
    me),
  • after Feature.log.LogClass.invokeAfter(Operation
    Name)

18
Other relationship directives
  • NoMerge
  • Override
  • Match
  • Summary Function

19
Caching Example
Write a Comment
User Comments (0)
About PowerShow.com