Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Rigi - an environment for software reverse engineering, exploration, visualization, and redocumentation
Kienle H., Müller H. Science of Computer Programming75 (4):247-263,2010.Type:Article
Date Reviewed: Oct 26 2010

What many of us have been looking for for years is finally here: a paper that clearly describes Rigi, its history, its evolution, and, most importantly, its use.

Rigi is a software architectural recovery framework pioneered at the University of Victoria, over a decade ago. The framework includes a set of code-format parsers, an intermediate architecture format (Tcl-based, ASCII text) used for recovered architectures from code, a visualization environment for editing and exploring graphs, and a scripting framework for reverse engineering and analysis. The most important part of Rigi is admittedly its repository, where extracted graph properties are stored as tuples. This repository drives the rest of the downstream reverse engineering activities that Rigi pioneered back in the day.

Support for multiple programming languages in Rigi was limited--it only offered native support for C, C++, and Cobol--to research projects, where students and researchers worked to integrate Java support and support for other programming languages. Some real-world systems were analyzed using Rigi--the authors direct us to look at IBM’s SQL/DS (over three million lines of code), as well as a more topical example, the Azureus system, a Java BitTorrent client of about 300,000 lines of code.

The focal point of the rest of the paper--a detailed explanation of Rigi and case studies--is twofold. First, it is a reflection on the pioneering nature of Rigi and what has been happening with it over the last ten years. The authors mention that there have been no new releases of Rigi since 2003, but a Web site is actively maintained, and downloads for both Windows and Unix are still available. The authors want the reader to be aware that Rigi has been used and taught in software engineering courses at dozens of universities and institutions over the years.

The paper is clear on what things Rigi was (and wasn’t) good at. On the good list: it was scriptable, so reverse engineering enthusiasts could construct reusable recovery scripts that would run in Rigi and perform architectural analyses; it provided support for exploration of dense graphs and the ability to look at those graphs in an architecturally meaningful way; and it provided rich documentation, including an over-150-page user guide. On the bad list: it wasn’t automatic; it was too low level; and, most importantly, it did not provide an “easy” button (it required some deep intellectual knowledge to really become a power user).

Second, the authors focus in on lessons learned from this honest assessment of Rigi, including the importance of representation formats for reverse engineering models; the notion that one size does not fit all, where programming languages are concerned; and that supporting multiple programming languages is indeed a necessity. Further, the paper discusses the importance of providing an easy graphical user interface (GUI), to increase the chances of adoption. Incubating new ideas was another important lesson learned--Rigi provided a platform for just that in the reverse engineering domain.

I’ve been looking for a paper like this on Rigi for years, since I’ve been using it in my graduate-level software architecture course at the University of Southern California (USC), as a tool to teach reverse engineering. Folks like me will really get something out of this paper, and will have found a reference to share with students in their own courses. For the novice, the paper is easy enough to read that one can get a lot out of it, including a great introduction to innovations in reverse engineering research over the last ten years. I definitely recommend it.

Reviewer:  Chris Mattmann Review #: CR138524 (1104-0403)
Bookmark and Share
  Editor Recommended
 
 
Software Engineering (D.2 )
 
 
Parsing (D.3.4 ... )
 
 
Tools (D.2.1 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Software Engineering": Date
Perspectives of system informatics: a comparative presentation of object-oriented programming with C++ and Java
Broy M. (ed), Zamulin A. (ed), Bjorner D., Springer-Verlag New York, Inc., Secaucus, NJ, 2002.  561, Type: Book (9783540430759)
Jul 3 2003
Relationship quality: the undervalued dimension of software quality
Russell B., Chatterjee S. Communications of the ACM 46(8): 85-89, 2003. Type: Article
Oct 14 2003
Executable JVM model for analytical reasoning: a study
Liu H., Moore J.  Interpreters, Virtual Machines and Emulators (Proceedings of the 2003 workshop, San Diego, California, Jun 12, 2003)15-23, 2003. Type: Proceedings
Sep 24 2003
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy