Unit 18 · lesson
Defend the System You Actually Built
The design defense is not a sales pitch.
You are not trying to convince the reviewer that your project is amazing. You are showing that you understand the decisions, evidence, and limitations of the system you actually built.
Five-minute defense structure
1. Problem and user
In 30-45 seconds:
Who is the user?
What problem does the program solve?
What is intentionally out of scope?
2. Architecture
Show one diagram.
Explain the responsibilities of the major components and the direction of dependencies.
Do not read every class name. Explain why the boundaries exist.
3. Data and object model
Defend:
- primary collection/data structure;
- key class/record choice;
- one invariant;
- interface/composition decision;
- inheritance use or rejection.
4. Validation evidence
Show the test matrix and one passing normal/boundary/invalid case.
If you used JUnit 6, show runner evidence. If you used the browser core, show the deterministic harness and say so plainly.
5. Failure and revision
This is the strongest part of the defense.
Show:
Version 1 failure
first divergent state
root cause
controlled Version 2 change
regression result
A real failure you can explain demonstrates more engineering understanding than pretending development was flawless.
6. Limitation and next experiment
Name one limitation and one specific next test or design change.
Do not finish with "I would add more features." Name the evidence gap you would close.
Be ready for challenge questions
Examples:
- Why a
Mapinstead of aList? - What happens with empty input?
- Where is invalid state blocked?
- Why is this an interface?
- What would break if this implementation changed?
- Why did you use composition here?
- What proves the bug is fixed beyond one input?
- Which part did you not test in the browser environment?
- Where would the design become difficult to scale?
If you cannot answer, say what evidence you would inspect. Do not invent behavior.
Final architecture check
Before presenting, remove claims your evidence does not support.
Examples:
- "works on every computer";
- "secure" with no threat model;
- "handles any file" after testing one fixture;
- "fully tested" with only happy paths;
- "fast" without measurement.
Use precise claims:
Version 2 passed the 12-case matrix shown here in the Java 25 environment used for this project.
That is defensible.
Final artifact
Package the code and dossier so another person can follow the evidence chain without relying on your memory.
The project is complete when its decisions and validation are inspectable, not when the last slide looks polished.