Модель С4 архитектуры программного обеспечения

С4 - Context, Containers, Components and Code

Модель C4 - достаточно новая и простая архитектурная модель для проектирования системы. Работает по принципу масштабирования картинки. То есть, увеличиваем масштаб - увеличиваем детализацию схемы.

Модель предназначена для архитекторов и разработчиков. Также верхний уровень модели подходит для демонстрации заказчикам.

Модель описывает систему и её окружающий контекст (пользователи и внешние приложения), состоящую из контейнеров (основные подсистемы), каждый из которых содержит один или несколько компонентов, которые, в свою очередь, реализуются с помощью одного или нескольких кодовых элементов.

Как и многие архитектурные шаблоны, Модель С4 не разрабатывалась с прицелом на платформу 1С:Предприятие. В данной статье попробуем применить С4 для верхнеуровнего описания некоторой программной системы.


"Модель C4 была создана чтоб помочь командам разработчиков программного обеспечения описывать и обсуждать архитектуру решений. Её можно использовать как во время начальных сессий проектирования, так и при ретроспективе существующих решений. Это способ создания карт вашего кода на разных уровнях детализации." (с) Максим Смирнов

Основные структурные диаграммы



Уровень 1 - Контекст-диаграмма (System context)

 

Это самый верхний уровень, общая картинка. Тут идет рассказ в разрезе систем и пользователей системы. Рисуем диаграмму, где наша система в центре в окружении пользователей и других систем с которыми она взаимодействует.

Описываем кратко суть взаимодействия.

Детали здесь не важны, так как это уменьшенный вид, показывающий общую картину системного ландшафта. Основное внимание следует уделять людям (ролям, профилям и т.п.) и программным системам, а не технологиям, протоколам и другим деталям низкого уровня.

Это та диаграмма, которую можно показать бизнес-заказчику для описания системы.

1. Какую систему мы создаем? 

2. Кто её использует? 

3. Как она вписывается в существующую среду?

Уровень 2 - Контейнер-диаграмма (Container)

 

Раскладываем нашу систему на предыдущей диаграмме на составляющие - контейнеры.

Container - это архитектура высокого уровня где определены функции каждого контейнера. Она также показывает основные технологические решения и способы взаимодействия контейнеров друг с другом. Это простая, высокоуровневая технологическая диаграмма, которая полезна для разработчиков программного обеспечения и сотрудников службы поддержки.

Примеры «контейнеров» - серверное веб-приложение, настольного приложения, мобильного приложения, базы данных, файловая система, сервера приложений.

Для проектирования на 1С, предлагаю в качестве контейнеров отображать непосредственно физические базы данных, сервер приложений 1С,

На этом уровне также возможно отображение подсистем конфигурации 1С или функциональных модулей (под подсистемами тут понимаем прежде всего логический уровень, то есть необязательно соответствие конкретным подсистемам дерева метаданных). Функциональные модули (блоки), например, "Подсистема учета ОС", "Рабочее место руководителя", "Подсистема интеграции", "Подсистема ИБ" и т.д.

В случае, когда база одна, отображение баз можно опустить и отображать только подсистемы.

1. Каков общий вид программной среды? 

2. Каковы технологические решения высокого уровня? 

3. Как функциональные блоки выделены в системе (если отображаем их здесь)? 

4. Как контейнеры взаимодействуют друг с другом?

Уровень 3 - Компонент-диаграмма (Component)

Увеличиваем масштаб и раскладываем каждый контейнер, чтобы определить основные структурные блоки и их взаимодействие.

Диаграмма Component показывает, что контейнеры состоят из нескольких «компонентов»; для каждого из этих компонентов показывается их назначение и детали технологии/реализации.

В случае, если на уровне контейнер диаграммы не отображались подсистемы и функциональные модели 1С - то они проектируются на данном уровне.

Для компонент-диаграмм возможно отображение компонент второго уровня - субкомпонент.

Например:

·         Компонент-уровень - это подсистемы 1С

·         Субкомпонент - это справочники, документы и т.п. для данной подсистемы

Для 1С - возможно отображение на данном уровне непосредственно объектов-таблиц структуры метаданных 1С - то есть, справочники, документы, регистры.

1. Из каких компонент состоит система и функциональные блоки? 

2. Есть ли понимание, как система работает на верхнем уровне (high-level design) в разрезе справочников, документов, регистров

3. Все ли компоненты имеют привязку к контейнерам?

Уровень 4 - Код (Code, Class)

Самый нижний необязательный уровень.

Применительно к 1С на этот уровень возможен перенос субкомпонент из предыдущего слоя.

Также имеет смысл отображать на этом уровне, например, описания веб-сервисов, описания как-либо значимых алгоритмов и т.п. Не стоит пытаться описать все - только самое значимое.

Дополнительные диаграммы



Общая схема ландшафта системы (System Landscape diagram)

Модель C4 обеспечивает статическое представление программной системы, но в реальном мире программные системы никогда не живут изолированно. По этой причине, особенно если вы отвечаете за набор программных систем, часто полезно понять, как все эти программные системы сочетаются друг с другом в рамках предприятия. Для этого просто добавляем еще одну диаграмму, расположенную «сверху» диаграмм C4, чтобы показать системный ландшафт с точки зрения ИТ. Как и диаграмма System Context, эта диаграмма может показать организационную границу, внутренних / внешних пользователей и внутренние / внешние системы.

По сути, это высокоуровневая карта программных систем на уровне предприятия с разверткой C4 для каждой интересующей программной системы. С практической точки зрения системная ландшафтная диаграмма - это на самом деле просто системная контекстная диаграмма без особого внимания к конкретной программной системе.

1.     Область применения: предприятие в целом

2.     Основные элементы: люди и программные системы, связанные с предприятием по объему.

3.     Целевая аудитория: технические и нетехнические люди, как внутри, так и вне группы разработки программного обеспечения.

Диаграмма последовательности (Dynamic diagram)

Это широкого распространенная диаграмма последовательности UML (sequence diagram).

С помощью данной диаграммы возможно не только отображение интеграционных потоков, но и взаимодействие потоков данных (и/или передача управления) между объектами метаданных 1С, между программными модулями и т.п.

1.     Область применения: предприятие, система программного обеспечения, контейнеры и компоненты.

2.     Основные и вспомогательные элементы: зависит от области действия диаграммы; предприятие (см. схему системного ландшафта), программный комплекс (см. схемы системного контекста или контейнера), контейнер (см. диаграмму компонентов).

3.     Целевая аудитория: технические и нетехнические люди, как внутри, так и вне группы разработки программного обеспечения.

Диаграмма развертывания (Deployment diagram)

Диаграмма развертывания позволяет показать, как контейнеры в статической модели отображаются в инфраструктуре компании.

1.     Область применения: система программного обеспечения.

2.     Основные элементы: узлы и контейнеры развертывания в программной системе в области видимости.

3.     Целевая аудитория: технические специалисты внутри и за пределами команды разработчиков программного обеспечения; в том числе архитекторов программного обеспечения, разработчиков и эксплуатационного / вспомогательного персонала.

Использование других описаний архитектуры совместно с С4

Модель С4 успешно применяется совместно с UML (sequence diagram, deployment diagram, activity diagram).

Также С4 может применяться с архитектурным шаблоном arc42 (http://faq.arc42.org/home/)

Форма обратной связи

NULL
Следующее решение
Прогнозирование спроса и оптимизация логистики