CSS CS Optional — Paper-I, Section-B, Topic V. How to decompose the system — different question from architectural style.
🔑 Underlying Design Concepts
- Abstraction — expose essential detail, hide the rest.
- Modularity — decompose into independent, well-defined units.
- Coupling — interdependence between modules → lower is better.
- Cohesion — relatedness within one module → higher is better.
- Information hiding (Parnas) — reveal only the interface, hide internals. (design-level ancestor of OOP encapsulation)
- Refactoring — improve internal design without changing external behavior. Tested as standalone MCQ in 2025.
📌 The Strategies
- Top-down — start from whole system, decompose into smaller sub-modules ("stepwise refinement").
- Bottom-up — build smallest reusable components first, combine upward.
- Function-Oriented (structured) — decompose around functions/processes; driven by DFDs; data & functions kept separate.
- Object-Oriented — decompose around objects/entities; data + operations bundled together. (opposite of function-oriented)
- Modularization — guided by coupling/cohesion above.
🔥 Past Papers
- 2025 MCQ — what refactoring means in SDLC.
⚠️ MCQ Trap
- "Keeps data separate from functions" → function-oriented, not object-oriented.
- Refactoring improves code quality/structure, not functionality — doesn't add features or find bugs.