Design Rationale (FIT2099)

Context: FIT2099_MOC · the written justification accompanying the UML for Assignment 1 · explains why a design meets its goals, not what it does · the marked communication artefact

Quick Revision

  • 🎯 Objective: explicitly document the reasons behind each design decision âž” show the working, sell the design, earn the mark.
  • ⚡ Key Constraint: rationale = WHY, not WHAT — describing the diagram or the algorithm (the HOW) belongs in Javadoc / sequence diagrams, and wastes rationale marks.

📝 Core

  • Definition âž” “explicit documentation of the reasons behind decisions made when designing a system”, paired with the UML class + sequence diagrams (which are visual aids, not the whole system).
  • Design goals âž” abstract quality targets set before coding (extensibility, maintainability, readability, low coupling); the rationale assesses the design against these goals.
  • Each decision should give âž” the reason/justification · the alternatives considered · the compromises/trade-offs · the thought process that led to the choice.
  • Structure âž” intro (summary + goals + audience) → per-feature/per-requirement decisions with pros-cons.

⚠️ Common Mistakes (the marked don’ts)

  • đź’ˇ Restating principle definitions âž” don’t list SOLID as subheadings and force features under each (the classic LLM pattern) — instead say why this feature needs this principle / what design smell it fixes.
  • đź’ˇ Describing, not justifying âž” “we made an abstract Character with 5 subclasses” repeats the diagram; add the reason (e.g. shared attributes âž” DRY) and an alternative (interface) with its trade-off.
  • đź’ˇ Vague / subjective words âž” “beautiful”, “great way”, “easily”, “because it works” carry no argument — be sharp and objective; abbreviate principles (SRP, OCP…).
  • đź’ˇ Personal preference âž” “I made this interface because I think it suits” is not a rationale; argue from goals + principles + smells.
  • đź’ˇ Over-future-proofing (YAGNI) âž” designing abstract methods for unimplemented features adds needless rigidity; justify against current features and only clearly known next-iteration ones.

đź§  Active Recall