Материалы после выступления на TechMeetup 7 System analysis МТС Финтех.

Чеклист для проверки архитектурных диаграмм

Несколько правил для проверки своей архитектурной диаграммы.

Общие вопросы которые стоит себе задать

  • У диаграммы есть заголовок?
  • Понятно, к какому типу относится диаграмма, что она показывает?
  • Понятен ли уровень и скоуп диаграммы?
  • У диаграммы есть легенда / расшифровка обозначений?

Как проверить элементы диаграммы

  • У каждого элемента есть название?
  • Понятен ли тип каждого элемент (уровень абстракции)?
  • Понятно, что делает каждый элемент?
  • Понятна ли технология, связанная с элементом? (если применимо на данном уровне абстракции)
  • Понятен ли смысл всех аббревиатур и сокращений?
  • Понятен ли смысл всех цветов элементов?
  • Понятен ли смысл всех форм элементов?
  • Понятен ли смысл всех иконок?
  • Понятен ли смысл линий границ элементов? (сплошная, пунктирная…)
  • Понятен ли смысл размеров элементов?
  • Понятен ли смысл группировки элементов?

Связи и отношения

  • У каждой лини есть подпись, объясняющая смысл связи?
  • Для каждой связи понятна технология, при помощи которой эта связь реализуется? (например, протокол; если применимо на данном уровне абстракции)
  • Понятен ли смысл всех аббревиатур и сокращений на диаграмме?
  • Понятен ли смысл всех цветов элементов?
  • Понятен ли смысл всех типов стрелок?
  • Понятен ли смысл всех типов линий? (сплошная, пунктирная…)

Инструменты

  • diagrams.net (ex. draw.io) Набор фигур с4. Тип: Онлайн
  • drawio-desktop Набор фигур с4. Тип: Онлайн
  • PlantUML позволяет генерировать UML-диаграммы из текста. Тип: Онлайн/Офлайн

Описание элементов

Зоны ответственности

В ходе выполнения моделирования, разграничиваются зоны ответственности. Так, компоненты системы исполняемые на стороне команды помечаются синим цветом, а задачи исполняемые сторонней командой маркируются серым цветом.

c4 диаграммы

Элементы

c4 Человек Человек

Используется для представления одного из пользователей вашей программной системы (например, ролей, персонажей и т.д.).c4Name: указывается роль участникаc4Description: указывается описание роль участника  

Программная система Программная система

Используется для описания программной системы. Программная система — это высший уровень абстракции и описывает то, что приносит пользу ее пользователям, независимо от того, являются они людьми или нет. Это включает в себя программную систему, которую вы моделируете, и другие программные системы, от которых зависит ваша программная система (или наоборот).c4Name: указывается название системыc4Description: указывается описание программной системы

Контейнер Контейнер

Используется для описания контейнера. Контейнер — это, по сути, контекст или граница, внутри которой выполняется некоторый код или хранятся некоторые данные.c4Name: указывается название контейнераc4Description: указывается описание контейнераc4Technology: указывается список технологий, используемых внутри контейнера  Хранилище данных

Хранилище данных

Используется для представления хранилища данных на схемеc4Type: указывается название хранилища данныхc4Description: указывается описание хранилища данныхc4Technology: указывается список технологий, используемых внутри хранилища данных Шина данных

Шина данных \ брокер

Используется для описания сервисной шины – связующего программного обеспечения, обеспечивающего централизованный и унифицированный событийно-ориентированный обмен сообщениями между различными информационными системами на принципах сервис-ориентированной архитектуры.c4Type: указывается название сервисной шиныc4Description: указывается описание сервисной шиныc4Technology: указывается список технологий, используемых внутри сервисной шины

Компонент

Компонент

Используется для описание компонента, представляющего собой группу связанных функций, инкапсулированных за четко определенным интерфейсом.c4Name: указывается название компонентаc4Description: указывается описание компонентаc4Technology: указывается список технологий, используемых внутри компонента

WEB-интерфейс

WEB-интерфейс Используется для изображения web — интерфейсаc4Type: указывается название web — интерфейсаc4Description: указывается описание web — интерфейсаc4Technology: указывается список технологий, используемых внутри web — интерфейса

Микросервис

Микросервис

Используется для изображения микросервисаc4Type: указывается название микросервисаc4Description: указывается описание микросервисаc4Technology: указывается список технологий, используемых внутри микросервиса

Связь Связь

Используется для указания взаимосвязей между компонентами схемыc4Description: указывается описание связи

Связь с описание технологии

Связь с описание технологии

Используется для указания взаимосвязей между компонентами схемы с указание конкретных технологийc4Description: указывается описание связиc4Technology: указывается список технологий, используемых связью

Наименования связей

c4 название связей элементов

Размер элементов

При моделировании системы необходимо сохранять единый размер для всех элементов

Размер элементов с4

Mock-объект

Для указание mock-объекта на схеме используется существующий элемент модели, с прозрачным фоном и заштрихованным контуром

c4 Mock-объект

Почему разработчики не хотят читать требования и не понимают постановку задачи?

Чаще всего это случается из-за отсутствия этапа проектирования после разработки требований и до их реализации. Устранить этот разрыв можно с помощью архитектурного проектирования ИС в нотации C4. Она намного проще UML, но охватывает гораздо больше вопросов проектирования. 

Эта простая, но очень эффективная нотация позволяет наглядно показать, кто и зачем будет пользоваться системой, как она работает в разных контекстах и из чего она состоит. Вы сможете представить не только саму систему, но и её важные инфраструктурные части для обеспечения высокой производительности, масштабирования и надежности, с чем UML справиться не может!

Умение строить диаграммы C4 полезно аналитикам, занимающихся проектированием системы и тем, кто хочет научиться это делать с учетом лучших архитектурных паттернов и инфраструктурных практик. 

Полезные материалы