Шаблоны проектирования и базовая нотация

Что такое процесс, отвечу самоцентированием.

Процесс – это воспроизводимая последовательность действий для преобразования входящего явления в исходящее явление

Но как мы говорили в предыдущей публикации, любой процесс можно описать тремя способами:

  • Текстовое описание процесса
  • Табличное описание процесса
  • Графическое описание

Поговорим о графических нотациях

Первая графическая нотация, IDEF0, возникла в армии, точнее – в ВВС США, произошло это в 1980-х годах. Целью была оптимизация работы предприятий, выпускающих военную продукцию.

Вторая, EPC (Event-driven Process Chain), появилась на 10 лет позднее. Её название (“цепочка событийных процессов”) даёт понять, что фокус сделан именно на событие.

Нотация BPMN – часть концепции BPM (управления бизнес-процессами). Впервые она возникла в 2004 году (версия 1.0) и несколько раз модернизировалась в 2008, 2009, 2011 и 2013 годах.

BPMN получило наибольшее распространение и имеет возможность описывать процессы на разных уровнях абстракции. По моему мнению является сейчас самой распространённой. Таковой ей помогли стать: наглядность, простота рисования, интуитивность чтения.

Но перед тем чтобы более подробно проговорить о ней, должен появиться вопрос: нельзя же просто так взять и начать?

Шаблоны проектирования и базовая нотация

Надо иметь представление о том как правильно определять участников, выстраивать связи. Для этого мы познакомимся с паттернами проектирования GRASP.

Паттерны проектирования GRASP

GRASP (англ. general responsibility assignment software patterns — общие шаблоны распределения ответственностей; также существует английское слово "grasp" — «контроль, хватка») — шаблоны, используемые в объектно-ориентированном проектировании для решения общих задач по назначению ответственностей классам и объектам.

Паттерны проектирования GRASP

Information Expert (Информационные эксперт) - ответственность должна быть назначена тому, кто владеет максимумом необходимой информации для исполнения — информационному эксперту. Если объект обладает всей необходимой информацией для выполнения действия, то он и должен выполнить его.

Пример. Если объект “счёт” обладает составом блюд и их стоимости, то он и рассчитывает общую стоимость счёта.

Creator (Создатель) - ответственность за создание объектов лежит на объекте для которого созданный объект будет выполнять функции.

Пример. Объект “счёт” создаёт объекты “блюда”.

Controller (Контроллер) - объект разделения интерфейса и логики в приложении. Контролер отвечает за обработку запросов и решает кому должен делегировать запросы на выполнение.

Пример. Интерфейс для официанта, добавление “блюда” в “счёт”, создаётся объект “блюдо”.

Pure Fabrication (Чистая выдумка или чистое синтезирование) - принцип создания искусственного объекта для выполнения принципов Low Coupling (Слабая связанность) и High Cohesion (Высокая сцепленность), упрощать переиспользование кода.

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

Про паттерны, приведённые ниже, расскажу чуть подробнее, так как считаю их одними из важных для правильного построения процесса.

  • Low Coupling (Слабая связанность)
  • High Cohesion (Высокая сцепленность)
  • Protected Variations (Сокрытие реализации или защищенные изменения)
  • Polymorphism (Полиморфизм)

Вы могли уже читать про них, если дано подписаны на меня или мой канал в телеграме

Паттерны успешного проектирования процессов

Низкая связанность (Low Coupling)

Классическое определение "низкой связанности" - необходимо распределять обязанности между объектами, чтобы степень связанности между системами оставалась низкой.

Степень связанности (coupling) - это мера, определяющая, насколько жестко один элемент связан с другими элементами, либо каким количеством данных о других элементах он обладает.

Шаблоны проектирования и базовая нотация

Объект с низкой степенью связанности (или слабым связыванием) не зависит от большого числа других элементов и имеет следующие свойства:

  • Низкая зависимость между классами (подсистемами).
  • Изменения в классе (подсистеме) слабо влияют на другие классы (подсистемы).

  • Высокая возможность переиспользования классов (подсистем).

Использование паттерна в программировании

Реализация классов таким образом, чтобы чтобы минимизировать знания внутри класса о других.

Пример. Есть классы "A", "B", "C". Допустим, что класс "А" знает о классе "B", а класс "B" знает о классе "C". Значит, при необходимости доступа класса "А" к классу "С", для соблюдения принципа, класс "А" получает доступ к классу "C", через класс "B". В противном случае появляется дополнительная связь, между классами "А" и "C", которую можно избежать.

Использование паттерна в анализе

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

Пример. Есть несколько систем: Продаж, Логистическая, Складская. При появлении события о завершении продажи, из Системы продаж, информация о товарах, необходимых для формирования посылки поступает на Складскую систему. После формирования посылки, информация о заказе поступает со Складской системы в Логистическую.

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

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

Недостатки

При стремлении к минимизации связей, рано или поздно приходит мысль, что можно возложить все обязанности на один объект, тогда связей не будет совсем. В этом случае, объекты начинают выполнять кучу несвязанных между собой задач. Это усложняет взаимодействие с этими объектами.

Пример. Класс А содержит в себе информацию ранее содержащуюся только в классах Б и В. Система продаж, начинает выполнять функции учёта товара на складе и оформление доставки с построением маршрутов для курьеров.

Продукт, становится мультифункциональным и сложным.

Для устранения недостатков, как правило, паттерн "Низкая связанность" применяется в паре с другим - "Высокое зацепление". О нём я расскажу во второй части.

Высокое зацепление (High Cohesion)

Классическое определение "высокого зацепления" - объект должен быть сфокусированным на выполнении группы связанных обязанностей. Не связанные обязанности должны быть переданы другим объектам. Обычно используется совместно с шаблоном Низкая связанность (Low Coupling).

Сфокусированность - определена предметная область, управляема и понятна.

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

Шаблоны проектирования и базовая нотация

Использование паттерна в программировании

Классы должны содержать связанную бизнес — логику. Что значит что обязанности класса должны соответствовать каким-то требованиям.

Примеры распределения обязанностей:

  • использование одной области данных,
  • выполнение аналогичных функций,
  • одновременное использование
  • и т.п.

Использование паттерна в анализе

При моделировании объектов распределять обязанности между ними по определённой бизнес-логике.

Пример, описанный выше, подходит и для этой ситуации.

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

При формировании требований к продукту, тщательно отнестись к набору функций которые он выполняет. Продукт не должен содержать лишних функций не направленных на удовлетворение потребностей клиентов.

Недостатки

Руководствуясь только паттерном "Высокое зацепление", можно достигнуть такого распределения обязанностей, при котором взаимодействие между объектами будут не оптимальны, ресурсоёмки.

Идеал

Высокое зацепление и низкая связанность выступают как инь-янь, не позволяя объектам выполнять одну функцию и иметь множество связей, или иметь одни мультифункциональный объект.

Шаблоны проектирования и базовая нотация

Устойчивость к изменениям (Protected Variations)

Защита элементов от изменения внешних элементов. С помощью фиксированных интерфейсов взаимодействия с объектами и подсистемами. Внесении изменений в поведение может происходить через создание внешних элементов или создания новых интерфейсов взаимодействия.

Построение взаимодействий с паттерном Устойчивость к изменениям, позволит сохранить элементы неизменными.

Недостатк

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

Полиморфизм (Polymorphism)

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

Пример. Есть функционал оповещения, но в зависимости от атрибута “тип” может быть выполнено звуковое или визуальное оповещение.

Подытожим

Теперь вы знаете основные принципы проектирования, которые можно использовать не только для проектирования информационных систем но и для проектирования процессов предприятий. А значит пришло время поговорить про проектирование процессов и отображение их в графической нотации Business Process Management Initiative (BPMI.org).

Для отображения процессов, рекомендуется использовать BPMN нотацию, так как это наиболее распространённая нотация, понятная как техническим специалистам, так и людям от бизнеса.

BPMN

История

BPMN (англ. Business Process Model and Notation, нотация и модель бизнес-процессов) — система условных обозначений (нотация) и их описания в XML для моделирования бизнес-процессов. Модели построенные в данной нотации может быть исполняемыми.

Всего модели могут быть нескольких типов:

  • Графические модели бизнес-процессов – это представление объекта в виде диаграммы. Используется как правило для совершенствования и оптимизации деятельности бизнеса путем устранения узких мест, дублирования функций и т.д. А также для подбора или разработки частей/узлов новой системы, согласования действий между подразделениями бизнеса, обучения новых сотрудников их должностным обязанностям и т. д. Уровень детализации таких моделей может вариораться от задачи, так как они несут информационно-аналитический характер.
  • Имитационные модели бизнес-процессов - воспроизводят работу системы для оценки их эффективности, анализа и исследования выполнения процессов с новыми входными данными, которые могли не использоваться до этого времени в работе бизнеса. Используются для более детального изучения процесса или имитации длительных процессов в более короткие сроки.
  • Исполняемые модели бизнес-процессов – это воспроизведение процессов на специальном программном обеспечении для их автоматизации непосредственно по разработанной модели.Используются для реализации автоматизации, возможно, без программирования на основе модели. Особенно получили распространение в workflow, bpm системах.

Описание в xml позволяет переносить процессы среди различных редакторов, в том числе использовать для low code систем, позволяющих писать автоматизации за счёт описания процессов.

Нотация была разработана Business Process Management Initiative (BPMI.org) в 2004 году BPMN 1.0 и в 2005, после слияния с Object Management Group (OMG.org), поддерживается OMG. Моё мнение BPMN только выиграла от слияния, так как OMG занимается развитием не только ней, но и UML. Что даёт возможность заимствования у нотаций наиболее успешных подходов

UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.

В 2011 уже под флагом OMG вышла версия BPMN 2.0 которая распространена и по сей день.

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

За счёт своей нативности получило сильное распространение, схемы описанные в этой нотации смогут прочитать по всему миру.

Элементы

Из чего же может быть построен процесс в BPMN нотации. Рассмотри его элементы.

Шаблоны проектирования и базовая нотация

События

В любой процесс в нотации BPMN начинается со стартового события и завершается, соответственно завершающим событием.

Шаблоны проектирования и базовая нотация

При этом внутри процесса могут присутствовать промежуточные события.

Промежуточные события могут быть “Граничные события”

Граничные события в BPMN – это события-обработчики, которые прикрепляются к контуру (к границе) действия на диаграмме процесса.

Шаблоны проектирования и базовая нотация

Граничные события прикрепляемые к границе действия обозначают события которые могут произойти при выполнении этих действия. Они могут прервать выполнение действия - тогда их называют прерывающими. Или активировать дополнительный поток, который выполняется одновременно (параллельно) с выполнением действия - их называют не прерывающие.

Шаблоны проектирования и базовая нотация

Если при выполнении действия 1 возникает событие 1, то эта задача прерывается и поток операций направляется к задаче 3. Процесс продолжается по ветке потока исходящей из события 1. Если событие 1 не возникает, то после выполнения задачи 1, выполняется задача 2 и так далее.

Если при выполнении действия 1 возникает событие 1, и выполнение этого действия не прерывается и поток процесса начинает идти по двум маршрутам параллельно. Событие 1 может повторяться несколько раз, но только до момента завершения действия 1. Если это событие не возникло, то процесс пойдет по стандартному маршруту – от задачи 1 к задаче 2 и т.д.

Также события инициаторы (переброски) и обработчики (пойманные). Они используются для демонстрации отправки или получения сообщений.

Действия

Элементы обозначающие действия предназначены для выполнения одной элементарной задачи. Вопрос остаётся только в том что считается элементарной задачей. Так как под ней может подразумеваться подпроцесс.

Давайте познакомимся с возможными действиями в BPMN.

Шаблоны проектирования и базовая нотация

Абстрактная задача - используется для обозначения простого действия или операции, не имеющей дальнейшей декомпозиции в рамках текущего бизнес-процесса.

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

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

Задача ручная операция - используется для отображения операции выполняемой вручную, без использования автоматизации.

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

Задача на вызов сервиса - используется для иллюстрации шага процесса, на котором вызывается веб-служба или скрипт С#.

Задача сообщения, может быть на получение или отправку сообщения. Может быть заменено на события сообщения.

Для задач добавляются маркеры задач для обозначения типа задачи.

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

Шаблоны проектирования и базовая нотация

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

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

Шлюзы

Шлюзы используются для контроля схождений и расхождений процессов. Так же выполняют роль графического разветвления процессов или их запараллеливание и слияние.

Шаблоны проектирования и базовая нотация

Исключающий шлюз (эксклюзивный, XOR), «или/или» — выбор только одного пути по которому будет выполняться процесс. Может отображаться как пустой ромб.

Параллельный шлюз, «и» — распараллеливает потоки процесса для параллельного выполнения действий. При слиянии ожидает все входящие потоки.

Неисключающий шлюз (неэсклюзивный), «и/или» — выбор одного или нескольких потоков. Если до шлюза было распараллеливание, каждый поток доходя за шлюза начинает выполнять последующие за шлюхом действия.

Событийный шлюз — выбор первого события, которое случится;

Сложный шлюз – позволяет задавать сложные варианты ветвления или слияния, для которых не подходят другие шлюзы.

Потоки

Потоки управления, потоки сообщений и передачу объектов данных. В зависимости от назначения стрелки могут изображаться сплошной, штриховой и пунктирной линиями.

Шаблоны проектирования и базовая нотация

Поток управления - служит для обозначения последовательности выполнения действий процесса.

Поток сообщений - служит для отображения межпроцессного взаимодействия – отображает передачу сообщений или объектов из одного процесса в другой процесс или внешнюю ссылку. В BPMN два отдельных пула могут обмениваться сообщениями.

Ассоциация -служит применяется для визуализации связи между элементами процесса и объектами, не являющимися элементами процесса(артефактами). Это могут быть текстовые объекты, а также графические объекты. При необходимости может быть направленное.

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

Поток управления по умолчанию - служит для демонстрации, что дальнейшее выполнение процесса будет происходить по определённому пути процесса только если не выполняется ни одно из заданных условий.

Пул и Дорожки

Пул

Пул представляет собой процесс. Но иногда используется как графическое ограничение действий процесса, для отделения от других процессов. Пул может отображаться как “чёрный ящик” или содержать внутри графическое описание процесса.

Шаблоны проектирования и базовая нотация

Дорожка

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

Шаблоны проектирования и базовая нотация

Данные

Элементы данных означают артефакты возникающие во время выполнения процесса. Например создание документов или записи в базу данных. Данные могут быть исходящими и входящими.

Шаблоны проектирования и базовая нотация

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

Данные необходимые для выполнения процесса обозначаются документом с полой стрелкой. Данные получаемые в ходе выполнения процесса - документом с заполненной стрелкой.

Во время процесса может потребоваться запись в хранилище данных. Это необходимо для использования данных в разных процессах.

Комментарии

Элемент для внесения дополнительной информации для лиц изучающих процесс в виде диаграммы.

Шаблоны проектирования и базовая нотация

Правила

При описании процесса в нотации BPMN для сохранения читаемости следует соблюдать правила.

Шаблоны проектирования и базовая нотация

Соблюдение правил чтения, слева направо, сверху вниз. Это позволит корректно отслеживать ход процесса без сложных соединений и избежать лишних пересечений стрелок.

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

Не оставлять повисших элементов. Следить чтобы все части процесса были объединены потоками и не было разрывов. Если разрыв всё-таки должен быть, то это два процесса.

Различные технологических процессов от бизнес-процессов

Бизнес-процессы и где они применяются

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

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

Особенности бизнес-процессов

Бизнес-процессы ориентированы на достижение конкретных целей организации и должны быть гибкими и эффективными. Они также включают множество взаимосвязанных шагов и участников, и могут быть описаны с помощью различных методологий, таких как BPMN (Business Process Model and Notation).

Технологические (IT) процессы и где они применяются

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

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

Особенности технологических процессов

Технологические процессы часто ориентированы на автоматизацию и оптимизацию рабочих процессов с помощью информационных технологий. Они включают в себя такие компоненты, как разработка ПО, установка и настройка серверов, администрирование баз данных, сетевое оборудование и другое. Для описания таких процессов можно использовать BPMN, но для конкретных задач будут более подходить конкретные диаграммы UML.

В основе различия между бизнес-процессами и технологическими процессами лежит их фокус и подход.

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

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

Оба типа процессов необходимы для успешного функционирования организации и требуют правильного проектирования и управления

Заключение

Сегодня мы изучили:

  • Зачем нужны нотации,
  • Какие нотации бывают,
  • Архитектурная база (паттерны grasp),
  • BPMN,
  • Различия между проектированием процессов.

Хотите узнать больше, подписываетесь на мой канал в Телеграм Analog.

Начать дискуссию