Заказная разработка ПО в IBS: выявление требований и проектирование архитектуры

Источник: Global CIO

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

Выявление требований к функциональности информационной системы и разработка бизнес-архитектуры

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

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

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

Тем не менее в любом проекте есть этап сбора требований, в качестве основных методов в котором используют:

  1. анализ нормативной документации;
  2. интервью, опросы, анкетирование заказчика продукта и/или будущих пользователей;
  3. семинары и мозговые штурмы с фокус-группами представителей бизнеса;
  4. наблюдение за производственной деятельностью;
  5. построение и анализ моделей деятельности и бизнес-процессов;
  6. анализ использования предыдущих версий системы, полностью или частично автоматизирующей исследуемые бизнес-процессы.

Для описания требований и моделирования применяются такие инструменты, как:

  1. Пользовательские истории (user story) и карта пользовательских историй (user story mapping) — описание функций программного обеспечения глазами конечного потребителя. Это помогает сфокусироваться на потребностях и целях пользователей, а не количестве фичей и инновациях.
  2. Сценарии использования (use case) — описание целевого взаимодействия пользователя с программным обеспечением в виде сценариев. Сценарий использования описывает, что должен сделать пользователь, чтобы получить нужный результат. 
  3. UML — стандартизованный язык моделирования, используемый для построения диаграмм вариантов использования, состояний и деятельности (uml use case diagram, uml state machine diagram, uml activity diagram).
  4. BPMN — нотация для моделирования бизнес-процессов. Является промежуточным звеном между формализацией (визуализацией) и воплощением бизнес-процесса. В отличие от диаграммы деятельности, процесс, описанный в BPMN, является «исполняемым», то есть может быть с минимальными трудозатратами реализован в любой системе управления (BPMS-системе).

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

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

Ключевые моменты выявления требований

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

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

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

Должны быть возможности:

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

Особое внимание уделяется моделированию бизнес-процессов. Сначала строится модель AS IS, описывающая текущие бизнес-процессы организации/предприятия, затем проводится ее анализ на предмет возможной оптимизации и предлагается целевая модель TO BE. В качестве основного подхода по оптимизации бизнес-процессов выбрана концепция LEAN, или бережливое производство.

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

В версии TO BE план разделен на пакеты по направлениям, и каждый пакет согласуется независимо экспертами по соответствующим направлениям. Это дало следующие преимущества:

  • ускорение согласования на 20%;
  • снижение трудозатрат экспертов (исключено повторное рассмотрение из-за доработок других направлений);
  • уменьшение нагрузки на участников (пересматриваются только измененные пакеты, а не весь план, и поток согласований стал равномернее).

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

Проектирование архитектуры данных и интеграции

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

  • соблюдение согласованности и целостности данных — минимизация дублирования и обеспечение единой версии правды;
  • проектирование эффективных и масштабируемых решений в части интеграции — выбор подходящих технологий и паттернов (например, ETL, ELT, потоковая обработка);
  • обеспечение безопасной передачи данных — использование шифрования, аутентификации и контроля доступа.

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

Ключевые моменты проектирования архитектуры данных и интеграции

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

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

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

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

Программная и техническая архитектура приложения

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

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

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

Ключевые моменты проектирования архитектуры приложения: чек-лист

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

После формирования и описания архитектуры системы важно проконтролировать ее соответствие критериям качества. Некоторые из таких критериев:

  • Полнота
    • Все ли сценарии использования системы учтены при проектировании?
    • Требовалось ли учесть соответствие системы каким-либо нормативно-правовым актами и/или отраслевым стандартам (152-ФЗ, HIPAA, EDIFACT и т. п.)?
    • Учтены ли требования к способам доступа к системе (web-, мобильное приложение, работа в офлайн-режиме)?
    • Архитектура сформирована с учетом имеющихся (планируемых к закупке) вычислительных мощностей заказчика?
  • Совместимость для взаимодействия с другими системами
    • Какие способы взаимодействия с внешними и смежными системами предусмотрены?
    • Какие форматы данных и протоколы (JSON, XML, CSV, SOAP, REST, gRPC и др.) могут быть использованы?
    • Предусмотрены ли стандартизированные API (OpenAPI, GraphQL, OData) для интеграции?
    • Предусмотрены ли приложения для реализации интеграции (ETL-процессы, Apache NiFi)?
    • Как решается проблема разных кодировок и форматов дат?
    • Каким образом планируется осуществлять миграцию или загрузку исторических данных?
  • Модульность (разделение на независимые компоненты)
    • Насколько независимы подсистемы/компоненты? Какое обоснование выбранной степени зависимости/независимости?
    • Как будет организована структура хранения данных (схемы БД, XML, JSON, ROLAP, колоночное и т. п.)? Почему?
  • Доступность и отказоустойчивость
    • Какие компоненты системы наиболее критичны для ее общей доступности? Что будет при выходе их из строя?
    • Какие инструменты мониторинга и информирования о возникновении отказов предусмотрены (Prometheus, Grafana, Zabbix, New Relic)?
    • Предусмотрена ли система оповещений при деградации сервисов (SMS, email и т. п.)?
    • Какие решения предусмотрены для минимизации влияния зависимостей от сторонних сервисов (API, SaaS)?
    • Как будет организовано логирование и мониторинг интеграций (ELK, Prometheus, Grafana)?
    • Как будет организовано логирование и аудит действий пользователей?
    • Как будут обрабатываться отсутствующие или некорректные данные?
    • Для всех ли частей системы возможно создание резервных копий? Какое оценочное время восстановления?
  • Целостность (предотвращение потерь и искажений данных)
    • Какие решения предусмотрены для предотвращения компрометации или несанкционированного изменения данных?
    • Какие решения предусмотрены для журналирования и фиксации доступа пользователей к системе и/или данным и их изменению?
    • Предусмотрена ли историчность данных, способы версионирования записей?
  • Масштабируемость
    • Как система будет вести себя при высокой нагрузке (ограничение запросов, замедление работы и т. п.)? Какие решения предусмотрены на случай превышения нагрузки, заданного показателями назначения?
    • Какие решения предусмотрены в части горизонтального масштабирования (Kubernetes, балансировка нагрузки)?
    • Предусмотрены ли механизмы очередей (RabbitMQ, Apache Kafka) для асинхронной обработки?
  • Отзывчивость (быстрота реакции на действия пользователей)
    • Учтены ли показатели назначения при проектировании системы? Например, время отклика для ключевых операций (загрузка страницы, поиск, выполнение транзакции и т. п.)?
    • Произведена ли оценка объема данных основных сущностей модели и времени выполнения запросов к ним?
    • Какие меры, средства, подходы предусмотрены для оптимизации работы frontend?
    • Какие меры, средства, подходы предусмотрены для оптимизации работы backend?
  • Конфиденциальность
    • Какие механизмы аутентификации и авторизации предусмотрены (LDAP, Active Directory, IAM)?
    • Учтена ли реализация ролевой модели?
    • Как обеспечивается безопасность передачи данных (TLS, шифрование)?
    • Как обрабатываются конфликты доступа к общим ресурсам?
    • Предусмотрены ли решения для использования цифровой подписи?
    • Предусмотрено ли маскирование данных при хранении и/или передаче?

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

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

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

Следите за новостями компании IBS в соцсетях и блогах
Мнение эксперта в статье
Команда экспертов IBS
Сайт IBS использует cookie. Это дает нам возможность следить за корректной работой сайта, а также анализировать данные, чтобы развивать наши продукты и сервисы. Оставаясь на сайте и (или) нажимая кнопку «Принять условия», вы соглашаетесь с условиями обработки ваших персональных данных, содержащихся в cookie-файлах. Вы можете запретить сохранение cookie в настройках вашего браузера.