Basic Techniques
Customer leads while developer learns, organizes, disciplines
- helps surface ambiguity, inconsistency, incompleteness
Interviews, investigations, questionnaires
- state questions before answering them
- don't let available information prejudice
- separate concerns
Develop glossaries to aid communication
Describe in a (semi-)formal notation (possibly just formatted)
Hierarchical decomposition
System modeling (Dataflow Diagrams, Entity-Relationship Diagrams, Petri nets, State charts, etc.)