Использование ArchiMate в разработке нового программного продукта


Использование 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.png
Диаграмма Основных Концепций DevOps



Зная назначение элементов (см. диаграмму), легко выражать собственные концепции и идеи в визуальной форме, понятной большинству.

Дополнительно приведу описания элементов здесь:

  • Цель – Общее утверждение о намерении, направлении или конечном состоянии организации и участвующих сторон.
  • Ресурс – Ресурс представляет собой актив, принадлежащий или контролируемый физическим лицом или организацией.
  • Бизнес-процесс – Бизнес-процесс представляет собой последовательность бизнес-поведения, которая достигает определенного результата, такого как определенный набор продуктов или бизнес-услуг.
  • Принцип – Принцип представляет собой качественное заявление о намерениях, которое должно быть выполнено архитектурой.

Подробнее (но на английском языке) все описания приведены в самом стандарте: Welcome to the ArchiMate® 3.0.1 Specification, an Open Group Standard.
Кстати, Yandex Translate настолько “насобачился” переводить, что данные описания я даже не исправлял “руками”!

Репозиторий корпоративной архитектуры

TOGAF много говорит о репозиториях, здесь я покажу фрагмент, сделанный с помощью бесплатного инструмента “Арчи” ( Archi – Open Source ArchiMate Modelling ).

В Archi, при нажатии на прямоугольник “проваливаешься” на уровень ниже, где можно увидеть детали архитектуры.
Цвета используются стандартные: мотивационные диаграммы окрашены фиолетовым, стратегические – коричневым, бизнес-диаграммы – желтым, диаграммы связанные с приложениями и данными – бирюзовым, а инфраструктурные – зеленым.

TOGAF.png
Репозиторий корпоративной архитектуры (TOGAF)



В Вашем проекте или организации не обязательно должны использоваться все элементы TOGAF (даже сам TOGAF просит выбрать, что необходимо), т.е. ваш репозиторий может содержать только несколько диаграмм, как показано на примере:

SimpleRepository.png
Простой Репозиторий



Кстати, я написал слово Выбрать, но в английском (американском) языке есть классный глагол to tailor, который не очень переводится на русский язык, этот глагол и используется в TOGAF. Мы, как портные, должны ножницами отрезать все ненужное и сфокусироваться на главном! Т.е. TOGAF просит нас взять его (стандарт) и настроить в соответствии с конкретной потребностью или ситуацией!


Технологическая инфраструктура

 Технологическая инфраструктура в ArchiMate выглядит по-спартански, но отражает суть!

Infrastructure.png
Инфраструктура



Давайте пойдем по-порядку снизу вверх: 

  • Значком и элементом “Устройство” изображены СХД и серверы ESXi.
  • СХД подключены к серверам через сеть SAN (значок и элемент “Сеть”).
  • Для слабой связи одной системы с другой используется соединение типа “Ассоциация” (простая черная линия).
  • Все серверы связаны между собой посредством сети LAN (снова элемент “Сеть”).
  • Сеть LAN подключена к внешней сети WAN (и это тоже “Сеть”).
  • Совместная работа нескольких устройств (серверов) образует кластер VMware (значок “Совместная работа”).
  • Кластер VMware своей работой “реализует”" (см. линию с былым треугольником) Платформу Виртуализации VMware.
  • “Шаблоны ВМ” предоставляют сервис готовых образов Кластеру VMware для развертывания операционных систем на Виртуальных Машинах (сплошная линия связи со стрелкой).
  • Платформа виртуализации “предоставляет сервис” (сплошная линия связи со стрелкой) для размещения Виртуальных Машин (значок и элемент “Узел”).
  • Элементы группировки используются для обозначения общности между элементами (например, отдельно показаны “Служебные машины Портала” и “Гостевые машины”).
  • В заключении, все элементы данной диаграммы находятся внутри элемента “Локация”, называемой “Основной ЦОД”.


Поведение Приложений

Обратите внимание на диаграмму “Поведение Приложений” ниже: 


ApplicationsBehaviour.png

Поведение приложений


  
Поведение Приложений показывает нам:

  • Кто использует наше приложение (показаны 2 типа действующих лиц, т.е. клиентов: начальники подразделений и обычные пользователи).
  • Какие роли они могут занимать в приложении (Руководитель и Пользователь).
  • Какие функции приложения доступным тем или иным ролям.
  • Состав продукта.
  • Состав функций сервиса.
  • Связи между функциями (например, функция Уведомлений связана с функциями Управление ВМ, Запрос ВМ и Аудит ВМ).
  • Логический смысл взаимодействий.

Например, программный компонент Microsoft IIS Server “осуществляет” (стрелка с белым треугольником и прерывистой линией) ряд программных сервисов, среди которых: “Сервис отображения отчетов” и “Сервис сбора информации по утилизации ресурсов”, которые в свою очередь предоставляют сервис (обычная сплошная стрелка) для функции приложения “Отчеты Руководителя”, который предоставляет сервис любому пользователю с ролью Руководитель.

Взаимодействие Приложений и их Компонентов

Для анализа/планирования состава приложений, используемых протоколов, CLI, API и т.д. удобно и быстро использовать такой вид:
 

ApplicationsIntercations.png
  Диаграмма Взаимодействий Приложений



По картинке видно:

  • Как различные компоненты взаимодействуют друг с другом (связь типа “Поток” или “Flow”).
  • Какие языки программирования, библиотеки, модули или фреймворки используются.
  • Как связаны внутренние компоненты приложения с внешними (инфраструктурными) сервисами и их компонентами.
  • Какие интерфейсы и/или протоколы используются (например, “CLI”, “API”, “AJAX” и т.п.).
  • Для отдельных сервисов могут быть показаны сервисы.

Например, на диаграмме показано, что основной модуль PHP взаимодействует с модулем LDAP для аутентификации в корпоративном сервисе Active Directory, который, в свою очередь, реализован на Контроллере домена, роль которого выполняет Windows Server.
Согласитесь, на диаграмме та же информация представлена более наглядно и просто?

По картинке можно делать выводы (анализировать архитектуру). Например, видно, что мы используем Docker только для одного модуля VMS, написанном на Python (реализует консольный доступ к виртуальной машине). Это кажется странным, учитывая, что всё остальное написано на PHP и JavaScript и запущено на IIS сервере! Дело в том, что в процессе разработки произошла смена приоритетов и решили постепенно все функции приложения перенести в Docker и на Python. Данная архитектура отражает промежуточный этап, когда только один сервис реализован, “как должно быть”.

Структура Организации

В ArchiMate можно отображать организационную структуру Предприятия. Но кто нам помешает сделать это в рамках проекта? Например, на изображении ниже видно, как наше приложение использует корпоративный сервис Active Directory заказчика:

ActiveDirectory.png
Диаграмма 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 в облачной инфраструктуре (трансформация, миграция и т.п.). До скорых встреч!»
  
Полезные ссылки



  Познакомиться подробнее с проектами отдела Сервиса и Конслтинга ГК ХОСТ можно по ссылке.