3. TwoWaysToDesign
Design before dev.
● Assumes requirements
are stable
● Implies design is the job
of a designer
● Can take a long time
● Makes designer think
ahead
Design during dev.
● Assumes requirements
will change a lot
● Design is the job of the
programmers
● Is real time
● Focuses on current
needs
5. TestDrivenDevelopment
● Write one test that
describes a new
behavior
● Add the minimum of
code to make it pass
● Improve design by
refactoring code and
tests
8. BeinFlow
● What's the next
behavior?
● What's the minimum
change to implement
it?
● What's the right
design?
9. TwoMainDifficulties
● Think at the problem, not the solution
– Problem: I want to play TicTacToe
– Solution: We need four classes and a main method
● Proof-based design
– Proof-based: I see duplication, remove it by
creating a class
– Assumption based: I will need a Game class
13. BehaviorSlicing
●
Identify Input and Output
●
Specify behaviors: input –
action – output
●
Simplify: Identify first
increment of the problem
●
Order behaviors so that only
one thing changes