CSS CS Optional — Paper-I, Section-B, Topic V.
🔑 Definition
- Examine + alter existing system → new, improved form.
- Functionality stays the same (unlike evolution, which may add capability).
📌 Re-Engineering Activities (sequence)
- Source code translation — convert to modern language/platform
- Reverse engineering — recover design/requirements from existing code
- Program structure improvement — restructure control flow
- Program modularization — reorganize scattered logic into cohesive modules
- Data re-engineering — clean up/migrate underlying data
📌 Vs. Refactoring
- Refactoring = lightweight, continuous, during normal dev.
- Re-engineering = larger, deliberate project on existing/legacy system.
- Refactoring is ONE technique re-engineering may use.
📌 Why Re-Engineer, Not Rewrite
- Preserves business value in working legacy system.
- Avoids cost/risk of full rewrite.
- Escapes "software entropy" (see Maintenance page).
⚠️ MCQ Trap
- Re-engineering = restructure without changing function.