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