Это интересный вопрос (я проголосовал за него), я ожидаю, что вы получите по крайней мере столько же мнений, сколько и ответов. Вот мой вклад:
Что вы хотите изобразить на своих диаграммах? В ОО один ответ на этот вопрос может быть, учитывая диаграммы классов, состояние (или атрибуты, если вы предпочитаете) и методы. Поэтому, очевидно, я бы предложил, чтобы диаграммы классов не были правильными для начала, поскольку функции не имеют состояния и, как правило, реализуют одну функцию (или метод). Какие-нибудь другие диаграммы UML обеспечивают лучшую отправную точку для вашего мышления? Ответ, вероятно, да , но вам нужно подумать о том, что вы хотите показать, и найти эту отправную точку самостоятельно.
После того как вы написали (под) систему на функциональном языке, у вас есть (UML) компонент для представления на стандартных видах диаграмм, но, возможно, это слишком высокоуровневый, слишком абстрактный для вас .
Когда я пишу функциональные программы, что не так много, я признаю, я склонен документировать функции так же, как я бы документировал математические функции (я работаю в научных вычислениях, много математики разбегается, поэтому для меня это вполне естественно). Для каждой функции я пишу:
ID;
иногда описание;
спецификация домена;
спецификация совместного домена;
формулировка правила, то есть операция, которую выполняет функция;
иногда я также пишу постусловия, хотя они обычно адекватно определены в совместной области и правиле.
Я использую LaTeX для этого, это хорошо для математической записи, но подойдет любой другой достаточно гибкий текстовый или текстовый процессор. Что касается диаграмм, то не так уж и много. Но это, вероятно, отражение примитивного состояния проектирования систем, которые я программирую функционально. Большая часть моих вычислений выполняется на массивах чисел с плавающей запятой, поэтому большинство моих функций очень просто составить ad-hoc , а структурирование системы очень слабое. Я представляю диаграмму, на которой функции показаны как узлы, а входы / выходы - как ребра между узлами - в моем случае в большинстве случаев между каждой парой узлов будут ребра. Я не уверен, что рисование такой диаграммы мне бы вообще помогло.
Кажется, я склоняюсь к тому, чтобы сказать вам, нет, UML не является разумным способом моделирования функциональных систем. Является ли это обычным, так скажет нам.