CSS Prepare

optional · CSS study notes

Software Re-Engineering

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)

  1. Source code translation — convert to modern language/platform
  2. Reverse engineering — recover design/requirements from existing code
  3. Program structure improvement — restructure control flow
  4. Program modularization — reorganize scattered logic into cohesive modules
  5. 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.
  • Added new functionality → evolution/maintenance, NOT re-engineering.