Ответ 1
Я не знаю каких-либо существующих ресурсов, которые обсуждают использование UML специально для C. Как упоминали другие, UML является агностическим языком.
Имейте в виду, что с UML у вас может быть модель для проблемного домена, а другая для реализации. Старайтесь не моделировать проблемную область с точки зрения C, а скорее как OO высокого уровня. Как только вы достаточно хорошо поймете проблему, вы можете начать моделирование реализации.
Для моделирования реализаций C процедурного стиля могут быть полезны следующие диаграммы:
- Диаграмма классов:
- Показать API-интерфейсы модуля C
- Показать отношения модуля C (в основном зависимости для не-OO)
- Показать структуры и перечисления (используя < стереотип → )
- Диаграмма пакетов: Показать содержимое (модули) библиотек и зависимости между библиотеками
- Диаграмма действий: нетривиальные алгоритмы блок-схемы
- Диаграмма последовательности/совместной работы: Покажите, как события/сообщения между модулями/сущностями/входами/выходами происходят во времени
- Диаграмма состояния: для конечностей, конечно!
Развернув диаграммы классов, вы можете "оскорбить" их следующим образом для процедурного стиля C:
- Глобальные внешние функции → общедоступные методы
- Локальные статические функции → частные методы
- Глобальные внешние переменные → публичные участники
- Локальные статические переменные → частные члены
- Структуры → класс со стереотипом "struct"
-
#define
константы → класс с стереотипом "перечисления"
Эксперимент, и вы найдете свои собственные соглашения о злоупотреблении UML.