---
title: "Forward vs reverse engineering merits and demerits"
subject: "Object Oriented Analysis and Design"
chapter: 4
key: "semester_6/object_oriented_analysis_and_design:forward-reverse-engineering-merits"
source: https://www.bctengineer.com/q/semester_6/object_oriented_analysis_and_design/forward-reverse-engineering-merits
site: BCT Engineering
---

# Forward vs reverse engineering merits and demerits

Object Oriented Analysis and Design · Chapter 4: Implementation

- Asked in: 2069 Bhadra, 10 marks; 2070 Magh, 7 marks; 2072 Asoj, 4 marks (asked 3 times)
- Video: [Software Re engineering](https://www.youtube.com/watch?v=UXERB3xFgc4) — TutorialsPoint
- Answer checked by Claude Sonnet 5.5 on 2026-10-14
- Page: https://www.bctengineer.com/q/semester_6/object_oriented_analysis_and_design/forward-reverse-engineering-merits
- Whole chapter: https://www.bctengineer.com/md/semester_6/object_oriented_analysis_and_design/chapter-4

## Question

Explain the forward and reverse engineering processes with outlining their merits and demerits in object-oriented implementation. (Compare forward versus reverse engineering, mentioning the merits, demerits and implementation challenges.)

## Short answer

Forward engineering generates code from models, ensuring consistency but risking model-code drift. Reverse engineering recovers models from code, aiding documentation and maintenance but losing design intent and costly for large systems.

## Answer

#### Forward engineering
**Forward engineering** is the normal direction: moving from high-level models (requirements, UML design) to the implementation, i.e. generating code (class skeletons, method signatures, database tables) from design models.

```text
 Requirements -> Design models (UML) -> Source code -> Executable
```

#### Reverse engineering
**Reverse engineering** is the opposite: analysing existing code, binaries or a database to rebuild the design models (class, sequence diagrams) and understand the system, often when documentation is lost or outdated.

```text
 Source code / executable -> Analysis -> UML models, documentation
```

#### Comparison with merits and demerits

| Point | Forward engineering | Reverse engineering |
|---|---|---|
| Direction | Model to code | Code to model |
| Purpose | Build a new system | Understand, document, maintain an old one |
| Input | Requirements, UML | Code, executable |
| Output | Code | Models, documentation |

**Merits of forward engineering:** consistent design and code; saves coding time through code generation; productivity; fewer errors; documented design.
**Demerits:** generated code may be incomplete or inefficient and needs manual completion; models and code drift apart after manual changes; needs a good tool and up-to-date models.

**Merits of reverse engineering:** recovers lost documentation; helps maintenance and migration; finds reusable components; helps to detect design flaws and security problems; can check that code matches the design.
**Demerits:** the recovered model is low level and lacks the designer's intent and business rules; slow and costly for large code; poor results for badly written code; legal and licensing issues for third-party software.

#### Implementation challenges
- Keeping the model and code synchronised (**round-trip engineering** combines both).
- Mapping concepts that have no direct language form (associations, multiplicity, constraints).
- Loss of comments, naming and abstraction in reverse engineering.
- Tool and language support differences.

## Check yourself

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

1. What is forward engineering?
   A. Rebuilding models from old code
   B. Testing existing code
   C. Deleting old models
   D. Generating code from design models
   Answer: D. Forward engineering moves from models to implementation. (Key point: Forward engineering)

2. What is reverse engineering used for?
   A. Analysing code to recover models and documentation
   B. Writing new requirements
   C. Compiling code
   D. Generating skeletons from UML
   Answer: A. It rebuilds design models from code, often when documentation is lost. (Key point: Reverse engineering)

3. What is a demerit of reverse engineering?
   A. It always generates perfect UML
   B. The recovered model is low level and lacks designer intent and business rules
   C. It needs no tools
   D. It is fast for large code
   Answer: B. Code does not hold the designer's intent or business rules, so recovered models are low level. (Key point: Demerit of reverse engineering)

4. What problem does round-trip engineering address?
   A. Loss of network speed
   B. Slow compilation
   C. Keeping the model and code synchronised by combining both directions
   D. Choosing a language
   Answer: C. Round-trip engineering combines forward and reverse engineering to keep model and code consistent. (Key point: Round-trip engineering)

## Related in Object Oriented Analysis and Design

- [Short note: Information in forward/reverse engineering](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Ashort-note-information-content-forward-reverse) — Object Oriented Analysis and Design, chapter 4
- [Algorithmic vs object-oriented decomposition](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Aalgorithmic-vs-oo-decomposition) — Object Oriented Analysis and Design, chapter 1
- [Structural model vs implementation model](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Astructural-vs-implementation-model) — Object Oriented Analysis and Design, chapter 1
- [Object oriented system and core concepts](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Aoo-system-concepts-explained) — Object Oriented Analysis and Design, chapter 1
- [Interface vs implementation](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Ainterface-vs-implementation) — Object Oriented Analysis and Design, chapter 4, asked 2×
- [Conceptual, specification, implementation model classification](https://www.bctengineer.com/question.md?key=semester_6%2Fobject_oriented_analysis_and_design%3Ahospital-conceptual-specification-implementation) — Object Oriented Analysis and Design, chapter 2

## Related in other subjects

- [Compare procedural and object oriented programming](https://www.bctengineer.com/question.md?key=semester_3%2Fobject_oriented_programming%3Aprocedural-vs-oop-compare) — Object Oriented Programming, chapter 1
- [Forward/reverse channel and 5G versus 4G](https://www.bctengineer.com/question.md?key=semester_7%2Fwireless_communication%3Aforward-reverse-5g-vs-4g) — Wireless Communication, chapter 1, asked 2×
- [Merits and demerits of active vs passive filters](https://www.bctengineer.com/question.md?key=semester_5%2Ffilter_design%3Aactive-passive-merits-demerits) — Filter Design, chapter 6
- [Contiguous list merits and static implementation](https://www.bctengineer.com/question.md?key=semester_4%2Fdata_structure_and_algorithm%3Acontiguous-list-merits-demerits) — Data Structure and Algorithm, chapter 3
