Пример
Рассмотрим простой пример - проект design развития электронной торговли. Он подготовлен для демонстрации основных возможностей протокода.
Ниже приведена интерактивная модель - наиболее очевидный и наглядный результат проектирования.
Касаясь элементов на дигарамме, можно переместиться с верхнего уровня основных моделей проекта, до уровня отдельных сущностей, сценариев, изменений, релизов, сервисов и стереотипов.
Каждый элемент модели может иметь несколько ракурсов (обзор, подробно и т.п.), а так же временных срезов для разных этапов развития (онлайн-каталог > прототип > запуск)
Интерактивная модель состоит из сотен связанных между собой диаграмм (UML, C4 и др.), которые генерируются автоматически (PlantUML) на основании единого лаконичного описания проекта на протокоде. Интерактивная модель позволяют увидеть проект в динамике и на всех уровнях.
Кроме диаграмм, модель включает в себя генерацию (SSG) документации (Docusaurus) с описаниями элементов модели (Markdown) и фрагментов на протокоде (snippet).
Ниже, сделав несколько простых шагов, вы узнаете как был получен этот результат и сможете применить протокод для своих проектов.
Предметная область
Предположим, что у нас есть исходное верхнеуровневое представление об ограниченных контекстах context и действующих лицах actor предметной области domain.
Ограниченные контексты
Контексты называются ограниченными, потому что внутри них все термины имеют однозначное определение, а соответствующие им понятия тесно связаны между собой (high cohesion).
Это позволяет уменьшить сложность решения, избежать хаоса (dependency hell) и реализовать такие контексты как отдельные, слабосвязанные между собой (low coupling) системы, подсистемы или сервисы проектируемого решения. Таким образом, каждый контекст может иметь свой цикл разработки и план поставки, отдельные задачи, возможно, выделенную команду и владельца продукт а, бюджет и план развития.
Кроме этого, контексты ограничены с точки зрения объема и целей проекта - в них не входят понятия предметной области, которые не относятся к данному решению.
- Протокод
- Описание
design Развитие электронной торговли {
domain Электронная торговля {
context Управление идентификацией и доступом
context Управление витринами
context Управление заказами
..
}
}
Рассмотрим для примера предметную область электронной торговли, в которой выделим (всего несколько) и ограничим (для демонстрационных целей) следующие контексты:
- Управление идентификацией и дост упом;
- Управление витринами;
- Управление заказами;
- ..
Вместе с названием caption элемента модели можно указать его имя name и описание description.
Имена формируют пространство имен как для проекта, так и для реализации. Описания дают словесные определения всем используемым терминам предметной области. Так создается общий язык (ubiquitous language) для всех действующих и заинтересованных лиц (пользователей, экспертов, заказчиков, команд разработки и других участников проекта).
Контексты хотя и отделены друг от друга, тем не менее, они связаны и могут использовать @ use друг друга, создавая зависимости.
- Протокод
- Диаграмма
- Описание
domain ECommerce | Электронная торговля: "дистанционная торговля в сети Интернет" {
context IAM | Управление идентификацией и доступом: "единый вход и регистрация"
context SM | Управление витринами: "предложение и выбор товаров" {
@ use Персонализация (IAM): "для персонализации витрин и стимулирования покупателей"
}
context OM | Управление заказами: "оформление, отмена и возврат выбранных товаров" {
@ use Корзина (IAM): "для получения выбранных товаров"
@ use Профиль (IAM): "для получения данных покупателя"
}
..
}
Электронная торговля - дистанционная торговля в сети Интернет
- Управление идентификацией и доступом (IAM) - единый вход и регистрация;
- Управление витринами(SM) - предложение и выбор товаров;
- использует IAM для персонализации витрин и стимулирования покупателей
- Управление заказами(OM) - оформление, отмена и возврат выбранных товаров;
- использует IAM для получения данных покупателя
- использует SM для получения выбранных товаров (корзины)
- ..