Введение
Создание больших сложных информационных систем (ИС) — это долгий, дорогой и часто непростой процесс. Иногда бывает так, что потрачено очень много денег, сил и времени, а система всё равно делает не то, что нужно. В этой статье расскажем, как аналитик может помочь избежать этого, а также:
-
в чём основная проблема при разработке сложных информационных систем;
-
какие аналитические модели и зачем нужно применять в процессе разработки;
-
как и с помощью каких инструментов разрабатывать аналитические модели.
Статья будет полезна системным и бизнес-аналитикам, а также проектным и продуктовым менеджерам, которые хотят выстроить последовательный процесс разработки систем через аналитические модели.
Проблематика разработки сложных систем
При разработке больших и сложных ИС, вы неизбежно наткнетесь на:
-
много стейкхолдеров с разными целями;
-
много интеграций;
-
сложная логика взаимодействия между компонентами и смежными системами;
-
запутанные процессы.
Главная сложность — столкновение интересов. Каждый, кто участвует в проекте, хочет «сделать хорошо», но смотрит на задачу чаще всего только со своей точки зрения.
Для разработчика «хорошо» — это красивый код и технологичный стек, для менеджера — соблюдение сроков и бюджетов, дизайнер хочет сделать красиво и «юзерфрендли», бизнесу нужна прибыль, а пользователь хочет использовать удобную систему, желательно бесплатно.
Разные ценности участников процесса неизбежно вызывают конфликты. Нерешенные конфликты могут приводить к проблемам, решение которых требует времени и ресурсов.
Если проблема не решается вовремя, то возникают «пожары» и необходимость их «тушить».
Что же делать? Стараться предупреждать потенциальные конфликты и проблемы до их возникновения, организовать процесс так, чтобы важные проблемы подсвечивались до их возникновения. Тогда о путях решения этих проблем можно будет эффективно договариваться. В этом может помочь применение аналитических моделей и представлений, в которых отражаются разные точки зрения на системы и интересы разных стейкхолдеров.
Роль аналитика в создании сложных систем
Модель — это упрощённое представление объектов реального мира, отображающее свойства этого объекта, важные в контексте решаемой задачи.
Анализ — это исследование через выделение и изучение отдельных частей объекта анализа.
Аналитик, используя навыки анализа, выявляет в окружающем мире структуры данных и фиксирует их в виде набора взаимосвязанных моделей. Именно аналитик отвечает за то, что аналитические модели будут точными, цельными и понятными.
Важные точки зрения на информационную систему
ИС не создаются в вакууме, сами по себе они никому не нужны. Системы создаются для того, чтобы воздействовать на окружающую действительность, изменить ее. Если после внедрения системы в окружении, бизнесе, у пользователей и клиентов ничего не поменялось, значит цели создания не были достигнуты. Решение задач клиентов, ускорение процессов, повышение прибыли могут быть целями создания системы.
При разработке информационной системы нужно посмотреть на неё с разных сторон, рассмотреть разные аспекты, чтобы учесть интересы всех стейкхолдеров и заранее подсветить возможные точки конфликта их интересов.
При этом нужно учитывать:
-
Надсистему, в которую встроится разрабатываемая система, и её проблемы.
-
Саму систему, окружающие её системы, пользователей и других стейкхолдеров.
-
Состав, внутреннюю структуру системы в разных разрезах.
Основные способы декомпозиции:-
Функциональная структура системы — с точки зрения набора функций системы и отношений между ними.
-
Композитная структура системы — с точки зрения набора конструктивных элементов (сервисов, модулей), из которых собирается система.
-
-
Структура поставок системы — инкременты из решённых задач, поставляемых конечным пользователям.
Какие модели нужны для разработки системы
Набор нужных для разработки аналитических моделей напрямую связан с перечнем вопросов, на которые нужно ответить в этом процессе.
-
Какие внешние проблемы будет решать система?
-
Какие пользовательские сценарии должны быть для этого реализованы?
-
Какое поведение должно быть реализовано в системе?
-
Что и как нужно изменить в уже существующем решении?
Моделирование сценариев
Что такое моделирование сценариев и для чего оно нужно
Моделирование сценариев направлено на выявление и перечисление основных кейсов использования системы, её возможностей, которые решают проблемы пользователей. Сценарии должны содержать не описание работы системы и способы реализации, а то, что пользователи будут делать в ней. То есть моделирование сценариев — это моделирование изменений действительности, которая окружает систему.
Для успешного моделирования на входе этого этапа нужно иметь список ролей, их проблем, задач и предпочтений.
Моделирование сценариев несёт в себе много возможностей.
-
Снижает риски забыть или пропустить важные возможности системы.
-
Помогает заранее договориться о возможностях, которые нужно реализовать, и заложить соответствующие архитектурные и другие ограничения.
-
Помогает заранее договориться о сценариях, которые НЕ будут реализованы.
-
Упрощает управление проектом, планирование и проведение приемо-сдаточных испытаний, написание документации.
На выходе этого этапа должен быть набор сценариев и их взаимосвязей полный настолько, чтобы складывалась полная картина взаимодействия пользователя с системой. Модель должна содержать набор сценариев, который имеет смысл поставлять целиком.
Инструментарий
Для оформления модели сценариев можно использовать разные техники и инструменты.
Классическая и самая популярная техника — диаграмма вариантов использования (Use Case Diagram) нотации UML. Инструментов для неё существует очень много. Можно использовать Visual Paradigm, PlantUML, Enterprise Architect, даже draw.io.
Не такая популярная, но тоже интересная техника — использовать уровень бизнеса и уровень мотивации нотации Archimate.
В крайнем случае список сценариев можно описать в виде текста, главное зафиксировать их.
Пример
Пример из области умных зданий.
Описание проблемы. У жителя умного здания есть проблема: ему нужно выходить к пункту пропуска и показывать пропуск при въезде во двор. Он хочет не выходить из машины, а хочет попадать во двор бесконтактно.
Потенциальное решение. Открывать шлагбаум автоматически, если в машине есть бесконтактный пропуск.
Эта модель на самом деле не достаточна для реализации, потому что игнорирует вопросы безопасности и требования нормативно-пDравовых актов, эти вопросы неизбежно возникнут в процессе обсуждения этой диаграммы со стейкхолдерами.
В результате обсуждения модель дополнится кейсами аннулирования пропусков, обработкой ситуации утери пропуска и т.д.
Моделирование предметной области
Что такое моделирование предметной области и зачем оно нужно
Моделирование предметной области направлено на выявление терминов и правил, сущностей и связей между ними, характерных для автоматизируемой предметной области. Моделирование предметной области заключается в первую очередь в формировании глоссария.
Оперирование общими понятиями — один из ключевых факторов успешной коммуникации в команде. Без единой системы понятий, единого языка, эффективное однозначное формулирование требований невозможно.
Сущности модели предметной области должны отражаться на всех уровнях моделирования и разработки системы: и сценарии использования и программный код должны оперировать одинаковыми бизнес-понятиями.
Инструментарий
Модель предметной области можно представить по-разному.
-
Текст
-
Табличное представление
-
Диаграмма классов (Class Diagram) нотации UML
-
Archimate
-
ER-диаграмма. Стоит использовать аккуратно, потому что есть сильная привязка к структуре базы данных.
-
GraphQL как язык запросов. Удобен для описания сущностей и атрибутов предметной области.
Пример
Пример модели предметной области по нашей проблеме проезда во двор умного здания в виде диаграммы классов.
Такая диаграмма отражает все сущности нашей предметной области и связи между ними. Модель позволяет сформировать единый глоссарий и понимание физического смысла сущностей.
Моделирование полезных инкрементов системы
Что такое моделирование инкрементов и зачем оно нужно
Моделирование инкрементов направлено на фиксацию этапов разработки системы: в какой очередности реализуется функциональность системы. Трудно разработать с нуля систему сразу сложной, необходимо начинать с самой важной функциональности, а затем наращивать её и улучшать.
Моделирование инкрементов позволяет:
-
структурировать порядок поставки новой функциональности;
-
приоритизировать работу и сконцентрироваться на наиболее важной функциональности;
-
договориться о составах поставок функциональности с Заказчиком.
Инструментарий
Одна из самых удобных техник — User Story Mapping. Карту историй можно построить в Miro, draw.io и даже стикерами на доске.
Пример
Вернёмся к нашему примеру с бесконтактным въездом во двор. Выделим MVP с минимальными возможностями:
-
даём возможность охранникам выдавать пропуска вручную;
-
настраиваем СКУД (система, которая открывает шлагбаум) так, что шлагбаум открывается при подъезде авто с бесконтактным пропуском;
-
предоставляем охранникам возможность просматривать списки пропусков и вручную их блокировать.
Так наши пользователи могут быстро получить минимально нужный объём функциональности и могут начинать пользоваться бесконтактным въездом.
В рамках следующих релизов мы можем улучшать систему: реализовать самостоятельную регистрацию жителями дома, распознавание номеров, автоматическую блокировку пропусков и т.д.
Моделирование поведения системы
Что такое моделирование поведения и зачем оно нужно
Моделирование поведения направлено на определение того, как система будет функционировать и как именно будут реализованы сценарии работы пользователей. Для этого необходимо выявить:
-
входящие и исходящие информационные потоки: какая информация и откуда поступает В систему, какая информация и куда передаётся ИЗ системы;
-
порты/интерфейсы: точки взаимодействия с внешним миром и другими системами (API, пользовательский интерфейсы, брокеры сообщений, шины и т.д.)
-
ключевые функции системы: что именно система делает, за что отвечает, чего ждать от системы и чего не ждать.
Моделирование поведения системы позволяет:
-
убедиться, что система в принципе реализуема и нужная для её работы информация доступна;
-
определиться с кем/чем и в каких случаях нужно интегрироваться;
-
выявить объекты внимания, которые требуют дальнейшего детального проектирования и спецификации;
-
верхнеуровнево оценить сложность создания системы.
Инструментарий
Для моделирования поведения системы существует огромное количество инструментов и техник.
-
Диаграммы нотации UML: диаграмм последовательности, диаграмма деятельности, диаграмма состояний. В качестве инструмента — любой удобный вам для нотации UML.
-
Диаграмма активности нотации SysUML.
-
Archimate.
-
Нотация C4.
-
Event Storming.
-
BPMN.
-
Фиксация без нотации вформате «квадратики и стрелочки».
Пример
Можно смоделировать наш пример с бесконтактным въездом во двор в нотации Archimate.
На модели отражены:
-
Интерфейсы взаимодействия системы с пользователями и другими системами:
-
охранник взаимодействует с системой через UI;
-
сама система взаимодействует со СКУД, которая управляет шлагбаумом, через API.
-
-
Информационные потоки в системе: данные пропусков, события прохода, вызовы различных команд.
-
Функциональность системы: управление пропусками, обогащение событий данными о владельцах, предоставление опций выдачи пропусков и просмотра журнала событий.
Как применять аналитические модели в процессе разработки
При разработке системы с нуля работа над аналитическими моделями может идти в таком порядке:
-
Моделирование сценариев. Договориться с Заказчиком о границах проекта и сценариях работы. Параллельно — моделирование предметной области. Пригодится для формулировки требований к поведению.
-
Моделирование полезных инкрементов. Сформировать набор функциональности для MVP.
-
Моделирование поведения системы. Описать функциональность и правила работы системы.
При развитии уже существующей системы работа над аналитическими моделями входит в цикл.
Доработка системы обязательно должна проходить через модификацию аналитических моделей. Изменения в моделях позволяют предварительно оценивать сложность доработки.
Экспресс-оценка изменений через аналитические модели
Сложность и стоимость вносимых изменений во многом зависит от вида этих изменений. С помощью аналитических моделей можно определить вид предстоящих изменений.
-
Количественные изменения — развитие уже существующих функций системы (улучшения, повышение удобства использования). Пример: добавление атрибутов сущности, улучшение UI без изменения бизнес-модели.
-
изменения предсказуемы по срокам и ресурсам;
-
меньше рисков.
-
-
Качественные изменения — придание системе принципиально новых качеств за счёт новых компонентов или архитектурных решения. Пример: добавление нового бизнес-процесса.
-
долгая реализация;
-
стоимость может быть высокой;
-
есть риски.
-
Качественные изменения в систему вносить намного сложнее, чем количественные. Но без развития, внедрения новых функций система будет стагнировать. Здесь кроется польза аналитических моделей для менеджмента: с помощью моделей можно оценивать изменения и балансировать между качественными и количественными изменениями.
Резюме
-
Главная проблема при разработке сложных информационных систем — конфликты заинтересованных лиц на стыке их интересов. Среди таких конфликтов потенциальные проблемы могут оставаться незамеченными вплоть до критической точки.
-
Разработка связанного набора аналитических моделей, в которых бы учитывались интересы всех заинтересованных лиц, эффективна для качественных коммуникаций и своевременного обнаружения потенциальных проблем.
-
Роль аналитика в этом процессе — создание и поддержка в актуальном состоянии аналитических моделей.
-
Аналитические модели, которые могут быть разработаны аналитиком:
-
модель сценариев;
-
модель полезных инкрементов
-
модель предметной области;
-
модель поведения системы.
-
-
Инструментарий и подходы аналитического моделирования не так важны. Используйте те инструменты, которыми владеете лучше всего. Главное, чтобы модель содержала корректную информацию.
Шпаргалка по аналитическим моделям
Что |
Зачем |
Когда |
Как |
Модель сценариев |
Снизить риск забыть важные возможности системы; Договориться о возможностях, которые нужно реализовать, и заложить архитектурные и другие ограничения; Упростить управление проектом, планирование и проведение приемо-сдаточных испытаний, написание документации. |
В начале работы. |
UML Use Case Diagram; Уровень бизнеса и уровень мотивации Archimate; Текст. |
Модель предметной области |
Прозрачность коммуникаций через составление общего глоссария. |
В начале параллельно с проработкой сценариев. |
Текст; Табличное представление; UML Use Case Diagram; Archimate; ER-диаграмма; GraphQL как язык запросов. |
Модель полезных инкрементов |
Структурировать порядок поставки новой функциональности; Приоритизировать работу и сконцентрироваться на наиболее важной функциональности; Договориться о составах поставок функциональности с Заказчиком. |
После моделирования сценариев. |
User Story Map |
Модель поведения системы |
Убедиться, что система в принципе реализуема и нужная для её работы информация доступна; Определиться с кем/чем и в каких случаях нужно интегрироваться; Выявить объекты внимания, которые требуют дальнейшего детального проектирования и спецификации; Верхнеуровнево оценить сложность создания системы. |
После моделирования инкрементов. |
UML: Sequence Diagram, Activity Diagram, State Machine; SysUML Activity Diagram; Archimate; C4; Event Storming; BPMN; Квадратики и стрелочки. |
Автор — Борис Романов
В ИТ с 1996.
Разработчик, аналитик, архитектор, менеджер проектов, менеджер продуктов.
Опыт в сферах систем распознавания, электронного документооборота, информационной безопасности, e-commerce.
ссылка на оригинал статьи https://habr.com/ru/articles/857606/
Добавить комментарий