Использование ArchiMate в разработке нового программного продукта
Наш коллега Александр Тетеркин, системный архитектор отела Сервиса и Консалтинга подготовил статью, в которой поделился своим опытом использования языка моделирования в области разработки нового программного продукта.
В своей статье Саша описывает основные принципы и компетенции ArchiMate в разработке нового программного продукта, говорит про репозитории корпоративной архитектуры, технологическую инфраструктуру и поведение приложений, и еще много всего полезного.
«Я c 2016 года изучаю ArchiMate в контексте Enterprise Architecture (Архитектуры Предприятия), но так как в нашей компании он еще не принят как стандарт, обучение происходит в основном в свободное от работы время или в немногие часы, выделяемые мной на самообразование (у нас можно договориться с руководством и изучать, что нравится). Постепенно я начинаю все больше и больше применять полученные диаграммы в повседневной работе.
Первый раз я узнал про ArchiMate от Анатолия Левенчука (есть такой известный в узких кругах человек), научного руководителя «Школы системного менеджмента», директора по исследованиям русского отделения Международного совета по системной инженерии, INCOSE). Тогда меня поразила простота ArchiMate, его однозначность и красота. К тому же ArchiMate был создан в той же The Open Group, создавшей стандарт Архитектуры Предприятия TOGAF, дополняющий методику и инструментарий TOGAF лаконичным визуальным языком описания ArchiMate.
Описание принципов и концепций
Я не буду вдаваться в основы ArchiMate. Про них можно почитать здесь (The Most Useful ArchiMate Diagram Types) и здесь
(What is ArchiMate?). Перейду сразу к примерам. К тому же ArchiMate настолько прост, что имея под рукой только «легенду» (см. любую диаграмму) легко разобраться, даже если видишь диаграмму впервые.
ArchiMate хорош тем, что им можно описать и Стратегию развития предприятия, и Бизнес процессы, и связанные с ними Приложения, и связанные с приложениями Инфраструктурные сервисы, а еще важнее: показать все это вместе и по отдельности, как будет удобно и понятно вам и заказчику.
В ArchiMate можно описывать даже концепции. Вот пример концепции DevOps (можете повесить себе на стенку, кому понравится):
Диаграмма Основных Концепций DevOps
Зная назначение элементов (см. диаграмму), легко выражать собственные концепции и идеи в визуальной форме, понятной большинству.
Дополнительно приведу описания элементов здесь:
- Цель – Общее утверждение о намерении, направлении или конечном состоянии организации и участвующих сторон.
- Ресурс – Ресурс представляет собой актив, принадлежащий или контролируемый физическим лицом или организацией.
- Бизнес-процесс – Бизнес-процесс представляет собой последовательность бизнес-поведения, которая достигает определенного результата, такого как определенный набор продуктов или бизнес-услуг.
- Принцип – Принцип представляет собой качественное заявление о намерениях, которое должно быть выполнено архитектурой.
Подробнее (но на английском языке) все описания приведены в самом стандарте: Welcome to the ArchiMate® 3.0.1 Specification, an Open Group Standard.
Кстати, Yandex Translate настолько “насобачился” переводить, что данные описания я даже не исправлял “руками”!
Репозиторий корпоративной архитектуры
TOGAF много говорит о репозиториях, здесь я покажу фрагмент, сделанный с помощью бесплатного инструмента “Арчи” ( Archi – Open Source ArchiMate Modelling ).
В Archi, при нажатии на прямоугольник “проваливаешься” на уровень ниже, где можно увидеть детали архитектуры.
Цвета используются стандартные: мотивационные диаграммы окрашены фиолетовым, стратегические – коричневым, бизнес-диаграммы – желтым, диаграммы связанные с приложениями и данными – бирюзовым, а инфраструктурные – зеленым.
Репозиторий корпоративной архитектуры (TOGAF)
В Вашем проекте или организации не обязательно должны использоваться все элементы TOGAF (даже сам TOGAF просит выбрать, что необходимо), т.е. ваш репозиторий может содержать только несколько диаграмм, как показано на примере:
Простой Репозиторий
Кстати, я написал слово Выбрать, но в английском (американском) языке есть классный глагол to tailor, который не очень переводится на русский язык, этот глагол и используется в TOGAF. Мы, как портные, должны ножницами отрезать все ненужное и сфокусироваться на главном! Т.е. TOGAF просит нас взять его (стандарт) и настроить в соответствии с конкретной потребностью или ситуацией!
Технологическая инфраструктура
Технологическая инфраструктура в ArchiMate выглядит по-спартански, но отражает суть!
Инфраструктура
Давайте пойдем по-порядку снизу вверх:
- Значком и элементом “Устройство” изображены СХД и серверы ESXi.
- СХД подключены к серверам через сеть SAN (значок и элемент “Сеть”).
- Для слабой связи одной системы с другой используется соединение типа “Ассоциация” (простая черная линия).
- Все серверы связаны между собой посредством сети LAN (снова элемент “Сеть”).
- Сеть LAN подключена к внешней сети WAN (и это тоже “Сеть”).
- Совместная работа нескольких устройств (серверов) образует кластер VMware (значок “Совместная работа”).
- Кластер VMware своей работой “реализует”" (см. линию с былым треугольником) Платформу Виртуализации VMware.
- “Шаблоны ВМ” предоставляют сервис готовых образов Кластеру VMware для развертывания операционных систем на Виртуальных Машинах (сплошная линия связи со стрелкой).
- Платформа виртуализации “предоставляет сервис” (сплошная линия связи со стрелкой) для размещения Виртуальных Машин (значок и элемент “Узел”).
- Элементы группировки используются для обозначения общности между элементами (например, отдельно показаны “Служебные машины Портала” и “Гостевые машины”).
- В заключении, все элементы данной диаграммы находятся внутри элемента “Локация”, называемой “Основной ЦОД”.
Поведение Приложений
Обратите внимание на диаграмму “Поведение Приложений” ниже:
Поведение приложений
Поведение Приложений показывает нам:
- Кто использует наше приложение (показаны 2 типа действующих лиц, т.е. клиентов: начальники подразделений и обычные пользователи).
- Какие роли они могут занимать в приложении (Руководитель и Пользователь).
- Какие функции приложения доступным тем или иным ролям.
- Состав продукта.
- Состав функций сервиса.
- Связи между функциями (например, функция Уведомлений связана с функциями Управление ВМ, Запрос ВМ и Аудит ВМ).
- Логический смысл взаимодействий.
Например, программный компонент Microsoft IIS Server “осуществляет” (стрелка с белым треугольником и прерывистой линией) ряд программных сервисов, среди которых: “Сервис отображения отчетов” и “Сервис сбора информации по утилизации ресурсов”, которые в свою очередь предоставляют сервис (обычная сплошная стрелка) для функции приложения “Отчеты Руководителя”, который предоставляет сервис любому пользователю с ролью Руководитель.
Взаимодействие Приложений и их Компонентов
Для анализа/планирования состава приложений, используемых протоколов, CLI, API и т.д. удобно и быстро использовать такой вид:
Диаграмма Взаимодействий Приложений
По картинке видно:
- Как различные компоненты взаимодействуют друг с другом (связь типа “Поток” или “Flow”).
- Какие языки программирования, библиотеки, модули или фреймворки используются.
- Как связаны внутренние компоненты приложения с внешними (инфраструктурными) сервисами и их компонентами.
- Какие интерфейсы и/или протоколы используются (например, “CLI”, “API”, “AJAX” и т.п.).
- Для отдельных сервисов могут быть показаны сервисы.
Например, на диаграмме показано, что основной модуль PHP взаимодействует с модулем LDAP для аутентификации в корпоративном сервисе Active Directory, который, в свою очередь, реализован на Контроллере домена, роль которого выполняет Windows Server.
Согласитесь, на диаграмме та же информация представлена более наглядно и просто?
По картинке можно делать выводы (анализировать архитектуру). Например, видно, что мы используем Docker только для одного модуля VMS, написанном на Python (реализует консольный доступ к виртуальной машине). Это кажется странным, учитывая, что всё остальное написано на PHP и JavaScript и запущено на IIS сервере! Дело в том, что в процессе разработки произошла смена приоритетов и решили постепенно все функции приложения перенести в Docker и на Python. Данная архитектура отражает промежуточный этап, когда только один сервис реализован, “как должно быть”.
Структура Организации
В ArchiMate можно отображать организационную структуру Предприятия. Но кто нам помешает сделать это в рамках проекта? Например, на изображении ниже видно, как наше приложение использует корпоративный сервис Active Directory заказчика:
Диаграмма Active Directory
На диаграмме описана минимальная структура в Active Directory необходимая для тестирования работы приложения.
Для тестирования была создана общая группа “AUTOPORTAL”, в нее вошло 2 группы “AP1” и “AP2”, в каждой из которых были созданы свои тестовые пользователи (им присваивается роль “Пользователь” в приложении).
Отдельно для целей тестирования был создан пользователь “Менеджер Управления Автопорталом” (ему в приложении присваивается роль “Руководитель”) и группа “admin_billing_page” (в эту группу вошли все руководители подразделений) для получения уведомлений и выдачи прав на просмотр отчетов.
В качестве заключения
Я изложил далеко не все случаи использования (Use Cases) для ArchiMate в процессе разработки программных продуктов. Иначе статья разрослась бы до уровня книги. Тем не менее даже сейчас видно, что ArchiMate можно успешно применять для визуализации моделей при проектировании, разработке и анализе архитектуры приложений. Надеюсь что-то из написанного будет вам полезно.
Я считаю, язык отличный, его можно и нужно использовать! За прошедшие 3 года, вижу, что многие Российские компании начали его изучать и использовать. Появились доклады на конференциях и публикации в специализированных изданиях. Конечно, язык не идеален, но для наших задач – подходит. У языка большое будущее, ведь он открыт и при этом поддерживается большим сообществом The Open Group.
ArchiMate был создан не для того, чтобы заменить UML, BPMN или Business Model Canvas и т.п.! Он был создан с целью дополнить существующие нотации новым упрощенным инструментом совместной работы владельцев бизнеса, руководителей, менеджеров, архитекторов и программистов. Одномоментно, например, в ArchiMate может описываться Архитектура Предприятия, общие описания процессов, использование ИТ инфраструктуры, а, например, детали процессов – описываться в BPMN, детали классов приложений – в UML и т.д.
В следующей статье я планирую рассказать об использовании языка ArchiMate в облачной инфраструктуре (трансформация, миграция и т.п.). До скорых встреч!»
Полезные ссылки
- The Most Useful ArchiMate Diagram Types
- What is ArchiMate?
- Официальная публикация: UNDERSTANDING THE BASICS – AN INTRODUCTION TO THE ARCHIMATE® MODELING LANGUAGE, VERSION 3.0.1
- Официальная публикация: AN INTRODUCTION TO THE ARCHIMATE® 3.0.1 SPECIFICATION
- Официальная публикация: ArchiMate® 3.0.1 Specification - ONLINE
Познакомиться подробнее с проектами отдела Сервиса и Конслтинга ГК ХОСТ можно по ссылке.