View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearchHelp Guide

Nugget: Reengineering/Maintenance


Reengineering/Maintenance deals with existing codes. Students needs to know two kinds of maintenance: corrective and enhancement maintenance. The former requirments changes in the codes, and the latter needs changes in the specifications in addition to the codes. Enhancement maintenance can be further droken down to perfective and adaptive maintenance.

In maintenance reuse is an important topic. Reuse can be planned at the initial development phase so that the modules are sharable across projects, or it could be done by inspecting the existing modules.

Another important topic is reverse engineering. Its purpose is to recreate the design documents and the specifications from the source codes (static analysis) and their execution (dynamic analysis). Students may use CASE tools, such as software refinary, in order to automate some of the reverse engineering tasks. Recovery of documents/specifications is also considered.

Configuration management is also discussed. Students may learn how
to use version control tools such as RCS or SCCS.



    • What is maintenance?
    • What is reverse engineering?
    • What is reuse?


    • Corrective maintenance
    • Regression fault
    • Enhancement
    • Reuse
    • Reusable design (design for maintainability)

    Reverse engineering

    • Domain analysis
    • Design recovery
    • Static analysis
    • Dynamic analysis
    • CASE tools: software refinary

    Configuration management

    • Version control
    • Issues for multiplatform software
    • Documentation & specification
    • Tools: RCS & SCCS

Suggested textbooks

  • Takang, A. A., and Grubb, P. A. (1996). Software Maintenance: Concepts and Practice. Boston: International Thomson Computer Press.
  • Leach, R. J. (1997). Software Reuse: Methods, Models, and Costs. New York: McGraw-Hill.


Link to this Page