University of Leicester – Department of Computer Science

CO7206 - Fall 2003 – Mini-Project (6 weeks)

1st Nov. / 2003  

Objective: To gain hands-on experience in reverse engineering, reengineering, re-documenting and Web-enabling a legacy C or C++ system.

The purpose of this project is to get the students to apply the methods learned in this course and use the tools provided in a small-scale reengineering project. The subject of the project will be a C or C++ piece of software of small but non-trivial size. Students will reverse engineer the subject system and produce technical documentation for it. Then, students will partially or fully reengineer the system and reproduce it in a different format.

Tasks

1-     Each student will pick a subject system. Indent is the proposed subject system for this project. But, students can pick a different C or C++ system of comparable size and situation to Indent, e.g., any open source system. However, the chosen system must be unfamiliar to the student. Students can use more recent versions, if any, of Indent or its Linux version if they like. Students must get the instructor’s agreement on the subject system that they will use before starting working on it.

2-     The student will use the available course tools, and manual analysis if needed, to analyze, understand and reverse engineer the exiting subject system.

3-     Consequently, the student will produce technical documentation for the subject system that will work as a technical manual for the maintainers of the system.

4-     Of particular interest during reverse engineering is the recovery of the system architecture and decomposition to subsystems.

5-     In the course of the reverse engineering effort, the student will decide a suitable reengineering extension/modification for the existing system. Some possible extensions follow, but students are most welcome to propose their own ideas:

·        Reengineering the UI of the system by Web-enabling it. So, a Web interface will be created that eliminates the need to invoke the program via a command line and knowing/passing the needed parameters. Instead, the Web form will include proper widgets for the user to construct the task s/he is interested in and run it and display back the results.

·        Converting the subject system to a different language.

·        Restructure, modularize and/or refactor the subject system.

6-     Finally, the student will reengineer the subject system according to his/her proposal.

Project Deliverables and Milestones

1-     Report 1 (6%). This report describes the reverse engineering phase of the project and the presents a proposal for the reengineering phase. It should include at least the following subsections:

q       An executive summary

q       An introduction

q       A general description of the functionality of the subject system and pointers to other resources that describe the subject system

q       A description of the method /approach followed to reverse engineer the subject system and the tools used

q       A description of the system architecture and its decomposition into subsystems

q       The technical documentation of the subject system. You have to decide what goes there. But it should be enough for someone else to read and be able to maintain / modify the system.

q       A brief on the problematic areas in the system, e.g., too complex modules, unstructured parts, etc.

q       A proposal of an extension to the subject system

q       Bibliography and list of references used

The size of the report does not matter. What matters is the quality of the technical content and presentation. This report can be produced as a word document, a Web page, or whatever suitable format.

2-     Report 2 (3%). This report describes the reengineering phase of the project. It should include at least the following subsections:

q       An executive summary

q       An introduction

q       A description of the reengineering implemented and a why it is important / was chosen

q       A description of the approach followed to implement it.

q       Technical documentation for the change

Again the size of the report does not matter. It can be 3 pages or 100 pages. It will be assessed by its content, the work it describes and its quality of presentation and English.

3-     Presentation (3%). Every student will demonstrate his extended / reengineered system for 10 minutes to the other students and the instructor. This presentation should cover:

q       A brief about the subject system

q       A brief about the approach used to reverse engineer it and the main findings

q       A brief about the reengineering method used and the goal that was achieved

q       A demonstration of the reengineered system (This will depend on what was reengineered)

Project Timeline

1-     Report 1. 24 Nov. 2003.

2-     Presentation. 10 Dec. 2003.

3-     Report 2. 10 Dec. 2003.

Resources:

q       Indent page: http://mysite.freeserve.com/indent/beautify.html

q       Here is a case study of understanding a real software during course work: Architecture Recovery of Apache 1.3 – A Case Study

q       Use the resource list provided on the course Web page.

q       Consult the instructor on resources on specific topics, if needed.