Reclipse - Reverse Engineering for Eclipse

The editor for structural patterns
An annotated pattern candidate
The editor for behavioral patterns
Trace analysis in Reclipse

Reclipse is a reverse engineering tool for the automatic detection of patterns in source code. A pattern is a general, reusable solution to a commonly occurring problem in software design. Detecting pattern occurrences can help understand a piece of code and thereby provide deeper insight into a software.

Reclipse provides the following features:
  • Graphical specification of the structure and behavior of patterns
    • Description of structure based on object diagrams
    • Description of behavior based on UML 2.0 sequence diagrams
    • Support for additional (non-mandatory) elements

  • Detection of the specified design patterns in Java source code
    • Annotation of possible design pattern occurrences (candidates)
    • Percentage rating of candidates
    • Dynamic analysis to confirm or reject candidates depending on their behavior

Reclipse provides a static and a dynamic pattern detection.

The static analysis in Reclipse uses a pattern specification language based on object diagrams, the so-called structural patterns. The static analysis requires the source code of the software system and a library of structural patterns. An inference algorithm recovers the structure of design patterns by graph matching. It results in an annotated class diagram which shows the possible implementations of design patterns, so-called pattern candidates.

A following dynamic analysis can be used to reject or confirm these pattern candidates. For this purpose the candidates’ behavior can be monitored during the program execution, using the Reclipse tracer. The tracer generates a number of traces for each candidate.

Structural Pattern Detecion

Reclipse provides a graphical editor for the specification of the structure of patterns. Structural patterns are specified as a collection of connected, typed objects. A pattern can also reference other patterns and contain additional parts. Additional parts are not required to be present in a pattern occurrence but their presence increases the confidence in a detected pattern candidate.The structural analysis results in a percentage estimation which shows how much a given pattern candidate resembles the specified pattern. Detected additional parts increase this estimation.

Behavioral Pattern Detection

In addition, Reclipse provides a second graphical editor for the specification of the patterns’ behavior. The behavioral analysis can complement the result of the structural analysis by comparing the detected pattern candidate’s behavior to the specified patterns’ behavior. With the results, the reverse engineer is able to make a better decision, whether a software fragment is an actual design pattern implementation or not.

The dynamic pattern detection in Reclipse analyzes the given software system by comparing traces recorded during program execution to the specified behavior of the corresponding design pattern. The specification language for the behavior of design patterns is based on UML sequence diagrams. It is possible to specify one so-called behavioral pattern for each structural pattern. If the majority of a candidate’s traces match the behavioral pattern it is likely that the candidate is an actual design pattern. Traces which do not match the behavioral pattern are indications that the candidate is a false positive.


Download

Reclipse Drop (Windows)

A pre-configured and ready-to-use Eclipse workbench with Reclipse already installed can be downloaded here (Windows only).

Reclipse Drop

Update Site

The latest version of Reclipse can be downloaded via our Eclipse Update Site (Please note that only the structural pattern detection feature can be downloaded at the moment.):

http://dsd-serv.uni-paderborn.de/svn/updatesites/reclipse/


Please follow the instructions below to install Reclipse:

  • Use the JDK 1.6.

  • Download and install the Eclipse Modeling Tools (includes Incubating components) package in version 3.6.1 (e.g. from [1])
    • The Eclipse Indigo release is incompatible due to its usage of XText 2
    • Eclipse 3.6.2 (Helios SR2) is compatible but shows a selection issue in the multipage editor (see [2])

  • Go to Help -> Install New Software... and install the desired Reclipse features from the update site [3].

  • A good starting point to get to know Reclipse is the included example (when installed). You can find it under New -> Example... -> Reclipse -> Blog (Structural Analysis). Also, have a look at the online help under Help -> Help Contents -> Reclipse.


[1] http://www.eclipse.org/downloads/packages/release/helios/sr1
[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=339360
[3] http://dsd-serv.uni-paderborn.de/svn/updatesites/reclipse/

Publications related to Reclipse


2012

M. Platenius, M. von Detten, S. Becker: Archimetrix: Improved Software Architecture Recovery in the Presence of Design Deficiencies. In Proceedings of the 16th European Conference on Software Maintenance and Reengineering. 2012

[Show Abstract] [Show BibTeX]

2011

J. Holtmann, J. Meyer, M. von Detten: Automatic Validation and Correction of Formalized, Textual Requirements. In Proceedings of the IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops (ICSTW) 2011, pp. 486-495. IEEE Computer Society, 2011

[Show Abstract] [Show BibTeX] [DOI]
M. von Detten, S. Becker: Combining Clustering and Pattern Detection for the Reengineering of Component-based Software Systems. In Proceedings of the 7th International Conference on the Quality of Software Architectures, QoSA 2011 (Boulder, Colorado, USA). ACM Press, 2011

[Show Abstract] [PDF] [Show BibTeX]
M. Fockel, D. Travkin, M. von Detten: Interpreting Story Diagrams for the Static Detection of Software Patterns. In Proceedings of the 8th International Fujaba Days (University of Tartu, Estonia). May 2011

[Show Abstract] [PDF] [Show BibTeX]
O. Travkin: Kombination von Clustering- und musterbasierten Reverse-Engineering-Verfahren. Master's thesis, University of Paderborn, 2011 . In German.

[PDF] [Show BibTeX]
M. von Detten: Towards Systematic, Comprehensive Trace Generation for Behavioral Pattern Detection through Symbolic Execution. In Proceedings of the 10th ACM SIGPLAN/SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE) (Szeged, Hungary). September 2011

[Show Abstract] [PDF] [Show BibTeX]
O. Travkin, M. von Detten, S. Becker: Towards the Combination of Clustering-based and Pattern-based Reverse Engineering Approaches. In Proceedings of the 3rd Workshop of the GI Working Group L2S2 - Design for Future 2011 (Karlsruhe, Germany). February 2011

[Show Abstract] [PDF] [Show BibTeX]
M. Platenius, M. von Detten, D. Travkin: Visualization of Pattern Detection Results in Reclipse. In Proceedings of the 8th International Fujaba Days (University of Tartu, Estonia). May 2011

[Show Abstract] [PDF] [Show BibTeX]

2010

M. von Detten, D. Travkin: An Evaluation of the Reclipse Tool Suite based on the Static Analysis of JHotDraw. Tech. Rep., no. tr-ri-10-322. Software Engineering Group, Heinz Nixdorf Institute, University of Paderborn October 2010

[Show Abstract] [PDF] [Show BibTeX]
M. von Detten, M. Meyer, D. Travkin: Reclipse - A Reverse Engineering Tool Suite. Tech. Rep., no. tr-ri-10-312. Software Engineering Group, Heinz Nixdorf Institute, University of Paderborn March 2010

[Show Abstract] [PDF] [Show BibTeX]
M. von Detten, M. Meyer, D. Travkin: Reverse Engineering with the Reclipse Tool Suite. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE 2010), Cape Town, South Africa, May 2-8, 2010, vol. 2 (New York, NY, USA), pp. 299 - 300. ACM Press, May 2010 . Informal Research Demonstration.

[PDF] [Show BibTeX]

2009

M. Platenius: Berücksichtigung von Objektmengen bei der dynamischen Entwurfsmustererkennung. Bachelor's thesis, University of Paderborn, October 2009

[PDF] [Show BibTeX]
M. von Detten, M. Platenius: Improving Dynamic Design Pattern Detection in Reclipse with Set Objects. In Pieter Van Gorp (eds.): Proceedings of the 7th International Fujaba Days, pp. 15-19. Eindhoven University of Technology, The Netherlands, November 2009

[Show Abstract] [PDF] [Show BibTeX]

2007

L. Wendehals: Struktur- und verhaltensbasierte Entwurfsmustererkennung. PhD thesis, University of Paderborn, Paderborn, Germany, September 2007 . In German.

[Show BibTeX] [URL]

2006

L. Wendehals, A. Orso: Recognizing Behavioral Patterns at Runtime using Finite Automata. In Proc. of the 4th ICSE 2006 Workshop on Dynamic Analysis (WODA), Shanghai, China, pp. 33-40. ACM Press, May 2006

[PDF] [Show BibTeX]

2005

M. Meyer, L. Wendehals: Selective Tracing for Dynamic Analyses. In Andy Zaidman and Abdelwahab Hamou-Lhadj and Orla Greevy (eds.): Proc. of the 1st Workshop on Program Comprehension through Dynamic Analysis (PCODA), co-located with the 12th WCRE, Pittsburgh, Pennsylvania, USA, Technical Report, vol. 2005-12, pp. 33-37. November 2005

[Show Abstract] [PDF] [Show BibTeX]
L. Wendehals: Tool Demonstration: Selective Tracer for Java Programs. In 12th Working Conference on Reverse Engineering, Pittsburgh, Pennsylvania, USA. November 2005

[PDF] [Show BibTeX]

2004

L. Wendehals: Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. In Proc. of the 6th Workshop Software Reenginering (WSR), Bad Honnef, Germany, Softwaretechnik-Trends, vol. 24/2, pp. 63-64. May 2004

[PDF] [Show BibTeX]

2003

L. Wendehals: Improving Design Pattern Instance Recognition by Dynamic Analysis. In Proc. of the ICSE 2003 Workshop on Dynamic Analysis (WODA), Portland, USA. May 2003

[Show Abstract] [PDF] [Show BibTeX]

Imprint | Webmaster | Recent changes: 10.10.2011