Для рішення задачі функціонального моделювання на базі структурного аналізу традиційно застосовуються два типи моделей: SADT-діаграми і діаграми потоків даних.
DFD - показують зовнішні джерела і стоки даних, визначають процеси обробки і потоки даних, ідентифікують сховища даних (накопичувачі). Структура потоків даних зберігається в Словнику даних. Будь-яка DFD може бути деталізована DFD нижнього рівня і т.д. поки доцільна деталізація. У випадку наявності в модельованій системі програмної/програмувальної частини (тобто практично завжди) перевага, як правило, віддається DFD по наступним розуміннях.
1) DFD із самого початку створювалися як засіб проектування програмних систем (тоді як SADT - як засіб проектування систем узагалі) і мають більш багатий набір елементів, що адекватно відбивають їхню специфіку (наприклад, сховища даних є прообразами файлів чи баз даних).
2) Наявність міні-специфікацій DFD-процесів нижнього рівня дозволяє перебороти логічну незавершеність SADT (а саме обрив моделі на деякому досить низькому рівні, коли подальша її деталізація стає безглуздою) і побудувати повну функціональну специфікацію розроблювальної системи.
3) Існують (і підтримуються поруч CASE-пакетів) алгоритми автоматичного перетворення ієрархії DFD у структурні карти, що демонструють міжмодульні і внутрімодульні зв'язки, а також ієрархію модулів, що в сукупності з міні-специфікаціями є завершеним завданням для програміста.
Нарешті, у частині автоматизованої підтримки моделей приблизно 85-90% існуючих CASE-пакетів підтримують DFD і лише 2-3% - SADT.