# A Prism for Research in Software Modularization Through Aspect Mining

This is the tentative page for Prism and will be updated and moved to www.msrg.utoronto.ca/prism' shortly.

Prism is an Eclipse plug-in that offers an aspect mining perspective to the user who can manage a number of mining tasks for the identification of aspects in large Java source code bases.

This project is supported by the IBM eIG grant 2003.

A rough-and-ready user manual is available from here.

The following people are involved with the development of Prism: Charles Zhang, Helen Shi, Taimur Javeed, Crystal Wong, and Hans-Arno Jacobsen.

Here is a summary of some of the results we have been able to achieve with Prism. Table 1 gives an overview of the aspects discovered with Prism. The results show the size of the implementation of aspects consisting of Java classes, AspectJ aspect modules, and lines of code. These results clearly show that we are able to discover non-trivial aspects with Prism.
 -----------------------------------------------------------------------
aspect  Any (incl.     col-      wchar  char   DII DSI oneway  Portable
Dynamic Any &  location         conv-          invoc-  inter-
Type Codes)                     ersion         action  ceptor
-----------------------------------------------------------------------
classes    20          2        12      7      2    2    0     15

aspects     4          3         7      1      3    2    4      4

lines   12680        832      1961    813   1248  416  334    4691
-----------------------------------------------------------------------
Table 1: Aspects discovered in Orbacus code with Prism.

Here is a rough overview of the performance of Prism. Table 2 shows some performance results of running Prism on large code bases. The results where obtained on a Pentium II with 1GB of RAM running Linux Redhat 7.2. The results show that the performance of Prism is acceptable. We intend to more tightly integrate Prism with Eclipse's JDT for mining of Java code and expect that parsing and indexing performance will further decrease.
  ------------------------------------------------------
Parsing time  Number of  Lines of  Comment
(in seconds)   Classes     Code
------------------------------------------------------
ORBacus   84          1792      64298

log4j     12           112       6205

xerces   100           465      49772   +inner classes
------------------------------------------------------
Table 2: Prism performance.
`
Here are some references on Prism, our aspect mining, and aspect oriented middleware research:

 [1] C. Zhang, D. Gao, Hans-Arno Jacobsen, {\bf Generic Middleware Substrate through Modelware}. ACM Middleware, Grenoble, France, 2005. [2] Aspect Refactoring Verifier. MSRG Technical Communication, January 2005. C. Zhang, H.-A. Jacobsen, Julie Waterhouse, and Adrian Colyer. [3] Linking Goals to Aspects. MSRG Technical Communication, January 2005. C. Zhang, H.-A. Jacobsen, and Yijun Yu. (paper relates to reference -2 below.) [4] Towards Just-in-time Middleware To appear in AOSD'05. C. Zhang, G. Dapeng, and H.-A. Jacobsen. [5] C. Zhang and H.-A. Jacobsen. Prism is Research In aSpect Mining, Software Demonstration at OOPSLA 2004. [6] C. Zhang and H.-A. Jacobsen. Requirements Analysis for Middleware Aspects. Technical Report, Middleware Systems Research Group, University of Toronto, July 2004. [7] C. Zhang and H.-A. Jacobsen. Resolving Feature Convolution in Middleware Systems. ACM OOPSLA 2004. [8] Prism Eclipse plug-in for Download. [9] C. Zhang and H.-A. Jacobsen. A Prism for Research in Software Modularization Through Aspect Mining. Technical Communication, September 2003, Middleware Systems Research Group, University of Toronto. [10] C. Zhang and H.-A. Jacobsen. Prism is Research in Software. Modularization. Poster at eTX Workshop OOPSLA 2003 [11] C. Zhang and H.-A. Jacobsen. Prism is Research in Software Modularization. Poster and Software Demonstration at CASCON 2003. [12] C. Zhang and H.-A. Jacobsen. ARV: Aspect Refactoring Verifier. Poster and Software Demonstration at CASCON 2003. [13] C. Zhang and H.-A. Jacobsen. Modularity Analyzer and Aspect Extractor. Poster at eTX Workshop ICSE 2003 [14] C. Zhang, H.-A. Jacobsen. Quantifying Aspects in Middleware Platforms. International AOSD'02 Conference, Boston, MA 2002. [15] C. Zhang, H.-A. Jacobsen. Refactoring Middleware Platforms. IEEE Trans. on Parallel and Distributed Systems, November 2003. [16] C. Zhang, H.-A. Jacobsen. Refactoring Middleware Platforms: A Case Study. International DOA Conference, Italy, November, 2003.