Intereting Posts
popen () / fgets () прерывает вывод неполного вывода c передать массив по значению? программа для поиска суммы цифр Ссылка сервера Gstreamer rtsp в Qt Creator C возвращающий массив в функции «Присваивание делает целое число от указателя без приведения» при назначении символов в массивы индивидуально Как изящно реализовать ряд функций в версиях разных типов, используя чистую C? Что такое выражения с побочными эффектами и почему они не должны передаваться макросу? Почему не возвращать значение параметра в функцию Установите прецизионные и зацепляющие нули, но никогда не печатайте экспоненту Есть ли простая параллель для golang, например OpenMP? Какова цель этой линии? (Объявление функции) Инструмент для сканирования комментариев кода и конвертация в стандартный формат strncpy, приводящий к ошибке сегментации Динамическое умножение матрицы с помощью Pthreads

UML для языка программирования C

UML чаще всего используется для моделирования системы с использованием C ++. В моих проектах C – это язык реализации. Я ищу ресурсы для UML-страtagsй, которые применимы для C. Я хочу использовать UML во время проектирования и представлять различные аспекты системы.

Я не знаю каких-либо существующих ресурсов, которые обсуждают использование UML специально для C. Как отмечали другие, UML является языковым агностиком.

Имейте в виду, что с UML у вас может быть модель для проблемного домена, а другая для реализации. Старайтесь не моделировать проблемную область с точки зрения C, а скорее как OO высокого уровня. Как только вы правильно поймете проблемную область, вы можете начать моделирование реализации.

Для моделирования C-реализации процедурного стиля могут быть полезны следующие диаграммы:

  • Диаграмма classов:
    • Показать API-интерфейсы модуля C
    • Показать отношения модуля C (в основном зависимости для не-OO)
    • Показать структуры и enums (используя <<стереотип>>)
  • Диаграмма пакетов: Показать содержимое (модули) библиотек и отношения зависимостей между библиотеками
  • Диаграмма деятельности: нетривиальные алгоритмы блок-схемы
  • Схема последовательности / совместной работы: покажите, как события / сообщения между модулями / сущностями / входами / выходами происходят во времени
  • Диаграмма состояния: Конечно, для государственных машин!

Расширяя диаграммы classов, вы можете «злоупотреблять» ими следующим образом для процедурного стиля C:

  • Глобальные внешние функции -> общедоступные методы
  • Локальные статические функции -> частные методы
  • Глобальные внешние переменные -> публичные члены
  • Локальные статические переменные -> частные члены
  • Structs -> class со стереотипом “struct”
  • #define константы -> class с “перечислением” стереотипа

Эксперимент, и вы найдете свои собственные соглашения о злоупотреблении UML.

Проблема с C заключается в том, что это скорее процедурный язык программирования. Его сложнее получить мелкозернистый дизайн с применением C. Если вы работаете с C, вы можете придерживаться диаграмм последовательности и диаграмм компонентов, поскольку они описывают и просматривают происходящее, а не график зависимости и взаимодействия.

Объектно-ориентированный дизайн не зависит от языка, и вы можете, конечно, создать свою систему с помощью UML. Некоторые инструменты, такие как Rhapsody, также позволят генерировать код и круговое отключение, мы используем для некоторых специальных проектов, где C ++ не является вариантом. Если вы хотите написать свой код вручную, используйте некоторое соглашение об именах, такое как Subsystem_Module_Class_Method, чтобы назвать ваши функции объектно-ориентированным способом и использовать .c файл для каждого classа. Использование C не является препятствием для создания чистой конструкции.