Для построения функциональной иерархии мы берем иерархию вариантов использования
и выкидываем все ручные шаги (действия людей), тогда остаются или декомпозируемые функции или атомарные шаги-задачи.
Проблема только в том, что один ВИ может включаться в несколько других, тогда или поднимаем его на уровень выше или произвольно включаем в одну из ветвей функциональной иерархии. Так как важен, в основном, только список задач (функциональных требований) с их подробным описанием.
это очень близко моему опыту:
функциональные требования к разрабатываемой системе уровня пользователей (использование системы)
- однозначно в ВИ,
далее по ним - строю функциональные требования системного уровня,
а именно так:
собираю все строки сценариев, начинающиеся "Система(в ответ на пред-й шаг пользователя)...чего-то делает"
НО! Строю по ним ДРУГУЮ, логичную с т.зр. зависимостей функций, без учёта логики работы отдельных пользователей.
кроме того, что один ВИ может включаться в другой,
так и одна системная функция может обеспечивать(реализовывать) несколько разных шагов из различных сценариев и даже различных ВИ.
к примеру, один и тот же диалог просмотра данных по Клиету может использовать как Оператор контакт-центра,
так и Менеджер, изменяющий статус Клиента. Каждый - в своих, совершенно разных, ВИ.
за выходные или на след неделе выложу соответствующее продолжение в тему об управлении требованиями.