Reverse Engineering - Software Methodology

Goal: The goal of the reverse engineering assignment is to take the original source code of your project and automatically generate UML diagrams of this code. Based on understanding of the code developed from the UML diagrams, as well as reading through the code, a high-level architectural model of the code will also be developed.

Deliverables

There are two primary documents that will be turned in for this phase.

  1. UML Diagrams. A series of UML structure diagrams that provide an overview of the project's design. This may involve one or more UML diagrams, such as an overview diagram as well as detailed views of objects in the design, grouped into meaningful clusters. For example, a set of 4-5 objects that manage some aspect of the user interface, or together perform some aspect of the project's functionality, might constitute a meaningful grouping. While more complete diagrams are ideal, existing reverse engineering tools may not automatically generate all desired aspects of a UML diagram. The task involves a tradeoff among readability, completeness, and between manual/automatic diagram work. The ultimate goal is a series of diagrams that your team finds valuable for understanding the existing design of your project.
  2. Architecture diagram. Develop a boxes-and-arrows depiction of the high-level software architecture of the project. While the granularity of components will vary from project to project, expectations are that each component (box) in the architecture diagram will represent multiple (perhaps even 10s of) objects in the UML diagram. The idea is to create meaningful groupings of functionality, represent that functionality as a component, then represent communication paths (arrows) among the components. Major sources of external input (users, other systems) and output (screen displays, repositories, file system, etc.) also should be incorporated into the architecture diagram. The purpose of the architecture diagram is to create a representation of the system that is useful for your group to understand the existing structure of the project.

Last updated: 9/27/2002