Growing Object-Oriented Software, Guided by tests
programming
dev practice
tdd
Problem domain vs solution domain.
Video game example. Problem: actors, scene, effects… Solution: renderer, animator, collision detector…
An object is an implementation of one or more roles; a role is a set of related responsibilities; a responsibility is an obligation to perform a task or know information.
CRC cards: candidate, responsibilities, collaborators
…nothing forces us to understand a process better than trying to automate it.
- Understand the problem
- Broad-brush design
- Automate: build, deployment, end-to-end test
- ATDD-TDD cycle
Walking skeleton.