University of Leicester –
Department of Computer Science
CO7206 - Fall 2003 –
Mini-Project (6 weeks)
1st Nov. /
Objective: To gain
hands-on experience in reverse engineering, reengineering, re-documenting and
Web-enabling a legacy C or C++ system.
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.
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.
will use the available course tools, and manual analysis if needed, to analyze,
understand and reverse engineer the exiting subject system.
the student will produce technical documentation for the subject system that
will work as a technical manual for the maintainers of the system.
particular interest during reverse engineering is the recovery of the system
architecture and decomposition to subsystems.
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:
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.
the subject system to a different language.
modularize and/or refactor the subject system.
student will reengineer the subject system according to his/her proposal.
Project Deliverables and
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:
description of the functionality of the subject system and pointers to other
resources that describe the subject system
description of the method /approach followed to reverse engineer the subject
system and the tools used
description of the system architecture and its decomposition into subsystems
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.
A brief on
the problematic areas in the system, e.g., too complex modules, unstructured
of an extension to the subject system
and list of references used
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.
Report 2 (3%). This report describes the reengineering
phase of the project. It should include at least the following subsections:
description of the reengineering implemented and a why it is important / was
description of the approach followed to implement it.
documentation for the change
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
Presentation (3%). Every student will demonstrate his
extended / reengineered system for 10 minutes to the other students and the
instructor. This presentation should cover:
about the subject system
about the approach used to reverse engineer it and the main findings
about the reengineering method used and the goal that was achieved
demonstration of the reengineered system (This will depend on what was
Report 1. 24 Nov. 2003.
10 Dec. 2003.
Report 2. 10 Dec. 2003.
Indent page: http://mysite.freeserve.com/indent/beautify.html
Here is a case study of
understanding a real software during course work: Architecture
Recovery of Apache 1.3 – A Case Study
Use the resource list
provided on the course Web page.
q Consult the instructor on resources on specific topics,