Title: Prism
1Prism
Prism is Research in Software Modularization
pattern recognition for aspect mining
Charles Zhang and Hans-Arno Jacobsen University
of Toronto czhang, jacobsen_at_eecg.toronto.edu
2Transforming Legacy Systems Using AOP tools
Aspect discovery/mining
Prism
Aspect footprints
Aspect Refactoring
AJDT
Re-factored Aspects
Code-level Verification
ARV
Over or under refactoring
Functional Verification
Verified Aspects
Unit/Regression Testing Tool
3What is Prism?
- Goal A platform discovers aspects in very large
systems composed in a variety of languages.
Consists of both backend engine and user
interface. - Core A framework supports arbitrary language
patterns and different pattern matching
algorithms. - Language pattern
- Lexical pattern regular expressions
- Usage of types where is my typeA?
- Execution flow where are my actions?
4Prism Architecture A set of extension points
- Prism fingerprint A pattern definition specified
by the user. - Prism footprint A encapsulation of the location
information of a particular fingerprint. - Prism task A customizable assembly of Prism
fingerprints which represents a more complex
pattern. - Prism algorithm An algorithm responsible for
matching a particular pattern and generating the
associated footprint.
Prism fingerprint
Prism footprint
Prism Engine
Prism Task 1
Prism Algorithm
Prism fingerprint
Prism footprint
Prism Task 2
5Prism Eclipse Plug-in
Prism footprints
Prism tasks
Fingerprints
Projects
Java Editor
6Configuring a Prism Fingerprint
- A Prism fingerprint consists of any combinations
of lexical patterns and type patterns. - Examples of type pattern
- Referencing all types in a particular package.
- All types in package org.omg.CORBA
- Referencing all methods of any class type
- All call sites for all methods of class
org.omg.CORBA.Any - AspectJ joinpoint definitions.
- Examples of lexical pattern
- Regular expressions
7Prism Fingerprint Configuration
Fingerprint name
Type pattern listing
Type browser
Regular expression listing
8Prism Footprint
- Results of matching fingerprints in the source
code. - Example A fingerprint defined as any method
defined in the class java.util.Hashtable, of
which the name starts by get has the
following footprints.
9Prism Framework Decomposition Units and
Fingerprints
- The decomposition unit hierarchy.
- The implementation of fingerprints and its
associated footprints
10Prism Framework Prism Algorithms
11Prism Framework Task Execution
12Callex Extension of Prism Framework
- Callex stands for call and lexical pattern based
aspect analysis
13Logical Mining Architecture
User interaction
Results
Indexing, type and structure analyzer
Aspect Miner
Intermediate representation
14Sample Mining Results
- Sizes of the target systems minded
15Other Project(s) Building on Prism
16ARV, A Prism Implementation
Declare Warning
Effective joinpoints
ARV is Aspect Refactoring Verifier
Prism Fingerprint
Prism Fingerprint
Prism Task
Prism Task
Prism Footprints
ARV Extension
Prism Algorithms
Prism Engine
17Goals Achieved To Date
- Complete GUI integration with Eclipse. Provides
the Eclipse aspect mining perspective. - Enable search of calling patterns defined at
package level, class level, and method level.
Supports the AspectJ call pattern convention. - Supports navigation between mining results and
source locations. - Supports quantification of type usage scattering
through computing degree of scattering as well as
scattering ranking.
18Goals Achieved To Date
- Packaged as Eclipse plug-in
- Managed in CVS source tree
- Short user manual (targets aspect-aware
developers) - Short technical communication about Prism
(unpublished) - Poster and demos at eTX/ICSE 2003, eTX/OOPSLA
2003, CASCON 2003 - Intention to submit as demo proposal to AOSD 2004
19Future Work
- Mining of multiple languages (e.g., C).
- Support finding patterns based on language
phrases. Enable mining aspects based on their
control/data flow characteristics. - Analysis of conditional variables. Find
non-localized slices caused by conditionals as
candidates of aspects. - Aspect mining algorithms based on statistical
learning and data mining techniques.
20References
- Charles Zhang and Hans-Arno Jacobsen, Quantifying
Aspects in Middleware Systems. AOSD 2003. - Charles Zhang and Hans-Arno Jacobsen,
Re-factoring Middleware Systems A case study.
DOA - Charles Zhang and Hans-Arno Jacobsen,
Re-factoring Middleware with Aspects, IEEE TPDS.