Information Technology Reference
In-Depth Information
if it is to be performed correctly. A post-delivery maintenance programmer
needs skills different from those needed by software professionals specializing
in other aspects of software production. Maintenance programmer must be
highly skilled in a broad variety of areas (Schach 2007 ).
11.10 Reverse Engineering
Sometimes the only documentation available for post-delivery maintenance is the
source code itself. One way of handling this problem is to start with the source
code and attempt to re-create the design documents or even the specifications. This
process is called reverse engineering. The process of analyzing a system's code,
documentation and behavior in order to identify current components, along with
their dependencies is vital to the ability to extract and create system abstractions
and design information. The subject system is not altered; however, additional
knowledge about the system is produced (SEI 2006 ).
There are many different reverse-engineering tasks. This section discusses sev-
eral of the most important: program analysis, plan recognition, concept assignment,
re-documentation, and architecture recovery. The first three tasks can be viewed as
pattern matching at different levels of abstraction. Program analysis is syntactic
pattern matching in the programming-language domain, plan recognition is
semantic pattern matching in the programming-language domain, and concept
assignment is semantic pattern matching in the application (or end-user) domain.
Assigning each task to an abstraction layer can be difficult. One can argue that
re-documentation is a form of reverse engineering, or that it is simply restructuring
at the same abstraction level. How one interprets each type of reverse engineering
depends on several factors, such as which document you read, what you mean by
reverse engineering, and what you mean by re-documentation. Many of these
arguments are more in the lines of religion rather than practical differences. Suffice
it to say that reverse engineering is not an exact science, and neither is its ter-
minology (Pressman 2005 ).
Diagrams can be constructed from flowcharts or UML diagrams. These visual
aids can help in the process of design recovery. Once the maintenance team has
reconstructed the design, there are two possibilities. One is to reconstruct the
specifications or modify the reconstructed specifications to reflect the changes. The
other is to re-implement the product the usual way. In practice reconstruction of
the specifications is an extremely hard task. More frequently, the reconstructed
design is modified and the modified design is then is forward engineered.
A related activity often performed during maintenance is restructuring. Reverse
engineering takes the product from a lower level of abstraction to a higher level of
abstraction, for example from code to design. Forward engineering takes the
Search WWH ::




Custom Search