От моделирования процессов к проектированию автоматизированной системы (Часть 1)

«Один день из жизни белки» или от моделирования процессов к проектированию автоматизированной системы учёта материальных ценностей «Белка-1.0» (Часть 1)



Использована иллюстрация к "Сказке о царе Салтане" А.С.Пушкина, изд."Детская литература", Москва, 1949 год, Ленинград, рисунки К.Кузнецова


При чем тут «белка»?


Сразу поясню, при чем тут «белка». Наткнувшись в Сети на забавные проекты для изучения UML с опорой на предметную область, заимствованную из сюжетов сказок (например, здесь [1]), я для своих студентов тоже решила подготовить подобный пример, чтобы можно было изучить для начала всего три вида диаграмм: Activity Diagram, Use-case Diagram и Class Diagram. Умышленно не перевожу на русский язык названия диаграмм, чтобы избежать споров о «трудностях перевода». Что для чего – поясню немного позже. В данном примере я использую среду Enterprise Architect от австралийской компании Sparx Systems [2] – хороший инструмент за разумные деньги. А в рамках учебных занятий применяю Modelio [3], неплохое бесплатное средство объектно-ориентированного проектирования, поддерживающее стандарты UML2.0 и BPMN, без излишних наворотов в части изобразительных возможностей, но вполне достаточное для изучения основ языка.


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



Остров на море лежит, (E1, E2)
Град на острове стоит (E3, E1)
С златоглавыми церквами, (E4)
С теремами да садами; (E5, E6)
Ель растет перед дворцом, (E7, E8)
А под ней хрустальный дом; (E9)
Белка там живет ручная, (A1)
Да затейница какая! (A1)
Белка песенки поет, (P1, A1)
Да орешки всё грызет, (P2)
А орешки не простые, (C1)
Всё скорлупки золотые, (C2)
Ядра чистый изумруд; (C3)
Слуги белку стерегут, (P3, A2)
Служат ей прислугой разной (P4)
И приставлен дьяк приказный (A3)
Строгий счет орехам весть; (P5, C1)
Отдает ей войско честь; (P6, A4)
Из скорлупок льют монету, (P7, C2, C4)
Да пускают в ход по свету; (P8)
Девки сыплют изумруд (P9, A5, C3)
В кладовые, да под спуд; (E10, E11)

(А.С.Пушкина "Сказка о царе Салтане, о сыне его славном и могучем богатыре князе Гвидоне Салтановиче и о прекрасной царевне Лебеди", работа над сказкой начата предположительно в 1822 г., впервые сказка была напечатана Пушкиным в сборнике «Стихотворения А. Пушкина» (ч. III, 1832, стр. 130—181) — 10 лет от замысла до публикации, между прочим!)

Немного о кодах, которые написаны справа от строк. “A” (от “Actor”) означает, что в строке содержится информация об участнике процесса. “C” (от “Class”) – информация об объектах классов, которые обрабатываются в ходе выполнения процессов. “E” (от “Environment”) – информация об объектах классов, которые характеризуют окружающую среду выполнения процессов. “P” (от “Process”) – информация о самих процессах.


Кстати, точное определение процесса также претендует на то, чтобы стать причиной методологических споров, хотя бы вследствие того, что процессы бывают разные: бизнес-, производственные, технологические и т.д. и т.п. (ознакомится можно, например, здесь [4] и здесь [5]). Чтобы избежать полемики договоримся, что процесс нас интересует с точки зрения его повторяемости во времени и потребности в автоматизации, т.е. перекладывании выполнения какой-либо части операций процесса на автоматизированную систему.


Заметки по применению диаграммы Activity


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



Белка песенки поет, (P1, A1)
Да орешки всё грызет, (P2)
А орешки не простые, (C1)
Всё скорлупки золотые, (C2)
Ядра чистый изумруд; (C3)

У нас есть два шага процесса P1 и P2, участник A1, и объекты трех разных классов: объект класса С1 поступает на вход шага, объекты классов С2 и С3 получаются на выходе, как результат деятельности этого шага P2 нашего процесса. Для диаграммы используем следующие моделирующие элементы.



Фрагмент нашего процесса можно представить примерно так (Рисунок 1).



Рисунок 1. Фрагмент диаграммы Activity


Для организации пространства и структурирования диаграммы Activity мы применим не совсем стандартный подход, с точки зрения классического использования нотации UML. Но на это есть несколько причин. Во-первых, просто до начала моделирования мы составим, так называемое, соглашение по моделированию, в котором зафиксируем все особенности использования нотации. Во-вторых, этот подход был неоднократно успешно применен на этапе бизнес-моделирования в реальных проектах по созданию программных систем, результаты были зафиксированы нашим небольшим авторским коллективом в соответствующем объекте авторского права [6], а также использованы в учебном пособии [7]. Для диаграммы Activity определим, что поле диаграммы структурируем с помощью «плавательных» дорожек – Swim lanes. Имя дорожки будет соответствовать типу элементов диаграммы, которые будут размещены на этой дорожке.


«Входные и выходные артефакты»: на этой дорожке будут располагаться элементы Objects – объекты, которые используются или являются результатом выполнения некоторого шага процесса.
«Шаги процесса»: сюда поместим элементы Activity – действия участников процесса.
«Участники»: дорожка для элементов, которые будут обозначать роли исполнителей действий в нашем процессе, для них мы будем использовать все тот же моделирующий элемент Object – объект, но добавим ему стереотип «Actor».
Следующая дорожка называется «Бизнес-правила» и на этой дорожке разместим в текстовом виде правила выполнения шагов процесса, а использовать для этого будем моделирующий элемент Note – примечание.
Мы здесь остановимся, хотя дополнительно можно было бы еще использовать дорожку «Инструменты» для сбора сведений об уровне автоматизации процесса. Еще может пригодиться дорожка «Должности и подразделения участников», ее можно использовать для связи ролей с должностями и подразделениями участников процесса.


Все то, что я только что описала, и есть фрагмент соглашения по моделированию, эта часть соглашения касается правил организации одной диаграммы и соответственно правил ее написания и чтения.


«Рецепт»


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


Вот, собственно, сам рецепт, а далее следуют диаграммы, построенные для нашей «сказочной» предметной области.


Этап 1. Описываем процесс в виде диаграммы Activity. Для процесса, в котором выделено более 10 шагов, имеет смысл применить принцип декомпозиции шагов процесса, чтобы повысить читабельность диаграммы.


Этап 2. Выделяем то, что можно автоматизировать (шаги могут быть, например, подсвечены на диаграмме).


Этап 3. Автоматизируемому шагу нужно поставить в соответствие функцию или функции системы (отношение может быть многие-ко-многим), рисуем Use-case диаграмму. Это функции нашей системы.


Этап 4. Опишем внутреннюю организацию АС с помощью диаграммы классов – Class. Плавательная дорожа «Входные и выходные объекты (документы)» на диаграмме Activity – это основа для построения объектной модели и модели сущность-связь.


Этап 5. Проанализируем заметки на дорожке «Бизнес-правила», они дают различного рода ограничения и условия, постепенно трансформируется в нефункциональные требования.
Полученная совокупность диаграмм (Activity, Use-case, Class) дает нам формализованное описание в достаточно строгой нотации, т.е. имеет однозначное прочтение. Теперь можно разрабатывать техническое задание, уточнять спецификацию требований и т.д.


Приступим к моделированию.


Этап 1. Описываем процесс в виде диаграммы Activity


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


image


Решение (Decision) обозначает на диаграмме точку ветвления нашего процесса, а слияние потоков (Merge) – точку их воссоединения. В квадратных скобках на переходах записаны условия перехода.


Между двумя синхронизаторами (Fork) мы будем показывать параллельные ветки процесса.
У нашего процесса может быть только одно начало – одна точка входа (Initial). А вот завершений (Final) может быть и несколько, но не для нашей конкретной диаграммы.


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



Рисунок 2. Диаграмма Activity – общий вид процесса


Т.к. в стихотворных строках некоторые детали процесса опущены, пришлось их восстановить, они показаны элементами с белым фоном. Данные детали включают шаг «Передачи/приема на хранение и переработку» и несколько входных и выходных артефактов. Стоит отметить, что этот шаг тоже не полностью раскрывает процесс, т.к. нам нужно было бы отдельно обозначить шаг передачи и шаг приема, да еще и для скорлупок добавить отдельный шаг, а еще домыслить, что сначала все эти материальные ценности должны где-то временно храниться и т.д. и т.п.
Еще обратим внимание, что остался пока без ответа вопрос о происхождении орехов – откуда они берутся и как попадают к белке? И этот вопрос (он выделен красным цветом шрифта в примечании – элемент Note) требует отдельной проработки! Так и работает аналитик – по крупицам собирая информацию, делая предположения и получая «окей» или «не-окей» от экспертов предметной области – очень важных и просто незаменимых людей на этапе бизнес-моделирования при создании систем.


Обратим внимание также, что шаг процесса P5 состоит из двух частей.



И каждую часть мы декомпозируем и рассмотрим подробнее (Рисунок 3, Рисунок 4), т.к. деятельность, выполняемая в рамках именно этих шагов, будет автоматизирована.



Рисунок 3. Диаграмма Activity – детализация (часть1)



Рисунок 4. Диаграмма Activity – детализация (часть2)


Этап 2. Выделяем то, что можно автоматизировать


Шаги, подлежащие автоматизации на диаграммах выделены цветом (см. Рисунок 3, Рисунок 4).


Все их выполняет один участник процесса – Дьяк приказный:


  • Вносит информацию о весе ореха в ведомость;
  • Вносит информацию о передаче ореха в ведомость;
  • Фиксирует факт превращения ореха в скорлупки и ядро;
  • Вносит информацию о ядре ореха в ведомость;
  • Вносит информацию о скорлупках ореха в ведомость.

Анализ проделанной работы. Что дальше?


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


Как известно, теория без практики — ничто. Нужно обязательно попробовать "моделирование" своими руками, это полезно и для осознания предложенного подхода. Например, можно поработать в среде моделирования Modelio [3]. Мы декомпозировали только часть шагов диаграммы общего вида процесса (см. Рисунок 2). В качестве практического задания может быть предложено повторить все диаграммы в среде Modelio и выполнить декомпозицию шага «Передача/прием на хранение и переработку».
Работу в конкретных средах моделирования мы пока не рассматриваем, но это может стать предметом самостоятельных статей и обзоров.


Во второй части статьи мы разберем приемы моделирования и проектирования, необходимые на 3-5 этапах, использовать будем UML диаграммы Use-case и Class. Продолжение следует.


Список источников
  1. Сайт «UML2.ru». Форум Сообщества Аналитиков. Общий раздел. Примеры. Примеры сказок, оформленных в виде UML диаграмм. [Электронный ресурс] Режим доступа: Интернет: http://www.uml2.ru/forum/index.php?topic=486.0
  2. Сайт Sparx Systems. [Электронный ресурс] Режим доступа: Интернет: https://sparxsystems.com
  3. Сайт Modelio. [Электронный ресурс] Режим доступа: Интернет: https://www.modelio.org
  4. Большой Энциклопедический словарь. Процесс (толкование). [Электронный ресурс] Режим доступа: Интернет: https://dic.academic.ru/dic.nsf/enc3p/246322
  5. Сайт «Организация эффективного управления». Блог. Рубрика «Управление бизнес процессами». Определение бизнес процесса. [Электронный ресурс] Режим доступа: Интернет: https://rzbpm.ru/knowledge/pochemu-processy-stali-s-pristavkoj-biznes.html
  6. Свидетельство № 18249 о регистрации и депонировании произведения результата интеллектуальной деятельности. Алфимов Р.В., Золотухина Е.Б., Красникова С.А. Рукопись учебно-методического пособия под названием «Моделирование предметной области с использованием Enterprise Architect» // 2011г.
  7. Золотухина Е.Б., Вишня А.С., Красникова С.А. Моделирование бизнес-процессов. — М.: КУРС, НИЦ ИНФРА-М, ЭБС Znanium.com. — 2017.
  • +17
  • 4,9k
  • 8
Поделиться публикацией

Комментарии 8

    0

    Но почему не использовать «плавательные дорожки» для участников процесса? Как это принято в BPMN и допускается в UML. Сейчас диаграмма процесса практически нечитаема (при том, что он довольно простой) из-за большого числа стрелок и забора из разделителей, не имеющих особого смысла. Размещение акторов на отдельных дорожках сразу уберёт половину стрелок, замусоривающих диаграмму.

      0
      Да, можно применить стандартную отрисовку плавательных дорожек, но тогда не будет той структуры, которая используется для сбора данных о процессе: входные/выходные объекты, правила, инструменты и т.д. Да, можно еще «лишние» потоки управления убрать за счет потоков объектов — стрелок будет меньше, но объекты окажутся «размазаны» по всей диаграмме, структура потеряется. Из личного опыта добавлю, что нередко самый разумный подход — это иметь 2 варианта активити диаграммы.
      Перерисую диаграмму в «стандартный» вид и постараюсь показать в сравнении плюсы и минусы каждого подхода.
      0
      Спасибо за остроумный пример!
      Я тоже начинал с Modelio, потом, несколько раз поматерившись на него за перекошенные на ровном месте диаграммы, вздохнул и купил лицензию на EA :)
      А можно поинтересоваться — почему UML Activity, а не BPMN (если это не внешнее требование)? Мне BPMN кажется на порядок логичнее и выразительнее, хотя, возможно, я просто больше в него погрузился. А модель данных — уже да, UML Class.
        0
        Спасибо!
        Про ЕА соглашусь на 100%! ЕА использую давно, чуть ли не 6-ой версии, и люблю больше чем Modelio, все там удобнее, продуманнее:)
        Но Modelio бесплатен и для учебных задач годится более чем. И, кстати, есть несколько приятных «фишечек», которых нет в ЕА, например, клонирование диаграммы вместе со структурой плавательных дорожек.
        Теперь, почему не BPMN. Ничего против BPMN не имею. И да — некоторые моменты выглядят логичнее, можно взаимодействие процессов, например, показать явно. Но в моем примере UML Activity используется еще и как своеобразная карта сбора данных. Ну и хотелось ограничиться одним языком моделирования. К тому же переход к BPMN, если моделирование процесса с помощью Activity было освоено, не составит труда.
        Еще раз благодарю за интерес к моим статьям!
        0
        Интересно, а как вы вставляете в EA на диаграмме Activity «человечка»? Неужели переключая Toolbox с Activity на другой?… или есть какой-то секрет?)
          0

          Есть маленький лайф-хак:)
          Когда понимаю, что нужен новый объект (артефакт или участник), добавляю сначала новый класс или актора в соответствующий пакет, потом на Activity перетаскиваю из дерева уже как объект.
          Если очень хочется показать "внутренних работников" — "человечек в кружочке", то надо участника добавить как класс, перетащить на диаграмму как объект и уже объекту назначить стереотип internal woker, но это уж слишком много дополнительных телодвижений, по-моему.
          Да, и к тому же у меня накапливается таким образом материал для объектной модели параллельно с отрисовкой бизнес-процесса.

            0
            Классно, спасибо)… с вашей лёгкой руки открыл для себя EA. Возможности впечатляют, и это пока я мизерную часть узнал. Раньше я пробовал строить разные диаграммы в Modelio, но, честно говоря, он отбил всё желание этим заниматься. А вот EA, наоборот. Особенно мне нравится возможность «декомпозиции», когда можно любой элемент в дереве как бы детализировать с помощью доп. диаграммы.
          0
          … ответ выше…

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