name suggestions:

  • x modules: actually, what about X-Modules? (ie. “crosscutting modules”, nice mix between XPI and Open Modules)
  • aspectual modules: already (rarely) used
  • aspect(ual) shells
  • aspect(ual) capsules

General Design Principles/Decisions

Following Ungar's grid of Values - Principles - Practices

  • values (what you care about, what you want, what you like)
    • teamwork
    • reuse
    • change
    • simplicity
  • design principles (general rules for achieving values)
    • uniformity/symmetry (S)
    • separate development, separate compilation (TC)
    • loose coupling (RC)
    • modular reasoning (TRC)
    • make it hard to shoot yourself in the foot / avoid surprises (S) [loops, double jps]
    • support for shared libraries (R)
    • coarse-grained quantification (S)
    • abstraction (TRCS)
  • specific practices (specific things to do)
    • modules encompassing classes/packages (cgq, sdsc, mr, lc, ssl)
    • modules can both advise and exhibit (us)
    • join point types (as, mr, lc, sdsc)
    • functional join point types (no structs) (as)
    • explicit declaration of exhibited jpts (as)
    • join point subtypes (a)
    • explicit join points / block jps (a, as)
    • “potentially-exhibit” declarations (shl)
    • compile-time checks for potential loops (as)
    • execution levels / or notion of cflow based on use-relation (as)


  • translate good examples from IIIA, closure jp paper, PPPJ explicit jp paper, open modules paper(s), XPI paper
  • new things we can do that they can't (dynamic analysis aspects – wide scope, etc.)
  • case study:
    • Racer / Profiler
    • AJHotDraw
    • Berkeley DB
    • AspectOptima
    • HealthWatcher
    • iBatis
    • MobileMedia


  • TODO: each class contained in only one module? Java8: different namespaces/loaders, incompatible
  • Study the Java8 proposal (link?)
  • explicit declaration of used modules (sdsc, lc) [removed?!]
  • references: XPIs, Open Modules, ECeasarJ/EScala

Paper outline

modular reasoning / implicit invocation / AOP

  • motivation from IIIA
  • overview of IIIA and limitations/problems
  • overview of X-Modules (model, boxes and arrows)
  • X-Modules in practice: addressing IIIA issues
  • implementation: AspectJ extended / abc, implementation details, separate compilation, checks, etc.
  • case study
  • related work