Все эти средства — это дидактические материалы. Т.е. костыли для мозга. Если мозг все понимает без костылей — то они и не нужны.
Они не имеют отношения ни к уровням абстракции, ни к следованию парадигмам, ни к красоте архитектуры, ни к использованию паттернов. Все это можно сделать, написав сразу Си++ заголовок безо всякого UML.
Тем более они не имеют отношения к реальной работоспособности кода.
Лично я использую текстовые файлы, в которых сначала перечисляются главнейшие принципы работы всей системы — типа "а вот этот файл читается всегда только вперед, никакие seeks по нему не допустимы", перечисляются компоненты и их взаимодействие.
Если речь об особо сложной логике, где недопустимы дыры — то она тоже описывается. Описание начинается опять же с продумывания основных постулатов, которые должны соблюдаться во всей этой подсистеме, чтобы будущий код работал правильно. Из них вырабатываются некоторые чисто логические следствия.
Далее пишется уже логика работы системы. Текст с примесью псевдокода. При этом идет слежение, чтобы не нарушались постулаты.
А потом уже можно писать заголовочный и IDL файлы с интерфейсами, правильно откомментированные. Тексты про "постулаты" зачастую вставляются туда же как комментарии.
Но это все для особо сложных вещей. Там, где "и так понятно" — сразу пишется заголовок, с лету. Там мозг работает без костылей.