hyper j and concern manipulation environment n.
Skip this Video
Loading SlideShow in 5 Seconds..
Hyper/J and Concern Manipulation Environment PowerPoint Presentation
Download Presentation
Hyper/J and Concern Manipulation Environment

Loading in 2 Seconds...

play fullscreen
1 / 31

Hyper/J and Concern Manipulation Environment - PowerPoint PPT Presentation

  • Uploaded on

Hyper/J and Concern Manipulation Environment. The need for AOSD tools and development environment. AOSD requires a variety of tools Life cycle – support all stages of artifact development Task directed – constraint enforcement, performance, feature addition etc.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

Hyper/J and Concern Manipulation Environment

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
the need for aosd tools and development environment
The need for AOSD tools and development environment
  • AOSD requires a variety of tools
    • Life cycle – support all stages of artifact development
    • Task directed – constraint enforcement, performance, feature addition etc.
    • Paradigm specific – concern composition, aspect attachment
  • Lack of framework for initial tool development
  • Integration is difficult – most tools are implemented from scratch
  • Customization is nearly impossible
possible solution
  • Abstraction of basic concepts of concern oriented modeling
  • Reusable components for tool developers
  • Layered architecture
concern manipulation environment
  • Developed by IBM research labs
  • Presented at AOSD 2004
  • Supports next generation of HyperJ
  • Extensible, reusable, open, customizable base for tool developers
  • Some ready for use tools and integration with Eclipse
  • Open source
cme architecture
  • 4 main layers – tools, components, framework and engines
  • Communication between layers are through API and interfaces defined by CME
  • Partial implementation of the most important modules of each layer is provided by CME
  • Each layer is open for extension by tool developers
tools layer
  • End user tools + GUI
  • Customized for tasks, lifecycle stages, artifacts, AOSD paradigms, environments
  • Intended for extension by tool developers more than other layers
tools layer existing items
  • Concern explorer for Eclipse – creation and manipulation of concern models and composition for Java
    • Package explorer style view
    • Visualize code affected by concern
    • Query interface
  • Concern modeler – express the concerns and their relations visually
    • For example all methods that relate to a certain feature can be grouped together to form a concern
    • Define concern in terms of other concern, overlap concerns, constraints on units relationship
  • Hyper/J2 - compositor tool for Hyper/J style concern definition and composition
    • Create hyperslices and hypermodules, then integrate them into existing artifact
  • HyperProbe – insert problem detection probes into existing software
    • Debugging tool implemented using aspects
using cme installation in eclipse 3 0
Using CME– installation in Eclipse 3.0+
  • Click 'Help' -> 'Software Updates' -> 'Find and Install'. Select 'Search for new features to install' and click 'Next'. Click 'Add Update Site'. Enter a name for the new update site you are creating, such as "CME Update Site", and enter the URL "http://download.eclipse.org/technology/cme/update". Click 'OK'.
  • Fully expand the CME Update Site node that appears, and select 'CME'. Click 'Next'. Select 'The Concern Manipulation Environment x.x.x' (where "x.x.x" is the CME version number shown).
  • Accept the license agreement
using cme user interface
Using CME – UserInterface
  • The CME perspective is designed to be used for software exploration in which use of an editor (such as a code editor) is important
using cme working with a project
Using CME – Working with a project
  • To add the CME nature to a project, right click on that project in the Package Explorer and select 'Add CME Nature'.
  • CME will create a new concern model for the project
  • The Concern Explorer view allows you to examine the current concern model. It deliberately resembles Eclipse's Package Explorer, so navigating it should be intuitive for Java developers. For example:
using cme queries
  • To perform a query, the CME Search View is used. You can enter a query manually in the available text box, or you can use the CME Search dialog, which assists with the creation of basic queries
  • To use the CME Search dialog
    • Click the button in the CME Search view's toolbar
    • The dialog has three tabs, which split the queries you can create into three categories - Concern Model oriented, Artifact oriented and AspectJ-style
    • E.g. Searching for method calls with the AspectJ tab
using cme queries cont
  • A preview of the query will be created
  • Queries can be saved/loaded from the dialog box
  • Click evaluate to perform the search
  • Result dialog will appear
using cme visualizer
  • The Visualiser tool provides many functions and shows an overview of where search results occur in source files
using cme adding a feature to existing software
  • Choose the package(s) you want to modify
  • Develop the feature in a separate package, using the same classes and adding new ones if required. This is equivalent to creating a new hyperslice for the feature and implementing it
  • Create a new concern for the feature and integrate using the composer
using cme adding a feature cont
Using CME – adding a feature (cont.)
  • Sample code from original package:
using cme adding a feature cont1
  • Feature code written in a separate package:
using cme adding a feature cont2
UsingCME – adding a feature (cont.)
  • Highlight the packages in the concern explorer
  • Right click and select "Compose New Concern“
  • This brings up the Compose Concern Wizard which has been filled in to compose the two concerns you selected and to handle conflicts by merging
using cme adding a feature cont3
UsingCME – adding a feature (cont.)
  • Select name for the new concern, its location and click next
  • On the next screen click finish
  • A new package will appear in the concern explorer with both old and new functionality inside
using cme adding a feature cont4
UsingCME – adding a feature (cont.)
  • Code after merge – a new class placed in a new package in the concern explorer
aspectj in cme vs standalone plug in
AspectJ in CME vs. standalone plug-in
  • AspectJ composer in CME
    • No need to write aspect code directly – code can be assembled from model
    • Pointcut definition through query engine
    • Uses own view perspective
    • Visualizer
  • AspectJ plug-in
    • Everything must be written explicitly
    • Pointcut definition is done through AspectJ code
    • Standard Eclipse package explorer view
    • Visualizer
components layer
  • Reusable components for tool builders
  • Separate paradigms and concrete tools aimed at specific tasks from concern representation
  • Separate concern representation from language constructs
  • API for tool developers
components existing items
  • Concern Composition Component (CCC) – supports different composition semantics and weaving techniques
    • Defines interface for tools to specify what should be done where. AspectJ tool can use the API to define pointcuts
    • Control flow relations – before/after
  • Concern Space Management Component (Conman) – Modeling tool which represents concerns and their relationships in paradigm independent way
    • For example we want to state that certain concern is dependent on another as a prerequisite, and we want both the AspectJ tool and the HyperJ tool know about it
frameworks layer
  • Low level concern representation model
  • Language independent – dealing with abstract object oriented language
  • Pluggable for use with language specific drivers (engines)
  • Defines how an artifact will be manipulated to adapt to a concern
frameworks existing items
  • Concern Assembler Toolkit (CAT) – provides support for assembling artifacts. XML based concern assembly language
    • Specify methods to be created
    • Specify how methods should be combine to achieve the desired result
  • Concern Informant Toolkit (CIT) – common interface providing information about OO elements
    • Inheritance relations
    • Accesibility of certain types within others
    • Method properties
  • Pattern Matcher (PUMA) – extensible query language processor for artifact elements
    • Search for classes, methods, relationships, concerns
    • Regular expressions
engines layer
  • Language dependent
  • Designed to serve specific framework components
  • Access to source code, binary or UML/XMI
  • Most existing engines aim at Java related technology
engines existing items
  • Java binary manipulator
  • Java source manipulator
  • XMI file manipulator
  • XML Serializer
  • Multiple engine attachment interface
  • Pros
    • Non intrusive
    • Can be used with existing artifacts
    • Extensible by tool developers
    • Open source
  • Cons
    • AOSD is still a new concept
    • Many components are not yet implemented
    • Limited deployment in real world projects
    • Heavy emphasis on specific technology, even though claimed to support wide variety