A technique used during planning, analysis and design; creates a functional hierarchy for the software.