---
title: "Short note: software reengineering"
subject: "Software Engineering"
chapter: 10
key: "semester_5/software_engineering:reengineering"
source: https://www.bctengineer.com/q/semester_5/software_engineering/reengineering
site: BCT Engineering
---

# Short note: software reengineering

Software Engineering · Chapter 10: Configuration Management

- Asked in: 2068 Baishakh (old course), 5 marks
- Video: [What is Software Re-Engineering ? CSE Gyan](https://www.youtube.com/watch?v=LTSfAmBGaYM) — CS Engineering Gyan
- Answer checked by Claude Opus 5.5 (high effort) on 2026-10-14
- Page: https://www.bctengineer.com/q/semester_5/software_engineering/reengineering
- Whole chapter: https://www.bctengineer.com/md/semester_5/software_engineering/chapter-10

## Question

Write a short note on software reengineering.

## Short answer

Software reengineering restructures legacy systems to make them easier to maintain without altering functionality. Its process includes inventory analysis, document restructuring, reverse engineering, code and data restructuring, and forward engineering. It reduces risk and cost compared to new development.

## Answer

**Software reengineering** is the process of restructuring or rewriting part or all of a legacy (old) system to make it easier to understand and maintain, **without changing its functionality**. It is cheaper and less risky than developing a completely new system, because the existing system's tested business logic is kept.

**When it is used:** a system is still valuable to the business, but its code is poorly structured, badly documented, or uses outdated languages and databases, so maintenance has become costly.

**Software reengineering process model** (Pressman) is a cycle of six activities:
1. **Inventory analysis:** list all applications with size, age, business importance and maintainability, and choose candidates for reengineering.
2. **Document restructuring:** create or update missing and outdated documentation.
3. **Reverse engineering:** analyse the code to recover design and specification information at a higher level of abstraction.
4. **Code restructuring:** rewrite poorly structured code (for example "spaghetti" code) using structured constructs, while keeping the same behaviour.
5. **Data restructuring:** analyse and redesign data structures and databases, for example moving from flat files to a relational database.
6. **Forward engineering:** use the recovered design to rebuild the system with modern methods and improved quality.

```text
     Inventory analysis --> Document restructuring
            ^                         |
            |                         v
  Forward engineering          Reverse engineering
            ^                         |
            |                         v
  Data restructuring  <--   Code restructuring
```

Sommerville lists similar activities: source code translation, reverse engineering, program structure improvement, program modularization and data reengineering.

**Advantages:** reduced risk, lower cost than redevelopment, and better maintainability.
**Limitations:** there are limits to how much a system can be improved, and changing the architecture (for example to object-oriented design) is very costly.

**Example:** a bank's old COBOL system using flat files is translated, restructured and moved to a relational database, while the business rules stay the same.

## Check yourself

The answer's key points as multiple-choice questions, with the correct option and why.

1. What is the key constraint of software reengineering?
   A. It adds new functionality
   B. It restructures or rewrites a legacy system without changing its functionality
   C. It discards the old system entirely
   D. It only changes documentation
   Answer: B. Reengineering improves understandability and maintainability while keeping functionality and tested business logic. (Key point: Definition of reengineering)

2. Which activity analyses code to recover design and specification information at a higher level of abstraction?
   A. Code restructuring
   B. Inventory analysis
   C. Data restructuring
   D. Reverse engineering
   Answer: D. Reverse engineering recovers design information from existing code; forward engineering later uses it to rebuild. (Key point: Reengineering process activities)

3. Why is reengineering preferred over new development when a legacy system is still valuable?
   A. It is cheaper and less risky because the existing tested business logic is kept
   B. It guarantees no limits to improvement
   C. It always changes the architecture cheaply
   D. It needs no analysis
   Answer: A. It keeps tested business logic, reducing cost and risk, though improvement has limits. (Key point: Why reengineer)
