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

Practicum: Maintenance

In the software maintenance practicum, students will learn and practice:

  • corrective maintenance: bug fix based on customer's complaints or bug reports
  • regression fault test: after the bug fix, check if fixed modules do not alter the behavior of other working modules
  • enhancement maintenance: new requirements are added to an existing system
  • reuse: students analyze and extract reusable modules from the existing codes, and design reusable modules for future use
  • CASE tools: examination of source codes are done both by hand and by automated tools
  • design recovery: CASE and reverse engineering tools are utilized
  • configuration mangagement: students synchronize documentation and version infomation with the updated software


  • workstations
  • development tools (compiler, linker, editor, etc)
  • CASE tools
  • version control tools (RCS, SCCS)


Maintenance practicum consists of several subjects: maintenance, reuse, reverse engineering, and configuration management. Students are evaluated mostly based on the project deliverable and documents. However, additional forms of assessment are used where necessary.

1. Maintenance
The main foci of this area are corrective and enhancement maintenance tasks. It is reasonable to assume that each individual can fix bugs, so individual assignment is used to assess students' performance. On the other hand, the enhancement maintenance is the center of this part of practicum, so the project deliverable is used for assessment.

1.1. Corrective maintenance - bug-fix using tools (compiler etc.)

goal: students should be able to identify & fix bugs using tools and bug reports
c.f. students will submit the list of bugs identified and fixed, and the rationale for each fix

1.2. Enhancement maintenance - project (deliverable)
goal: students should be able to improve existing software based on new requirements & specifications
c.f. new requirements & specifications are evaluated as well as the deliverable

2. Reuse

The main goal of this area is to understand what reuse/reusability means and how one makes a reusable design. Therefor, essay type assessment seems appropriate.

goal: students should be able to understand what reuse/reusability means

c.f. students will write a paper on software reuse & reusability, including some examples

3. Reverse Engineering

The main goal of reverse engineering is to understand the existing programs. The analyses can be done based on dynamic execution and static analysis of the pro
gram. In addition, specifications of the existing programs should be created to fully understand what they do.

3.1. Dynamic analysis - project
goal: students should be able to generate dynamic model of software
c.f. dynamic models will be created as a part of practicum

3.2. Static analysis - project (CASE tool)

goal: students should be able to generate static model of software
c.f. static models will be created as a part of practicum

4. Configuration Management

The main goal of configuration management is to control several version of software, including program source codes, executables, documentations, specifications, etc. The students will be evaluated on the work they have done as a configuration manager.

Link to this Page