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