Software Design in the Lifecycle (FIT2099)
Context: FIT2099_MOC Β· where design sits in the broader development process Β· answers when and why to design (the how is separate)
Quick Revision
- π― Objective: locate design between requirements (what to build) and implementation (the build) β design answers βhow should we build it?β
- β‘ Key Constraint: the neat phase boxes are misleading β requirements/analysis/design overlap heavily in practice; and per Lean you should decide as late as responsibly possible so choices rest on fact, not speculation.
π The lifecycle (Waterfall recap)
- Five phases β Requirements (βwhat should we build?β, β requirements doc) β Design (βhow should we build it?β, β architecture) β Implementation (β software) β Verification β Maintenance.
- Analysis between β a realistic refinement inserts Analysis (βwhat do the requirements mean?β) between Requirements and Design.
- Overlap is real β hard to separate requirement elicitation from analysis, or understanding the domain from modelling it; the boxes are a simplification.
β±οΈ Just-in-time, just-enough design (Lean)
- Origin β Toyotaβs 1970s just-in-time manufacturing; absorbed into Lean/Agile.
- 7 Lean principles β eliminate waste Β· amplify learning Β· decide as late as possible Β· deliver as fast as possible Β· empower the team Β· build integrity in Β· optimise the whole.
- Decide as late as possible (#3) β the longer you wait to commit, the more information you have; the earlier you commit, the less flexible you are. Best decisions rest on fact, not speculation.
π― When to do conscious (deliberate) design
- Project inception β architectural big decisions β hard/expensive to change, so get them right early (e.g. a VR systemβs client/server/view layering).
- Before something complex or risky β design ahead of a tricky implementation.
- When refactoring β the design may have been bad from the start, or was good and decayed β see Refactoring (Java).
- Unconscious design β the opposite: code shaped by unexamined earlier commitments (e.g. treating a
Dictionaryas a list with index loops) β needlessly complex.
β οΈ Common Mistakes
- π‘ Diagrams are a means, not the end β the goal is a good design and a shared understanding in the heads of stakeholders (designers, implementers, maintainers, reviewers, client-code users). Documents/diagrams only serve that β they are not objectives in themselves.
- π‘ Deciding too early β premature commitment locks in choices before the facts are in (violates Lean #3) and breeds rework.
π§ Active Recall
Why does Lean say "decide as late as possible" β isn't deciding early more organised?
Answer
- Short answer: information accumulates over a project; deferring a commitment until the last responsible moment means the decision is made on fact rather than speculation, and keeps options open.
- Why: Flexibility cost β early commitment reduces flexibility and raises the chance of costly reversal; late (but not too late) commitment optimises the information-vs-flexibility trade-off.