/c4-1c-example

Пример описания архитектуры системы 1С по модели C4

Primary LanguageASLMIT LicenseMIT

Пример описания архитектуры системы 1С по модели C4

License Stars GitHub issues OpenYellow

Диаграммы как код

Подход является составной частью принципа "Архитектура как код", позволяя создавать несколько диаграмм архитектуры программного обеспечения из единой модели при помощи программных языков моделирования. Одной из таких моделей является C4 (Context Container Component Code). Данный пример реализован на двух программных языках моделирования: DSL Structurizr и PUML.

Модель C4

Модель С4 довольно трудно полноценно использовать для продумывания архитектуры системы. Особенно если мы говорим о архитектуре уровня ERP или, например, доработок типовых конфигураций. Существующие слои предлагается использовать в следующей интерпритации.

  • Исходный код на DSL
  • Исходный код на PUML

L1 - System Context (System Landscape) - Интеграционный ландшафт

Слой, на котором отображается как система взаимодействует с пользователями и другими внешними системами. По умолчанию в системный контекст входят только пользователи и системы, которые непосредственно взаимодействуют с основной системой. Если нам нужно видеть системы и пользователей, которые влияют на систему опосредованно, можно использовать вид System Landscape (Системный ландшафт), в котором будут отображены все системы, описанные в модели. Описание кода L1

Пример диаграммы системного контекста сгенерированной Structurizr

image

Пример диаграммы системного контекста сгенерированной PlantUML

image

Пример диаграммы системного ландшафта сгенерированной Structurizr

image

Пример диаграммы системного ландшафта сгенерированной PlantUML

image

L2 - Container - Подсистемы

В рамках описания архитектуры системы на платформе 1С контейнерами предлагается считать подсистемы конфигурации. При наличии большого количества подсистем и отсутствия требований к описанию каждой подсистемы можно объединять их в блоки (например, все подсистемы БСП в одном контейнере). Описание кода L2

Пример диаграммы контейнеров (подсистем) сгенерированной Structurizr

image

Пример диаграммы контейнеров (подсистем) сгенерированной PlantUML

image

L3 - Component - Объекты конфигурации

На слое компонентов детализируется состав объектов в подсистеме и описывается их взаимодействие. Компонентом является объект метаданных. Описание кода L3

Пример диаграммы компонентов (объектов) сгенерированной Structurizr

image

Пример диаграммы компонентов (объектов) сгенерированной PlantUML

image

L4 - Code - Код/Структуры данных

Не используется, но можно на этом уровне сделать принципиальное описание структуры общих модулей или ER-диаграммы объектов из слоя компонентов.

Описание кода L4

Дополнительные инструменты визуализации диаграмм

В случае описания небольшой системы/подсистемы можно использовать Mermaid - инструмент для визуализации диаграмм, ренедринг которого поддерживается напрямую в GitHub. Синтаксис похож на PUML с некоторыми отличиями и ограничениями.

C4Context
title Example 1C C4 - System Context

Person(SystemUser1, "Пользователь-исполнитель")
Person(SystemUser2, "Пользователь-руководитель")
System(System1C, "Система на платформе 1С")
System(OtherSystem1, "Внешняя система 1")
System(OtherSystem2, "Внешняя система 2")

Rel(OtherSystem1, System1C, "Передача данных по НСИ", "AMQP")
Rel(System1C, OtherSystem2, "Передача остатков по складам", "HTTPS")
Rel_D(SystemUser2, System1C, "Смотрит отчеты")
Rel_U(SystemUser1, System1C, "Вводит данные")

Loading

Заимствования

1ce-icons-for-plantuml