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.