Iterative design overcomes inherent problems of incomplete requirements
Prototypes
simulate or animate some features of intended system
different types of prototypes
throw-away
incremental
evolutionary
Management issues
time
planning
non-functional features
contracts