Проектирование информационных систем: жизненный цикл, требования, методы и нотации (UML, IDEF, BPMN, C4)

Курс охватывает ключевые принципы проектирования информационных систем: от понятий, классификации и жизненного цикла до требований, архитектуры и детального проектирования. Рассматриваются методологии и структурные подходы, а также практическое моделирование в UML, IDEF, BPMN и C4.

1. Введение в проектирование информационных систем

Введение в проектирование информационных систем

Что такое информационная система

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

Важно различать близкие понятия:

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

  • Операционные (учёт, транзакции, регистрация событий).
  • Управленческие (отчётность, планирование, контроллинг).
  • Аналитические (BI, витрины данных, прогнозирование).
  • Интеграционные (шины, API, обмен данными между системами).
  • Зачем нужно проектирование ИС

    Проектирование ИС — это деятельность по определению того, что именно должна делать система и как именно она будет устроена (с учётом ограничений, рисков и среды эксплуатации).

    Цели проектирования:

  • Снизить неопределённость до начала разработки.
  • Согласовать ожидания заказчиков, пользователей и команды.
  • Выявить и устранить противоречия в требованиях.
  • Спланировать архитектуру, данные, интеграции и интерфейсы.
  • Обеспечить проверяемость: чтобы можно было подтвердить, что система соответствует требованиям.
  • Результат проектирования — не только диаграммы. Это также решения, спецификации, словари данных, протоколы согласований и набор артефактов, по которым разработка и внедрение становятся управляемыми.

    Короткая история подходов и текущее состояние

    Подходы к созданию ИС развивались от строгих инженерных моделей к гибридным практикам:

  • Структурный анализ и проектирование: фокус на функциях, потоках данных, декомпозиции, формализации (IDEF0, DFD и др.).
  • Объектно-ориентированный подход: фокус на сущностях предметной области и взаимодействиях (UML).
  • Процессное управление: моделирование бизнес-процессов как основы автоматизации (BPMN).
  • Архитектурные подходы: внимание к контексту, контейнерам, компонентам, интеграциям и качественным атрибутам (C4 и др.).
  • Agile/итеративность: проектирование не исчезло, но стало инкрементальным — “достаточно, чтобы двигаться дальше”, с уточнениями по мере получения обратной связи.
  • Практика сегодня обычно комбинирует методы: например, BPMN для процессов, UML для поведения и структуры, C4 для архитектуры, IDEF0 для функциональной декомпозиции и границ ответственности.

    Жизненный цикл ИС и место проектирования

    Жизненный цикл ИС — это набор стадий, через которые проходит система от идеи до вывода из эксплуатации. Типовой укрупнённый цикл:

  • Инициирование и обследование.
  • Формирование и согласование требований.
  • Проектирование.
  • Реализация (разработка/настройка).
  • Тестирование.
  • Внедрение.
  • Эксплуатация и сопровождение.
  • Развитие/модернизация или вывод из эксплуатации.
  • !Укрупнённый жизненный цикл ИС и место проектирования

    Специфика фазы проектирования в том, что она соединяет “что нужно” (требования) и “как будет устроено” (архитектура и реализация). При этом проектирование:

  • Не равно программированию.
  • Может выполняться итеративно.
  • Должно учитывать ограничения: сроки, бюджет, технологии, регуляторику, существующие системы.
  • Требования как вход в проектирование

    Требование — формулировка потребности или ограничения, которым должна соответствовать система.

    На практике полезно разделять требования на уровни:

  • Бизнес-требования: зачем системе существовать, какую ценность она даёт.
  • Пользовательские требования: какие задачи выполняет пользователь, какие сценарии и роли.
  • Функциональные требования: конкретные функции и правила обработки.
  • Нефункциональные требования: качество и ограничения (производительность, доступность, безопасность, совместимость, масштабируемость, аудит).
  • Ограничения: технологические, организационные, юридические.
  • Ключевое правило: проектирование всегда опирается на требования, но также выявляет пробелы в требованиях. Поэтому связь двусторонняя: требования уточняются на основе результатов проектирования.

    Примеры проверяемых формулировок (вместо расплывчатых):

  • Вместо “система должна быть быстрой” — “время ответа для операции поиска не более 2 секунд при 200 одновременных пользователях”.
  • Вместо “должно быть безопасно” — “аутентификация через корпоративный SSO, журналирование действий администратора, хранение паролей не допускается”.
  • Что именно проектируют в информационной системе

    Проектирование ИС обычно затрагивает несколько взаимосвязанных областей.

    Проектирование процессов и взаимодействий:

  • Как выполняется работа “как есть” и “как будет”.
  • Где возникают события, кто принимает решения, какие есть ветвления и исключения.
  • Проектирование данных и информации:

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

  • Архитектура (слои, модули, компоненты, сервисы).
  • Интерфейсы (API, события, интеграции).
  • Поведение (сценарии, состояния, взаимодействия компонентов).
  • Проектирование пользовательского опыта:

  • Роли, сценарии, прототипы экранов.
  • Требования к доступности и удобству.
  • Проектирование эксплуатации:

  • Логирование, мониторинг, резервное копирование.
  • Управление конфигурациями, отказоустойчивость.
  • !Какие области затрагивает проектирование ИС

    Методы и нотации: зачем их так много

    Нотации и методы — это способы фиксировать и передавать проектные решения. Разные нотации отвечают на разные вопросы:

  • “Кто и что делает?”
  • “Какие данные есть и как связаны?”
  • “Как устроена система и её границы?”
  • “Как компоненты взаимодействуют во времени?”
  • Ниже — обзор ключевых нотаций курса.

    UML: язык моделирования программных систем

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

    Типовые диаграммы, которые часто полезны в проектах ИС:

  • Диаграмма вариантов использования (Use Case): акторы и их цели.
  • Диаграмма классов (Class): структура предметной области и модели данных на уровне объектов.
  • Диаграмма последовательностей (Sequence): взаимодействия во времени (запросы, ответы, вызовы).
  • Диаграмма состояний (State Machine): жизненный цикл сущности (например, “Заявка”: черновик → согласование → утверждена → закрыта).
  • Диаграмма компонентов (Component): модули и зависимости.
  • Официальная спецификация поддерживается OMG: UML — Object Management Group.

    IDEF: структурные методы анализа и проектирования

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

    Наиболее известные в контексте ИС:

  • IDEF0: функциональная модель “что делаем” через блоки и ICOM-стрелки (Input, Control, Output, Mechanism).
  • IDEF1X: моделирование данных (близко к ER-моделям), полезно для проектирования структуры данных.
  • IDEF0 особенно хорошо подходит для:

  • Декомпозиции функций верхнего уровня.
  • Фиксации границ ответственности и управляющих воздействий.
  • Обследования и описания предметной области до автоматизации.
  • Справочная страница по IDEF доступна у NIST: IDEF — NIST.

    BPMN: моделирование бизнес-процессов

    BPMN (Business Process Model and Notation) предназначена для описания бизнес-процессов: событий, задач, шлюзов (ветвлений), ролей и обмена сообщениями.

    BPMN полезна, когда важно:

  • Описать процесс сквозным образом между подразделениями.
  • Найти ручные шаги, задержки, точки контроля.
  • Уточнить требования к автоматизации через процесс “как будет”.
  • BPMN стандартизирован OMG: BPMN — Object Management Group.

    C4: визуализация архитектуры по уровням

    C4 model — подход к архитектурным диаграммам, который предлагает четыре уровня представления:

  • Контекст (System Context): система и внешние акторы/соседние системы.
  • Контейнеры (Containers): крупные исполняемые части (веб-приложение, мобильное приложение, БД, брокер сообщений).
  • Компоненты (Components): внутренние части контейнера (модули, сервисы).
  • Код (Code): уровень реализации (обычно не обязателен как диаграмма).
  • C4 ценят за ясность: можно показать систему и “приближаться” к деталям по мере необходимости.

    Описание подхода: The C4 model.

    Рекомендуемые языки и форматы для описания диаграмм

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

    Рекомендуемые варианты:

  • UML: PlantUML как текстовый язык описания UML-диаграмм — PlantUML.
  • C4:
  • - Structurizr DSL как специализированный язык под C4 — Structurizr DSL. - C4-PlantUML как набор шаблонов для C4 в PlantUML — C4-PlantUML.
  • BPMN: BPMN 2.0 XML как стандартный формат обмена диаграммами между инструментами моделирования — BPMN — Object Management Group.
  • IDEF: для IDEF чаще применяется графическое моделирование в инструментах, а для текстовой фиксации — спецификации блоков и стрелок (глоссарий функций, таблицы ICOM для IDEF0, словарь сущностей и связей для IDEF1X) как часть проектной документации.
  • Как выбирать нотацию под задачу

    Практическое правило: выбирайте нотацию по вопросу, на который вы отвечаете.

  • Если нужно описать процесс и роли — чаще всего BPMN.
  • Если нужно описать функции и их декомпозицию — IDEF0.
  • Если нужно описать структуру и поведение ПО — UML.
  • Если нужно быстро и понятно объяснить архитектуру и границы системы — C4.
  • Нотации не конкурируют “кто лучше”, они дополняют друг друга. Ошибка — пытаться одной нотацией описать всё.

    Типовые ошибки в проектировании ИС

  • Проектирование без явных требований или с требованиями, которые нельзя проверить.
  • Слишком ранняя детализация: попытка “спроектировать всё до последнего поля” до согласования границ и целей.
  • Игнорирование нефункциональных требований (а потом внезапные проблемы с производительностью, безопасностью или интеграциями).
  • “Диаграммы ради диаграмм”: наличие схем, которые не помогают принимать решения.
  • Несогласованность артефактов: процессная модель говорит одно, требования — другое, архитектура — третье.
  • Что будет дальше в курсе

    В следующих темах курса мы последовательно разберём:

  • Концепцию жизненного цикла ИС и роль проектирования на разных стадиях.
  • Подходы к формированию требований и их трассировке до проектных решений.
  • Методологии и технологии проектирования.
  • Проектирование информационного и программного обеспечения.
  • Структурные методы анализа и проектирования, а также практику применения UML, IDEF, BPMN и C4 на сквозном примере.
  • 10. Формирование требований: источники, методы сбора, интервью

    Формирование требований: источники, методы сбора, интервью

    Как эта тема связана с жизненным циклом и проектированием

    В предыдущих статьях курса мы зафиксировали:

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

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

    Опорный стандарт по инженерии требований: ISO/IEC/IEEE 29148.

    Что такое требование и что значит «сформировать требования»

    Требование — это формулировка потребности или ограничения, которым должна соответствовать система.

    Формирование требований — это управляемый процесс, в котором команда:

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

  • Стейкхолдер — человек или группа, на кого влияет система или кто влияет на требования.
  • Элицитация — получение требований и знаний о потребностях из разных источников (часто через интервью, наблюдение, анализ документов).
  • Артефакт требований — фиксируемый результат: список требований, критерии приёмки, глоссарий, модель процесса, протокол интервью.
  • Свод практик бизнес-анализа, где подробно описана элицитация: BABOK Guide.

    Источники требований: от кого и от чего они берутся

    Требования почти никогда не приходят из одного места. На практике они «собираются» как мозаика.

    !Карта основных источников требований

    Люди и роли

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

    Процессы и правила работы

    Источником требований часто являются:

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

  • BPMN для описания процесса между ролями
  • IDEF0 для функциональной декомпозиции и границ ответственности
  • Стандарт BPMN: BPMN 2.0.

    Документы и регламенты

    Типовые документальные источники:

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

    Данные, отчётность, показатели

    Часто требования формулируются как «нужно хранить информацию», но реализация зависит от точной формулировки:

  • какие сущности нужны (клиент, договор, заказ, платёж)
  • какие атрибуты обязательны
  • какие справочники являются «источником истины»
  • какие отчёты и показатели должны получаться
  • Здесь обычно появляются:

  • глоссарий терминов
  • концептуальная модель данных (часто UML Class как модель предметной области)
  • Спецификация UML: UML.

    Существующие системы и интеграции

    Требования возникают из реальности:

  • где уже хранятся нужные данные
  • кто владелец данных
  • какие API или форматы уже существуют
  • какие ограничения по частоте вызовов, SLA и доступности
  • Чтобы не пропустить «скрытые зависимости», часто начинают с C4 контекста.

    Описание модели: The C4 model.

    Ограничения и регуляторика

    Ограничения часто становятся требованиями.

    Примеры источников:

  • законодательные требования (например, к персональным данным)
  • внутренние политики компании
  • договорные обязательства с контрагентами
  • ограничения по срокам, бюджету, технологическому стеку
  • Практическое правило: если ограничение реально влияет на архитектуру или процесс, оно должно быть зафиксировано как требование или как допущение, а не «знание в голове».

    Методы сбора требований: что выбирать и когда

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

    Интервью

    Интервью — структурированный разговор с целью выявить потребности, правила, исключения, критерии успеха.

    Сильные стороны:

  • можно быстро уточнять и задавать «почему»
  • хорошо выявляет исключения и реальные боли
  • Риски:

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

    Наблюдение и «теневое сопровождение»

    Наблюдение — аналитик смотрит, как пользователь реально выполняет работу (иногда это называют shadowing).

    Сильные стороны:

  • хорошо выявляет скрытые шаги, обходные решения, реальные источники данных
  • Риски:

  • эффект наблюдателя: поведение может меняться, когда «смотрят»
  • Анализ документов и артефактов

    Документ-анализ включает:

  • регламенты, инструкции, шаблоны
  • выгрузки данных, отчёты
  • логи и журналы операций
  • Сильные стороны:

  • быстро покрывает «формальные ожидания»
  • Риски:

  • документы могут быть устаревшими
  • Воркшопы и совместные сессии

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

    Сильные стороны:

  • быстро выравнивает понимание между подразделениями
  • позволяет сразу согласовывать противоречия
  • Риски:

  • без структуры превращается в спор
  • Прототипирование

    Прототип — упрощённое представление будущего решения (экраны, сценарии, иногда технический прототип интеграции).

    Сильные стороны:

  • резко повышает качество обратной связи
  • Риски:

  • участники начинают «оценивать дизайн», не договорившись о целях и правилах
  • Материалы по пользовательским интервью и прототипированию часто публикует Nielsen Norman Group.

    Анализ существующей системы и обратной связи

    Если система уже есть, важными источниками становятся:

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

    Интервью как ключевой метод: как проводить профессионально

    Когда интервью особенно полезно

    Интервью эффективно, когда нужно:

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

    Хорошее интервью начинается до встречи. Минимально достаточная подготовка:

  • Определить цель интервью.
  • Выбрать респондента и роль.
  • Собрать контекст.
  • Подготовить сценарий вопросов.
  • Определить, как фиксируем результаты.
  • #### Определяем цель

    Примеры корректных целей:

  • «уточнить процесс обработки заявки и точки принятия решений»
  • «собрать исключения и причины возврата на доработку»
  • «понять, какие данные реально нужны для отчёта и откуда они берутся»
  • Некорректная цель:

  • «собрать все требования к системе»
  • #### Выбираем респондента

    Полезная техника: брать респондентов разных типов.

  • опытный пользователь знает исключения
  • типичный пользователь показывает основной поток
  • руководитель даёт критерии эффективности
  • поддержка показывает типовые сбои и жалобы
  • #### Собираем контекст заранее

    Чтобы не тратить интервью на «общеизвестные вещи», заранее изучают:

  • регламенты и формы
  • существующие экраны и отчёты
  • типовые заявки/инциденты
  • Структура интервью

    Практическая структура, которая хорошо работает в ИС-проектах:

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

    Типы вопросов

    #### Открытые вопросы

    Используются, чтобы понять контекст.

    Примеры:

  • «Как вы понимаете успешное завершение процесса?»
  • «Что происходит после того, как заявка отправлена?»
  • #### Закрытые вопросы

    Используются, чтобы зафиксировать факт.

    Примеры:

  • «Согласование всегда обязательно?»
  • «Есть ли дедлайн в днях?»
  • #### Уточняющие вопросы

    Используются, чтобы убрать неоднозначность.

    Примеры:

  • «Что вы называете “клиентом” в этом процессе: юридическое лицо, контакт, договор?»
  • «Какие статусы заявки возможны и кто их меняет?»
  • #### Контрольные вопросы

    Используются, чтобы проверить целостность картины.

    Примеры:

  • «Правильно ли я понял: если сумма больше X, требуется дополнительное согласование?»
  • Техники ведения разговора

    #### «Воронка»

    Техника: от общего к частному.

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

    #### Разбор по конкретным примерам

    Просите показать реальные кейсы.

  • «Возьмём последнюю заявку, которая вернулась на доработку. Почему?»
  • «Покажите пример отчёта, который вы используете»
  • Это уменьшает «идеализированные ответы».

    #### Поиск исключений

    Часто ценность интервью в исключениях.

    Типовые вопросы:

  • «Когда процесс идёт не так?»
  • «Что вы делаете, если данных не хватает?»
  • «Какие случаи вы обрабатываете вручную и почему?»
  • Что фиксировать в ходе интервью

    Чтобы результаты превращались в требования и модели, фиксируют:

  • цель пользователя и критерии «готово»
  • шаги процесса и роли
  • входные и выходные документы
  • данные, справочники, источники
  • бизнес-правила и ограничения
  • исключения и причины отказов
  • метрики: время выполнения, частота, объёмы
  • Практическое правило: запись «хочу кнопку» сама по себе редко является требованием. Важно зафиксировать, какую цель и какой шаг процесса эта «кнопка» должна поддержать.

    Результаты интервью как артефакты

    Минимально достаточный набор выходов после интервью:

  • протокол интервью (кто, когда, тема, ключевые факты, открытые вопросы)
  • список требований или уточнений к требованиям
  • список открытых вопросов и рисков
  • обновления моделей: BPMN процесса, глоссарий, черновая модель данных
  • Как связывать результаты сбора требований с моделями UML, BPMN, IDEF0, C4

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

    BPMN: сценарий работы между ролями

    Используйте BPMN, чтобы:

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

    UML Use Case: цели пользователей

    UML Use Case полезен, чтобы:

  • выделить акторов и их цели
  • не смешивать роли (например, «оператор» и «администратор»)
  • фиксировать границы системы: что делает система, а что остаётся вне
  • UML Sequence и State Machine: сложные сценарии и статусы

    Когда интервью выявляет сложные интеграции или статусы, полезны:

  • UML Sequence для «что вызывает что» и где ошибки
  • UML State Machine для жизненного цикла сущности и допустимых переходов
  • IDEF0: функции и границы ответственности

    IDEF0 полезен, если на интервью и обследовании много функциональной декомпозиции:

  • что является входом функции
  • что управляет функцией (регламенты, политики)
  • что является выходом
  • что является механизмом (роли, системы, ресурсы)
  • C4 Context: границы и внешние зависимости

    Интервью с владельцами соседних систем часто приводит к критичным уточнениям:

  • какие системы внешние
  • какие данные пересекаются
  • кто владеет источником истины
  • C4 контекст делает эти зависимости видимыми до проектирования.

    Типовые ошибки при сборе требований и как их предотвращать

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

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

    Чтобы интервью давало измеримый результат, проверьте:

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

    Итог

    Формирование требований — это управляемое извлечение потребностей и ограничений из разных источников, превращение их в проверяемые формулировки и согласование приоритетов.

    Ключевые выводы:

  • источники требований разнообразны: люди, процессы, документы, данные, интеграции, ограничения
  • методы сбора требований лучше применять в комбинации, а не «одним интервью»
  • интервью эффективно, если оно подготовлено, структурировано и заканчивается артефактами
  • результаты интервью должны связываться с моделями BPMN, UML, IDEF0 и C4, чтобы требования стали согласуемыми и проверяемыми
  • В следующих темах курса мы перейдём к детализации требований: уровням требований, качеству формулировок, критериям приёмки и трассировке «цель → требование → проектное решение → тест».

    11. Анализ требований: контекст, границы, заинтересованные стороны

    Анализ требований: контекст, границы, заинтересованные стороны

    Зачем нужен анализ требований до детального проектирования

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

    Если пропустить этот слой и сразу перейти к деталям функций, возникают типовые проблемы:

  • границы системы «переезжают» в процессе разработки
  • всплывают незапланированные интеграции и владельцы данных
  • требования конфликтуют, потому что стейкхолдеры не выявлены
  • приёмка срывается, потому что критерии успеха не согласованы с заказчиком
  • Анализ контекста и стейкхолдеров — это способ снизить риск «сделали не ту систему» ещё до того, как вы начнёте детально проектировать архитектуру (C4), сценарии (UML) и процессы (BPMN).

    Базовые термины: чтобы говорить однозначно

    Контекст

    Контекст системы — это окружение, в котором система существует и работает:

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

    Границы

    Граница системы — это явное решение о том, что относится к системе, а что относится к внешней среде.

    Границы отвечают на вопросы:

  • какие функции выполняются внутри ИС, а какие остаются в других системах или вручную
  • где проходит граница ответственности команд и подразделений
  • где находится источник истины для данных (кто владелец данных)
  • что входит в текущий релиз и контрактный объём работ
  • Заинтересованные стороны

    Заинтересованные стороны (stakeholders) — люди, роли или организации, которые:

  • получают пользу от системы или страдают от её недостатков
  • поставляют данные или используют результаты
  • накладывают ограничения (безопасность, аудит, комплаенс)
  • принимают решение о приёмке или финансировании
  • Смысл понятия широко описан в обзорных источниках, например в статье Stakeholder.

    Что именно анализируют: три вопроса, которые “держат” требования

    Практично рассматривать анализ требований как ответы на три укрупнённых вопроса.

  • Что является системой, а что внешней средой?
  • Кто влияет на требования и по каким причинам?
  • Какие взаимодействия с окружением критичны и должны быть учтены в проектировании?
  • Если на эти вопросы нет согласованных ответов, любые последующие артефакты (спецификация требований, BPMN, UML, C4) будут противоречить друг другу.

    Анализ контекста: как выявить окружение системы

    Внешние акторы

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

    Типовые акторы:

  • внутренние пользователи (оператор, контролёр, администратор)
  • внешние пользователи (клиент, партнёр, подрядчик)
  • регулятор или контролирующий орган (как источник требований)
  • служба поддержки и эксплуатация (как источник эксплуатационных требований)
  • Соседние системы и интеграции

    Практическая цель анализа — составить список внешних систем и понять:

  • какие данные приходят извне и на каких условиях
  • какие данные система отдаёт наружу
  • кто владелец интерфейса и кто принимает изменения
  • какие ограничения есть по доступности и SLA
  • На этом уровне важно не «детально описать API», а зафиксировать факт зависимости и ответственность.

    Ограничения контекста

    Ограничения контекста — это то, что часто не формулируют как требования, но именно они ломают проект, если их забыть.

    Типовые ограничения:

  • персональные данные и режимы хранения
  • требования к аудиту действий
  • требования к отказоустойчивости и времени простоя
  • технологические ограничения (например, обязательный корпоративный SSO)
  • Опорные идеи по инженерии требований содержатся в стандарте ISO/IEC/IEEE 29148, но в рамках курса важнее практический смысл: ограничения должны быть видимы уже в контексте.

    Артефакт контекста: диаграмма C4 System Context

    Для фиксации контекста удобно использовать C4 System Context: она показывает систему в центре и связи с внешними акторами и системами.

    !Пример C4 System Context: как визуально зафиксировать окружение и ключевые взаимодействия

    Полезный источник по методу: The C4 model.

    Анализ границ: как зафиксировать «что входит» и «что не входит»

    Три вида границ, которые важно различать

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

  • Функциональная граница
  • Граница ответственности
  • Граница данных
  • Они связаны, но не тождественны.

    Функциональная граница

    Функциональная граница отвечает на вопрос: какие функции выполняет система.

    На раннем уровне это фиксируют так:

  • список функций верхнего уровня
  • что автоматизируется, а что остаётся ручным
  • что относится к соседней системе
  • Для функциональной декомпозиции и обсуждения «что делает система» особенно полезен IDEF0, справочно: IDEF.

    Граница ответственности

    Граница ответственности отвечает на вопрос: кто должен обеспечивать результат.

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

    Чтобы управлять такими зонами, фиксируют:

  • кто владелец процесса
  • кто владелец данных
  • кто владелец интеграции
  • В крупных организациях помогает матрица ответственности (например, RACI), которую мы уже обсуждали в теме про роли.

    Граница данных

    Граница данных отвечает на вопрос: какие данные принадлежат системе, а какие приходят извне и остаются чужими.

    Критически важно определить:

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

    Практический артефакт: формулировка границ в виде “in scope / out of scope”

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

    Пример формата:

  • In scope: регистрация заявки, маршрутизация на согласование, уведомления, журнал аудита действий, отчёт по статусам заявок
  • Out of scope: кадровые приказы как юридический документ, расчёт бюджета подразделений, управление оргструктурой
  • Этот список нужен для контроля изменений: когда появляется новое требование, его сравнивают с границами и либо включают с изменением объёма, либо отклоняют.

    Анализ заинтересованных сторон: кто влияет на требования и почему

    Зачем делать карту стейкхолдеров

    Карта заинтересованных сторон нужна, чтобы:

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

    Рабочая техника — комбинировать несколько источников.

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

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

  • Высокое влияние, высокий интерес: заказчик, владелец процесса, ключевые пользователи
  • Высокое влияние, низкий интерес: безопасность, архитектурный комитет, ИТ-дирекция
  • Низкое влияние, высокий интерес: исполнители, поддержка первой линии
  • Низкое влияние, низкий интерес: наблюдатели, потребители отчётности без права решения
  • !Матрица "влияние–интерес" помогает понять, с кем согласовывать решения и кого достаточно информировать

    Стейкхолдеры как источник конфликтующих требований

    Наличие нескольких заинтересованных сторон почти всегда означает конфликты. Это нормально.

    Примеры типовых конфликтов:

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

    Как связать контекст, границы и стейкхолдеров с нотациями курса

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

    C4: фиксация контекста и границ системы

    C4 помогает:

  • показать систему среди внешних акторов и систем
  • зафиксировать ключевые взаимодействия
  • обнаружить владельцев интеграций и данных
  • UML Use Case: фиксация целей акторов и границы ответственности системы

    UML Use Case удобен, когда нужно:

  • перечислить цели пользователей без преждевременной детализации интерфейсов
  • различить акторов (например, “Сотрудник” и “Администратор”)
  • уточнить, что делает система, а что остаётся за её пределами
  • Спецификация: UML.

    BPMN: проверка границы автоматизации в процессе

    BPMN помогает ответить:

  • где в процессе система участвует, а где работают люди
  • где нужны интеграции и обмен сообщениями
  • где должны быть контрольные точки, согласования и исключения
  • Спецификация: BPMN.

    IDEF0: границы функций и управляющие воздействия

    IDEF0 особенно уместен, когда нужно:

  • сделать функциональную декомпозицию
  • показать управляющие воздействия (политики, регламенты)
  • увидеть, какие механизмы участвуют (люди, системы, ресурсы)
  • Справочно: IDEF.

    Минимальный набор артефактов анализа требований

    Ниже — практический минимум, который обычно окупается почти на любом проекте.

    | Артефакт | На какой вопрос отвечает | Кто обычно подтверждает | Чем удобно оформлять | |---|---|---|---| | Контекст системы | кто и что вокруг системы | архитектор, аналитик, владельцы внешних систем | C4 System Context | | Список внешних систем и владельцев | с кем согласовывать интерфейсы | архитектор, интеграционная команда | таблица + C4 | | In scope / out of scope | что входит в объём работ | заказчик | текст + протокол согласования | | Карта стейкхолдеров | кто влияет на требования и приёмку | аналитик, заказчик | таблица ролей + матрица влияние–интерес | | Реестр открытых вопросов | что ещё не решено | аналитик | список вопросов с владельцами | | Глоссарий терминов | что означает каждое слово | аналитик, пользователи | документ/таблица |

    Пошаговая практика анализа требований на старте проекта

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

  • Зафиксировать цель и критерии успеха инициативы.
  • Построить C4 контекст: акторы, внешние системы, основные потоки взаимодействия.
  • Составить карту стейкхолдеров и определить формат их участия.
  • Зафиксировать границы: in scope / out of scope и границы данных.
  • Выявить владельцев данных и интеграций, согласовать каналы взаимодействия.
  • Создать реестр открытых вопросов и рисков, привязать их к владельцам.
  • Подтвердить результаты анализа на короткой контрольной точке: “контекст и границы согласованы”.
  • Типовые ошибки и способы их предотвратить

  • Смешивание границ системы и границ проекта: граница системы стабильнее, граница релиза меняется чаще.
  • Контекст рисуют без владельцев: если у внешней системы нет владельца, интеграция почти гарантированно станет проблемой.
  • Собирают требования только у “главного”: на приёмке появляются новые заинтересованные стороны.
  • Не фиксируют источник истины данных: позже возникают конфликты справочников и двойной ввод.
  • Не формулируют out of scope: всё, что не запрещено, становится “обязательным” в глазах стейкхолдеров.
  • Практическая защита — короткие, проверяемые артефакты и регулярное подтверждение: контекст, границы, стейкхолдеры.

    Итог

    Анализ требований на уровне контекста, границ и заинтересованных сторон делает требования управляемыми и пригодными для проектирования:

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

  • делать требования проверяемыми и согласуемыми
  • выстраивать трассировку от целей и стейкхолдеров к BPMN/UML/C4/IDEF-артефактам
  • принимать архитектурные решения осознанно и с понятными последствиями
  • 12. Функциональные требования и сценарии использования

    Функциональные требования и сценарии использования

    Связь темы с предыдущими статьями курса

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

    Эта связка нужна, чтобы:

  • требования были проверяемыми на приёмке и тестировании
  • проектирование (UML/C4) опиралось на понятные сценарии, а не на догадки
  • BPMN-модель процесса и UML-модели поведения не противоречили друг другу
  • команда могла построить трассировку: цель → сценарий → требование → проектное решение → тест
  • Базовые определения

    Что такое функциональное требование

    Функциональное требование — это проверяемое описание того, какую функцию должна выполнять система: какие входные данные принимает, какие правила применяет, какой результат выдаёт и какие условия/ограничения учитывает.

    Функциональные требования отвечают на вопросы:

  • что система должна делать в конкретной ситуации
  • какие данные обрабатываются
  • какие бизнес-правила применяются
  • какие реакции должны быть на ошибки и исключения
  • Опорный стандарт по инженерии требований: ISO/IEC/IEEE 29148.

    Что такое сценарий использования

    Сценарий использования — описание последовательности шагов между актором (пользователем или внешней системой) и системой для достижения цели.

    Обычно выделяют:

  • основной поток (happy path) — как всё происходит без ошибок
  • альтернативные потоки — варианты поведения при ветвлениях
  • исключения — ошибки, отказ внешней системы, нехватка данных, отсутствие прав
  • Как связаны сценарии и функциональные требования

    Практическая зависимость:

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

    !Цепочка от целей к сценариям, требованиям, проектированию и проверкам

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

    Чтобы не смешивать разные типы требований, полезно помнить уровни:

  • Бизнес-требования: зачем нужно изменение, какая ценность и метрики
  • Пользовательские требования: что нужно пользователю, какие цели у ролей
  • Функциональные требования: какие функции выполняет система
  • Нефункциональные требования: качество и ограничения (производительность, безопасность, доступность)
  • В этой теме фокус на функциональных требованиях и на том, как они выражаются через сценарии.

    Сценарии как основа для понимания функций

    Зачем начинать со сценариев

    Сценарии помогают:

  • выявлять роли и границы ответственности
  • видеть точки ветвления и исключения
  • обнаруживать данные и документы, без которых функция невозможна
  • связывать требования с процессами (BPMN) и поведением системы (UML)
  • Структура сценария: минимально достаточный шаблон

    Ниже — формат, который обычно достаточно точен для проектирования и тестирования.

  • Идентификатор и название сценария
  • Цель актора
  • Акторы (основной и вторичные, включая внешние системы)
  • Предусловия (что должно быть истинно до старта)
  • Триггер (что запускает сценарий)
  • Основной поток шагов
  • Альтернативные потоки
  • Исключения (ошибки и реакции)
  • Постусловия (что должно быть истинно после завершения)
  • Данные (входные/выходные) и бизнес-правила
  • Важное правило: сценарий не обязан описывать интерфейсные детали (расположение кнопок). Он описывает действия и результат.

    От сценариев к функциональным требованиям

    Что именно фиксируется как функциональное требование

    Функциональные требования обычно включают:

  • операции системы (создать/изменить/проверить/отправить/рассчитать)
  • правила обработки (валидации, расчёты, маршрутизация)
  • управление статусами (что можно, что нельзя)
  • требования к данным (обязательность, форматы, справочники)
  • реакции на ошибки и исключения
  • требования к уведомлениям и журналированию действий (если это часть функции)
  • Признаки хорошего функционального требования

    Хорошее требование:

  • однозначно (термины определены в глоссарии)
  • проверяемо (есть критерий, по которому можно подтвердить выполнение)
  • атомарно (одно требование — одна обязанность, без «всё и сразу»)
  • трассируемо (понятно, из какого сценария/цели оно получено)
  • Типовые ошибки

  • Требование как решение: «Нужна кнопка “Отправить”» вместо «Пользователь должен иметь возможность отправить заявку на согласование».
  • Непроверяемость: «Система должна быть удобной» (это нефункциональный аспект, и его нужно переводить в измеримые критерии).
  • Отсутствие исключений: описан основной поток, но нет правил на ошибки, повторы, отказ внешней системы.
  • Практический пример: сценарий и набор функциональных требований

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

    Сценарий использования

  • Название: Создание заявки на закупку и отправка на согласование
  • Актор: Инициатор закупки
  • Предусловия: пользователь аутентифицирован; у пользователя есть роль инициатора
  • Триггер: пользователь выбирает действие «Создать заявку»
  • Основной поток:
  • 1. Пользователь вводит позицию(и) закупки и обоснование. 2. Система проверяет заполненность обязательных полей. 3. Пользователь отправляет заявку на согласование. 4. Система присваивает номер, фиксирует статус На согласовании. 5. Система уведомляет согласующего.
  • Альтернативы:
  • 1. Если сумма заявки превышает лимит подразделения, система направляет на дополнительное согласование.
  • Исключения:
  • 1. Если обязательные поля не заполнены, система не отправляет заявку и показывает список ошибок. 2. Если сервис уведомлений недоступен, заявка всё равно переводится в статус На согласовании, а уведомление ставится в очередь на повтор.

    Функциональные требования (фрагмент)

  • FR-01: Система должна позволять пользователю с ролью Инициатор создавать заявку на закупку с указанием позиций, количества, цены, обоснования и подразделения.
  • FR-02: При сохранении и отправке заявки система должна валидировать обязательные поля: позиции, количество, цена, подразделение.
  • FR-03: При успешной отправке на согласование система должна присваивать заявке уникальный номер и переводить её в статус На согласовании.
  • FR-04: Если сумма заявки превышает лимит подразделения, система должна направлять заявку по маршруту дополнительного согласования.
  • FR-05: Система должна уведомлять согласующего о поступившей заявке.
  • FR-06: При недоступности канала уведомлений система должна сохранять факт необходимости уведомления и выполнять повторную отправку.
  • Обратите внимание: сценарий объясняет порядок действий, а требования фиксируют обязанности системы и условия.

    Как сценарии выражаются в нотациях UML и BPMN

    UML Use Case: цели акторов и границы системы

    Диаграмма вариантов использования полезна, когда нужно:

  • перечислить акторов и их цели
  • договориться о границе системы
  • избежать смешивания ролей (например, Инициатор и Администратор)
  • Спецификация UML: UML (OMG).

    Пример на PlantUML:

    BPMN: сценарий как часть процесса

    BPMN применяют, когда сценарий встроен в сквозной процесс между ролями и подразделениями:

  • кто выполняет шаги
  • где события начала/конца
  • где ветвления (шлюзы)
  • где ручные операции, а где автоматизация
  • Стандарт BPMN: BPMN (OMG).

    Практическая связка:

  • BPMN фиксирует процесс «как будет» на уровне ролей
  • сценарии уточняют шаги взаимодействия актора и системы
  • функциональные требования описывают обязательства системы на этих шагах
  • UML Sequence: точное поведение в ключевом сценарии

    Диаграмма последовательностей полезна, когда нужно показать:

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

    Пример на PlantUML (упрощённо):

    Сценарии и бизнес-правила: что где фиксировать

    Важно не смешивать:

  • сценарий: последовательность действий и ветвления
  • бизнес-правило: условие или ограничение предметной области
  • функциональное требование: обязанность системы реализовать правило и поведение
  • Пример:

  • бизнес-правило: «Если сумма заявки больше лимита, требуется дополнительное согласование»
  • сценарий: содержит ветвление «если больше лимита → дополнительное согласование»
  • функциональное требование: фиксирует обязанность системы определить сумму, сравнить с лимитом и выбрать маршрут
  • Как фиксировать критерии приёмки рядом со сценариями

    Даже для функциональных требований полезно сразу добавлять критерии приёмки в стиле Given/When/Then.

    Пример:

  • Given: заявка заполнена корректно
  • When: инициатор отправляет заявку
  • Then: система присваивает номер, переводит в статус На согласовании, отправляет уведомление согласующему
  • Это упрощает тестирование и приёмку и поддерживает логику V-модели, которую мы обсуждали ранее.

    Трассировка: как не потерять связь «сценарий → требование → реализация»

    Минимально достаточная трассировка может быть табличной.

    | Сценарий | Шаг | Требование | Проверка | |---|---|---|---| | Создание и отправка заявки | 2 | FR-02 | тест валидации обязательных полей | | Создание и отправка заявки | 4 | FR-03 | тест присвоения номера и статуса | | Создание и отправка заявки | 6.1 | FR-04 | тест маршрута при превышении лимита | | Создание и отправка заявки | 7.2 | FR-06 | тест очереди уведомлений при сбое |

    Практический эффект: при изменении процесса или требований понятно, какие тесты и части решения пересмотреть.

    Рекомендуемые форматы описания моделей

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

  • UML-диаграммы: PlantUML
  • C4-диаграммы как код: Structurizr DSL
  • BPMN обменный формат: BPMN (OMG)
  • Итог

    Функциональные требования и сценарии использования — центральная связка фазы требований с фазой проектирования:

  • сценарии описывают, как акторы достигают целей и где возникают ветвления/ошибки
  • функциональные требования фиксируют, что обязана делать система на шагах сценария и по каким правилам
  • UML Use Case помогает определить акторов, цели и границу системы
  • BPMN помогает встроить сценарии в сквозной процесс между ролями
  • UML Sequence помогает уточнить поведение и интеграции в критических сценариях
  • Дальше по курсу эта база понадобится для более строгого описания требований, качества формулировок, управления изменениями и для перехода к проектированию (архитектура C4, модели поведения UML, спецификации интерфейсов).

    13. Нефункциональные требования: производительность, безопасность, UX

    Нефункциональные требования: производительность, безопасность, UX

    Как тема связана с предыдущими статьями курса

    В прошлых темах мы разобрали:

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

    Практический смысл для проектирования (C4, UML, BPMN, IDEF) простой: НФТ часто определяют архитектуру, интеграционные решения, эксплуатационную модель и даже границы автоматизации в процессе. Если НФТ не зафиксировать до проектирования, они всплывают поздно и становятся причиной переделок.

    В качестве опорной модели качества продукта полезен стандарт ISO/IEC 25010: ISO/IEC 25010:2011.

    !Как НФТ связываются со сценариями, архитектурой и проверками

    Что такое нефункциональные требования и чем они отличаются от функциональных

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

    Типовые признаки НФТ:

  • описывают качество и ограничения (время ответа, безопасность, доступность, удобство)
  • действуют сквозным образом на многие функции (не на один экран и не на одну операцию)
  • часто превращаются в архитектурные решения (кэш, очереди, SSO, аудит, разграничение прав)
  • Важно не путать:

  • функцию и уровень качества (например, «поиск клиентов» и «поиск за 2 секунды при 200 пользователях»)
  • пожелание и требование (например, «желательно быстро» не годится; нужно измерение или критерий)
  • В инженерии требований широко используется подход к качеству формулировок (однозначность, проверяемость, непротиворечивость). В качестве стандарта по инженерии требований см.: ISO/IEC/IEEE 29148.

    Почему НФТ критичны именно для проектирования

    НФТ формируют основные компромиссы фазы проектирования, о которых мы говорили ранее:

  • производительность часто конфликтует с экономией ресурсов и простотой реализации
  • безопасность часто конфликтует с удобством пользователя и скоростью операций
  • UX часто конфликтует с регламентами и ограничениями комплаенса
  • Поэтому НФТ нужно фиксировать не как «общие пожелания», а как договорённости, которые можно:

  • включить в проектные решения (C4, ADR)
  • проверить (тестами, аудитом, приёмкой)
  • измерять в эксплуатации (метрики, логи, алерты)
  • Как правильно формулировать НФТ: проверяемость и контекст

    Минимальный шаблон качественного НФТ

    Чтобы требование было проверяемым, полезно фиксировать:

  • объект: что именно измеряем (операция, страница, API, сценарий)
  • условия: какая нагрузка, какие данные, какие роли, какие внешние зависимости
  • метрика/критерий: что считается выполнением (секунды, проценты, наличие/отсутствие)
  • уровень: целевое значение и допустимые отклонения
  • способ проверки: как подтверждаем (нагрузочный тест, pentest, UX-тестирование)
  • Практический формат: сценарий качества

    Хорошо работает формат «сценария качества», близкий по духу к сценариям использования:

  • Источник (кто или что создаёт нагрузку/угрозу)
  • Стимул (что происходит)
  • Артефакт (какая часть системы затронута)
  • Среда (в каких условиях)
  • Ожидаемая реакция (что должна сделать система)
  • Мера реакции (как измеряем, что всё ок)
  • Этот формат удобен тем, что его легко переводить в:

  • требования и критерии приёмки
  • UML Sequence для критических взаимодействий
  • решения в C4 и ADR
  • план тестирования
  • Производительность: время ответа, пропускная способность, устойчивость под нагрузкой

    Что обычно включает «производительность»

    В проектах ИС под производительностью часто имеют в виду сразу несколько разных вещей:

  • время ответа (latency): как быстро система отвечает на операцию
  • пропускная способность (throughput): сколько операций система делает за единицу времени
  • параллельность: сколько пользователей/запросов обслуживается одновременно
  • устойчивость под нагрузкой: как система ведёт себя при пиках и деградациях внешних систем
  • Чтобы не спорить «быстро или медленно», нужно выбрать метрики, важные именно для вашей ИС.

    Типовые метрики производительности (как требования)

    Ниже примеры того, как переводить общие слова в проверяемые требования.

    | Что хотим контролировать | Пример формулировки НФТ | Чем проверять | |---|---|---| | Время ответа UI | «Для роли Оператор экран поиска открывается не более чем за 2 секунды при 200 одновременных пользователях» | нагрузочный тест + измерения в APM | | Время ответа API | «Операция POST /orders отвечает не более чем за 500 мс в 95% запросов при 50 RPS» | нагрузочный тест + метрики | | Пиковая нагрузка | «Система выдерживает рост нагрузки в 3 раза в течение 15 минут без отказа и потери данных» | стресс-тест + наблюдаемость | | Пакетная обработка | «Импорт 100 000 записей завершается не более чем за 30 минут» | тест на объёмах данных |

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

    Производительность и интеграции: отдельная зона риска

    В ИС производительность часто ломается не на «своём коде», а на внешних зависимостях.

    Полезно фиксировать отдельные НФТ к интеграциям:

  • таймауты и поведение при их наступлении
  • лимиты частоты запросов и квоты
  • повторяемость операций (идемпотентность) при ретраях
  • стратегия деградации (что делает система, если внешний сервис недоступен)
  • Связь с нотациями:

  • UML Sequence помогает явно показать таймауты, ретраи и очереди
  • C4 Container помогает увидеть, где нужен брокер сообщений или кэш
  • Безопасность: аутентификация, авторизация, данные, аудит

    Что входит в безопасность как НФТ

    Безопасность почти всегда сочетает требования разных уровней:

  • идентификация и аутентификация: кто вошёл и как подтверждается личность
  • авторизация: что кому разрешено
  • защита данных: хранение, передача, маскирование, сроки хранения
  • аудит и журналирование: кто что сделал и когда
  • защита от типовых уязвимостей: инъекции, XSS, CSRF, слабые настройки
  • НФТ по безопасности редко заканчиваются фразой «должно быть безопасно». Они должны указывать обязательные механизмы и критерии проверки.

    Практические источники и ориентиры:

  • список типовых рисков веб-приложений: OWASP Top 10
  • проверяемые требования к безопасности приложений: OWASP ASVS
  • Примеры проверяемых требований безопасности

    | Область | Пример НФТ | Как проверить | |---|---|---| | Аутентификация | «Аутентификация сотрудников выполняется через корпоративный SSO (OIDC или SAML). Хранение паролей в системе не допускается» | архитектурное ревью + тесты | | Авторизация | «Доступ к операциям управления справочниками доступен только ролям Администратор и Супервизор» | тесты ролей + аудит | | Защита данных | «Персональные данные в БД хранятся в зашифрованном виде на уровне диска/хранилища; передача данных только по TLS» | проверка конфигураций + pentest | | Аудит | «Все изменения статусов заявки логируются с полями: кто, когда, старое значение, новое значение, причина» | проверка логов + тесты | | Сессии | «Сессия пользователя автоматически завершается после 15 минут неактивности» | автотесты |

    Безопасность как часть границ и контекста

    Безопасность часто зависит от того, где граница системы и кто владеет данными (из темы про анализ контекста и границ).

    Вопросы, которые нужно закрыть до проектирования:

  • какие данные являются чувствительными и какие правила хранения применяются
  • какие внешние системы являются источником истины (например, IAM/SSO)
  • какие роли и права существуют и кто владелец модели ролей
  • какие события обязаны попадать в аудит
  • Связь с нотациями:

  • C4 Context помогает выявить доверенные и недоверенные контуры (пользователи, внешние партнёры)
  • C4 Container помогает отразить отдельные компоненты безопасности (IAM, WAF, SIEM)
  • UML Sequence помогает описать «вход», обновление токенов, ошибки авторизации
  • UX: удобство, доступность, предотвращение ошибок пользователя

    Что такое UX в контексте требований

    UX (User Experience) в требованиях — это не «красивый дизайн», а измеримые и проверяемые свойства взаимодействия:

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

  • материалы по юзабилити и исследованиям: Nielsen Norman Group
  • стандартное определение удобства использования и контекста: ISO 9241-11
  • Как делать UX-требования проверяемыми

    С UX часто ошибаются двумя способами:

  • пишут слишком абстрактно («должно быть удобно»)
  • пишут слишком интерфейсно («кнопка должна быть справа»), не связывая с задачей
  • Рабочие категории UX-требований:

  • требования к времени выполнения задач (task time)
  • требования к понятности ошибок и подсказок
  • требования к согласованности терминов и статусов (связь с глоссарием)
  • требования к доступности (контраст, навигация с клавиатуры, масштабирование)
  • требования к предотвращению критических ошибок (подтверждения, черновики, отмена)
  • Примеры проверяемых UX-требований:

    | Категория | Пример НФТ | Проверка | |---|---|---| | Время выполнения задачи | «Оператор должен оформлять типовую заявку за не более чем 2 минуты при наличии исходных данных» | UX-тестирование по сценариям | | Ошибки и подсказки | «При ошибке валидации система показывает список полей с ошибками и текст исправления, без технических кодов» | приёмочные тесты + UX-ревью | | Прозрачность статусов | «Для каждой заявки отображается текущий статус и следующий ожидаемый шаг процесса» | проверка сценариев + соответствие BPMN | | Черновики и отмена | «Пользователь может сохранить черновик и вернуться к нему в течение 7 дней» | функциональные тесты | | Доступность | «Интерфейс поддерживает управление с клавиатуры для основных операций» | проверка чек-листом доступности |

    UX и процесс: важно не противоречить BPMN

    UX нельзя проектировать в отрыве от процесса:

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

    Как НФТ отражаются в UML, BPMN, IDEF0 и C4

    C4: архитектура и эксплуатационная реализуемость

    C4 помогает отразить решения, которые обычно «вылезают» из НФТ:

  • производительность: кэш, очереди, реплики БД, CDN
  • безопасность: IAM/SSO, WAF, сегментация, отдельные контуры
  • UX: отдельные клиентские приложения, BFF, требования к офлайн-режиму
  • UML Sequence: критические сценарии качества

    UML Sequence особенно полезен для НФТ, потому что показывает:

  • таймауты и ретраи
  • асинхронные очереди и подтверждения
  • ветвления при ошибках авторизации
  • деградацию при недоступности внешнего сервиса
  • Пример фрагмента в PlantUML, где НФТ влияет на поведение (очередь уведомлений):

    BPMN: контрольные точки процесса и UX/безопасность

    BPMN полезен, чтобы:

  • показать, где нужна аутентификация или роль для выполнения шага
  • определить точки контроля (например, допсогласование при превышении лимита)
  • связать уведомления и ожидания пользователя со статусами процесса
  • IDEF0: управляющие воздействия как источник НФТ

    IDEF0 помогает «легализовать» то, что часто забывают:

  • политики безопасности и регламенты как Control
  • ресурсы и системы (например, SSO, SIEM) как Mechanism
  • Это удобно на раннем уровне, когда нужно показать, что безопасность и регуляторика управляют функциями, а не являются «пожеланием в конце».

    Контрольная точка требований: как понять, что НФТ готовы

    Перед переходом к проектированию полезно иметь короткий чек-лист готовности НФТ:

  • определены критические сценарии, для которых нужны показатели производительности
  • зафиксированы требования безопасности: аутентификация, роли, данные, аудит
  • зафиксированы UX-критерии для ключевых операций (время выполнения, ошибки, статусы)
  • для каждого важного НФТ понятен способ проверки (тест, аудит, UX-исследование)
  • НФТ привязаны к источникам: стейкхолдерам, политикам, процессам, ограничениям
  • Результат должен быть пригоден для трассировки: «сценарий → НФТ → архитектурное решение → тест/метрика».

    Типовые ошибки с НФТ и способы их предотвращать

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

    Нефункциональные требования делают проектирование ИС управляемым и проверяемым:

  • производительность задаёт метрики времени ответа, нагрузки и поведения при деградации
  • безопасность определяет механизмы доступа, защиты данных и аудита, а также критерии проверки
  • UX фиксирует удобство как измеримые свойства выполнения задач, понятность статусов и предотвращение ошибок
  • Дальше по курсу эти НФТ станут входом в проектирование: на C4 мы отразим архитектурные решения, в UML Sequence уточним критические взаимодействия, а BPMN поможет проверить, что автоматизация и пользовательский опыт соответствуют целевому процессу.

    14. Документирование требований: SRS, user stories, acceptance criteria

    Документирование требований: SRS, user stories, acceptance criteria

    Зачем документировать требования, если есть диаграммы и устные договорённости

    В предыдущих темах курса мы разобрали:

  • жизненный цикл ИС, фазы и контрольные точки
  • сбор и анализ требований (контекст, границы, стейкхолдеры)
  • функциональные и нефункциональные требования
  • Теперь нужен практический мост от выявленных требований к управляемой разработке и проектированию. Этот мост — документирование требований.

    Документирование нужно не ради «толстой документации», а чтобы:

  • сделать требования однозначными и проверяемыми (поддержка приёмки и тестирования)
  • зафиксировать границы и договорённости на контрольных точках жизненного цикла
  • обеспечить трассировку «цель → требование → проектное решение → тест»
  • уменьшить риск «потеряли важное» при смене людей, поставщиков, при долгих проектах
  • В этой статье разберём три распространённых формы фиксации требований:

  • SRS (Software Requirements Specification)
  • user stories (пользовательские истории) как формат Agile-бэклога
  • acceptance criteria (критерии приёмки), включая Given/When/Then
  • И важный вывод темы: это не взаимоисключающие подходы. В ИС-проектах часто применяют гибрид: user stories для планирования поставки, SRS-структуру для качества и полноты, acceptance criteria для проверяемости.

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

    Базовые определения

  • Требование — проверяемая формулировка потребности или ограничения, которым должна соответствовать система.
  • Документ требований — управляемый артефакт, в котором требования структурированы, версионируются, согласуются и используются как вход в проектирование и тестирование.
  • SRS — спецификация требований к ПО/системе, обычно более структурированная и полная.
  • User story — краткое описание потребности пользователя в формате элемента бэклога.
  • Acceptance criteria — условия, при которых требование или user story считается выполненным и принимается заказчиком.
  • Как опору по качеству требований удобно использовать стандарт инженерии требований: ISO/IEC/IEEE 29148.

    SRS: когда нужна спецификация и что в ней должно быть

    Что такое SRS и чем она полезна в ИС-проектах

    SRS (Software Requirements Specification) — документ (или набор страниц в wiki/репозитории), который фиксирует требования в структурированном виде: контекст, функции, данные, интерфейсы, ограничения, нефункциональные требования.

    SRS особенно полезна, когда:

  • есть внешние подрядчики, тендер, контрактная приёмка
  • система корпоративная или межорганизационная, много стейкхолдеров
  • много интеграций и требований безопасности
  • важна трассировка и аудит решений (например, регуляторика)
  • Практическая идея: SRS — это способ уменьшить неопределённость до проектирования и обеспечить контрольную точку «требования утверждены» из жизненного цикла.

    Типовая структура SRS (минимально достаточная)

    Единого «обязательного» шаблона нет, но ниже — структура, которая хорошо работает для ИС и не перегружает команду.

  • Введение
  • Контекст и границы
  • Стейкхолдеры и роли
  • Функциональные требования
  • Модель данных и термины
  • Интерфейсы и интеграции
  • Нефункциональные требования
  • Ограничения и допущения
  • Критерии приёмки и трассировка
  • Ниже — что именно стоит включать в эти разделы.

    Введение: цель, область применения, определения

    Минимально полезно зафиксировать:

  • цель системы или изменения (связь с бизнес-целями)
  • область применения (для кого и где используется)
  • список терминов (глоссарий) или ссылка на него
  • Контекст и границы

    Раздел отвечает на вопрос: что входит в систему, а что остаётся снаружи.

    Артефакты, которые усиливают этот раздел:

  • C4 System Context (границы и внешние зависимости)
  • список in scope / out of scope
  • Стейкхолдеры и роли

    Фиксируют:

  • роли пользователей и их цели
  • владельцев внешних систем и данных
  • требования безопасности и эксплуатации как отдельные интересы
  • В ИС это снижает риск «на приёмке появился новый обязательный участник».

    Функциональные требования

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

  • идентификатор (например, FR-012)
  • описание обязанности системы
  • источники и ссылки на сценарии/процессы
  • критерии приёмки (или ссылку на них)
  • Чтобы формулировки были однозначнее, используют модальные глаголы типа должна/не должна. В англоязычных спецификациях часто опираются на формулировки из RFC 2119 (MUST/SHOULD/MAY), но важно применять их последовательно.

    Модель данных и термины

    Это место, где требования перестают быть «общими словами».

    Фиксируют:

  • ключевые сущности предметной области
  • обязательные атрибуты
  • источники истины (кто владелец данных)
  • В качестве компактной модели часто используют UML Class как концептуальную модель предметной области.

    Интерфейсы и интеграции

    Фиксируют:

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

  • C4 (показать зависимости контейнеров)
  • UML Sequence (показать критический сценарий и обработку ошибок)
  • Нефункциональные требования

    Фиксируют измеримо:

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

    Это важный раздел, который часто забывают.

    Примеры:

  • обязательный стек или платформа
  • ограничения внешних систем (квоты API)
  • допущения по миграции данных
  • Критерии приёмки и трассировка

    В SRS полезно либо включать критерии приёмки рядом с требованиями, либо иметь отдельное приложение.

    Трассировка на минимальном уровне может быть табличной.

    | Артефакт | Пример идентификатора | Зачем нужен | |---|---|---| | Бизнес-цель | BG-01 | объясняет ценность и приоритет | | Сценарий/процесс | SC-05 / ссылка на BPMN | задаёт контекст шагов | | Требование | FR-012, NFR-03 | фиксирует обязательство системы | | Проектное решение | ADR-07 | объясняет выбор и последствия | | Тест/проверка | AT-012 | доказывает выполнение |

    User stories: как документировать требования в итеративной поставке

    Что такое user story

    User story — краткая запись потребности пользователя, обычно в формате:

  • Как роль
  • Я хочу цель
  • Чтобы ценность
  • Пример:

  • Как оператор склада я хочу сканировать штрихкод товара чтобы быстрее находить карточку товара и снижать ошибки ввода.
  • User stories хорошо работают, когда:

  • поставка идёт итерациями
  • нужно планировать объём работ через бэклог
  • важна регулярная обратная связь
  • Ориентир по Agile-подходам и принципам: Манифест Agile.

    Что user story фиксирует, а что не фиксирует

    User story фиксирует:

  • кто (роль)
  • что хочет достичь (цель)
  • зачем (ценность)
  • Но обычно не фиксирует сама по себе:

  • точные правила обработки
  • исключения и ошибки
  • нефункциональные требования
  • интеграционные детали
  • Поэтому для ИС user story почти всегда дополняют:

  • acceptance criteria
  • ссылками на BPMN/UML/C4
  • уточнениями в виде подзадач или отдельных требований
  • Хорошая практика: критерии готовности user story

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

    Минимальный смысл таких правил:

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

    Acceptance criteria: как сделать требования проверяемыми

    Что такое acceptance criteria

    Acceptance criteria — это условия, при выполнении которых требование считается реализованным и принимается.

    Критерии приёмки полезны потому, что они:

  • превращают «хочу» в проверку
  • связывают требования с тестированием и приёмкой
  • вынуждают явно описать исключения и ограничения
  • Два распространённых формата критериев приёмки

  • Список условий (checklist-стиль)
  • Given/When/Then (BDD-стиль)
  • #### Checklist-стиль

    Пример для истории «Отправить заявку на согласование»:

  • заявка не отправляется при незаполненных обязательных полях
  • при успешной отправке присваивается номер
  • статус меняется на На согласовании
  • согласующий получает уведомление
  • #### Given/When/Then

    Формат Given/When/Then широко применяется в BDD и поддерживается инструментами вроде Cucumber: Cucumber.

    Пример:

  • Given: пользователь с ролью Инициатор создал заявку и заполнил обязательные поля
  • When: пользователь отправляет заявку на согласование
  • Then: система присваивает уникальный номер и переводит заявку в статус На согласовании
  • Важно: Given/When/Then — это не «модная запись», а способ сделать критерии:

  • конкретными
  • воспроизводимыми
  • близкими к автоматизации тестов
  • Как acceptance criteria связываются с UML/BPMN/C4

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

    Пример:

  • Given: сервис уведомлений недоступен
  • When: инициатор отправляет заявку
  • Then: заявка переводится в статус На согласовании, а уведомление ставится в очередь на повторную отправку
  • Это связывает требования надёжности (нефункциональные) с поведением сценария.

    Как выбрать формат: SRS против user stories против гибрида

    Ниже — практичная карта выбора.

    | Параметр проекта | SRS чаще выгоднее | User stories чаще выгоднее | |---|---|---| | Контрактная приёмка и формальные согласования | да | редко | | Много интеграций и владельцев внешних систем | да | да, но с усилением документации | | Частые изменения и итеративная поставка | возможно как «живой документ» | да | | Большая распределённая команда | да | да, при хороших правилах качества | | Нужна строгая трассировка и аудит | да | да, но нужна дисциплина связей |

    Практический вывод для ИС: часто применяют гибрид.

  • бэклог ведут в user stories
  • ключевые разделы SRS фиксируют как стабильную основу (контекст, границы, НФТ, интеграции, глоссарий)
  • проверяемость обеспечивают acceptance criteria
  • Минимальные шаблоны, которые реально работают

    Шаблон требования в стиле SRS

    Шаблон user story с критериями приёмки

    Как обеспечить согласованность требований и моделей (BPMN, UML, C4, IDEF0)

    Чтобы документирование не распалось на «тексты отдельно, диаграммы отдельно», полезны простые правила.

    Единые идентификаторы и ссылки

  • требования имеют ID (FR-, NFR-, US-)
  • процессы/диаграммы имеют имена и версии
  • критерии приёмки имеют ID (AC-)
  • Трассировка как обязательный минимум

    Минимальный рабочий уровень:

  • каждая user story или требование имеет ссылку на сценарий/узел процесса
  • каждая критичная интеграция имеет ссылку на C4 и на UML Sequence
  • каждое НФТ имеет способ проверки (тест, аудит, метрика)
  • Версионирование и «живые» артефакты

    В ИС-проектах артефакты требований меняются. Поэтому важны:

  • хранение текстов и диаграмм в Git или управляемой wiki
  • фиксация решений через ADR (из темы проектирования)
  • понятные правила изменения: кто может менять, кто утверждает
  • Для диаграмм удобно использовать текстовые форматы:

  • UML: PlantUML
  • C4 как код: Structurizr DSL
  • Типовые ошибки документирования требований

  • Смешивание требований и решений: «кнопка справа» вместо проверяемой обязанности системы.
  • Отсутствие критериев приёмки: непонятно, как доказать выполнение.
  • Потеря границ: нет in scope/out of scope, требования расползаются.
  • Нет владельцев интеграций: зависимость есть, ответственность не назначена.
  • НФТ вынесены “на потом”: архитектура проектируется без ключевых ограничений.
  • Итог

    Документирование требований — это способ превратить результаты элицитации и анализа в управляемые артефакты жизненного цикла.

  • SRS даёт структуру, полноту и удобна для согласований, интеграций и критичных НФТ.
  • User stories удобны для итеративной поставки и управления бэклогом, но требуют усиления проверяемостью.
  • Acceptance criteria делают требования тестируемыми и связывают их с приёмкой, тестами и качеством.
  • Дальше по курсу эта основа понадобится, чтобы перейти к методологиям и технологиям проектирования, а также к согласованию требований с архитектурой (C4) и поведением системы (UML), не теряя связь с бизнес-процессом (BPMN) и функциями (IDEF0).

    15. Управление требованиями: трассируемость и изменения

    Управление требованиями: трассируемость и изменения

    Как тема связана с предыдущими статьями курса

    В предыдущих темах курса мы прошли путь от жизненного цикла и фаз (с артефактами и контрольными точками) к формированию, анализу и документированию требований (SRS, user stories, acceptance criteria), а также разобрали функциональные и нефункциональные требования.

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

  • требований становится много
  • появляются версии, релизы и несколько команд
  • меняются приоритеты, процессы и ограничения
  • нужно доказуемо связать требования с проектированием (UML, BPMN, IDEF0, C4), тестированием и эксплуатацией
  • Для этого используют две ключевые практики:

  • трассируемость требований (requirements traceability)
  • управление изменениями требований (change control)
  • Опорный контекст по инженерии требований и жизненному циклу дают стандарты:

  • ISO/IEC/IEEE 29148 (инженерия требований)
  • ISO/IEC/IEEE 12207 (процессы жизненного цикла ПО)
  • ISO/IEC/IEEE 15288 (процессы жизненного цикла систем)
  • Зачем управлять требованиями, если они уже «собраны и записаны»

    Требования в проектах ИС почти никогда не остаются неизменными. Причины бывают разные:

  • бизнес уточняет цели, меняет приоритеты, обнаруживает новые ограничения
  • пользователи выявляют исключения при разборе сценариев и прототипов
  • архитектор находит невыполнимость или слишком дорогую реализацию
  • внешние системы меняют API, SLA или правила доступа
  • безопасность и комплаенс добавляют обязательные меры
  • Если изменения не управлять, возникают типовые последствия:

  • команда реализует устаревшие требования
  • BPMN-процесс «как будет» расходится с фактической реализацией
  • архитектура в C4 перестаёт соответствовать реальным границам
  • тесты проверяют «не то», а приёмка превращается в спор
  • Управление требованиями должно обеспечивать два результата:

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

  • Трассируемость требований — способность установить связи между требованиями и другими артефактами (целями, сценариями, моделями, архитектурными решениями, тестами и т.д.) в обе стороны. Справочно: Requirements traceability.
  • Трассировка — практическая реализация трассируемости: конкретные ссылки, таблицы, идентификаторы и правила.
  • Базовая линия требований (baseline) — зафиксированная версия требований, по которой команда работает и которую можно изменять только через управляемую процедуру.
  • Запрос на изменение (change request) — формальный повод изменить baseline: добавить, удалить или уточнить требование.
  • Анализ влияния (impact analysis) — оценка того, какие артефакты, компоненты, тесты, процессы и сроки затронет изменение.
  • Управление конфигурациями — дисциплина, которая обеспечивает управляемые версии артефактов (требований, моделей, кода, инфраструктуры). Справочно: Software configuration management.
  • Трассируемость: что именно связываем

    Почему трассируемость особенно важна в ИС

    ИС — это не только код. В ИС одновременно живут:

  • процессы и роли (часто моделируются в BPMN)
  • функции и границы ответственности (часто фиксируются через IDEF0)
  • программная структура и поведение (UML)
  • архитектурные границы и контейнеры (C4)
  • требования к качеству и эксплуатации (НФТ)
  • Из-за этого «одного документа требований» недостаточно: важно иметь связи между артефактами.

    !Схема показывает, как требования связываются с моделями, архитектурой, тестами и эксплуатацией

    Минимальная «цепочка» трассировки, которая окупается почти всегда

    Ниже — практический минимум связей (не максимальная бюрократия), который резко повышает управляемость:

  • Бизнес-цель → зачем делаем (метрика успеха)
  • Сценарий / шаг процесса → где в работе возникает потребность (BPMN, сценарии использования)
  • Требование → что обязана делать система (FR/NFR)
  • Проектное решение → как это реализуем (C4, ADR)
  • Проверка → как докажем выполнение (acceptance criteria, тесты)
  • Если связей нет хотя бы на уровне «требование → тест», требования перестают быть проверяемыми.

    Виды трассируемости

  • Вперёд (forward traceability): от целей и требований к реализации и проверкам.
  • Назад (backward traceability): от кода/компонента/теста к требованию и бизнес-цели.
  • Двунаправленная: сочетание обоих подходов, наиболее полезна для управления изменениями.
  • Как организовать трассировку на практике

    Правило идентификаторов

    Требования и связанные артефакты должны иметь устойчивые идентификаторы, иначе ссылки «ломаются».

    Типовая схема:

  • BG-xx — бизнес-цели
  • SC-xx — сценарии
  • FR-xx — функциональные требования
  • NFR-xx — нефункциональные требования
  • AC-xx — критерии приёмки
  • ADR-xx — архитектурные решения
  • BPMN-Proc-xx — процессы
  • C4-Context/Container/Component-xx — архитектурные диаграммы
  • TC-xx — тест-кейсы
  • Важно: ID должен быть стабильным при редактуре текста. Если при каждом переписывании требования меняется ID, трассируемость превращается в имитацию.

    Атрибуты требования (что хранить кроме текста)

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

    Рекомендуемый минимум:

  • ID
  • Название
  • Тип (FR/NFR/ограничение)
  • Источник (стейкхолдер, документ, регуляторика, инцидент)
  • Приоритет
  • Статус (черновик/согласовано/в работе/реализовано/отклонено)
  • Критерии приёмки (ссылки на AC-...)
  • Трассировка (ссылки на процесс/сценарий/ADR/диаграммы/тесты)
  • Матрица трассируемости (RTM)

    RTM (Requirements Traceability Matrix) — это таблица, где требование связано с артефактами, которые его обосновывают и проверяют.

    Пример минимальной RTM для одного требования:

    | Артефакт | ID | Что это даёт | |---|---|---| | Бизнес-цель | BG-02 | объясняет ценность и приоритет | | Процесс (BPMN) | BPMN-Proc-01 | показывает шаг и роли | | Сценарий | SC-05 | описывает основной поток и исключения | | Требование | FR-12 | фиксирует обязанность системы | | Решение | ADR-03 | объясняет выбранный механизм | | Архитектура | C4-Container-01 | показывает контейнеры и связи | | Поведение | UML-Seq-07 | уточняет взаимодействия и ошибки | | Приёмка/тест | AC-12-1 / TC-12-1 | доказывает выполнение |

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

    Как трассировка связана с нотациями UML, BPMN, IDEF0, C4

    Практичная схема применения выглядит так:

  • BPMN: связываем требования с шагами процесса и ролями
  • IDEF0: связываем требования с функциями верхнего уровня и управляющими воздействиями (регламенты, политики)
  • C4: связываем требования с архитектурными границами и контейнерами (где реализуется)
  • UML Sequence: связываем требования с критическими сценариями взаимодействий (как работает во времени, включая ошибки)
  • UML Class: связываем требования с ключевыми сущностями и правилами данных (что хранится и как связано)
  • Это помогает держать согласованность: если меняется шаг процесса, можно найти требования и сценарии, которые должны измениться, а затем обновить UML/C4.

    Базовые линии (baseline): как закрепить «о чём договорились»

    Зачем нужна baseline

    Baseline нужна, чтобы в проекте существовал ответ на вопрос: какая версия требований является текущей договорённостью.

    Без baseline возникают параллельные реальности:

  • аналитик отредактировал документ
  • разработка начала делать по старому
  • тестировщики проверяют по другой версии
  • заказчик «помнит по-своему»
  • Что обычно делают baseline

    Чаще всего baseline фиксируют на контрольной точке «требования утверждены» (из жизненного цикла, который мы обсуждали ранее):

  • требования согласованы по приоритету
  • определены критерии приёмки
  • зафиксированы ключевые НФТ
  • известны зависимости и интеграции
  • Baseline может быть:

  • версия SRS (например, SRS v1.2)
  • срез бэклога user stories (например, «релиз 1: набор US-... со статусом Approved»)
  • тег/релиз в Git, если требования хранятся как текстовые артефакты (например, Markdown + PlantUML)
  • Управление изменениями требований

    Откуда берутся изменения

    На практике источники изменений обычно такие:

  • уточнение процессов и исключений после интервью или пилота
  • изменения во внешних системах (API, форматы, SLA)
  • новые требования безопасности или аудита
  • результаты тестирования и эксплуатации (инциденты, метрики)
  • смена приоритетов бизнеса
  • Важно: изменение — это не «ошибка». Изменение — нормальное состояние живой ИС. Ошибка — отсутствие управляемой реакции.

    Типы изменений (для правильной реакции)

    Полезно различать изменения по характеру:

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

    Минимальный процесс change control

    Ниже — процесс, который подходит и для «классических» проектов, и для итеративной поставки, если адаптировать уровень формальности.

  • Регистрация запроса на изменение
  • Триаж (первичная классификация: критичность, срочность, тип)
  • Анализ влияния
  • Решение (принять/отложить/отклонить)
  • Обновление baseline и артефактов
  • Коммуникация изменений
  • Что включает анализ влияния

    Анализ влияния должен отвечать на вопрос: что надо изменить кроме текста требования.

    Рекомендуемый чек-лист влияния:

  • Какие бизнес-цели и метрики затрагиваются
  • Какие процессы BPMN затрагиваются (какие шаги, роли, ветвления)
  • Какие функциональные и нефункциональные требования меняются
  • Какие архитектурные решения и контейнеры C4 затрагиваются
  • Какие сценарии UML Sequence нужно обновить (особенно ошибки, таймауты, ретраи)
  • Какие сущности/данные затрагиваются (UML Class, правила целостности)
  • Какие тесты и критерии приёмки должны измениться
  • Какие риски появляются (безопасность, производительность, эксплуатация)
  • Именно здесь трассируемость превращается в экономию: вы не «угадываете», что затронуто, а находите это по связям.

    Кто принимает решение об изменении

    Решение зависит от модели управления, но логика обычно такая:

  • заказчик принимает изменения, влияющие на объём, сроки, бизнес-ценность
  • архитектор принимает изменения, влияющие на архитектурные принципы и ключевые решения
  • безопасность/эксплуатация подтверждают изменения, влияющие на риски и эксплуатационную модель
  • В крупных организациях это формализуется как CCB (Change Control Board). Справочно: Change control board.

    Как обеспечить версионность требований и моделей

    Почему «картинки в презентации» плохо поддерживают изменения

    Если BPMN/UML/C4 существуют как изображения без версий и ссылок:

  • невозможно понять, какая версия актуальна
  • невозможно связать модель с требованиями и тестами
  • невозможно корректно проводить анализ влияния
  • Поэтому в курсе мы рекомендуем воспроизводимые форматы:

  • UML в текстовом виде: PlantUML
  • C4 как код: Structurizr DSL
  • C4 поверх PlantUML: C4-PlantUML
  • Для BPMN наиболее переносимый формат — BPMN 2.0 XML (как стандарт обмена): BPMN 2.0.

    Практика «требования и модели рядом»

    Сильная и простая практика для управляемости:

  • хранить требования (SRS/истории) и диаграммы в одном репозитории или в согласованной системе (wiki + Git)
  • в тексте требований использовать ссылки на файлы диаграмм и их версии
  • фиксировать ключевые решения через ADR (как мы обсуждали в теме проектирования)
  • Тогда изменение требования автоматически ведёт к обновлению связанных артефактов через pull request и review.

    Трассируемость в итеративной поставке и в «каскадных» проектах

    Итеративная модель (Agile-практики)

    В итеративной поставке требования часто представлены как user stories, а baseline — как набор историй, принятых в релиз/спринт.

    Практический минимум, чтобы не потерять управляемость:

  • у каждой истории есть acceptance criteria
  • у каждой истории есть ссылки на процесс (BPMN) или сценарий
  • критические истории имеют ссылку на UML Sequence и/или ADR
  • НФТ ведутся не «как отдельный документ», а как требования с привязкой к сценариям и проверкам
  • Каскадная и V-модель

    В каскадных подходах baseline чаще фиксируется как версия SRS. Важные особенности:

  • выше потребность в формальном согласовании изменений
  • сильнее роль RTM и документированной трассировки «требование → проектное решение → тест»
  • изменения часто проходят через формальный change request, потому что влияют на контракт
  • Типовые ошибки и как их предотвращать

  • Трассируемость «для отчётности»: связи есть, но ими никто не пользуется.
  • - Решение: делать трассировку только там, где она нужна для изменений и приёмки (критические сценарии, интеграции, НФТ).
  • Нет baseline: требования меняются «в чате».
  • - Решение: фиксировать baseline на контрольных точках и явно указывать версию.
  • Изменение требования без обновления моделей: BPMN и UML расходятся с реальностью.
  • - Решение: правило: change request считается закрытым только после обновления связанных артефактов и тестов.
  • Слишком много связей вручную: поддержка RTM становится дорогой.
  • - Решение: минимальный набор связей и дисциплина ID; автоматизация возможна позже.
  • НФТ живут отдельно: архитектура проектируется без реальных ограничений.
  • - Решение: привязывать NFR к конкретным операциям/сценариям и к способам проверки.

    Практический минимум для проекта ИС

    Если нужен короткий, но рабочий набор правил управления требованиями:

  • Ввести устойчивые ID для требований, критериев приёмки и моделей.
  • Зафиксировать baseline требований перед началом реализации.
  • Для каждого критического требования иметь ссылки минимум на:
  • - шаг процесса (BPMN) или сценарий - критерий приёмки - тест или проверку
  • Для интеграций и НФТ дополнительно иметь:
  • - C4 контейнеры/компоненты - UML Sequence для критических сценариев и ошибок - ADR для ключевых решений
  • Ввести простой change control: регистрация → анализ влияния → решение → обновление артефактов.
  • Итог

    Управление требованиями делает проектирование ИС устойчивым к реальности изменений:

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

  • BPMN и IDEF0 помогают держать связь требований с процессами и функциями
  • C4 и ADR фиксируют архитектурные последствия требований
  • UML уточняет поведение и данные для реализации
  • В следующих темах курса эта основа понадобится, чтобы переходить от требований к проектированию архитектуры и данных без потери управляемости, а также чтобы поддерживать согласованность моделей при развитии системы.

    16. Методологии проектирования ИС: Waterfall, Iterative, Agile

    Методологии проектирования ИС: Waterfall, Iterative, Agile

    Зачем обсуждать методологии именно в курсе по проектированию ИС

    В предыдущих темах курса мы уже построили основу:

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

    Именно это задают методологии (и связанные с ними модели работы): Waterfall, итеративно-инкрементный подход, Agile-практики.

    Ключевая мысль: методология влияет не только на планирование, но и на то,

  • когда фиксируется baseline требований
  • какие артефакты проектирования обязательны (и в каком объёме)
  • как часто и как формально происходит согласование
  • как устроена обратная связь от пользователей
  • !Сравнение логики движения работ и обратной связи в Waterfall, Iterative и Agile

    Термины, которые понадобятся в этой теме

  • Методология: согласованный подход к организации работ (процессы, роли, артефакты, правила принятия решений).
  • Модель жизненного цикла: как упорядочены фазы и итерации (мы обсуждали её ранее, вместе с контрольными точками).
  • Итерация: повтор цикла работ на ограниченном объёме.
  • Инкремент: измеримый прирост функциональности, который даёт ценность.
  • Baseline требований: зафиксированная версия требований, по которой команда работает (и которую меняют только управляемо).
  • Важно: Agile, Waterfall и итеративность часто называют «методологиями», хотя строгая терминология может отличаться. В рамках курса нам важна практическая разница: как меняются требования и как проектирование поддерживает это изменение.

    Waterfall: проектирование как отдельная фаза до реализации

    Суть подхода

    Waterfall (каскадная модель) организует работы как последовательность фаз, где результат предыдущей фазы становится входом следующей:

  • анализ и требования
  • проектирование
  • реализация
  • тестирование
  • внедрение
  • Классическая публикация, с которой часто связывают обсуждение каскадного подхода: W. Royce, Managing the Development of Large Software Systems (1970): Managing the Development of Large Software Systems (Royce, PDF).

    Что это означает для проектирования ИС

    Проектирование в Waterfall стремится быть максимально завершённым до старта разработки. Это влияет на артефакты:

  • требования фиксируются как baseline до детального проектирования
  • проектные решения и архитектура утверждаются на контрольной точке до реализации
  • трассировка обычно формализуется сильнее: требование → решение → тест
  • Когда Waterfall уместен

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

  • Поздняя обратная связь от пользователей.
  • «Иллюзия полноты требований»: в документах всё выглядит согласованным, но реальная работа пользователей обнаруживает пробелы на внедрении.
  • Перегруз документацией: артефакты делают «для этапа», а не для использования в реализации.
  • Как в Waterfall применять UML, BPMN, IDEF, C4

  • BPMN и IDEF0 особенно полезны на обследовании и уточнении требований, чтобы до проектирования выровнять понимание процесса и функций.
  • C4 Context/Container фиксируют границы и контейнеры решения как обязательный вход в детальное проектирование.
  • UML Sequence и UML Class используются как часть спецификации поведения и данных, пригодной для реализации и тестирования.
  • Практическое правило: в Waterfall «поздние находки» (например, неучтённая интеграция) очень дорогие, поэтому контекст (C4) и критические сценарии (UML Sequence) стоит закрывать рано.

    Iterative и Iterative-Incremental: проектирование порциями, но с дисциплиной целостности

    Суть подхода

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

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

    Это снижает риск «сделали не то», но требует дисциплины:

  • архитектура должна оставаться целостной
  • границы и принципы должны быть стабильнее, чем детали
  • изменения должны управляться через трассировку и анализ влияния
  • Что это означает для проектирования ИС

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

  • Стабилизирующий слой (делается рано и поддерживается):
  • - границы системы и внешние зависимости (C4 Context) - ключевые НФТ, которые «формируют» архитектуру (безопасность, доступность, критические нагрузки) - архитектурные принципы и ограничения (часто фиксируются через ADR)
  • Инкрементный слой (делается по мере поставки):
  • - детали сценариев ближайшего инкремента (UML Sequence) - уточнение модели данных под сценарии (UML Class на концептуальном/логическом уровне) - детализация процессов «как будет» для релизных изменений (BPMN)

    Когда Iterative уместен

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

  • «Разъезд архитектуры»: быстрые локальные решения ломают целостность.
  • Накопление технического долга без фиксации решений.
  • Постоянная смена приоритетов без baseline на итерацию.
  • Как в Iterative применять нотации

  • C4 используется как «каркас» границ и контейнеров, который живёт долго.
  • BPMN помогает уточнять процесс частями, но важно версионировать процессную модель и явно отмечать, какие ветки автоматизированы в текущем релизе.
  • UML Sequence становится ключевым инструментом для критических сценариев каждого инкремента, включая ошибки и деградацию.
  • IDEF0 особенно полезен для сохранения верхнего уровня функций и ответственности, когда изменения происходят часто и есть риск потерять общую картину.
  • Agile: ценность и обратная связь как главный механизм управления

    Суть Agile

    Agile — это семейство принципов и практик, где ценность поставляется частями, а управление строится на постоянной обратной связи и адаптации.

    Первоисточник принципов: Манифест Agile.

    Agile часто реализуют через практики управления работой:

  • Scrum: фиксированная длина итерации (спринта), роли и события. Официальный источник: The Scrum Guide.
  • Kanban: управление потоком работ, ограничение WIP, непрерывная поставка. Обзорная база: Kanban (Wikipedia).
  • Что это означает для проектирования ИС

    Agile не отменяет проектирование, но меняет его форму:

  • проектирование становится непрерывной деятельностью, поддерживающей ближайшую поставку
  • «достаточность» важнее «полноты навсегда», но критические риски закрывают заранее
  • требования часто живут как user stories с критериями приёмки, а устойчивые части фиксируются как живой SRS (контекст, НФТ, интеграции, глоссарий)
  • Практическая формулировка:

  • в Agile проектируют ровно настолько глубоко, насколько нужно для безопасной и проверяемой поставки ближайшего инкремента, сохраняя архитектурную целостность
  • Когда Agile уместен

  • Высокая изменчивость требований и необходимость быстро получать обратную связь.
  • Можно поставлять систему по частям, получая реальных пользователей на ранних версиях.
  • Команда и заказчик готовы к регулярным уточнениям и совместной работе.
  • Риски и типовые провалы

  • Путаница «Agile = без документации»: в ИС это приводит к расхождению процессов, требований, архитектуры и тестов.
  • Отсутствие проектирования НФТ: безопасность и производительность всплывают как кризис.
  • Слабое управление зависимостями: внешние системы, владельцы данных, интеграционные ограничения.
  • Как в Agile применять UML, BPMN, IDEF, C4

    Ключевой принцип: модели должны быть живыми артефактами, поддерживающими коммуникацию и трассировку.

  • C4 полезен как общий язык архитектуры: контекст и контейнеры редко переписывают радикально, их поддерживают актуальными.
  • UML Sequence используют для самых рискованных историй: интеграции, транзакции, деградации, таймауты.
  • BPMN помогает удерживать связь с бизнес-процессом, особенно когда несколько подразделений участвуют в одном потоке.
  • IDEF0 может быть опорной моделью функций и ответственности, когда важно не потерять верхний уровень в потоке изменений.
  • !Как сочетать Agile-бэклог и устойчивую архитектурно-требовательную базу в проектах ИС

    Сравнение подходов через призму проектирования ИС

    | Критерий | Waterfall | Iterative | Agile | |---|---|---|---| | Обратная связь от пользователей | поздняя | регулярная, по итерациям | очень частая, по инкрементам | | Baseline требований | фиксируется рано и жёстко | фиксируется на итерацию/релиз | фиксируется на итерацию/поток, изменения ожидаемы | | Роль проектирования | отдельная фаза до реализации | проектирование порциями + опорный каркас | непрерывное, «достаточное», риск-ориентированное | | Риск «сделали не то» | высокий при неполных требованиях | ниже за счёт итераций | ниже при реальной обратной связи | | Риск «архитектура разъехалась» | ниже (если требования стабильны) | средний | высокий без архитектурной дисциплины | | Типовые артефакты | SRS, полный набор диаграмм на старт | C4 как каркас, UML/BPMN по инкрементам | stories + AC, C4/ADR, выборочные UML/BPMN |

    Как выбирать подход в реальном проекте ИС

    Выбор редко бывает «чистым». На практике выбирают доминирующий режим и добавляют элементы других.

    Вопросы, которые помогают выбрать доминирующий режим

  • Насколько стабильны требования и бизнес-правила.
  • Можно ли поставлять ценность частями (есть ли смысл в MVP/пилоте).
  • Насколько критичны НФТ (безопасность, доступность, аудит, регуляторика).
  • Сколько внешних систем и владельцев данных участвуют.
  • Насколько формальна приёмка (контракт, тендер, аудит).
  • Практический вывод для проектировщика

  • Если изменения дорогие, а приёмка формальная, усиливайте Waterfall-элементы: baseline, SRS, RTM, контрольные точки.
  • Если неопределённость высокая, но система сложная, выбирайте итеративность с архитектурным каркасом: C4 + ADR + критические UML Sequence.
  • Если нужно быстро учиться на обратной связи, используйте Agile-практики, но не отменяйте дисциплину: НФТ, интеграции, трассировка, versioning моделей.
  • Типовой «гибрид» для корпоративной ИС

    Корпоративные ИС часто вынуждают комбинировать подходы.

    Рабочий шаблон гибрида:

  • На старте сделать «каскадный» контур базовых договорённостей:
  • - контекст и границы (C4 Context) - список интеграций и владельцев - ключевые НФТ (безопасность, аудит, доступность) - первичный baseline требований для первого релиза
  • Дальше вести поставку итеративно (Agile-практики):
  • - user stories + acceptance criteria - уточнение процессов в BPMN по мере включения подразделений - UML Sequence для рискованных сценариев - ADR для решений, которые меняют архитектуру или эксплуатацию
  • Поддерживать трассировку как минимум для критичных частей:
  • - требование или story → критерии приёмки → тест - интеграции и НФТ → ADR/C4/UML Sequence

    Типовые ошибки выбора методологии и как их предотвратить

  • Ошибка: выбрать Agile и перестать фиксировать решения.
  • - Защита: ADR для ключевых решений, C4 как каркас, baseline на итерацию.
  • Ошибка: выбрать Waterfall при высокой неопределённости.
  • - Защита: добавить итерации прототипирования, пилот, пересмотр требований по контрольным точкам.
  • Ошибка: делать итеративно, но без приоритизации.
  • - Защита: явные критерии выбора инкремента и согласованные метрики успеха.
  • Ошибка: не учитывать контур эксплуатации и безопасности.
  • - Защита: фиксировать НФТ как вход в проектирование и подтверждать их на quality gates.

    Итог

    Методологии Waterfall, Iterative и Agile задают режим, в котором выполняется проектирование ИС:

  • Waterfall усиливает полноту и формальность до реализации, ценой поздней обратной связи.
  • Iterative снижает риск ошибок через повторяющиеся циклы, требуя дисциплины целостной архитектуры.
  • Agile ускоряет обучение на обратной связи и поставку ценности, но требует явной архитектурной и требований дисциплины, чтобы не потерять управляемость.
  • В следующих темах курса это станет практической основой для перехода к проектированию информационного и программного обеспечения: как выбирать артефакты (BPMN, UML, C4, IDEF) под контекст и методологию, и как держать их согласованными на протяжении изменений.

    17. Технологии и инструменты проектирования: CASE и репозитории моделей

    Технологии и инструменты проектирования: CASE и репозитории моделей

    Зачем проектировщику ИС инструменты, а не только нотации

    В предыдущих темах курса мы последовательно выстроили цепочку жизненный цикл → требования → проектирование → проверка и эксплуатация и показали, как нотации (IDEF0, BPMN, UML, C4) поддерживают разные вопросы: процесс, функции, архитектурные границы, поведение и данные.

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

    Инструменты проектирования нужны, чтобы:

  • держать модели актуальными при изменениях требований
  • обеспечивать совместную работу (аналитики, архитекторы, разработчики, эксплуатация, безопасность)
  • поддерживать трассируемость артефактов (из темы управления требованиями)
  • проходить контрольные точки жизненного цикла с воспроизводимыми доказательствами
  • снижать риск расхождения между процессом (BPMN), требованиями (SRS/stories), архитектурой (C4) и деталями взаимодействий (UML)
  • Эта статья посвящена двум связанным темам:

  • CASE-инструменты как средства моделирования и инженерии
  • репозитории моделей как способ управлять моделями, версиями и связями между артефактами
  • !Как модели и документы связываются в единую систему артефактов проекта

    Что такое CASE и чем CASE отличается от “редактора диаграмм”

    CASE (Computer-Aided Software Engineering) — это класс инструментов, которые поддерживают деятельность по анализу, проектированию и частично по управлению жизненным циклом разработки. Важно: CASE не сводится к рисованию. Хороший CASE-инструмент хранит модель, а диаграмма является представлением модели.

    Разница между редактором картинок и CASE-инструментом обычно проявляется в следующем:

  • в редакторе картинок вы храните геометрию и подписи
  • в CASE-инструменте вы храните сущности модели (акторы, процессы, компоненты, классы, связи, атрибуты), их свойства, версии и ссылки
  • Практический эффект: если вы переименовали сущность в модели, CASE-инструмент может обновить все представления, отчёты и ссылки, а “картинка” — нет.

    Классы инструментов проектирования ИС

    Чтобы не смешивать разные типы инструментов, разделим их по назначению.

    Инструменты для UML

    UML нужен, когда мы уточняем структуру и поведение программной части ИС (классы, последовательности, состояния, компоненты). Способы работы обычно два:

  • модель в графическом CASE-инструменте
  • диаграммы как код (текстовое описание, генерируемое в картинку)
  • Полезные ссылки:

  • UML (спецификация OMG)
  • PlantUML как распространённый текстовый язык для UML-диаграмм
  • Инструменты для BPMN

    BPMN чаще используется для согласования бизнес-процесса между ролями, подразделениями и (иногда) внешними организациями.

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

    Полезные ссылки:

  • BPMN (спецификация OMG)
  • Инструменты для C4

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

    Полезные ссылки:

  • The C4 model
  • Structurizr DSL как распространённый DSL для C4
  • C4-PlantUML как библиотека шаблонов C4 для PlantUML
  • Инструменты для IDEF

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

    На практике IDEF чаще ведут в графических инструментах и дополняют спецификациями (таблицы ICOM, словари сущностей). Универсального “де-факто” текстового стандарта хранения IDEF, сопоставимого с PlantUML для UML, обычно нет, поэтому особое внимание приходится уделять правилам хранения версий и ссылок.

    Справочно:

  • IDEF (NIST)
  • Инструменты для управления требованиями и связями

    Даже если требования фиксируются в SRS или в user stories, важны:

  • идентификаторы (FR/NFR/AC/ADR)
  • статусность (draft/approved/in progress)
  • трассировка к моделям и тестам
  • Варианты реализации:

  • специализированные системы управления требованиями
  • wiki + таблицы + дисциплина ссылок
  • репозиторий в Git, где требования — текстовые файлы с ID и ссылками
  • Ключевой момент: требования и модели должны быть “в одном контуре управления версиями”, иначе baseline становится фикцией.

    Репозиторий моделей: что это такое и зачем он нужен

    Репозиторий моделей — это управляемое хранилище, где:

  • лежат модели (процессы, архитектура, UML, справочники терминов)
  • фиксируются версии и авторство изменений
  • обеспечивается совместная работа и согласование
  • поддерживаются связи между артефактами (трассируемость)
  • Важно различать два сценария:

  • репозиторий внутри CASE-инструмента (централизованное хранение модели)
  • репозиторий в системе контроля версий (например, Git), где модели описаны в текстовых форматах или хранятся как файлы проекта
  • Полезная опора по практике контроля версий:

  • Git (официальный сайт)
  • Два подхода к хранению моделей

    Модель-центричный подход (централизованный репозиторий CASE)

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

    Когда подходит:

  • много аналитиков и архитекторов одновременно меняют одну и ту же модель
  • важно централизованно управлять доступами и публикацией
  • требуется формальная отчётность, согласования, “официальные версии” моделей
  • Риски:

  • сложнее встроить в общий инженерный контур разработки, если разработка живёт в Git
  • возможен “разрыв” между моделью и кодом, если нет дисциплины синхронизации
  • Текст-центричный подход (модели как код в Git)

    Суть: диаграммы описываются текстом (например, PlantUML, Structurizr DSL), хранятся рядом с требованиями и ADR, проходят обычный code review.

    Когда подходит:

  • команда привыкла к Git и pull request
  • важна воспроизводимость и прозрачность изменений
  • архитектура и требования развиваются итеративно, нужно лёгкое версионирование
  • Риски:

  • требуется дисциплина соглашений (структура каталогов, правила именования, правила ссылок)
  • для BPMN и некоторых видов моделей возможны сложности с диффами и слиянием, если формат не ориентирован на ручное редактирование
  • Критерии выбора инструмента и репозитория

    Чтобы выбор не превратился в “кто чем привык”, используйте проверяемые критерии.

    Поддержка нотаций и глубины моделирования

    Вопросы:

  • нужна ли только визуализация или ещё и строгая модель данных/метамодель
  • нужны ли проверки согласованности (например, связи акторов и use case)
  • требуется ли генерация отчётов и спецификаций
  • Совместная работа и управление изменениями

    Вопросы:

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

    Вопросы:

  • можно ли связать требование FR-12 со сценарием, узлом BPMN и ADR
  • можно ли связать архитектурное решение ADR-03 с C4-диаграммой и UML sequence
  • можно ли “провести” изменения по цепочке влияния (impact analysis)
  • Экспорт и переносимость

    Практический критерий: насколько легко уйти с инструмента или сменить его без потери модели.

    Типовые форматы, которые повышают переносимость:

  • PlantUML-тексты для UML
  • Structurizr DSL для C4
  • BPMN 2.0 XML для обмена процессными моделями
  • Встроенность в инженерный контур

    Вопросы:

  • можно ли хранить модели рядом с кодом и требованиями
  • можно ли автоматически собирать документацию (например, генерировать диаграммы в CI)
  • можно ли встроить ревью моделей в общий процесс ревью изменений
  • Практика: как организовать репозиторий артефактов проектирования

    Ниже пример структуры репозитория, если вы ведёте требования и модели как код.

    Что важно в такой структуре:

  • требования и модели лежат рядом, ссылки между ними “живые”
  • ADR находятся рядом с диаграммами, которые они обосновывают
  • есть место для глоссария, чтобы термины не разъезжались
  • !Пример структуры репозитория для требований, моделей и ADR

    Идентификаторы и ссылки как “скелет” репозитория моделей

    В теме управления требованиями мы вводили идею устойчивых ID. Для инструментов и репозиториев это становится обязательным условием.

    Рекомендуемая минимальная дисциплина:

  • требования: FR-, NFR-
  • критерии приёмки: AC-
  • решения: ADR-
  • сценарии: SC-
  • процессы: BPMN-Proc-
  • диаграммы C4: C4-Context-, C4-Container-
  • UML: UML-UC-, UML-SEQ-, UML-DM-
  • Практический смысл:

  • по ID можно быстро строить трассировку
  • change request можно закрывать только после обновления связанных артефактов
  • Автоматизация: генерация диаграмм и публикация документации

    Если модели описываются текстом (PlantUML, Structurizr DSL), их удобно автоматически собирать.

    Типовые сценарии автоматизации:

  • Генерация изображений диаграмм из текстовых файлов
  • Публикация документации (например, в wiki или как статический сайт)
  • Проверки качества артефактов
  • Проверки качества могут быть простыми, но полезными:

  • нет ли диаграмм без ссылок на требования или ADR
  • все ли требования имеют критерии приёмки
  • нет ли “висящих” ID, которые нигде не используются
  • Важно: автоматизация не заменяет аналитическую проверку согласованности, но снижает риск “сломанных” артефактов.

    CASE и репозитории в разных моделях жизненного цикла

    Waterfall и V-модель

    В более формальном подходе инструменты чаще используются для:

  • фиксированной baseline модели
  • генерации отчётных артефактов
  • строгой трассировки “требование → решение → тест”
  • Здесь часто сильнее выражен модель-центричный подход: централизованный репозиторий, роли, согласование публикации.

    Итеративность и Agile

    В итеративной поставке важнее:

  • лёгкость внесения изменений
  • ревью моделей как части обычного потока разработки
  • быстрая актуализация диаграмм под изменения требований
  • Здесь часто выигрывает подход “модели как код”:

  • изменения видны как diff
  • модели можно обсуждать в pull request
  • легко версионировать процессы и архитектуру
  • Мини-обзор популярных инструментов по типам

    Таблица ниже не является “рейтингом”. Она помогает увидеть, что инструменты различаются по философии: централизованная модель или текстовые форматы.

    | Тип задачи | Часто используемый подход | Примеры инструментов/форматов | |---|---|---| | UML как строгая модель | CASE с репозиторием | Sparx Systems Enterprise Architect, Visual Paradigm | | UML как часть инженерного контура | Диаграммы как код | PlantUML | | BPMN моделирование процессов | BPMN-редактор + обменный формат | BPMN 2.0 XML, Camunda Modeler | | C4 архитектура | Архитектура как код | Structurizr DSL, C4-PlantUML | | Репозиторий и версии | Контроль версий артефактов | Git |

    Ссылки:

  • Sparx Systems Enterprise Architect
  • Visual Paradigm
  • Camunda Modeler
  • Типовые ошибки при использовании CASE и репозиториев моделей

  • Диаграммы без статуса и владельца
  • - В итоге никто не знает, какая версия актуальна, и что является baseline.

  • Модели “живут отдельно” от требований и решений
  • - BPMN, UML и C4 не связаны с FR/NFR/ADR, impact analysis становится ручным и дорогим.

  • Хранение моделей только как картинки
  • - Невозможно нормально версионировать, сравнивать изменения и проводить ревью.

  • Отсутствие правил именования и ID
  • - Ссылки ломаются, трассируемость имитируется.

  • Слишком тяжёлый инструмент для маленького проекта
  • - Цена поддержания модели становится выше пользы.

    Практический минимум, который даёт эффект почти всегда

    Если нужно начать без “инструментального перфекционизма”, но с управляемостью:

  • Введите устойчивые ID для требований, критериев приёмки и ADR.
  • Зафиксируйте C4 контекст и список внешних систем как часть baseline.
  • Выберите способ хранения моделей:
  • - централизованный CASE-репозиторий, если много параллельной работы над одной моделью - Git, если команда живёт в pull request и вы готовы к дисциплине “модели как код”
  • Для критических сценариев ведите UML Sequence (включая ошибки и деградацию).
  • Для сквозного процесса ведите BPMN и версионируйте его.
  • Сделайте правило: change request считается закрытым только после обновления связанных моделей и критериев приёмки.
  • Итог

    CASE-инструменты и репозитории моделей — это технологическая основа, которая превращает нотации UML, BPMN, IDEF и C4 в управляемые артефакты жизненного цикла.

    Ключевые выводы:

  • CASE ценен тогда, когда хранится модель, а не только “картинка”
  • репозиторий моделей нужен для версий, совместной работы и трассируемости
  • на практике встречаются два устойчивых подхода: централизованный CASE-репозиторий и “модели как код” в Git
  • правильный выбор инструмента определяется не модой, а требованиями к совместной работе, трассируемости, переносимости и встроенности в жизненный цикл
  • В следующих темах курса эта инструментальная основа понадобится, чтобы уверенно перейти к проектированию информационного и программного обеспечения: от архитектуры (C4) и данных до спецификации интерфейсов и структурных методов анализа.

    18. Структурный анализ: контекстная диаграмма и декомпозиция

    Структурный анализ: контекстная диаграмма и декомпозиция

    Зачем структурный анализ в курсе про UML, BPMN, IDEF и C4

    В предыдущих темах курса мы построили основу: жизненный цикл ИС, роли, требования, контекст и границы системы, а также инструменты и репозитории моделей. Теперь добавим метод, который часто используется до детального проектирования архитектуры и поведения: структурный анализ.

    Его практическая ценность в проектировании ИС такая:

  • быстро и наглядно зафиксировать границы системы и её взаимодействия с окружением
  • описать что делает система как набор функций верхнего уровня
  • провести декомпозицию функций до уровня, на котором можно формировать требования, планировать реализацию и проверки
  • Структурный анализ не заменяет UML, BPMN и C4. Он закрывает другой вопрос: какие функции должна обеспечивать система и как они раскладываются на подфункции, не уходя преждевременно в классы, экраны и микросервисы.

    Что такое структурный анализ

    Структурный анализ — подход к описанию системы через:

  • функции (что система делает)
  • потоки (какие данные/материалы/сообщения входят и выходят)
  • границы (что внутри системы, что снаружи)
  • декомпозицию (разложение функции на подфункции по уровням)
  • В классических школах структурного анализа широко применялись:

  • DFD (диаграммы потоков данных) и их контекстная диаграмма как уровень 0
  • IDEF0 как нотация функционального моделирования через ICOM
  • Справочные источники:

  • IDEF (NIST)
  • Data-flow diagram (Wikipedia)
  • Контекстная диаграмма: смысл и назначение

    Контекстная диаграмма — модель верхнего уровня, которая показывает систему как единый блок и все её внешние взаимодействия.

    Она отвечает на вопросы:

  • кто или что взаимодействует с системой (внешние акторы и системы)
  • какие основные входы и выходы есть на границе
  • что точно относится к системе, а что находится во внешней среде
  • Контекстная диаграмма особенно полезна как ранний артефакт перед:

  • детализацией требований
  • выбором состава интеграций
  • построением C4-диаграммы контекста
  • Важно: контекстная диаграмма в структурном анализе похожа по назначению на C4 System Context (мы обсуждали C4 ранее), но обычно делает акцент именно на потоки входов и выходов.

    !Пример контекстной диаграммы: система как один блок и её окружение

    Контекстная диаграмма в DFD: элементы и правила

    Основные элементы

    Для контекстной диаграммы в DFD обычно используют:

  • Процесс: система целиком (один процесс уровня 0)
  • Внешняя сущность: пользователь, подразделение или внешняя система
  • Поток данных: сообщение/документ/набор данных, пересекающий границу
  • Практические правила качества

  • Потоки должны быть именованными и понятными: не «данные», а «Заявка на закупку», «Результат согласования», «Справочник лимитов».
  • На контекстной диаграмме показывают только внешние взаимодействия, без внутренних хранилищ и внутренних шагов.
  • Если внешний участник взаимодействует с системой, должен быть хотя бы один вход или выход.
  • Типовая ошибка

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

    Контекстная диаграмма в IDEF0: A-0 и ICOM

    Что такое IDEF0 и почему он удобен для декомпозиции

    IDEF0 — нотация функционального моделирования, где каждая функция изображается блоком, а стрелки имеют четыре роли ICOM:

  • Input: что преобразуется функцией (вход)
  • Control: что управляет выполнением функции (правила, политики, регламенты)
  • Output: результат функции (выход)
  • Mechanism: чем выполняется функция (люди, системы, ресурсы)
  • IDEF0 особенно полезен, когда нужно явно показывать, что функции управляются регламентами и выполняются конкретными ролями и средствами.

    Контекстная диаграмма IDEF0

    В IDEF0 верхний уровень обычно называют A-0 (контекст), где:

  • один блок представляет всю систему или функцию верхнего уровня
  • стрелки ICOM фиксируют входы, выходы, управления и механизмы
  • Справочно: IDEF (NIST)

    Мини-таблица ICOM как способ сделать модель проверяемой

    Чтобы не ограничиваться «картинкой», контекст IDEF0 полезно дополнять таблицей стрелок.

    | Тип | Вопрос | Пример для ИС заявок | |---|---|---| | Input | что преобразуем | данные заявки, приложенные документы | | Control | что управляет | регламент согласования, лимиты, политики безопасности | | Output | что получаем | согласованная/отклонённая заявка, журнал действий | | Mechanism | чем делаем | роли пользователей, ИС, сервис уведомлений |

    Типовая ошибка: путать Input и Control. Если «лимит» является правилом принятия решения, это чаще Control. Если «лимит» загружают как данные для последующей обработки и хранения, в конкретной функции он может быть Input. Важно фиксировать смысл в контексте функции.

    Декомпозиция: как разложить систему на функции

    Что такое декомпозиция

    Декомпозиция — разложение функции верхнего уровня на более мелкие подфункции, чтобы:

  • уточнить состав обязанностей системы
  • отделить ручные и автоматизированные части
  • получить структуру для требований (FR/NFR) и трассировки
  • В IDEF0 это делается как переход от A-0 к A0, A1, A2 и так далее. В DFD аналогично переходят к уровням детализации процессов.

    !Дерево декомпозиции функций от верхнего уровня к подфункциям

    Правила хорошей декомпозиции

  • На каждом уровне делайте ограниченное число блоков, часто ориентируются на диапазон 3–6, чтобы модель оставалась читаемой.
  • Названия функций формулируйте как действие: «Обработать заявку», «Проверить лимит», «Уведомить согласующего».
  • Декомпозируйте до уровня, на котором:
  • - понятны входы/выходы и правила - можно сформулировать функциональные требования и критерии приёмки - можно назначить ответственность (роль или компонент)

    Когда остановиться

    Остановка декомпозиции — управленческое решение. Практичные критерии остановки:

  • подфункция стала однозначной и проверяемой через требования и тесты
  • дальнейшая детализация превращается в описание реализации (экраны, классы, SQL)
  • риск и сложность уже раскрыты (интеграции, ошибки, исключения)
  • Балансировка уровней: важное правило согласованности

    В структурном анализе (особенно в DFD) есть идея балансировки:

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

    В терминах жизненного цикла из предыдущих тем это поддерживает контрольную точку «контекст и границы согласованы».

    Как связать контекст и декомпозицию с требованиями и нотациями курса

    Связь с требованиями

    Контекстная диаграмма и декомпозиция дают удобный «каркас» для требований:

  • функции верхнего уровня превращаются в группы требований
  • входы/выходы подсказывают требования к данным и интерфейсам
  • Control помогает выявлять нефункциональные требования и ограничения (политики, аудит, безопасность)
  • Пример простой трассировки:

    | Функция (IDEF0) | Что уточняем требованиями | Что проектируем дальше | |---|---|---| | A2 Провести согласование | правила маршрутизации, роли, статусы, исключения | BPMN процесса согласования, UML State для статусов | | A3 Передать в учёт | форматы/частота обмена, поведение при сбое | C4 контейнеры интеграции, UML Sequence ошибок |

    Связь с BPMN

  • IDEF0 и DFD отвечают на вопрос какие функции есть
  • BPMN отвечает на вопрос как протекает процесс между ролями
  • Частая практическая связка:

  • сначала построить декомпозицию функций
  • затем для 1–2 ключевых функций построить BPMN «как будет», чтобы уточнить роли, события, ветвления и ручные шаги
  • Справочно: BPMN 2.0 (OMG)

    Связь с UML

    После структурного анализа UML подключают точечно:

  • UML Use Case помогает закрепить цели акторов и границы ответственности системы
  • UML Sequence помогает уточнить критические взаимодействия, особенно интеграции и ошибки
  • UML Class помогает уточнить сущности данных, которые «видны» из потоков и выходов
  • Справочно: UML (OMG)

    Связь с C4

  • контекстная диаграмма структурного анализа помогает выявить окружение
  • C4 System Context фиксирует окружение архитектурно
  • C4 Container уточняет, где реализуются функции и как разложены исполняемые части
  • Справочно: The C4 model

    Мини-пошаговый алгоритм: как сделать контекст и декомпозицию на старте

  • Определите цель системы и границу in scope / out of scope.
  • Составьте список внешних акторов и внешних систем.
  • Постройте контекстную диаграмму:
  • - один блок системы - внешние сущности - именованные потоки входов и выходов
  • Проверьте контекст на полноту:
  • - нет ли «молчаливых» интеграций - есть ли владельцы внешних систем
  • Выполните декомпозицию верхней функции на 3–6 функций уровня A0.
  • Для каждой функции уровня A0 зафиксируйте ICOM:
  • - входы, выходы, управляющие воздействия, механизмы
  • Выберите 1–2 наиболее рискованных функции и свяжите их с дальнейшим моделированием:
  • - BPMN для процесса - UML Sequence для интеграций - C4 Container для архитектурного размещения

    Типовые ошибки и как их избежать

  • Слишком ранняя детализация: декомпозиция уходит в экраны и поля.
  • - Решение: остановиться на уровне функций, для которых уже можно писать проверяемые требования.
  • Нет потоков на контексте: есть акторы, но неясно, что они передают.
  • - Решение: каждый внешний участник должен иметь понятные входы/выходы.
  • Смешали процесс и функции: IDEF0 пытаются рисовать как BPMN.
  • - Решение: IDEF0 фиксирует что делаем, BPMN фиксирует как идёт процесс по ролям.
  • Потеряли управления (Control): политики безопасности и регламенты нигде не отражены.
  • - Решение: явно показывать Controls в IDEF0 и превращать их в требования и ограничения.

    Итог

    Контекстная диаграмма и декомпозиция в структурном анализе дают проектировщику ИС быстрый и управляемый способ:

  • зафиксировать границы и внешние взаимодействия
  • описать систему как набор функций верхнего уровня
  • разложить функции до уровня требований и ответственности
  • подготовить основу для согласованных моделей BPMN, UML и архитектуры C4
  • Дальше по курсу это станет опорой для структурных методов анализа и проектирования ИС, а также для перехода от функциональной модели к данным, интерфейсам и архитектурным решениям.

    19. DFD и словарь данных: моделирование потоков информации

    DFD и словарь данных: моделирование потоков информации

    Зачем DFD в курсе про проектирование ИС

    В предыдущей теме про структурный анализ мы разобрали контекстную диаграмму и декомпозицию функций. Теперь добавим второй важный инструмент структурного подхода — DFD (Data Flow Diagram) и связанный с ним артефакт словарь данных (data dictionary).

    DFD полезны, когда нужно:

  • зафиксировать границы системы через входы и выходы на границе
  • показать какие данные проходят через функции и куда они попадают
  • выявить хранилища данных и места, где информация «оседает»
  • подготовить требования к данным, интеграциям и качеству данных до детального проектирования (UML, C4)
  • Важный принцип: DFD не конкурирует с BPMN, UML и C4.

  • DFD отвечает на вопрос какие данные куда и через какие преобразования идут
  • BPMN отвечает на вопрос как протекает процесс по ролям, событиям и ветвлениям
  • UML уточняет структуру и поведение программной части
  • C4 фиксирует архитектурные границы и состав исполняемых частей
  • Что такое DFD и что именно она моделирует

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

    DFD намеренно фокусируется на информации и преобразованиях и почти не описывает:

  • порядок выполнения шагов во времени
  • роли и ответственность по исполнителям
  • ветвления процесса по правилам (если пытаться это сделать, DFD быстро превращается в нечитаемую схему)
  • Для контраста:

  • если у вас вопрос кто согласует и в какой последовательности, берите BPMN
  • если вопрос какие данные поступают на согласование, где сохраняются и что выдаётся наружу, берите DFD
  • Справочные источники:

  • Data-flow diagram
  • Словарь данных
  • Элементы DFD и правила именования

    Внешняя сущность

    Внешняя сущность — источник или потребитель данных вне границы системы.

    Примеры:

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

    Процесс

    Процесс — преобразование входных потоков данных в выходные.

    Примеры названий:

  • «Зарегистрировать заявку»
  • «Проверить лимит»
  • «Сформировать уведомление»
  • Правило: процесс называют глагольной фразой.

    Поток данных

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

    Примеры:

  • «Данные заявки»
  • «Результат согласования»
  • «Запрос лимитов»
  • Правило: поток называют существительным и стараются избегать слов «данные» без уточнения смысла.

    Хранилище данных

    Хранилище данных — место, где данные сохраняются и откуда могут читаться.

    Примеры:

  • «Реестр заявок»
  • «Справочник лимитов»
  • «Журнал аудита»
  • Правило: хранилище не «делает» ничего само по себе. Любая запись или чтение происходит через процесс.

    Уровни DFD: контекст и декомпозиция

    DFD обычно строят по уровням.

    Контекстная DFD

    Контекстная DFD показывает систему как один процесс и все внешние входы/выходы.

    Практический эффект:

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

    Дальше «единый процесс» декомпозируется на несколько процессов, появляются хранилища и внутренние потоки.

    Практическая рекомендация по читаемости:

  • на одном уровне держать 3–7 процессов, чтобы схема оставалась обозримой
  • !Пример контекстной DFD и декомпозиции уровня 1 для одной ИС

    Ключевое правило качества: балансировка

    Балансировка означает: внешние потоки на контекстном уровне должны быть согласованы с потоками на следующем уровне детализации.

    Проще говоря:

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

    Как из DFD получать требования

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

  • Процесс подсказывает функциональные требования вида «система должна выполнять преобразование X»
  • Потоки подсказывают требования к интерфейсам и форматам обмена
  • Хранилища подсказывают требования к данным, целостности, хранению и аудиту
  • Внешние сущности подсказывают стейкхолдеров и владельцев интеграций
  • Пример привязки:

    | Элемент DFD | Что уточнить в требованиях | Что дальше проектировать | |---|---|---| | P2 «Проверить лимит и маршрут» | правила маршрутизации, источник лимитов, поведение при недоступности внешней системы | BPMN ветвление согласования, UML Sequence интеграции, ADR про кэш/очередь | | D1 «Реестр заявок» | какие атрибуты заявки обязательны, уникальность номера, статусы | UML Class (доменная модель), проект БД | | Поток «Решение по заявке» | формат результата, кто подписывает, нужно ли хранить причину | требования к аудиту, UML State Machine статусов |

    DFD и BPMN: как использовать вместе, а не вместо

    Типовая ошибка — пытаться описать процесс согласования только DFD или только BPMN.

    Практичная связка:

  • DFD фиксирует какие данные участвуют в согласовании и где они хранятся.
  • BPMN фиксирует как по ролям идёт согласование, где события, шлюзы и ручные шаги.
  • На пересечении появляются требования:
  • - какие статусы должны быть видны пользователю - какие уведомления должны уходить - какие данные должны сохраняться в журнале аудита

    Зачем нужен словарь данных и почему «подписей на стрелках» недостаточно

    Если в DFD поток называется «Данные заявки», у команды сразу возникает риск:

  • аналитик подразумевает один набор полей
  • разработчик реализует другой
  • тестировщик проверяет третий
  • Словарь данных — артефакт, который делает DFD проверяемой: для каждого потока, хранилища и элемента данных даётся определение, структура и правила.

    Словарь данных особенно важен для:

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

    Словарь данных обычно включает три уровня.

    Описания потоков данных

    Для каждого потока фиксируют:

  • имя и идентификатор
  • источник и получатель
  • назначение потока
  • структура (состав полей)
  • частота и объёмы, если это важно
  • требования к качеству данных
  • Описания хранилищ

    Для каждого хранилища фиксируют:

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

  • это наше мастер-хранилище
  • или это копия из внешней системы
  • или это кэш
  • Описания элементов данных

    Для каждого поля или элемента фиксируют:

  • определение смысла
  • тип и формат (например, дата, строка, справочник)
  • допустимые значения
  • обязательность
  • пример
  • Минимальный шаблон записи в словаре данных

    Ниже пример минимально достаточного описания потока и элемента.

    Этот формат можно вести в таблице, в wiki или в репозитории как текст, но важно, чтобы на него ссылались требования и модели.

    Как связать словарь данных с UML, C4 и требованиями

    Связь с UML Class

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

    Связь с C4

  • DFD и словарь показывают, какие потоки идут между частями
  • C4 показывает, какие контейнеры и компоненты эти потоки реализуют
  • Обычно это связывают так:

  • поток DFD «Запрос лимитов» связывают с контейнером или внешней системой в C4
  • в ADR фиксируют решение, например, кэшировать лимиты или запрашивать синхронно
  • Связь с требованиями

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

  • присваивать идентификаторы потокам и хранилищам (DF-..., DS-...)
  • ссылаться на них из FR-... и NFR-...
  • Пример:

  • FR-12 «Отправка заявки на согласование» ссылается на поток DF-REQ-01 и хранилище DS-REQ-01
  • NFR-SEC-03 «Аудит изменений статуса» ссылается на хранилище DS-AUD-01
  • Это поддерживает трассируемость и анализ влияния из предыдущей темы про управление требованиями.

    Типовые ошибки в DFD и словаре данных

  • Потоки называются слишком общо: «Данные», «Информация», «Запрос».
  • В DFD пытаются изобразить порядок действий и ветвления вместо потоков.
  • Хранилища используются как «активные элементы», как будто они сами что-то выполняют.
  • Нет балансировки: на декомпозиции появляются новые внешние зависимости.
  • Словарь данных существует отдельно и не связан с требованиями и тестами.
  • Практический алгоритм: как сделать DFD и словарь данных в проекте

  • Построить контекстную DFD и согласовать границы.
  • Выделить внешние сущности и назначить владельцев внешних систем.
  • Декомпозировать систему до уровня 1 с 3–7 процессами.
  • Добавить хранилища данных там, где данные реально должны сохраняться.
  • Проверить балансировку между контекстом и уровнем 1.
  • Создать словарь данных:
  • 1. описать каждый внешний поток 2. описать каждое хранилище 3. описать ключевые элементы данных и справочники
  • Связать словарь с требованиями и (при необходимости) с UML/C4.
  • Итог

    DFD и словарь данных дают проектировщику ИС управляемый способ моделировать потоки информации:

  • DFD показывает, какие преобразования выполняются и как данные перемещаются между процессами, хранилищами и внешними сущностями
  • словарь данных делает эти потоки и хранилища однозначными, пригодными для требований, интеграций и тестирования
  • вместе с BPMN, UML и C4 это помогает удерживать согласованность артефактов: процесс, данные, архитектура и требования не противоречат друг другу
  • 2. Основные понятия: данные, информация, система, ИС

    Основные понятия: данные, информация, система, ИС

    Зачем начинать с терминов

    В предыдущей статье мы определили, что проектирование информационных систем связывает требования (что нужно) и решения (как будет устроено). Чтобы требования были однозначными, а модели (UML, IDEF, BPMN, C4) не противоречили друг другу, команде нужно одинаково понимать базовые слова, которые часто используют как синонимы:

  • данные
  • информация
  • система
  • информационная система (ИС)
  • Путаница на этом уровне приводит к типовым ошибкам: например, когда в требованиях пишут “хранить информацию о клиенте”, а в проектировании начинают спорить, что именно хранить: паспортные данные, контакты, историю заказов, согласия на обработку и в каком виде.

    Данные

    Данные — это зафиксированные значения (символы, числа, факты, записи, сигналы), которые можно хранить, передавать и обрабатывать.

    Ключевая особенность данных: сами по себе они могут быть непонятны или неполны без контекста.

    Примеры данных:

  • 42
  • 2026-02-05 10:15:00
  • user_id=91827
  • строка в таблице: Иванов; Москва; +7...
  • файл лога: ERROR 504 gateway timeout
  • Контекст данных

    Одни и те же данные могут означать разное в зависимости от контекста:

  • 42 может быть количеством товаров, номером заявки или возрастом клиента
  • 10:15 может быть временем события, временем начала смены или дедлайном
  • В проектировании это означает, что данные всегда требуют:

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

    Информация — это данные, которым придан смысл в определённом контексте и которые могут быть использованы для принятия решения или выполнения действия.

    Один из распространённых стандартных подходов формулирует это как “данные и их значение”: см. ISO/IEC 27000.

    Пример превращения данных в информацию:

  • Данные: status=3.
  • Контекст (справочник статусов): 3 = Отгружено.
  • Информация: “Заказ отгружен”.
  • Решение/действие: “Можно отправить клиенту уведомление и закрыть задачу комплектации”.
  • Чем информация отличается от данных в требованиях

    Практическое правило формулирования требований:

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

  • “Система хранит данные о платеже: сумма, валюта, дата, идентификатор транзакции”.
  • “Система формирует информацию для бухгалтера: реестр оплат за период и список неопознанных платежей”.
  • Система

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

    Минимально полезный взгляд на систему в проектировании:

  • Цель: зачем система существует.
  • Элементы: из чего состоит.
  • Связи: как элементы взаимодействуют.
  • Границы: что входит в систему, а что является внешней средой.
  • Входы и выходы: что система получает и что выдаёт.
  • Ограничения: правила, ресурсы, регуляторика, технологии.
  • Справочно: базовое понятие “система” описано в статье “Система”.

    Границы системы как ключевой результат раннего проектирования

    Ошибки в границах — одни из самых дорогих:

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

    Информационная система (ИС)

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

    Справочно: статья “Информационная система”.

    В отличие от “программы” или “приложения”, ИС включает не только ПО.

    Из чего обычно состоит ИС

    Чтобы не потерять важные части, удобно рассматривать ИС как сочетание:

  • Люди (пользователи, администраторы, владельцы процесса).
  • Процессы и правила (регламенты, маршруты согласования, политики безопасности).
  • Данные (справочники, документы, журналы, отчётные витрины).
  • Программные компоненты (приложения, сервисы, интеграции).
  • Техническая среда (инфраструктура, облака, сети, рабочие места).
  • !ИС как совокупность людей, процессов, данных, ПО и технической среды

    ИС как объект проектирования

    Когда мы проектируем ИС, мы проектируем одновременно:

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

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

    Удобная опорная логика:

  • Система — общий термин: есть цель, элементы, связи, границы.
  • Информационная система — система, у которой цель связана с обработкой данных и предоставлением информации.
  • Данные — то, что ИС фиксирует и обрабатывает.
  • Информация — смысл, получаемый из данных и используемый в деятельности.
  • !Превращение данных в информацию и её использование

    Мини-словарь: чем не являются эти понятия

    Чтобы избежать частых подмен:

  • Данные не равны документам: документ — это форма представления, внутри которой могут быть разные данные.
  • Информация не равна отчётам: отчёт — один из способов представить информацию.
  • ИС не равна сайту/приложению: сайт может быть лишь интерфейсом к ИС.
  • Система не равна подсистеме: “CRM” может быть системой для отдела продаж и подсистемой в масштабе всего предприятия.
  • Практическая ценность для проектировщика

    Эти определения нужны не “ради теории”, а для конкретных действий в проекте:

  • Для требований: отделять “какие данные нужны” от “какая информация должна получаться”.
  • Для границ: явно фиксировать, что относится к ИС, а что остаётся во внешней среде.
  • Для моделей: выбирать правильную нотацию под вопрос.
  • Для проверяемости: превращать расплывчатые формулировки в измеримые и согласуемые.
  • В следующих статьях мы будем расширять этот словарь, привязывая его к жизненному циклу ИС и к формированию требований, чтобы каждое проектное решение имело понятный смысл и трассировку.

    20. ER-моделирование и нормализация данных

    ER-моделирование и нормализация данных

    Как тема связана с предыдущими статьями курса

    Ранее в курсе мы уже разобрали:

  • требования и их проверяемость
  • анализ контекста и границ
  • структурный анализ, DFD и словарь данных как способ понять потоки информации
  • использование UML и C4 для проектирования поведения и архитектуры
  • Эта тема добавляет следующий слой: как формально описать структуру данных предметной области и получить основу для проектирования базы данных и интеграционных контрактов.

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

    Связка с артефактами курса выглядит так:

  • DFD показывает какие потоки данных входят/выходят и где данные «оседают»
  • ER-модель фиксирует структуру данных и связи
  • словарь данных делает определения сущностей и атрибутов однозначными
  • UML Class может использоваться как концептуальная модель предметной области, близкая к ER
  • C4 показывает, в каких контейнерах и компонентах живут данные и кто является источником истины
  • !Как DFD, ER, словарь данных и схема БД связаны в проектировании

    Базовые понятия ER-моделирования

    ER-модель (Entity–Relationship model) — способ описать данные через сущности, их атрибуты и связи между сущностями. Обзорно: Entity–relationship model.

    Чтобы не возникало «неизвестных терминов», зафиксируем минимальный словарь.

  • Сущность (entity) — класс объектов предметной области, про которые нужно хранить данные
  • Экземпляр сущности — конкретный объект (конкретный клиент, конкретный заказ)
  • Атрибут — характеристика сущности (например, email клиента)
  • Связь (relationship) — ассоциация между сущностями (например, клиент делает заказы)
  • Идентификатор — атрибут или набор атрибутов, который отличает экземпляры друг от друга
  • Ключ
  • - естественный (natural key) — значимый бизнес-атрибут, используемый как идентификатор (например, ИНН) - суррогатный (surrogate key) — технический идентификатор (например, client_id)
  • Кардинальность — сколько экземпляров может участвовать в связи (1:1, 1:N, M:N)
  • Обязательность участия — может ли связь отсутствовать (например, заказ обязан иметь клиента, а клиент может не иметь заказов)
  • ER-модель, UML Class и IDEF1X: как соотносятся

    В проектировании ИС вы встретите разные «языки» моделирования данных.

  • ER-диаграммы часто рисуют в нотации «воронья лапка» (crow’s foot) для наглядных кардинальностей.
  • UML Class можно использовать как концептуальную модель предметной области: классы как сущности, ассоциации как связи, кратности как кардинальности. Спецификация UML: UML.
  • IDEF1X — нотация моделирования данных (родственна ER-подходам), часто применяется в корпоративной документации. Справочный вход в семейство IDEF: IDEF (NIST).
  • Практическое правило курса:

  • если ваша команда привыкла к UML и хранит диаграммы как код, удобно начать с UML Class (например, в PlantUML)
  • если в организации стандартизирован IDEF1X, используйте его для согласования модели данных с архитекторами и DBA
  • в любом случае модель должна быть связана со словарём данных и требованиями
  • Что должно быть на входе в ER-моделирование

    ER-моделирование редко начинается «с нуля». Обычно входы уже есть:

  • глоссарий терминов предметной области
  • требования (FR и NFR), где упоминаются данные, отчёты, справочники, аудит
  • DFD и словарь данных (потоки и хранилища подсвечивают сущности)
  • ключевые сценарии использования (какие данные создаются, изменяются, используются)
  • Если глоссария нет, появляется риск: один участник под словом клиент понимает юридическое лицо, другой — контакт, третий — договор.

    Как строить ER-модель на практике

    Шаги построения концептуальной модели

    Ниже — последовательность, которая хорошо работает в проектах ИС.

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

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

  • атрибутом сущности (если это просто значение)
  • отдельной сущностью-справочником (если статусы имеют коды, локализации, правила переходов)
  • частью модели состояний (если важна динамика и допустимые переходы)
  • Кардинальность и обязательность: типовые варианты

  • 1:N: один клиент имеет много заказов, каждый заказ принадлежит одному клиенту
  • M:N: заказ содержит много товаров, и товар встречается во многих заказах
  • 1:1: встречается реже; часто означает либо избыточное разделение, либо особенности безопасности/доступов (например, Пользователь и Профиль с персональными данными)
  • Переход от ER-модели к реляционной схеме

    Большинство прикладных ИС хранят данные в реляционных СУБД, поэтому важно уметь переводить ER-модель в таблицы.

    Базовые правила перевода

  • Сущность обычно становится таблицей.
  • Идентификатор становится первичным ключом (PK).
  • Связь 1:N обычно реализуется внешним ключом (FK) на стороне N.
  • Связь M:N реализуется через отдельную таблицу-связку (junction table), которая содержит как минимум два FK.
  • Пример перевода M:N

    Если есть сущности Order и Product, то связь M:N реализуется как OrderItem:

  • OrderItem содержит order_id и product_id
  • дополнительно содержит атрибуты связи, если они важны: qty, price
  • Это один из самых частых «моментов истины» проектирования данных: если вы пытаетесь хранить список товаров в одном поле заказа, вы почти гарантированно ломаете проверяемость и качество данных.

    Зачем нужна нормализация

    Нормализация — это набор правил проектирования структуры данных, чтобы уменьшить избыточность и предотвратить аномалии обновления. Обзорно: Database normalization.

    Нормализация важна в контексте жизненного цикла ИС, потому что ошибки в модели данных:

  • дорого исправлять после начала эксплуатации
  • приводят к расхождениям отчётности и «спорам о правде»
  • усложняют интеграции и миграции
  • Типовые аномалии, которые предотвращает нормализация

  • аномалия вставки: нельзя добавить данные о сущности, не создав «лишнюю» связанную запись
  • аномалия обновления: одно и то же значение хранится в нескольких местах и меняется не везде
  • аномалия удаления: удаление одной записи случайно удаляет единственный источник важного факта
  • !Зачем нормализовать: три типа аномалий данных

    Нормальные формы: практический смысл без излишней математики

    Важно: нормализация — не цель сама по себе. Это инструмент, чтобы данные были целостными и управляемыми.

    Первая нормальная форма

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

    Типовой антипаттерн:

  • поле phones со значением +7..., +7..., +7...
  • Проблема:

  • сложно валидировать
  • сложно искать
  • сложно обновлять один телефон
  • Вторая нормальная форма

    Смысл: если ключ составной, то не должно быть атрибутов, которые зависят только от части ключа.

    Практическая подсказка:

  • чаще всего вопрос 2НФ возникает в таблицах-связках (вроде OrderItem(order_id, product_id, ...))
  • Пример риска:

  • если в OrderItem хранить product_name, то оно зависит только от product_id и будет дублироваться во всех заказах
  • Третья нормальная форма

    Смысл: атрибуты не должны зависеть от других неключевых атрибутов.

    Типовой пример:

  • в таблице заказа хранить customer_phone, который зависит от клиента, а не от заказа
  • Практический вывод:

  • данные о клиенте должны жить в сущности клиента, а заказ должен ссылаться на клиента
  • BCNF и более строгие формы

    В практике корпоративных ИС часто достаточно довести модель до 3НФ и осознанно решать отдельные спорные места.

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

    Практический пример: от «плоской таблицы» к нормализованной модели

    Предположим, кто-то предложил хранить данные заказов так:

    | order_id | order_date | customer_email | customer_name | product_sku | product_name | qty | |---|---|---|---|---|---|---| | 10 | 2026-02-01 | a@ex.com | Анна | P01 | Кабель | 2 | | 10 | 2026-02-01 | a@ex.com | Анна | P02 | Адаптер | 1 |

    Проблемы:

  • имя клиента повторяется в каждой строке заказа
  • название товара повторяется во всех заказах
  • изменение email или имени нужно делать во многих строках
  • Нормализованная структура (упрощённо):

  • Customer(customer_id, email, name, ...)
  • Order(order_id, order_date, customer_id, ...)
  • Product(product_id, sku, name, ...)
  • OrderItem(order_id, product_id, qty, price, ...)
  • Концептуальная модель в UML Class (как ER-аналог)

    Ниже пример PlantUML, который можно хранить в репозитории рядом с требованиями.

    Пояснения к кратностям:

  • Customer "1" -- "0..*" Order означает: один заказ связан ровно с одним клиентом, а у клиента может быть ноль или много заказов
  • Order "1" -- "1..*" OrderItem означает: заказ содержит как минимум одну позицию
  • Ключи: естественные и суррогатные, и почему это проектное решение

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

    Естественные ключи

    Плюсы:

  • ключ имеет бизнес-смысл
  • иногда проще интеграция, если все системы используют один и тот же идентификатор
  • Минусы:

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

    Плюсы:

  • стабильность и простота связей
  • удобно для внутренней модели данных
  • Минусы:

  • требуется хранить и контролировать уникальность бизнес-идентификаторов отдельно
  • интеграции всё равно потребуют «сопоставления» с внешними ключами
  • Практический компромисс:

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

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

    Денормализация — осознанное добавление избыточности ради скорости чтения или упрощения отчётности.

    Когда денормализация может быть оправдана:

  • аналитические витрины и отчётность, где важна скорость чтения
  • высоконагруженные сценарии чтения, где измеримые НФТ по времени ответа требуют оптимизаций
  • кеширующие структуры или материализованные представления
  • Когда денормализация опасна:

  • в операционном контуре, где данные часто изменяются
  • если не определён источник истины и нет механизма синхронизации
  • В терминах курса это должно фиксироваться как проектное решение:

  • в требованиях или НФТ появляется измеримая потребность
  • в архитектуре (C4) появляется контейнер или компонент, где живёт витрина/кеш
  • в ADR фиксируется, какие данные дублируются и как поддерживается согласованность
  • Как связать ER-модель со словарём данных и DFD

    Чтобы модель данных была пригодна для требований и интеграций, одной диаграммы недостаточно.

    Минимум, который стоит фиксировать в словаре данных

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

  • если в DFD есть поток «Данные заявки», в словаре данных должна быть структура этого потока
  • сущности ER-модели должны объяснять, где и как эти данные хранятся
  • если в DFD появляется новое хранилище, это повод пересмотреть ER-модель и границы данных
  • Типовые ошибки ER-моделирования и нормализации

  • Смешивают сущности и атрибуты: делают отдельную сущность там, где достаточно атрибута, и наоборот.
  • Не фиксируют обязательность связей: позже выясняется, что система допускает «висячие» записи.
  • Делают связь M:N без таблицы-связки, пытаясь хранить список значений в одном поле.
  • Нормализуют «до абсолюта» без учёта сценариев и НФТ, получая сложную и неудобную модель.
  • Денормализуют без описания механизма согласованности, получая расхождение данных.
  • Рекомендуемые форматы фиксации модели данных

    Для совместной работы и версионирования удобно хранить модели рядом с требованиями:

  • UML Class в виде PlantUML: PlantUML
  • ER/IDEF1X в корпоративных CASE-инструментах, если это стандарт организации
  • словарь данных как управляемый документ (таблица или Markdown в репозитории)
  • Ключевой принцип тот же, что и в темах про инструменты и управление требованиями:

  • модель должна иметь версию
  • термины должны быть связаны с глоссарием
  • требования должны ссылаться на сущности и атрибуты, чтобы обеспечивать трассируемость
  • Итог

    ER-моделирование и нормализация данных дают проектировщику ИС управляемую основу для проектирования информации:

  • ER-модель фиксирует сущности, атрибуты, связи, кардинальности и обязательность
  • переход к реляционной схеме даёт таблицы, ключи и правила ссылочной целостности
  • нормализация снижает избыточность и предотвращает аномалии вставки, обновления и удаления
  • денормализация допустима как осознанное проектное решение под НФТ, а не как случайность
  • согласованность поддерживается связями с DFD и словарём данных, а также версионированием артефактов
  • 21. Проектирование информационного обеспечения: модели данных и хранилища

    Проектирование информационного обеспечения: модели данных и хранилища

    Как тема связана с предыдущими статьями курса

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

  • какие данные и потоки нужны (DFD + словарь данных)
  • какие сущности и связи существуют (ER / UML Class)
  • как избежать противоречий и избыточности в хранении (нормализация)
  • Теперь делаем следующий шаг: проектируем информационное обеспечение как целостную часть ИС. То есть определяем:

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

    !Карта перехода от требований и потоков данных к моделям и хранилищам

    Что такое информационное обеспечение ИС

    Информационное обеспечение — это совокупность данных, моделей, правил качества, классификаторов (справочников), структур хранения и процедур, которые обеспечивают:

  • корректное выполнение функций ИС
  • получение нужной информации (отчётов, показателей, уведомлений)
  • целостность и согласованность данных
  • соблюдение ограничений (безопасность, аудит, сроки хранения)
  • Важно: информационное обеспечение — это не только «схема БД». Оно включает смысл (термины), структуру, качество, владение данными и правила жизненного цикла.

    Уровни моделей данных

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

    Концептуальная модель

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

    Она отвечает на вопросы:

  • какие сущности существуют (например, Клиент, Договор, Заявка)
  • как они связаны (например, «Клиент заключает Договор»)
  • какие термины считаются основными и как они определены
  • Типовые артефакты:

  • глоссарий
  • UML Class как концептуальная модель предметной области (без типов полей и индексов)
  • Справка по UML: UML (спецификация OMG).

    Логическая модель

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

  • атрибуты сущностей (что именно храним)
  • ключи и уникальности
  • кардинальности и обязательность связей
  • домены значений (справочники)
  • Логическая модель должна быть согласована со словарём данных (из темы DFD).

    Физическая модель

    Физическая модель привязывает данные к конкретному способу хранения и эксплуатации:

  • таблицы/коллекции, индексы, партиции
  • ограничения целостности на уровне СУБД
  • стратегии архивирования
  • особенности конкретной СУБД (например, типы данных, ограничения по длине, колlation)
  • Практическое правило: концептуальная и логическая модели должны быть максимально стабильны, а физическая может изменяться из-за нефункциональных требований (производительность, объёмы, масштабирование).

    Классы данных в ИС и почему это важно для проектирования

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

  • Справочные данные: фиксированные наборы значений (статусы, типы документов, валюты).
  • Мастер-данные: ключевые сущности, относительно устойчивые (клиенты, контрагенты, товары).
  • Транзакционные данные: события и документы операций (заказы, платежи, заявки, проводки).
  • Документы и вложения: файлы, сканы, договоры, изображения.
  • Журналы и аудит: кто и что сделал, когда, с каким результатом.
  • Аналитические данные: агрегаты, витрины, исторические срезы, метрики.
  • Типовая ошибка: хранить всё в одном «реестре» без разделения ответственности и правил качества. Это приводит к конфликтам владения и к невозможности обеспечить качество и аудит.

    Источник истины и владение данными

    Источник истины (system of record) — место, где данные считаются первичными и наиболее доверенными, а изменения контролируются владельцем.

    Вопросы, которые нужно закрыть на этапе проектирования информационного обеспечения:

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

    Связь с моделями курса:

  • C4 помогает показать, где находятся внешние системы-источники истины: The C4 model
  • DFD помогает увидеть, где данные пересекают границы
  • ER/UML Class помогает зафиксировать, какие сущности вообще требуют владельца
  • Проектирование хранилищ: какие варианты бывают

    Под хранилищем в ИС можно понимать не только «основную БД», но и другие специализированные места хранения. Ниже — типовые варианты и их роль.

    Реляционная OLTP-база

    Реляционная БД для операционного контура (OLTP) обычно является основным хранилищем транзакций.

    Когда особенно подходит:

  • нужны транзакции и строгая целостность
  • сложные связи и ограничения
  • много операций изменения данных
  • Ключевой проектный фокус:

  • модель данных (нормализация там, где важна целостность)
  • ограничения и уникальности
  • транзакционные границы
  • Документное или объектное хранилище

    Обычно используется для:

  • файлов и вложений (сканы, документы, медиа)
  • больших объектов, которые неэффективно хранить в таблицах
  • Проектные вопросы:

  • где хранится сам файл, а где метаданные (обычно в БД)
  • сроки хранения и правила удаления
  • контроль доступа
  • Кэш (key-value)

    Кэш используется, чтобы ускорять чтение часто используемых данных.

    Ключевой принцип: кэш почти никогда не должен становиться «единственным источником истины».

    Проектные вопросы:

  • какие данные кэшируем и почему
  • как инвалидируем и обновляем кэш
  • что происходит при промахе кэша и при рассинхронизации
  • Поисковый индекс

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

  • быстрый полнотекстовый поиск
  • сложная сортировка и релевантность
  • Проектные вопросы:

  • что является источником истины (обычно OLTP БД)
  • как обновляется индекс (по событиям, по расписанию)
  • как обеспечивается согласованность при изменениях
  • Аналитическое хранилище

    Аналитический контур обычно отделяют от OLTP, потому что нагрузка и структура данных отличаются.

    Типовые элементы:

  • DWH (хранилище данных): интеграция данных из источников, историчность.
  • Витрины данных (data marts): структурированные наборы под отчётность.
  • Data lake: хранение данных в «сыром» виде для последующей обработки.
  • Проектные вопросы:

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

    Критерии выбора хранилища под данные и сценарии

    Выбор хранилищ — это проектное решение, которое должно быть трассируемо к требованиям (особенно к нефункциональным).

    | Вопрос | Если ответ «да», то чаще помогает | |---|---| | Нужны транзакции и строгая целостность | реляционная OLTP БД | | Нужен быстрый поиск по тексту и релевантность | поисковый индекс | | Нужны файлы/вложения и независимый жизненный цикл хранения | объектное хранилище + метаданные в БД | | Нужны быстрые чтения справочников/сессий | кэш | | Нужны тяжёлые отчёты и историчность | DWH/витрины |

    Практическое правило: сначала проектируют данные и их владельцев, затем выбирают хранилища и синхронизацию. Иначе можно получить «правильное хранилище», которое хранит «не те данные».

    Проектирование качества данных и целостности

    Качество данных — часть информационного обеспечения. Если качество не спроектировано, оно превращается в ручные проверки и постоянные «разборы полётов» в эксплуатации.

    Виды правил качества данных

  • Обязательность: какие поля нельзя оставлять пустыми.
  • Домены значений: допустимые значения, справочники.
  • Уникальность: уникальные номера, комбинации атрибутов.
  • Ссылочная целостность: нельзя ссылаться на несуществующую сущность.
  • Согласованность: например, статус и дата статуса не противоречат друг другу.
  • Часть правил должна обеспечиваться на уровне СУБД (ограничения), а часть — на уровне прикладной логики. Решение зависит от архитектуры и распределения данных.

    Нормализация и денормализация как управляемый компромисс

    Из темы нормализации важно перенести в практику проектирования хранилищ:

  • нормализация поддерживает целостность и снижает аномалии обновлений
  • денормализация допустима, если есть измеримая причина (например, НФТ по времени ответа) и механизм согласованности
  • Такие решения стоит фиксировать как ADR (записи архитектурных решений), чтобы при изменениях требований команда понимала последствия.

    Историчность и аудит: данные во времени

    Многие корпоративные ИС требуют отвечать на вопросы:

  • кто изменил данные
  • когда изменил
  • что было до изменения
  • Для этого проектируют:

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

    Согласованность моделей: как связать DFD, словарь данных и ER/UML

    Чтобы информационное обеспечение не распалось на «диаграмма отдельно, БД отдельно», полезно удерживать минимальную согласованность артефактов.

  • Потоки DFD должны иметь определения в словаре данных.
  • Сущности ER/UML должны объяснять структуру ключевых хранилищ (реестров) из DFD.
  • Если в DFD появилось новое хранилище или внешний поток, это повод пересмотреть границы данных и источники истины.
  • Справочный контекст по структурным методам: IDEF (NIST).

    Как отражать хранилища и данные в нотациях курса

    UML Class как модель данных

    UML Class удобен как единый язык для команды аналитики/разработки, особенно если диаграммы ведутся в коде.

    Инструмент для текстового описания UML: PlantUML.

    Пример фрагмента концептуальной модели в PlantUML:

    В этой диаграмме:

  • Client, Contract, PurchaseRequest — сущности предметной области
  • кратности показывают кардинальности связей
  • технические детали хранения (индексы, партиции) здесь не фиксируются, это уже физический уровень
  • C4: где живут данные и кто ими владеет

    C4 помогает показать контейнеры хранения и их роль: операционная БД, кэш, поисковый индекс, аналитический контур.

    Подход и примеры: The C4 model.

    Пример контейнерного описания (Structurizr DSL):

    Здесь важно, что C4 фиксирует:

  • границы контейнеров
  • назначение хранилища (а не таблицы)
  • ключевые потоки взаимодействия
  • BPMN: данные как артефакты процесса

    BPMN полезен, когда важно показать:

  • какие документы/данные создаются в процессе
  • где данные переходят между ролями
  • где возникают точки контроля (например, согласование)
  • Спецификация BPMN: BPMN (OMG).

    Словарь данных как обязательный «клей»

    Словарь данных делает модель проверяемой: он фиксирует структуру потоков и сущностей.

    Пример минимального фрагмента словаря данных в табличном виде:

    | Элемент | Поле | Смысл | Тип/домен | Обязательность | |---|---|---|---|---| | PurchaseRequest | status | текущий статус заявки | справочник RequestStatus | да | | PurchaseRequest | created_at | дата создания | datetime | да | | Contract | number | номер договора | строка, уникально | да |

    Минимальный набор результатов проектирования информационного обеспечения

    Чтобы переход к реализации был управляемым, на выходе проектирования информационного обеспечения обычно достаточно следующего минимума:

  • определены сущности и связи (концептуальная/логическая модель)
  • определён источник истины по ключевым данным и владельцы
  • определены хранилища данных и их назначение (на уровне контейнеров)
  • определены правила качества данных и критичные ограничения
  • определены правила историчности и аудита для критичных сущностей
  • словарь данных покрывает ключевые потоки и хранилища из DFD
  • Эти результаты должны быть связаны трассировкой с требованиями и критическими сценариями.

    Типовые ошибки и способы их избежать

  • Схема БД без глоссария и смысла терминов: одинаковые слова начинают означать разное.
  • Нет источника истины: появляется конфликт данных между системами.
  • Кэш или индекс превращается в «главную БД»: теряется управляемость и аудит.
  • OLTP пытаются использовать как DWH: отчёты начинают «убивать» операционный контур.
  • Словарь данных не связан с требованиями: интеграции и тесты становятся спором о том, «что имелось в виду».
  • Итог

    Проектирование информационного обеспечения — это проектирование данных как управляемого ресурса ИС:

  • модели данных строятся по уровням: концептуальная, логическая, физическая
  • данные разделяются по классам (справочные, мастер-данные, транзакции, документы, аудит, аналитика)
  • определяются источники истины и владение данными
  • выбираются хранилища под сценарии и нефункциональные требования, а не «по моде»
  • обеспечивается согласованность DFD, словаря данных, ER/UML-моделей и архитектуры C4
  • Следующая логичная часть курса — связать информационное обеспечение с проектированием программной части: как контейнеры и компоненты (C4) реализуют операции над данными, как описывать критические сценарии доступа к данным (UML Sequence) и как удерживать требования к качеству данных и безопасности в реализации и эксплуатации.

    22. Проектирование программного обеспечения: компоненты и интерфейсы

    Проектирование программного обеспечения: компоненты и интерфейсы

    Связь темы с предыдущими статьями курса

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

    Если информационное обеспечение отвечает на вопрос какие данные и где хранятся, то проектирование программного обеспечения отвечает на вопросы:

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

  • требования и сценарии задают что должно работать
  • C4 помогает договориться о границах, контейнерах и компонентах: The C4 model
  • UML помогает точно описывать структуру и взаимодействия: UML (OMG)
  • BPMN помогает не потерять связь с бизнес-процессом: BPMN (OMG)
  • !Переход от требований к компонентам и интерфейсам и далее к проверкам

    Базовые понятия: что такое компонент и что такое интерфейс

    Компонент

    Компонент — это часть программной системы, которая:

  • реализует некоторую ответственность (набор функций)
  • имеет чёткие границы
  • взаимодействует с другими частями через интерфейсы
  • Важно не путать близкие термины:

  • модуль — логическая часть кода (часто внутри одного приложения)
  • компонент — часть системы, о которой обычно можно говорить как о самостоятельной единице ответственности и зависимостей
  • контейнер в C4 — более крупная исполняемая/развёртываемая часть (например, веб-приложение, мобильное приложение, БД)
  • Интерфейс

    Интерфейс — это договорённый способ взаимодействия между частями системы или между системой и внешним окружением.

    Интерфейс включает не только «список методов». Он включает:

  • что можно вызвать/отправить
  • какие данные передаются
  • что означает результат
  • как система ведёт себя при ошибках
  • какие требования безопасности применяются
  • Зачем выделять компоненты при проектировании ИС

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

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

    Уровни проектирования: контейнеры и компоненты в C4

    C4 предлагает уровни описания, которые помогают не перепутать масштаб:

  • System Context: система и окружение
  • Container: крупные исполняемые части
  • Component: ключевые части внутри контейнера
  • Полезное правило:

  • если вы обсуждаете развёртывание и инфраструктурные зависимости, вы на уровне контейнеров
  • если вы обсуждаете ответственности внутри приложения и зависимости модулей, вы на уровне компонентов
  • !Разница уровней C4: контейнеры и компоненты

    Как декомпозировать систему на компоненты

    Принцип ответственности

    Компонент должен отвечать за одну область ответственности, которую можно сформулировать глаголом:

  • «управлять заявками»
  • «рассчитывать лимиты»
  • «отправлять уведомления»
  • Если компонент отвечает «за всё», его сложно менять и тестировать.

    Связанность и сцепление

    Чтобы не вводить неизвестные термины, зафиксируем два понятия.

  • Сцепление (cohesion) — насколько функции внутри компонента относятся к одной ответственности. Чем выше сцепление, тем лучше.
  • Связанность (coupling) — насколько компонент зависит от других компонентов. Чем ниже связанность, тем лучше.
  • Практический вывод: в хорошей декомпозиции компонент много делает внутри себя и мало знает о деталях других.

    Связь с требованиями и процессами

    Разбиение на компоненты должно быть трассируемо к артефактам требований:

  • компонент должен покрывать набор FR-...
  • интерфейсы компонента должны быть проверяемы через AC-... и тесты
  • если компонент автоматизирует шаг процесса, это должно быть видно в BPMN (где система участвует) и в C4 (где реализовано)
  • Интерфейсы: виды и выбор подхода

    Синхронные интерфейсы (запрос–ответ)

    Типовой пример — HTTP API.

    Когда уместно:

  • нужен немедленный результат
  • пользователь ждёт ответ
  • операция короткая и хорошо контролируемая по времени
  • Риски:

  • зависимость по доступности: если внешний сервис недоступен, сценарий «зависает»
  • сложнее выдерживать нагрузку без очередей и деградации
  • Асинхронные интерфейсы (сообщения и события)

    Типовой пример — публикация события в брокер сообщений.

    Когда уместно:

  • важна устойчивость к сбоям внешних зависимостей
  • можно обработать результат позже
  • нужно уменьшить связанность
  • Риски:

  • сложнее отлаживать без наблюдаемости
  • нужно проектировать повторную обработку и порядок доставки
  • Команды, запросы и события

    Чтобы интерфейсы были понятнее, полезно различать смысл взаимодействий:

  • команда: «сделай действие» (изменяет состояние)
  • запрос: «дай данные» (не изменяет состояние)
  • событие: «факт произошёл» (подписчики реагируют)
  • Эта классификация помогает проектировать контракты и ожидания по поведению.

    Контракт интерфейса: что обязательно зафиксировать

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

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

    Минимальный состав спецификации API

    | Раздел | Что фиксируем | Зачем это нужно | |---|---|---| | Назначение | какую бизнес-цель покрывает | связь с требованиями | | Операции | список методов/эндпоинтов/команд | граница ответственности | | Модели данных | схемы запросов и ответов, типы, обязательность | однозначность | | Правила | валидации, бизнес-ограничения | проверяемость | | Ошибки | коды/категории, тексты, причины | тестирование и поддержка | | Безопасность | аутентификация/авторизация | соответствие НФТ | | Нагрузка | лимиты, таймауты, квоты | проектирование устойчивости | | Версии | политика обратной совместимости | управляемые изменения |

    Если команда использует стандартный формат описания API, удобно опираться на OpenAPI: OpenAPI Specification.

    Ошибки как часть контракта

    Частая причина провалов интеграций — «ошибки не описаны». В контракте должно быть явно:

  • какие ошибки бывают (например, валидация, права, недоступность зависимости)
  • как они выглядят в ответе
  • что клиент должен делать (повторить, исправить данные, обратиться в поддержку)
  • Для HTTP API полезна практика формата ошибок RFC 7807: RFC 7807 Problem Details for HTTP APIs.

    Идемпотентность и повторы

    Если внешний вызов может быть повторён (из-за таймаута, ретрая, сетевой ошибки), нужно решить:

  • является ли операция идемпотентной (повтор не создаёт побочных эффектов)
  • как это обеспечивается (например, Idempotency-Key, уникальные бизнес-ключи, дедупликация)
  • Это напрямую влияет на корректность данных и на проектирование интеграций.

    Как моделировать компоненты и интерфейсы нотациями курса

    C4 Component: ответственность и зависимости

    C4 на уровне компонентов помогает ответить:

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

    Пример (упрощённо):

    UML Component: интерфейсы и предоставляемые/требуемые сервисы

    UML полезен, когда нужно точнее показать:

  • какой компонент предоставляет интерфейс
  • какой компонент зависит от интерфейса
  • Официальный источник: UML (OMG).

    Пример PlantUML (схематично):

    PlantUML как инструмент для UML-диаграмм: PlantUML.

    UML Sequence: как интерфейс используется в сценарии

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

  • кто кого вызывает и в каком порядке
  • где возникают ошибки и как они обрабатываются
  • какие данные передаются
  • Пример: отправка заявки и постановка уведомления в очередь при сбое.

    Практический смысл: этот сценарий связывает требования надёжности (из НФТ) с конкретным решением интерфейса и его поведением.

    BPMN: где интерфейсы появляются в процессе

    BPMN применяют, чтобы не потерять связь с бизнес-процессом:

  • какие шаги процесса автоматизируются
  • где происходит обмен сообщениями с внешними системами
  • какие точки контроля и ветвления возникают
  • Источник стандарта: BPMN (OMG).

    Практическое правило согласованности:

  • если в BPMN есть задача «Отправить уведомление», то в проектировании ПО должен существовать компонент и интерфейс, которые это реализуют
  • Версионирование интерфейсов и управляемые изменения

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

    Что значит обратная совместимость

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

    Типовые практики:

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

    В контракте интерфейса полезно фиксировать:

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

    Наблюдаемость интерфейсов: что нужно для эксплуатации

    Если интерфейс существует, его нужно сопровождать. Минимальные проектные решения:

  • корреляционный идентификатор запроса (чтобы собрать трассу вызовов)
  • структурированные логи (чтобы искать причины)
  • метрики по ошибкам и времени ответа (для НФТ по производительности)
  • алерты по деградации внешних зависимостей
  • Это связывает проектирование компонентов и интерфейсов с темой нефункциональных требований и эксплуатационной готовности.

    Типовые ошибки проектирования компонентов и интерфейсов

  • компоненты выделены «по слоям», но без ответственности (получается один большой сервис)
  • интерфейсы описаны только как «эндпоинты», без ошибок, статусов и правил
  • не учтены повторы и идемпотентность (в итоге дубли данных)
  • интерфейс зависит от внутренней структуры БД (ломается при изменении хранения)
  • модели BPMN и реализация интерфейсов расходятся (процесс говорит одно, система делает другое)
  • нет политики версионирования и вывода старых контрактов
  • Практический результат фазы проектирования ПО

    Минимально достаточные результаты проектирования программного обеспечения, пригодные для реализации:

  • список ключевых контейнеров и компонентов (C4 Container/Component)
  • ответственность компонентов и их зависимости
  • спецификации ключевых интерфейсов (API/события), включая ошибки и безопасность
  • UML Sequence для критических сценариев, включая деградацию и сбои
  • связка с требованиями и критериями приёмки (трассировка)
  • Итог

    Проектирование программного обеспечения в ИС через компоненты и интерфейсы делает переход от требований к реализации управляемым:

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

    23. Архитектурное проектирование: слои, сервисы, интеграции

    Архитектурное проектирование: слои, сервисы, интеграции

    Зачем архитектурное проектирование выделяют отдельной темой

    В предыдущих статьях курса мы прошли путь:

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

  • функциональные требования выполнялись в сценариях
  • нефункциональные требования были достижимы (производительность, безопасность, наблюдаемость)
  • изменения требований и интеграций не разрушали систему
  • В рамках курса архитектурное проектирование опирается на:

  • C4 для границ, контейнеров и компонентов: The C4 model
  • UML для уточнения взаимодействий и структуры: UML (OMG)
  • BPMN для связи с процессом и ролями: BPMN (OMG)
  • !Карта, показывающая место архитектуры между требованиями и эксплуатацией

    Базовые понятия: чтобы не возникало “неизвестных терминов”

  • Архитектура ИС: ключевые решения о структуре системы, ответственности частей и правилах взаимодействия.
  • Слой: способ организовать код и зависимости внутри приложения так, чтобы разделить ответственность.
  • Сервис: часть системы, предоставляющая функции через интерфейс. Важно: слово сервис может означать и контейнер (отдельно развёртываемый), и компонент внутри приложения.
  • Интеграция: взаимодействие системы с внешними системами или между контейнерами через контракты (API, события, файлы, пакетный обмен).
  • Контракт интерфейса: договорённость о формате данных, правилах, ошибках и безопасности. Для HTTP API типовой стандарт описания: OpenAPI Specification.
  • Слои: зачем они нужны и какие бывают

    Слои вводят, чтобы управлять сложностью.

    Практический эффект слоёв:

  • проще менять UI, не ломая бизнес-логику
  • проще менять способ хранения данных, не переписывая сценарии
  • проще тестировать правила предметной области без инфраструктуры
  • проще ограничивать зависимости и предотвращать “комбинат” в коде
  • Типовая слоистая модель приложения

    Один из самых распространённых вариантов в прикладных ИС:

  • Слой представления: экраны, формы, API-контроллеры, адаптеры входа.
  • Слой прикладной логики: сценарии и оркестрация действий (например, “создать заявку и отправить на согласование”).
  • Доменный слой: правила предметной области (валидности, статусы, ограничения), сущности и их поведение.
  • Инфраструктурный слой: доступ к БД, очередям, внешним API, файловым хранилищам.
  • Ключевое правило зависимостей: верхние слои могут зависеть от нижних, но не наоборот. Это делает бизнес-правила менее зависимыми от технологий.

    !Базовая слоистая архитектура и направление зависимостей

    Как слои соотносятся с артефактами курса

    | Что нужно зафиксировать | Чем обычно фиксируют | Где “живёт” в слоистой модели | |---|---|---| | Границы системы и внешние зависимости | C4 System Context | за пределами слоёв, на уровне системы | | Контейнеры и их назначение | C4 Container | разбиение по исполняемым частям | | Ответственность модулей внутри приложения | C4 Component или UML Component | часто отражает слои и домены | | Критические сценарии и ошибки | UML Sequence | проходят через слои и внешние зависимости | | Сквозной процесс по ролям | BPMN | показывает, где слой представления “включается” |

    Сервисы: как понимать термин и как выделять границы

    Слово сервис полезно уточнять контекстом.

  • Сервис как контейнер: отдельное развертывание (например, “Service A” и “Service B”), как в микросервисах или SOA.
  • Сервис как компонент: модуль внутри одного приложения (например, RequestService), который реализует часть бизнес-возможностей.
  • Справочный контекст по архитектурным стилям:

  • Service-oriented architecture
  • Microservices
  • Критерии выделения сервисов и компонентов

    Полезные критерии, которые привязывают архитектуру к требованиям:

  • Ответственность: сервис отвечает за понятную область (например, “заявки”, “лимиты”, “уведомления”).
  • Владение данными: сервис является источником истины для определённых сущностей или их части.
  • Риск и нагрузка: часть системы может требовать отдельного масштабирования.
  • Изменчивость: если область правил меняется независимо, ей полезны отдельные границы.
  • Интеграционная изоляция: если нужна защита от нестабильной внешней системы, интеграцию выносят в отдельный адаптер/сервис.
  • Важно: раннее выделение большого числа отдельно развёртываемых сервисов почти всегда повышает стоимость эксплуатации.

    Интеграции: виды, компромиссы и типовые требования

    Интеграции в ИС почти всегда определяют архитектуру сильнее, чем “внутренний код”, потому что на границе появляются:

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

    | Способ | Когда подходит | Ключевой риск | |---|---|---| | Синхронный API (запрос–ответ) | нужен немедленный результат | зависимость по доступности и времени ответа | | Асинхронные сообщения/события | нужно снизить связанность и переживать сбои | сложнее наблюдаемость и согласованность | | Пакетный обмен (batch) | допустима обработка по расписанию | задержка актуальности данных | | Файловый обмен | простая интеграция между контурами | версия формата и контроль доставки |

    Справочно про событийный подход: Event-driven architecture.

    Команда, запрос, событие

    Чтобы контракты были понятнее, различают смысл:

  • Команда: требование выполнить действие, которое изменяет состояние (например, “создать заявку”).
  • Запрос: получение данных без изменения состояния (например, “получить список заявок”).
  • Событие: факт, который уже произошёл (например, “заявка отправлена на согласование”).
  • Эта классификация помогает:

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

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

  • назначение и владелец интерфейса
  • формат данных (схемы, обязательность, домены значений)
  • правила валидации и бизнес-ограничения
  • ошибки и реакции клиента
  • безопасность (аутентификация, авторизация)
  • таймауты, ретраи и поведение при недоступности
  • версионирование и обратная совместимость
  • Для ошибок в HTTP API полезный стандартный формат: RFC 7807 Problem Details for HTTP APIs.

    Для формулировок обязательности в спецификациях часто используют модальные слова из: RFC 2119 Key words for use in RFCs.

    Идемпотентность: почему это архитектурная тема

    Если запрос может быть повторён (таймаут, сетевой сбой, ретрай), система должна вести себя предсказуемо.

  • Идемпотентная операция: повтор выполнения даёт тот же итоговый эффект.
  • Не все операции обязаны быть идемпотентными, но для критичных команд это часто требование надёжности.
  • Типовые способы обеспечить идемпотентность:

  • уникальный бизнес-ключ (например, номер документа)
  • технический Idempotency-Key (хранение факта обработки ключа)
  • дедупликация сообщений в обработчике событий
  • Как связать интеграции с нефункциональными требованиями

    Нефункциональные требования (НФТ) из прошлой темы влияют на архитектуру напрямую.

    Примеры связок:

  • производительность: нужен кэш, лимиты вызовов, очереди для разгрузки
  • доступность: нужна деградация при отказе внешнего сервиса
  • безопасность: нужен SSO, разграничение ролей, аудит
  • наблюдаемость: нужны корреляционные идентификаторы, структурированные логи, метрики
  • Опорная модель качества продукта: ISO/IEC 25010.

    Нотации курса для архитектурного проектирования

    C4: от контекста к контейнерам и интеграциям

    C4 полезен, чтобы быстро договориться:

  • кто внешние акторы и системы
  • какие контейнеры есть в решении
  • где проходит граница ответственности
  • Пример C4 Container в Structurizr DSL (упрощённо):

    Смысл: контейнеры и внешние системы видны как зависимости, что помогает проводить анализ влияния при изменениях.

    UML Sequence: деградация, таймауты, очереди

    UML Sequence фиксирует поведение во времени и делает явными места, где НФТ превращаются в решения.

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

    Что это даёт:

  • можно тестировать сценарий сбоя как часть приёмки
  • можно обсудить, что считается “успехом” операции
  • проще согласовать архитектурное решение (например, через ADR)
  • BPMN: где архитектура встречается с процессом

    BPMN отвечает на вопрос кто и в какой роли выполняет шаги, а архитектура отвечает какими контейнерами и интерфейсами это реализовано.

    Практическое правило согласованности:

  • если в BPMN есть шаг “Отправить уведомление”, в архитектуре должен существовать контейнер/компонент и контракт, которые это выполняют
  • Архитектурные “сквозные” решения, которые стоит фиксировать отдельно

    В архитектурном проектировании полезно заранее выделять решения, которые влияют на многие требования.

    Типовой список сквозных решений

  • аутентификация и авторизация (например, через SSO)
  • аудит и журналирование
  • управление ошибками и формат ошибок
  • корреляция запросов (trace id)
  • стратегия интеграций: синхронно или асинхронно
  • стратегия данных на границе: источник истины и синхронизация
  • Эти решения лучше фиксировать как ADR, чтобы они были управляемыми при изменениях (мы вводили ADR в теме проектирования).

    Частые ошибки архитектурного проектирования

  • Слои формально есть, но зависимости перепутаны, и доменная логика “течёт” в инфраструктуру.
  • Интеграции описаны как “вызовем API”, но нет ошибок, таймаутов, ретраев, идемпотентности.
  • События вводят без наблюдаемости, и система становится трудно отлаживаемой.
  • C4-диаграмма не совпадает с реальностью контейнеров и внешних зависимостей.
  • BPMN и реализация расходятся: процесс говорит одно, система делает другое.
  • Минимально достаточный результат архитектурного проектирования

    Перед переходом к реализации обычно достаточно, чтобы были согласованы и версионированы:

  • C4 контекст и контейнеры
  • список ключевых интеграций с владельцами и типом взаимодействия
  • контракты ключевых интерфейсов (API или события), включая ошибки и безопасность
  • UML Sequence для 1–3 критических сценариев, включая деградацию
  • перечень сквозных архитектурных решений (ADR)
  • трассировка к требованиям и критериям приёмки
  • Итог

    Архитектурное проектирование в ИС связывает требования и реальную выполнимость решения через три “опорные” темы:

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

    24. Проектирование UI и пользовательских сценариев

    Проектирование UI и пользовательских сценариев

    Связь темы с предыдущими статьями курса

    Ранее в курсе мы разобрали:

  • жизненный цикл ИС и место проектирования
  • роли (заказчик, пользователь, аналитик, архитектор)
  • формирование, анализ и документирование требований (SRS, user stories, acceptance criteria)
  • функциональные и нефункциональные требования (включая UX как НФТ)
  • моделирование процессов (BPMN), архитектуры (C4) и поведения (UML)
  • Эта статья связывает требования и модели с тем, что пользователь видит каждый день: UI (пользовательский интерфейс) и пользовательские сценарии.

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

    !Как UI связывается с требованиями, архитектурой и проверками

    Базовые понятия

    UI и UX

  • UI (User Interface) — то, с чем взаимодействует пользователь: экраны, формы, таблицы, кнопки, сообщения, навигация.
  • UX (User Experience) — качество взаимодействия: насколько быстро и без ошибок пользователь достигает цели, насколько понятны статусы, причины отказов, последствия действий.
  • Полезные опорные источники:

  • ISO 9241-11: Usability — определение удобства использования через эффективность, результативность и удовлетворённость.
  • Nielsen Norman Group — практики UX-исследований, прототипирования, юзабилити.
  • Пользовательский сценарий

    Пользовательский сценарий — последовательность шагов, которые выполняет пользователь (и система) для достижения цели.

    Сценарий должен включать:

  • роль (кто выполняет)
  • цель (зачем)
  • предусловия
  • основной поток (happy path)
  • альтернативы и исключения
  • результат (постусловия)
  • Важно: сценарий — это не «описание экрана». Сценарий задаёт задачу и логику, а UI реализует её в виде конкретных взаимодействий.

    User flow и user journey

  • User flow — маршрут по экранам и состояниям интерфейса (что пользователь открывает, куда переходит, где вводит данные).
  • User journey — более широкий путь пользователя, включая контекст, ожидания и точки боли (часто включает этапы до и после работы в системе).
  • В проектировании ИС чаще всего нужен именно user flow, потому что он напрямую влияет на реализуемость требований и тестируемость.

    Место UI-проектирования в фазе требований и проектирования

    UI-проектирование находится на стыке:

  • требований (что должно быть возможно)
  • процесса (как работа выполняется между ролями)
  • данных (что вводится, что отображается, какие справочники)
  • архитектуры (где реализован UI, какие API и ограничения)
  • Чтобы не перепутать границы:

  • На фазе требований фиксируют обязательства системы (FR/NFR) и критерии приёмки.
  • На фазе проектирования UI уточняет взаимодействие пользователя с системой так, чтобы критерии приёмки можно было проверить.
  • На фазе реализации UI превращается в конкретные экраны и компоненты.
  • Как связать пользовательские сценарии с моделями UML и BPMN

    BPMN отвечает на вопрос как идёт процесс между ролями

    BPMN полезен, когда сценарий является частью сквозного процесса:

  • несколько ролей
  • согласования
  • события и ветвления
  • ручные и автоматизированные шаги
  • Источник стандарта: BPMN 2.0.

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

    UML Use Case отвечает на вопрос какие цели у ролей

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

  • не смешивать роли (например, «Оператор» и «Администратор»)
  • фиксировать границу системы
  • удерживать UI от «экранов ради экранов»
  • Спецификация: UML.

    Пример (PlantUML):

    UML Sequence отвечает на вопрос как выполняется сценарий во времени

    UML Sequence особенно важен, когда UI зависит от:

  • интеграций (SSO, справочники, уведомления)
  • ошибок и таймаутов
  • асинхронной обработки (очереди, отложенные операции)
  • Это помогает согласовать, что увидит пользователь при сбое: «ошибка», «операция принята и будет выполнена позже», «нужны действия пользователя».

    От требований к экранам: практическая схема декомпозиции

    Чтобы переход был управляемым, удобно идти в таком порядке:

  • Выделить роли и ключевые цели (Use Case / список ролей).
  • Выбрать 3–7 основных пользовательских сценариев (с исключениями).
  • Для каждого сценария составить user flow (маршрут по экранам и состояниям).
  • Для каждого шага user flow уточнить:
  • какие данные вводятся
  • какие данные отображаются
  • какие проверки выполняются
  • какие ошибки возможны
  • какие права нужны
  • Привязать шаги к требованиям FR-... и NFR-... и к AC-....
  • На этом этапе часто обнаруживаются пробелы требований, например:

  • не определены тексты ошибок и причины отказа
  • не определены права на операцию
  • не определён источник справочника
  • не определено поведение при сбое внешнего сервиса
  • UI-артефакты, которые реально помогают проекту

    Карта экранов (screen map)

    Карта экранов фиксирует:

  • список экранов
  • переходы
  • входные точки (откуда пользователь попадает)
  • Её ценность в трассировке: видно, что покрыто сценарием, а что «висячее».

    Вайрфреймы и прототипы

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

    Спецификация поведения экрана

    UI-спецификация должна фиксировать не «где кнопка», а проверяемое поведение:

  • предусловия отображения (например, нужна роль)
  • правила валидации полей
  • состояния загрузки и ожидания
  • реакции на ошибки
  • отображение статусов и истории
  • Матрица прав (UI-permission matrix)

    Матрица прав отвечает на вопрос: что пользователь видит и что может сделать.

    Это важно для безопасности и для снижения ошибок в приёмке.

    Пример структуры:

    | Экран/операция | Инициатор | Согласующий | Администратор | |---|---|---|---| | Создать заявку | да | нет | да | | Отправить на согласование | да | нет | да | | Согласовать/отклонить | нет | да | да | | Редактировать справочники | нет | нет | да |

    Проектоль UI-проектирование: ключевые решения

    Информационная архитектура

    Информационная архитектура — как информация сгруппирована и где пользователь её ищет.

    Типовые вопросы:

  • где список объектов (реестр заявок)
  • где карточка объекта (детали заявки)
  • как пользователь возвращается к работе (черновики, «мои задачи»)
  • как устроен поиск и фильтрация
  • Паттерны «реестр + карточка» и «задачи + документы»

    Для корпоративных ИС чаще всего работают понятные паттерны:

  • реестр объектов (таблица, фильтры, сортировка)
  • карточка объекта (статус, ключевые поля, действия)
  • раздел «мои задачи» (то, что требует действий пользователя)
  • Это напрямую поддерживает BPMN: «задачи» соответствуют шагам процесса, где требуется человек.

    Состояния UI как часть требований

    Для каждого экрана обычно нужно явно проектировать состояния:

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

    !Типовые состояния UI и переходы между ними

    Валидация, ошибки и сообщения: как делать это проектируемым

    Валидация данных

    Валидация в UI и в бекенде решает разные задачи:

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

    Сообщения об ошибках

    Качество UI часто ломается не «основным потоком», а ошибками.

    Хорошая проектная фиксация ошибок включает:

  • категорию ошибки (валидация, права, недоступность сервиса)
  • что видит пользователь
  • что пользователь может сделать дальше
  • что логируется для поддержки
  • Если команда использует HTTP API, полезно иметь единый формат ошибок. В веб-практике часто используют: RFC 7807: Problem Details for HTTP APIs.

    UX-требования как часть UI-проектирования

    UX-требования должны быть проверяемыми и привязанными к сценариям.

    Типовые измеримые UX-критерии:

  • время выполнения типовой операции
  • количество ошибок ввода
  • понятность статуса и следующего шага
  • возможность восстановиться после ошибки
  • Опора на usability-подход: ISO 9241-11: Usability.

    Доступность (accessibility) как обязательный слой UI

    Доступность часто забывают, потому что она «не мешает сейчас», но затем превращается в риск:

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

  • навигация с клавиатуры для основных операций
  • достаточный контраст текста
  • понятные подписи полей и ошибок
  • Практический ориентир: WCAG Overview.

    Связь UI с архитектурой (C4) и интерфейсами

    UI-проектирование влияет на архитектуру минимум в трёх местах:

  • границы UI-контейнера (веб, мобильное приложение, толстый клиент)
  • контракты API (что нужно UI и в каких формах)
  • производительность и наблюдаемость (время ответа, ошибки, трассировка)
  • C4 помогает не потерять эти связи:

  • на уровне Container фиксируется UI-контейнер и его зависимости
  • на уровне Component можно выделить адаптеры API, компоненты авторизации, модуль работы со справочниками
  • Источник подхода: The C4 model.

    Практический анти-паттерн: проектировать UI, не понимая ограничений интеграций и SLA, а затем «ломать» сценарии из-за таймаутов и недоступности внешних сервисов.

    Минимально достаточный результат UI-проектирования для проекта ИС

    Для управляемого перехода к реализации обычно достаточно, чтобы были согласованы и версионированы:

  • список ролей и ключевых пользовательских целей
  • 3–7 ключевых пользовательских сценариев с исключениями
  • карта экранов (screen map) и user flow для каждого ключевого сценария
  • прототипы или вайрфреймы критичных экранов
  • спецификация поведения: валидации, ошибки, состояния, статусы
  • матрица прав на экранах и операциях
  • ссылки на требования FR/NFR и критерии приёмки AC (трассировка)
  • Типовые ошибки UI-проектирования в ИС

  • проектируют «экраны», не проектируя сценарии и исключения
  • путают BPMN-процесс с user flow (маршрут по экранам)
  • не проектируют состояния: загрузка, пусто, ошибки, нет прав
  • не фиксируют модель прав, и приёмка превращается в спор
  • UI требует данных, которые не определены в словаре данных или не имеют источника истины
  • не учитывают нефункциональные требования (скорость, безопасность, доступность) и последствия для UX
  • Итог

    Проектирование UI и пользовательских сценариев — это практический мост от требований и процессов к реализуемому интерфейсу:

  • сценарии превращают требования в последовательности действий, включая ошибки и альтернативы
  • UI-артефакты (карта экранов, прототипы, спецификация поведения) делают реализацию и тестирование предсказуемыми
  • BPMN, UML и C4 помогают удерживать согласованность: процесс, цели ролей, взаимодействия и архитектурные ограничения не должны противоречить UI
  • Дальше в курсе эти артефакты будут полезны при детализации архитектуры, интерфейсов и интеграций, а также при проверке реализуемости нефункциональных требований через конкретные сценарии использования.

    25. UML: use case, class, sequence, activity, state

    UML: use case, class, sequence, activity, state

    Зачем UML в проектировании информационных систем

    В предыдущих темах курса мы выстроили цепочку жизненный цикл → требования → проектирование → эксплуатация и показали, что разные нотации отвечают на разные вопросы:

  • BPMN помогает согласовать процесс между ролями.
  • IDEF0 и DFD помогают разложить функции и потоки данных.
  • C4 помогает договориться о границах и архитектурной структуре.
  • UML (Unified Modeling Language) нужен там, где требуется описать программную часть ИС точнее: цели пользователей, структуру предметной области, взаимодействия компонентов во времени, алгоритмы и жизненные циклы сущностей.

    UML особенно полезен, когда нужно:

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

    Как выбирать тип UML-диаграммы под вопрос

    Практическое правило курса: сначала формулируем вопрос, затем выбираем диаграмму.

    | Вопрос | Что фиксируем | UML-диаграмма | |---|---|---| | Кто и зачем пользуется системой | акторы и цели, границы ответственности системы | Use Case | | Какие сущности и связи есть в предметной области | структура данных на уровне объектов и домена | Class | | Как части системы взаимодействуют во времени | порядок вызовов, ответы, ошибки, ретраи | Sequence | | Как протекает алгоритм или поток работ внутри системы | ветвления, параллельность, точки решения | Activity | | Как живёт сущность по статусам | состояния и допустимые переходы | State |

    !Шпаргалка выбора UML-диаграммы по типу вопроса

    Use Case диаграмма

    Что такое Use Case

    Use Case (диаграмма вариантов использования) показывает:

  • акторов: кто взаимодействует с системой (люди или внешние системы);
  • цели акторов: какие результаты они хотят получить;
  • границу системы: что относится к обязанностям системы, а что остаётся во внешней среде.
  • Use Case полезна в фазе требований и в начале проектирования, когда важно согласовать кто что делает и где заканчивается ответственность системы.

    Основные элементы

  • Actor: роль пользователя или внешняя система.
  • Use case: цель или функция с точки зрения актора.
  • System boundary: прямоугольник системы.
  • include/extend: связи повторного использования и расширения поведения.
  • Практическое уточнение:

  • include используют, когда один use case обязательно включает другой.
  • extend используют, когда дополнительное поведение выполняется по условию.
  • Мини-пример (PlantUML)

    Инструмент для текстового описания диаграмм: PlantUML.

    Типовые ошибки

  • Пытаются описать последовательность шагов на Use Case диаграмме. Для этого лучше сценарии и UML Sequence.
  • Делают use case в виде экранов: Открыть страницу X. Ценнее формулировать как цель пользователя.
  • Смешивают роли: например, актор Пользователь вместо конкретных ролей, влияющих на права и сценарии.
  • Class диаграмма

    Что такое Class диаграмма в ИС-проектах

    UML Class диаграмма в проектировании ИС чаще всего применяется как концептуальная или логическая доменная модель:

  • какие сущности есть (Заявка, Позиция заявки, Пользователь, Лимит);
  • какие у них атрибуты важны;
  • какие связи и кратности (1..*, 0..1) допустимы;
  • какие ограничения и ключевые правила целостности нужно учитывать.
  • Важно: в раннем проектировании Class диаграмма не обязана совпадать с кодом 1 к 1. Её цель: сделать термины и структуру предметной области однозначными.

    Основные элементы

  • Class с атрибутами.
  • Association (связь), multiplicity (кратность).
  • Aggregation/composition (часть-целое), когда важно показать владение жизненным циклом.
  • Иногда enumeration для справочников статусов.
  • Мини-пример (PlantUML)

    Как связывать Class диаграмму со словарём данных

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

    Практичная связка:

  • Class диаграмма фиксирует сущности и связи.
  • Словарь данных фиксирует атрибуты, обязательность, ограничения, примеры.
  • Требования (FR/NFR) ссылаются на сущности и ключевые атрибуты по идентификаторам.
  • Типовые ошибки

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

    Что такое Sequence

    UML Sequence (диаграмма последовательностей) показывает взаимодействие участников во времени:

  • кто инициирует вызов;
  • какие компоненты/сервисы участвуют;
  • какие сообщения и в каком порядке идут;
  • какие ветвления есть при ошибках.
  • Эта диаграмма особенно полезна для:

  • интеграций с внешними системами;
  • сценариев с НФТ по надёжности (таймауты, ретраи, идемпотентность);
  • уточнения поведения, которое потом легко трассировать в тест-кейсы.
  • Основные элементы

  • Lifeline: участник (актор, компонент, внешний сервис, БД).
  • Message: вызов/сообщение.
  • alt/opt/loop: условия, опциональные ветки, повтор.
  • Мини-пример: отправка заявки и деградация уведомлений

    Типовые ошибки

  • Пытаются показать все сценарии системы одной диаграммой. Лучше делать 1 диаграмму на 1 критический сценарий.
  • Не описывают ошибки и ветки деградации, из-за чего интеграции ломаются на реальной эксплуатации.
  • Рисуют Sequence без связи с требованиями и критериями приёмки, и диаграмма превращается в “картинку без статуса”.
  • Activity диаграмма

    Что такое Activity

    UML Activity (диаграмма активностей) описывает поток выполнения:

  • шаги (действия),
  • ветвления по условиям,
  • параллельные ветки,
  • точки начала и завершения.
  • В ИС-проектах Activity часто используют, когда нужно:

  • описать алгоритм внутри системы;
  • уточнить бизнес-правило на уровне логики обработки;
  • спроектировать обработку исключений и возвратов без привязки к ролям.
  • Важно различать:

  • BPMN отвечает на вопрос как процесс идёт по ролям и событиям.
  • Activity отвечает на вопрос как выполняется поток работ или алгоритм внутри системы или компонента.
  • Основные элементы

  • Initial/Final node: начало и конец.
  • Action: шаг обработки.
  • Decision/Merge: ветвление и объединение.
  • Fork/Join: параллельность.
  • Мини-пример: проверка лимита и выбор маршрута согласования

    Типовые ошибки

  • Используют Activity вместо BPMN для описания сквозного процесса с ролями и событиями.
  • Не фиксируют условия ветвлений явно (получаются “магические решения”).
  • Пытаются описать UI-навигацию диаграммой Activity. Для UI лучше user flow и прототипы.
  • State диаграмма

    Что такое State Machine

    UML State Machine (диаграмма состояний) моделирует жизненный цикл сущности:

  • какие статусы возможны;
  • какие события переводят сущность из одного статуса в другой;
  • какие переходы запрещены;
  • какие действия выполняются при входе/выходе из состояния.
  • Для ИС это критично, когда:

  • статус влияет на права и доступные операции;
  • есть согласования, возвраты, отмены;
  • требуется аудит и воспроизводимость истории.
  • Основные элементы

  • State: состояние.
  • Transition: переход с событием и, при необходимости, условием.
  • Initial/Final: начальное и конечное состояния.
  • Мини-пример: жизненный цикл заявки

    Как связать состояния с требованиями и процессом

    Практичная связка артефактов:

  • BPMN показывает, на каких шагах процесса статус меняется.
  • State диаграмма фиксирует, какие переходы допустимы.
  • Functional requirements фиксируют, кто и при каких условиях может инициировать переход.
  • Если эти три артефакта расходятся, приёмка обычно превращается в спор о том, “как должно быть”.

    Типовые ошибки

  • Забывают переходы на исключения (например, отмена, возврат на доработку).
  • Не фиксируют, какие действия разрешены в каждом состоянии.
  • Делают состояния слишком детальными и интерфейсными (например, “Открыта форма редактирования”), вместо бизнес-состояний сущности.
  • Как удерживать согласованность UML с требованиями, BPMN и C4

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

  • Идентификаторы и ссылки
  • 1. Требования имеют ID (FR-, NFR-, AC-). 2. Диаграммы имеют имя и версию (UML-UC-..., UML-SEQ-...). 3. В тексте требований есть ссылки на диаграммы.
  • Трассировка по критическим сценариям
  • 1. Для каждого критического сценария есть AC и тест. 2. Для интеграций есть UML Sequence с ошибками и таймаутами.
  • Разделение уровней
  • 1. Use Case для целей и границы. 2. Class для структуры домена. 3. Sequence для взаимодействий. 4. Activity для алгоритма. 5. State для жизненного цикла.
  • Согласование границ
  • 1. C4 контекст и контейнеры задают границу и крупные части. 2. UML детализация не должна “придумывать” внешние системы, которых нет в контексте.

    Рекомендуемый формат хранения UML для команды

    Для совместной работы и версионирования удобно хранить UML в текстовом виде:

  • PlantUML для Use Case, Class, Sequence, Activity, State: PlantUML.
  • Практический эффект:

  • можно хранить диаграммы рядом с требованиями в Git;
  • можно делать ревью изменений;
  • можно автоматически собирать диаграммы в CI.
  • Итог

    UML в проектировании информационных систем полезен как набор точных “языков” для разных вопросов:

  • Use Case фиксирует акторов, цели и границы системы.
  • Class фиксирует сущности предметной области, связи и базовые правила структуры.
  • Sequence фиксирует взаимодействия во времени, включая интеграции и ошибки.
  • Activity фиксирует поток выполнения алгоритма и ветвления.
  • State фиксирует жизненный цикл сущности и допустимые переходы.
  • Вместе с BPMN, IDEF и C4 UML помогает удерживать связность артефактов: от требований и процессов до архитектурных решений, реализации и тестов.

    26. IDEF0/IDEF3: функциональное моделирование и сценарии

    IDEF0/IDEF3: функциональное моделирование и сценарии

    Связь темы с предыдущими статьями курса

    Ранее в курсе мы уже разобрали:

  • жизненный цикл ИС, фазы и контрольные точки
  • формирование, анализ, документирование и управление требованиями
  • структурный анализ, DFD и словарь данных
  • архитектуру (C4), процессы (BPMN) и поведение/структуру ПО (UML)
  • Эта тема добавляет к картине два близких, но разных инструмента семейства IDEF:

  • IDEF0 для функционального моделирования: что делает система/организация и какие у функций входы, выходы, управляющие воздействия и механизмы
  • IDEF3 для сценариев: как обычно протекает работа через типовые последовательности действий и развилки
  • Практическая роль темы в жизненном цикле:

  • на обследовании и анализе предметной области IDEF0 помогает договориться о границах ответственности и о составе функций
  • при формировании требований IDEF3 помогает выявлять типовые сценарии и исключения, которые затем превращаются в требования, BPMN и UML Sequence
  • Источники по семейству IDEF:

  • IDEF на сайте NIST
  • IDEF3 на Wikipedia
  • Зачем IDEF, если уже есть BPMN, UML и C4

    IDEF0 и IDEF3 полезны, когда нужно быстро и структурно ответить на вопросы, которые часто «расплываются» в обсуждениях:

  • IDEF0: какие функции вообще должны существовать, что на них влияет, кто/что их выполняет
  • IDEF3: как именно обычно выполняется работа, какие есть развилки, альтернативы и повторяемые фрагменты
  • Сравнение по фокусу (упрощённо):

    | Нотация | Главный вопрос | Что получается на выходе | |---|---|---| | IDEF0 | что делаем и в каких условиях | функциональная декомпозиция + ICOM-стрелки | | IDEF3 | как обычно происходит | сценарии и типовые потоки работ | | BPMN | как идёт процесс между ролями и событиями | исполнимо-ориентированная модель процесса | | UML Sequence | как компоненты взаимодействуют во времени | точное описание вызовов и ошибок | | C4 | где границы системы и из каких частей она состоит | контекст/контейнеры/компоненты |

    Ключевая мысль: IDEF0 и IDEF3 обычно применяют как ранние и согласовательные модели. Затем критичные части «приземляют» в BPMN, UML и C4.

    IDEF0: функциональное моделирование через ICOM

    Базовые понятия IDEF0

    IDEF0 представляет систему (или функцию) как набор функций, каждая из которых:

  • преобразует что-то входящее в результат
  • выполняется под управлением правил и ограничений
  • выполняется определёнными средствами (люди, системы, ресурсы)
  • Чтобы модель была однозначной, используются четыре типа стрелок ICOM:

  • Input: что функция преобразует
  • Control: что управляет функцией (правила, политики, регламенты, ограничения)
  • Output: что функция выдаёт
  • Mechanism: чем выполняется функция (роли, ИС, оборудование)
  • Практическая подсказка различения:

  • если элемент отвечает на вопрос «по каким правилам действуем», это чаще Control
  • если элемент отвечает на вопрос «какие данные/объекты преобразуем», это чаще Input
  • Как читается блок IDEF0

    Функция изображается прямоугольником, стрелки обычно располагают так:

  • Input слева
  • Output справа
  • Control сверху
  • Mechanism снизу
  • !Схема IDEF0 ICOM: как читать входы, управления, выходы и механизмы

    Контекстная диаграмма A-0 и декомпозиция

    IDEF0 почти всегда начинают с контекста:

  • A-0: система (или функция верхнего уровня) как один блок, с основными ICOM
  • Затем выполняют декомпозицию:

  • A0: набор функций уровня 1 (обычно 3–6 блоков)
  • A1, A2, ...: детализация конкретной функции
  • Важно: декомпозиция должна останавливаться до уровня, где можно писать проверяемые требования, но не уходить в детали реализации (экраны, классы, SQL).

    Мини-пример IDEF0: «Обработка заявки на закупку»

    Ниже пример того, как можно зафиксировать контекст (A-0) в виде таблицы ICOM. Такая таблица делает модель пригодной для требований и согласований.

    | Тип | Пример для A-0 «Обработать заявку на закупку» | Зачем фиксировать | |---|---|---| | Input | Данные заявки, вложения | определяет, что система должна принимать/обрабатывать | | Control | Регламент согласования, лимиты, политика безопасности | превращается в ограничения и НФТ (аудит, доступы) | | Output | Решение по заявке, уведомления, записи аудита | определяет результаты функции | | Mechanism | Инициатор, согласующий, ИС заявок, сервис уведомлений | показывает исполнителей и зависимости |

    Пример декомпозиции A0 (уровень 1) для этой системы:

  • A1 Зарегистрировать заявку
  • A2 Проверить данные и лимиты
  • A3 Организовать согласование
  • A4 Зафиксировать решение и уведомить
  • Смысл для требований:

  • каждый блок A1–A4 становится «контейнером» для групп требований FR-...
  • стрелки Control становятся источником нефункциональных требований и ограничений NFR-...
  • Mechanism помогает выявить интеграции и внешние зависимости, которые должны попасть в C4 контекст
  • Правила качества для IDEF0

  • Название функции формулируется как действие: Проверить лимит, Сформировать уведомление
  • На одном уровне декомпозиции лучше держать 3–6 функций, чтобы модель оставалась читаемой
  • Каждая стрелка должна иметь понятное имя (не Данные, а Данные заявки, Решение согласующего)
  • Control должен отражать реальные управляющие воздействия: регламенты, политики, требования комплаенса
  • Типовые ошибки IDEF0

  • Путать Control и Input: например, лимиты часто являются правилом принятия решения (Control), а не «сырьём», которое преобразуют
  • Делать декомпозицию «по оргструктуре» вместо функций: IDEF0 про что делаем, а не кто главный
  • Уходить в детали реализации: поля экранов, таблицы БД, названия микросервисов
  • Рисовать блоки без стрелок: модель теряет смысл и перестаёт помогать в требованиях
  • IDEF3: сценарии (описания потоков работ)

    Что такое IDEF3 и чем он отличается от IDEF0

    IDEF3 ориентирован на фиксацию типовых сценариев:

  • как обычно выполняется работа
  • какие шаги следуют друг за другом
  • где возникают развилки, альтернативы и повторяемые фрагменты
  • Если IDEF0 отвечает на вопрос «что мы делаем как функции», то IDEF3 отвечает на вопрос «как это обычно происходит во времени».

    Основные элементы IDEF3

    Чтобы не было «неизвестных терминов», ниже минимальный словарь.

  • UOB (Unit of Behavior): шаг поведения, действие (например, Проверить лимит, Отправить на согласование)
  • Precedence link: связь предшествования (какой шаг идёт после какого)
  • Junction: развилка или слияние, логика ветвления
  • - AND: параллельно/оба пути - OR: один из путей - XOR: строго один из альтернативных путей
  • Referent: ссылка на другой фрагмент сценария (чтобы не дублировать типовой кусок)
  • OSTN (Object State Transition Network): сетка переходов состояний объекта (если важно фиксировать состояния и переходы именно как часть сценариев)
  • IDEF3 часто используют как промежуточный артефакт между интервью/обследованием и формальными моделями BPMN/UML.

    Где IDEF3 особенно полезен

  • когда много «обычных» вариантов выполнения работы и нужно быстро их зафиксировать
  • когда процесс ещё рано «загонять» в BPMN, но уже нужно увидеть развилки
  • когда важно собрать исключения и альтернативы, чтобы не потерять их при формировании требований
  • Мини-пример IDEF3: сценарий согласования заявки

    Типовой поток (условный, в терминах UOB):

  • UOB-1 Зарегистрировать заявку
  • UOB-2 Проверить заполненность и лимиты
  • UOB-3 Выбрать маршрут согласования
  • UOB-4 Направить согласующему
  • UOB-5 Получить решение
  • UOB-6 Зафиксировать решение и уведомить
  • Развилка (junction) после UOB-2:

  • если лимит превышен, добавляется дополнительный согласующий
  • если лимит не превышен, идём по стандартному маршруту
  • Важно: IDEF3 фиксирует логическую последовательность и варианты, но обычно не требует сразу описывать роли, события и сообщения так строго, как BPMN.

    !Пример IDEF3: типовой сценарий с развилкой по условию

    Типовые ошибки IDEF3

  • Пытаться сделать IDEF3 «копией BPMN» с ролями, сообщениями, событиями и всеми исключениями сразу
  • Не фиксировать условия развилок: развилка есть, но непонятно, по какому правилу выбирается путь
  • Делать один гигантский сценарий на «всё»: лучше несколько сценариев для ключевых случаев
  • Как связывать IDEF0 и IDEF3 с требованиями и нотациями UML, BPMN, C4

    Переход IDEF0 → требования

    IDEF0 удобно превращается в структуру требований:

  • функция (блок) становится группой FR по ответственности
  • стрелки Input/Output дают требования к данным и результатам
  • Control превращается в ограничения и нефункциональные требования
  • Mechanism помогает выявить роли, внешние системы и интеграции
  • Практический результат: после согласования IDEF0 обычно проще составить SRS-структуру, определить in scope/out of scope и понять, где нужны интерфейсы.

    Переход IDEF3 → сценарии и acceptance criteria

    IDEF3 хорошо «переводится» в:

  • текстовые сценарии использования (основной поток, альтернативы, исключения)
  • критерии приёмки в Given/When/Then
  • Пример превращения развилки в критерии приёмки:

  • Given: сумма заявки превышает лимит
  • When: инициатор отправляет заявку
  • Then: система добавляет этап дополнительного согласования
  • Соотношение с BPMN

    IDEF3 и BPMN близки тем, что оба описывают «как идёт работа», но применяются по-разному:

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

  • Зафиксировать функции в IDEF0
  • Для самых критичных функций собрать сценарии IDEF3
  • После согласования перевести «целевой» сценарий в BPMN как будет
  • Соотношение с UML

  • Из IDEF0 часто получается хорошая основа для UML Use Case: функции верхнего уровня можно «перевести» в цели акторов
  • Из IDEF3 удобно выбирать критические сценарии для UML Sequence: особенно там, где есть интеграции, таймауты, ретраи и деградация
  • Если в IDEF3 есть состояния объекта, их полезно формализовать в UML State Machine
  • Соотношение с C4

    IDEF0 и IDEF3 не заменяют архитектурные диаграммы, но помогают не ошибиться в границах:

  • Mechanism из IDEF0 подсвечивает, какие внешние системы и роли реально участвуют
  • выходы/входы и сценарии подсвечивают, где нужны API, очереди, интеграционные контракты
  • После этого C4 Context и C4 Container становятся проще и точнее, потому что вы не «придумываете» окружение, а опираетесь на функциональную модель и сценарии.

    Практический алгоритм применения IDEF0/IDEF3 в проекте ИС

  • Зафиксировать границы: что в scope и кто стейкхолдеры.
  • Построить IDEF0 A-0 для системы (контекст): определить ключевые Input, Control, Output, Mechanism.
  • Декомпозировать до A0 (3–6 функций), проверить, что функции покрывают ожидания заказчика.
  • Для 1–3 наиболее рискованных функций собрать IDEF3 сценарии:
  • 1. основной поток 2. альтернативы по условиям 3. типовые исключения
  • Перевести согласованные сценарии:
  • 1. в BPMN, если нужен сквозной процесс по ролям 2. в UML Sequence, если есть интеграции и требования к надёжности
  • Связать блоки IDEF0 и сценарии IDEF3 с требованиями FR/NFR и критериями приёмки AC.
  • Итог

    IDEF0 и IDEF3 дают проектировщику ИС два взаимодополняющих инструмента раннего моделирования:

  • IDEF0 помогает согласовать функции, границы ответственности и управляющие воздействия через ICOM
  • IDEF3 помогает зафиксировать типовые сценарии и развилки, не теряя альтернативы и исключения
  • В связке с требованиями, BPMN, UML и C4 это позволяет выстроить трассировку:

  • функция и сценарий → требования → архитектурные решения → тесты и приёмка
  • Так проектирование становится не набором диаграмм, а управляемым переходом от понимания предметной области к реализуемому решению.

    27. BPMN 2.0: моделирование бизнес-процессов и оркестрации

    BPMN 2.0: моделирование бизнес-процессов и оркестрации

    Зачем BPMN в проектировании информационных систем

    В предыдущих темах курса мы уже научились:

  • формировать и анализировать требования (контекст, границы, стейкхолдеры)
  • описывать функциональные и нефункциональные требования
  • держать трассируемость и управлять изменениями
  • проектировать архитектуру (C4) и поведение программной части (UML)
  • применять структурные методы (IDEF0, DFD) для функций и потоков данных
  • BPMN 2.0 (Business Process Model and Notation) добавляет недостающий слой: описание сквозного бизнес-процесса в терминах событий, задач, ветвлений и взаимодействий ролей.

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

    Официальный стандарт: BPMN 2.0 (OMG).

    Что такое бизнес-процесс и что именно моделирует BPMN

    Чтобы избежать «неизвестных терминов», зафиксируем базовые определения.

  • Бизнес-процесс — повторяемая последовательность действий, которая преобразует вход (событие/запрос/документ) в результат, создающий ценность для организации.
  • Модель процесса — формальное описание этого процесса, пригодное для согласования и проектирования автоматизации.
  • BPMN моделирует:

  • поток работ (что за чем идёт)
  • роли/участников процесса
  • события (что запускает процесс и что происходит во время выполнения)
  • ветвления по условиям
  • сообщения между участниками (люди и системы)
  • При этом BPMN намеренно не является:

  • моделью данных (для этого у нас есть ER/UML Class и словарь данных)
  • архитектурной моделью контейнеров и компонентов (это роль C4)
  • моделью внутренней логики программных компонентов во времени (это роль UML Sequence)
  • Оркестрация и коллаборация: два режима BPMN-моделирования

    В BPMN часто обсуждают два близких, но разных понятия.

    Оркестрация

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

    Пример:

  • «Система заявок» управляет маршрутом согласования: назначает согласующих, ждёт решения, переводит статусы, отправляет уведомления.
  • В BPMN это обычно выглядит как один пул (участник) с детальным процессом внутри.

    Коллаборация

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

    Пример:

  • «Инициатор» отправляет заявку в «Систему заявок»
  • «Система заявок» запрашивает лимиты у «ERP»
  • «Система заявок» уведомляет «Согласующего»
  • В BPMN это обычно выглядит как несколько пулов и message flow между ними.

    !Сравнение оркестрации и коллаборации в BPMN

    Базовые элементы BPMN и как их читать

    Ниже — минимальный набор элементов, который покрывает большинство практических моделей в проектах ИС.

    Пулы и дорожки

  • Pool (пул) — участник взаимодействия. Это может быть роль, подразделение, внешняя организация или внешняя система.
  • Lane (дорожка) — разделение внутри пула по ролям или зонам ответственности.
  • Практическое правило:

  • пулы — для границ ответственности и обмена сообщениями
  • дорожки — для распределения работ внутри одного участника
  • Потоки

  • Sequence flow — последовательность работ внутри одного пула
  • Message flow — обмен сообщениями между пулами
  • Важное правило: sequence flow не должен пересекать границы пулов.

    События

    Event (событие) — то, что происходит и влияет на процесс.

    Типы, которые чаще всего применяются в проектировании ИС:

  • Start event — старт процесса
  • End event — завершение процесса
  • Intermediate event — событие по ходу процесса
  • Boundary event — событие на границе задачи (обычно исключение или таймаут)
  • Наиболее практичные «виды» событий:

  • message — пришло сообщение (например, ответ внешней системы)
  • timer — таймер/ожидание/таймаут
  • error — ошибка выполнения (важно для исключений)
  • Активности

  • Task (задача) — атомарное действие.
  • Sub-process (подпроцесс) — свёрнутая или разворачиваемая группа задач.
  • Call activity — вызов переиспользуемого процесса.
  • В проектировании ИС полезно явно различать типы задач:

  • User task — пользователь выполняет действие в UI
  • Service task — автоматическое действие системы (вызов сервиса, расчёт)
  • Manual task — ручная активность без поддержки ИС (важно, чтобы не «забыть» её)
  • Шлюзы

    Gateway (шлюз) — точка ветвления или синхронизации потоков.

    Типовые:

  • Exclusive (XOR) — выбирается ровно один путь
  • Parallel (AND) — запускаются параллельно все пути
  • Inclusive (OR) — запускаются один или несколько путей, в зависимости от условий
  • Практическая ловушка: пытаться «нарисовать сложную логику условий» без явной фиксации правил. Если ветвление важно для требований, условия должны ссылаться на бизнес-правило или быть описаны текстом рядом.

    Минимальная нотационная «грамматика»: что нельзя делать

    Чтобы BPMN-модели были читаемыми и пригодными для согласований, полезно держать короткий список запретов.

  • Не соединять пулы sequence flow.
  • Не использовать message flow внутри одного пула.
  • Не рисовать в BPMN детали внутренней архитектуры компонентов (это уровень C4 и UML).
  • Не превращать модель в «карту подразделений» без событий, задач и ветвлений.
  • Связь BPMN с требованиями: как не получить диаграмму «ради диаграммы»

    BPMN становится инженерным артефактом только тогда, когда по нему можно:

  • сформулировать требования
  • согласовать автоматизацию с пользователями и заказчиком
  • построить критерии приёмки
  • проверить согласованность с архитектурой и интеграциями
  • Практичная трассировка:

  • шаг процесса (BPMN) → сценарий использования → FR и AC
  • обмен сообщениями (BPMN) → интеграционный контракт → NFR по надёжности/таймаутам
  • Пример полезной таблицы привязки:

    | Фрагмент BPMN | Что уточняем в требованиях | Чем дополняем в проектировании | |---|---|---| | User task «Отправить заявку» | валидации, права, ошибки, критерии приёмки | UI-прототип, UML Sequence для API | | Service task «Запросить лимиты в ERP» | таймауты, ретраи, поведение при недоступности | UML Sequence, ADR про кэш/очередь | | Gateway «Сумма > лимит?» | правило расчёта, источники данных | UML Activity для алгоритма, словарь данных | | End event «Заявка отклонена» | кто может отклонить, как фиксировать причину | UML State для статусов, требования к аудиту |

    Практический пример: процесс согласования заявки с таймаутом интеграции

    Ниже — типовой учебный пример, близкий к сквозным примерам курса.

    Сценарий:

  • Инициатор создаёт заявку
  • Система запрашивает лимиты в ERP
  • Если лимит превышен, требуется дополнительное согласование
  • Если ERP не отвечает за заданное время, запускается альтернативный путь (например, ручная проверка или отложенная обработка)
  • !Пример BPMN-процесса с интеграцией и таймаутом

    Ключевой смысл примера:

  • boundary timer делает явной реакцию на таймаут
  • gateway фиксирует бизнес-ветвление
  • разделение по дорожкам показывает ответственность ролей
  • Boundary events: как моделировать исключения и деградацию

    Boundary event — это основной механизм BPMN, чтобы показать, что «во время выполнения задачи может случиться событие», которое влияет на поток.

    Чаще всего в ИС-проектах boundary events нужны для:

  • таймаутов внешних сервисов
  • ошибок интеграций
  • отмены пользователем
  • Есть два варианта поведения boundary event:

  • прерывающий — прерывает текущую задачу и уводит поток на обработку исключения
  • непрерывающий — запускает дополнительную ветку, но основная задача продолжается
  • Практическое правило выбора:

  • если дальнейшее выполнение задачи бессмысленно при исключении, используйте прерывающий вариант
  • если вы хотите запустить параллельную реакцию (например, эскалацию), используйте непрерывающий
  • Подпроцессы: зачем они нужны и как не спрятать важное

    Подпроцессы решают две задачи:

  • упрощают читаемость модели верхнего уровня
  • позволяют выделить повторяемые фрагменты (например, «Согласование» как переиспользуемый блок)
  • Риск подпроцессов:

  • можно спрятать важные исключения и ошибки так, что стейкхолдеры их не увидят
  • Практика:

  • на верхнем уровне оставляйте видимыми ключевые развилки и критичные исключения
  • детализацию «рутины» прячьте в подпроцесс
  • BPMN и статусная модель: как не допустить противоречий

    В корпоративных ИС процесс и статусы обычно связаны.

  • BPMN показывает где и почему меняется статус
  • UML State Machine (из темы UML) фиксирует какие статусы и переходы допустимы
  • Практическое правило согласованности:

  • если в BPMN есть путь «Возврат на доработку», он должен соответствовать переходу в UML State
  • если UML State запрещает переход, то в BPMN не должно быть шага, который его вызывает
  • Оркестрация процесса и автоматизация: когда BPMN становится «исполняемым»

    BPMN 2.0 включает не только графику, но и метамодель, а также стандарт обмена BPMN 2.0 XML.

    Это позволяет использовать BPMN в двух режимах:

  • описательный — модель нужна для согласования и проектирования
  • исполняемый — модель используется движком оркестрации (workflow engine)
  • Важно: не каждый BPMN-рисунок автоматически становится исполняемым процессом. Для исполнения обычно требуется:

  • строгая типизация задач (user task, service task)
  • чёткие условия шлюзов
  • определённые контракты сообщений и сервисов
  • Как артефакт проекта BPMN 2.0 XML полезен даже без исполнения, потому что это переносимый формат обмена между инструментами.

    Стандартный источник: BPMN 2.0 (OMG).

    Минимальный пример BPMN 2.0 XML как обменного артефакта

    Как читать этот фрагмент:

  • bpmn:process — определение процесса
  • isExecutable="false" — процесс описательный (не заявлен как исполняемый)
  • startEvent и endEvent — события начала и завершения
  • В реальных проектах в XML также появляются задачи, потоки, шлюзы, диаграммная часть (BPMNDI) и идентификаторы для трассировки.

    BPMN и другие нотации курса: практическая связка

    BPMN редко бывает «единственной нотацией».

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

  • Определить контекст и границы (C4 Context).
  • Согласовать целевой процесс между ролями (BPMN Collaboration или один пул + дорожки).
  • Для шагов с интеграциями описать критические взаимодействия (UML Sequence).
  • Для сущностей, статусов и ограничений данных уточнить доменную модель (UML Class, UML State) и словарь данных.
  • Качество BPMN-модели: короткий чек-лист

    Перед тем как считать процесс «готовым артефактом требований», проверьте:

  • есть событие начала и завершения (или понятные точки входа/выхода)
  • все шлюзы имеют понятные условия ветвления
  • ручные шаги не замаскированы под автоматизацию
  • интеграции вынесены как взаимодействия с внешними пулами или явно обозначены как сервисные задачи
  • исключения для критичных зависимостей отражены (таймауты, ошибки)
  • роли и ответственность понятны по дорожкам
  • Типовые ошибки BPMN в проектах ИС

  • Смешивание sequence flow и message flow.
  • «Слишком техническая» BPMN-модель: в процессе появляются контейнеры и компоненты вместо шагов работы.
  • Отсутствие исключений: процесс идеален на бумаге, но ломается при сбоях интеграций.
  • Ветвления без условий: шлюз есть, но непонятно, по какому правилу выбирается путь.
  • Несогласованность со статусами: BPMN говорит одно, а статусы сущности в требованиях или UML State устроены иначе.
  • Рекомендуемые форматы хранения и версионирования

    Для управляемости артефактов (из тем про инструменты и управление требованиями) полезно:

  • хранить BPMN как BPMN 2.0 XML
  • версионировать в репозитории рядом с требованиями и ADR
  • присваивать идентификаторы процессам и ключевым шагам, чтобы на них ссылались FR, NFR и AC
  • Стандарт формата: BPMN 2.0 (OMG).

    Итог

    BPMN 2.0 — основной инструмент курса для моделирования бизнес-процессов и оркестрации, потому что он:

  • делает понятными роли, шаги, события и ветвления
  • позволяет согласовать границу автоматизации и точки контроля
  • связывает требования со сквозным процессом и критериями приёмки
  • помогает проектировать устойчивость через исключения (таймауты, ошибки)
  • хорошо сочетается с C4 (границы и окружение), UML (детальные взаимодействия и статусы) и структурными методами (IDEF0, DFD)
  • 28. C4 модель: контекст, контейнеры, компоненты, код

    C4 модель: контекст, контейнеры, компоненты, код

    Зачем C4 в курсе по проектированию ИС

    В предыдущих темах курса мы уже разобрали:

  • жизненный цикл ИС и место проектирования
  • требования и их трассируемость
  • процессы (BPMN), структурные модели (IDEF0/DFD), поведение и данные (UML)
  • архитектурное проектирование: слои, сервисы, интеграции
  • На практике остаётся типовая боль: как быстро и одинаково понятно объяснить архитектуру системы разным участникам.

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

    Источник подхода: The C4 model.

    !Схема уровней C4 от общего к деталям

    Что такое C4 и какие вопросы он закрывает

    C4 это подход к описанию архитектуры программных систем через набор согласованных диаграмм.

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

  • Контекст отвечает на вопрос: что это за система и что вокруг неё
  • Контейнеры отвечают на вопрос: из каких крупных исполняемых частей состоит решение
  • Компоненты отвечают на вопрос: какие внутренние части реализуют ответственность внутри контейнера
  • Код отвечает на вопрос: как это устроено на уровне реализации (уровень часто необязателен как диаграмма)
  • Важно: C4 не заменяет UML или BPMN.

  • BPMN описывает процесс по ролям, событиям и ветвлениям
  • UML Sequence описывает взаимодействие во времени для конкретного сценария
  • UML Class описывает структуру домена и данных
  • C4 описывает архитектурные границы и разбиение на части так, чтобы остальные модели «приземлялись» в понятное окружение
  • Термины, которые нужно различать в C4

  • Система (software system): целостная программная система, которая даёт ценность пользователю
  • Контейнер (container): крупная исполняемая/развёртываемая часть системы
  • Компонент (component): логическая часть внутри контейнера, выполняющая конкретную ответственность
  • Отношение (relationship): связь между элементами с описанием смысла и технологии (например, HTTP, SQL, события)
  • Термин контейнер в C4 не равен Docker-контейнеру. Это именно архитектурный контейнер в смысле «крупный блок, который запускается/разворачивается».

    Уровень контекста

    Что показывает контекст

    System Context diagram фиксирует границу системы и её окружение:

  • пользователей и роли
  • внешние системы
  • ключевые направления взаимодействий
  • Контекст особенно важен для тем курса про требования:

  • анализ контекста и границ
  • стейкхолдеры и владельцы внешних систем
  • in scope / out of scope
  • Правила качества контекста

  • показывайте только внешних акторов и внешние системы
  • каждую связь подписывайте смыслом (не «интеграция», а «передаёт лимиты», «получает статусы заявок»)
  • у каждой внешней системы должен быть владелец (это уже управленческий артефакт, но диаграмма помогает его обнаружить)
  • Мини-пример контекста (Structurizr DSL)

    Текстовые форматы удобны тем, что диаграммы можно хранить рядом с требованиями в Git и ревьюить как код. Для C4 часто используют Structurizr DSL: Structurizr DSL.

    Когда контекст нужно обновлять

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

    Что показывает контейнерная диаграмма

    Container diagram раскрывает систему на крупные исполняемые части, например:

  • Web UI
  • Backend API
  • OLTP база
  • брокер сообщений
  • поисковый индекс
  • Контейнерная диаграмма напрямую связана с темами курса:

  • проектирование ПО: компоненты и интерфейсы
  • архитектурное проектирование: интеграции и НФТ
  • проектирование информационного обеспечения: где живут данные
  • Правила качества контейнеров

  • контейнеры должны быть разворачиваемыми единицами или явно отличимыми исполняемыми частями
  • указывайте технологию там, где это важно для решений и ограничений
  • явно показывайте каналы взаимодействия (HTTP, SQL, события)
  • Мини-пример контейнеров (Structurizr DSL)

    Как контейнеры связывать с требованиями

    Практическая трассировка, которая окупается почти всегда:

  • FR/NFR ссылаются на контейнеры, которые реализуют требование
  • ADR фиксируют решения, из-за которых появился контейнер (например, «вводим брокер сообщений из-за требований надёжности уведомлений»)
  • UML Sequence показывает, как контейнеры взаимодействуют в критическом сценарии
  • Уровень компонентов

    Что показывает компонентная диаграмма

    Component diagram раскрывает один контейнер (обычно API) на внутренние части, которые делят ответственность.

    Примеры компонентов:

  • RequestController (входные HTTP-запросы)
  • RequestService (прикладные сценарии)
  • ApprovalPolicy (правила маршрута)
  • RequestRepository (доступ к данным)
  • NotificationAdapter (внешний вызов уведомлений)
  • Это помогает удерживать:

  • ответственность
  • зависимости
  • точки интеграции
  • Правила качества компонентов

  • компонент должен отвечать за понятную ответственность, сформулированную глаголом
  • зависимости должны быть минимальными и осмысленными
  • внешние интеграции лучше выносить в адаптеры, чтобы изолировать остальной код от деталей внешнего API
  • Пример компонента и зависимостей (C4-PlantUML)

    Если вы уже используете PlantUML для UML, удобно рисовать C4 через библиотеку C4-PlantUML: C4-PlantUML. Инструмент: PlantUML.

    Как компоненты связываются с UML

    C4 показывает структуру и границы, но не заменяет поведенческие диаграммы.

  • для критических сценариев используйте UML Sequence, чтобы показать порядок взаимодействий и обработку ошибок
  • для сложных алгоритмов внутри компонента используйте UML Activity
  • для статусов сущностей используйте UML State Machine
  • Практический приём согласованности:

  • в UML Sequence используйте те же имена участников, что и в C4 (контейнеры/компоненты), чтобы команда не спорила, «кто это вообще»
  • Уровень кода

    Что означает «Code» в C4

    Уровень Code в C4 это не требование рисовать «все классы». Это скорее напоминание, что при необходимости можно опуститься до:

  • пакетов
  • модулей
  • ключевых классов
  • Чаще всего этот уровень не оформляют как отдельную C4-диаграмму, а используют существующие инженерные практики:

  • UML Class диаграммы для доменной модели
  • диаграммы зависимостей модулей
  • документацию API и схем данных
  • Когда уровень кода нужен как диаграмма

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

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

    C4 даёт сильные артефакты для этих проверок:

  • на ранних стадиях согласования требований хорошо работает контекст как доказательство понимания границ и интеграций
  • перед реализацией полезны контейнеры как согласованная структура решения
  • перед детальной реализацией критичных функций полезны компоненты и привязка к UML Sequence
  • Как использовать C4 вместе с BPMN, IDEF и DFD

    Связка с BPMN

  • BPMN отвечает: какие шаги процесса и кто их выполняет
  • C4 отвечает: какие контейнеры/системы обеспечивают автоматизацию шага
  • Проверка согласованности:

  • если в BPMN есть сервисная задача «Запросить лимиты», на C4 контексте должна существовать внешняя система, а на контейнерах должен быть контейнер, который делает запрос
  • Связка с IDEF0

  • IDEF0 показывает функции и управляющие воздействия
  • C4 показывает, где эти функции «живут» технически
  • Практический эффект:

  • механизмы (Mechanism) и внешние зависимости из IDEF0 часто становятся внешними системами на C4 контексте
  • Связка с DFD

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

  • DFD это про данные и преобразования
  • C4 это про архитектурные части и границы ответственности
  • Типовые ошибки при использовании C4

  • Смешивание уровней: на контексте пытаются показать компоненты и таблицы
  • Слишком много деталей на раннем этапе: контейнерная диаграмма превращается в схему классов
  • Отсутствие подписей связей: линии есть, смысла нет
  • Неполные интеграции: забыли внешнюю систему, а затем интеграция «всплыла» в разработке
  • Нет связей с требованиями: диаграммы существуют отдельно и не помогают анализу влияния
  • Минимально достатный набор C4 для большинства ИС

    Если нужна практичная «норма» для корпоративного проекта:

  • Контекст: система, внешние акторы, внешние системы, смысл связей.
  • Контейнеры: UI, API, основная БД, брокер/кэш/поиск при необходимости.
  • Компоненты: только для ключевых контейнеров (обычно API) и только до уровня ответственности.
  • Код: включать точечно (обычно как UML Class/пакеты) там, где это нужно для качества реализации.
  • Этого достаточно, чтобы связать:

  • требования и границы
  • архитектуру и интеграции
  • критические сценарии в UML Sequence
  • эксплуатационные требования (логи, метрики, алерты) на уровне контейнеров
  • Рекомендуемые форматы для командной работы

  • C4 как код: Structurizr DSL
  • C4 в PlantUML: C4-PlantUML
  • генерация диаграмм и хранение в Git вместе с требованиями и ADR
  • Итог

    C4 модель это практичный способ держать архитектуру ИС понятной и согласованной на разных уровнях детализации:

  • контекст фиксирует границы, акторов и внешние зависимости
  • контейнеры показывают крупные исполняемые части и технологические решения
  • компоненты раскрывают ответственность внутри контейнера и помогают проектировать интерфейсы
  • код включается по необходимости, обычно через существующие инженерные артефакты (UML, модульные схемы)
  • В связке с BPMN, UML, IDEF и DFD C4 помогает удерживать трассировку: от требований и процессов к архитектурным решениям, сценариям взаимодействия и проверкам.

    29. Валидация проектных решений и согласование с требованиями

    Валидация проектных решений и согласование с требованиями

    Зачем нужна валидация проектных решений

    В предыдущих темах курса мы прошли путь от жизненного цикла и контрольных точек к требованиям, трассировке, моделям процессов (BPMN), архитектуры (C4), поведения и данных (UML, DFD, ER), а также к инструментам и репозиториям моделей. На этом этапе появляется практическая проблема: проектные решения уже приняты и зафиксированы в артефактах, но нужно доказать, что они действительно:

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

    Опорные стандарты и спецификации, с которыми эта тема связана:

  • ISO/IEC/IEEE 29148 как ориентир по качеству требований
  • ISO/IEC 25010 как модель качества систем и ПО
  • Верификация и валидация: что именно мы делаем

    Чтобы не было путаницы терминов:

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

    Что считается проектным решением и где оно фиксируется

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

    Типовые классы решений:

  • границы системы и ответственность на границе;
  • разбиение на контейнеры и компоненты;
  • способ интеграции: синхронно или асинхронно;
  • политика ошибок, таймаутов, повторов и идемпотентности;
  • модель данных, источники истины, правила качества;
  • наблюдаемость: логи, метрики, трассировка.
  • Чтобы решения были управляемыми, их фиксируют как артефакты. Практика записи решений обычно оформляется как ADR (Architecture Decision Record).

    Минимально полезный состав ADR:

  • контекст и проблема;
  • решение;
  • рассмотренные альтернативы;
  • последствия и риски.
  • Базовая логика согласования: от требований к решениям и проверкам

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

  • обосновать решение требованием;
  • найти, что затронет изменение;
  • заранее подготовить проверки и приёмку.
  • !Цепочка артефактов, которая делает проектирование проверяемым

    Практический минимум связей:

  • требование связывается с шагом процесса или сценарием;
  • требование связывается с решением (ADR) и местом реализации в архитектуре (C4);
  • требование связывается с проверкой: критерии приёмки и тестовый сценарий.
  • Что именно валидируют в проектных решениях

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

    Покрытие функциональных требований

    Проверяем, что:

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

  • BPMN модель целевого процесса: BPMN 2.0
  • UML Use Case и текстовые сценарии: UML
  • Согласованность статусов, правил и жизненных циклов

    Проверяем, что статусы сущностей и переходы:

  • не противоречат процессу (BPMN);
  • реализуемы в интерфейсе и API;
  • имеют правила прав доступа и аудита.
  • Полезные артефакты:

  • UML State Machine для статусов: UML
  • требования к аудиту и журналированию (как NFR)
  • Корректность интеграций и контрактов

    Проверяем, что:

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

  • C4 Context и Container: The C4 model
  • UML Sequence для сценариев и деградации: UML
  • формат ошибок для HTTP API, если применимо: RFC 7807
  • Согласованность данных и источников истины

    Проверяем, что:

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

  • DFD и словарь данных
  • ER или UML Class как доменная модель: UML
  • Достижимость нефункциональных требований

    Проверяем, что NFR не остаются словами и имеют механизм реализации:

  • производительность: кэш, очереди, лимиты, измеримые метрики;
  • безопасность: SSO, роли, аудит, защита данных;
  • UX: понятные статусы, сообщения об ошибках, критерии выполнения задач;
  • эксплуатация: наблюдаемость, резервирование, процедуры восстановления.
  • Для перечисления качества систем удобно использовать характеристики из ISO/IEC 25010 и связывать их с конкретными сценариями.

    Как проводить валидацию: практики и форматы

    Ревью проектных решений по сценариям

    Сильная практика для ИС — сценарно-ориентированная валидация.

    Последовательность выглядит так:

  • Выбирается критический сценарий.
  • Проверяется его место в BPMN и роли.
  • Проверяется трассировка к требованиям FR и NFR.
  • Проверяется C4: какие контейнеры участвуют.
  • Проверяется UML Sequence: вызовы, ошибки, таймауты, повторы.
  • Проверяется, что есть критерии приёмки, которые покрывают и основной поток, и деградацию.
  • Критический сценарий — это обычно сценарий, который:

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

    В проектах ИС проблема часто не в отдельной диаграмме, а в противоречии между ними.

    Минимальные проверки согласованности:

  • BPMN показывает внешний обмен сообщениями, и эти внешние системы существуют в C4 контексте.
  • C4 контейнеры, участвующие в шаге BPMN, покрыты интерфейсами и сценариями в UML Sequence.
  • UML State не разрешает переходов, которых требует BPMN, и наоборот.
  • DFD потоки имеют структуру в словаре данных и отображаются в модели данных.
  • Прототипирование и технические проверки как часть валидации

    Не все решения можно валидировать «на бумаге». Для рисковых зон применяют:

  • прототип UI, чтобы подтвердить сценарии и UX критерии;
  • прототип интеграции, чтобы подтвердить доступность, таймауты, формат данных;
  • нагрузочную проверку на раннем стенде для критических API.
  • Важно: прототип является входом в проектные решения, а не заменой требований.

    Контрольные точки и quality gates для проектирования

    Из тем про жизненный цикл и качество мы уже вводили идею контрольных точек. Для валидации проектных решений удобно использовать quality gates.

    !Контрольные точки качества, которые удерживают проект от поздних сюрпризов

    Ниже — практический пример, что проверять на gates.

    | Gate | Цель | Минимальные доказательства | Кто обычно подтверждает | |---|---|---|---| | Gate требований | есть проверяемая основа для проектирования | baseline требований, сценарии, NFR, acceptance criteria | заказчик, аналитик | | Gate архитектуры | решения выполнимы и покрывают риски | C4 контекст/контейнеры, ADR по ключевым решениям, UML Sequence для критических сценариев | архитектор, безопасность, эксплуатация | | Gate готовности к реализации | команда понимает, что строить и как проверять | спецификации интерфейсов, обновлённые модели данных, тестовые сценарии на критические потоки | техлид, QA, эксплуатация |

    Чек-лист валидации проектного решения

    Чтобы решение считалось согласованным, оно должно выдерживать короткую проверку.

    Контекст и границы

  • решение не меняет границы системы без явного согласования;
  • внешние зависимости указаны и имеют владельцев;
  • out of scope фиксирован и подтверждён.
  • Требования и сценарии

  • решение связано с конкретными FR и NFR;
  • есть сценарии и исключения, которые решение покрывает;
  • есть критерии приёмки, подтверждающие поведение.
  • Архитектура и размещение ответственности

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

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

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

    Практическая последовательность:

  • Изменение фиксируется как запрос на изменение.
  • Выполняется анализ влияния по трассировке: какие требования, диаграммы, ADR, тесты затронуты.
  • Обновляются артефакты и версии (включая BPMN 2.0 XML, PlantUML, Structurizr DSL).
  • Изменение проходит ревью и подтверждается на соответствующем gate.
  • Для командной работы полезны воспроизводимые форматы:

  • UML в текстовом виде: PlantUML
  • C4 как код: Structurizr DSL
  • Типовые ошибки валидации и как их предотвращать

  • Согласовали требования, но не связали с проверками: добавлять acceptance criteria и тестовые сценарии до начала реализации.
  • Решения есть, но не объяснены: фиксировать ключевые решения через ADR с последствиями.
  • Диаграммы противоречат друг другу: вводить ревью согласованности между BPMN, C4 и UML на gate архитектуры.
  • НФТ “всплывают” поздно: привязывать NFR к конкретным операциям и сценариям и проверять на архитектурном ревью.
  • Модели не версионируются: хранить модели и требования в управляемом репозитории и обновлять их вместе с change request.
  • Итог

    Валидация проектных решений и согласование с требованиями превращают проектирование ИС в управляемый переход от потребностей к реализуемому решению:

  • проектные решения должны быть трассируемы к требованиям и сценариям;
  • согласованность между BPMN, C4, UML, DFD и моделью данных проверяется как отдельная задача качества;
  • quality gates позволяют ловить ошибки до реализации;
  • ADR, критерии приёмки и сценарии ошибок делают решения проверяемыми и устойчивыми к изменениям.
  • Следующие темы курса логично опираются на эту дисциплину: чем глубже детализация (интерфейсы, компоненты, интеграции, данные), тем важнее системная проверка согласованности артефактов и готовности к приёмке и эксплуатации.

    3. Классификация ИС: по назначению, масштабу и архитектуре

    Классификация ИС: по назначению, масштабу и архитектуре

    Зачем классифицировать информационные системы

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

    Классификация нужна не ради “ярлыков”, а чтобы:

  • точнее формулировать требования и ожидания
  • понимать типовые функции и ограничения для данного класса систем
  • выбирать подходящие нотации и артефакты (BPMN для процессов, C4 для границ и архитектуры, UML для поведения и структуры)
  • не перепутать уровень задач: бизнес-цель, процесс, ПО и инфраструктуру
  • В этой статье разберём три наиболее полезных оси классификации:

  • по назначению (какую бизнес-задачу решает ИС)
  • по масштабу (сколько людей, подразделений и организаций охватывает)
  • по архитектуре (как технически устроена программная часть)
  • !Схема показывает, что одну и ту же систему можно описывать одновременно по трём независимым признакам

    Классификация по назначению

    Назначение ИС — это то, какую функцию в деятельности организации она поддерживает: учёт, управление, анализ, взаимодействие, интеграции.

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

    Операционные (транзакционные) системы

    Операционные ИС поддерживают повседневные операции и фиксируют события: продажи, перемещения, начисления, обращения.

    Характерные признаки:

  • много однотипных операций (транзакций)
  • высокая важность целостности данных
  • требования к доступности и скорости в рабочее время
  • Примеры:

  • кассовые системы
  • складской учёт
  • регистрация заявок в сервис-деске
  • Управленческие системы

    Управленческие ИС помогают руководителям контролировать выполнение планов и управлять ресурсами.

    Типовые функции:

  • планирование и контроль показателей
  • отчётность по подразделениям и периодам
  • согласования и регламенты
  • Примеры классов систем:

  • ERP (системы управления ресурсами предприятия) — см. ERP
  • CRM (управление взаимоотношениями с клиентами) — см. CRM
  • Аналитические системы

    Аналитические ИС превращают данные в информацию для принятия решений: отчёты, витрины, анализ трендов.

    Отличительные особенности:

  • запросы часто “тяжелее”, чем в операционных системах
  • важны историчность данных и единые справочники
  • качество данных критично: ошибки и расхождения искажают управленческие выводы
  • Термины, которые часто встречаются рядом:

  • BI (Business Intelligence) — см. Бизнес-аналитика
  • OLAP (многомерный анализ) — см. OLAP
  • DWH (хранилище данных) — см. Хранилище данных
  • Интеграционные системы

    Интеграционные ИС обеспечивают обмен данными между системами и согласование форматов/протоколов.

    Задачи интеграции:

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

  • ESB (корпоративная сервисная шина) — см. Enterprise service bus
  • API-шлюзы (публикация и защита интерфейсов)
  • Коммуникационные и совместной работы

    ИС совместной работы поддерживают коммуникации и коллективные процессы.

    Примеры:

  • корпоративные порталы
  • системы электронного документооборота
  • таск-трекеры и базы знаний
  • Системы поддержки принятия решений

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

    Отличие от “обычной аналитики” в том, что результатом является не только отчёт, но и рекомендация или выбор.

    Справочно: Система поддержки принятия решений

    Классификация по масштабу

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

    Персональные и локальные

    Персональные/локальные системы работают на уровне одного пользователя или небольшой группы.

    Особенности:

  • простые роли
  • минимум интеграций
  • часто нет формализованного владения данными и регламентов
  • Примеры:

  • локальный учёт в небольшой команде
  • специализированный инструмент для одного специалиста
  • Подразделенческие

    Подразделенческие системы обслуживают отдел или функцию (продажи, закупки, HR).

    Особенности:

  • появляются роли и права доступа
  • важны отчёты внутри подразделения
  • интеграции “точка-точка” ещё возможны, но начинают создавать технический долг
  • Примеры:

  • CRM отдела продаж
  • система заявок ИТ-службы
  • Корпоративные (уровня предприятия)

    Корпоративные системы охватывают несколько подразделений и поддерживают сквозные процессы.

    Особенности:

  • требуется единая терминология и справочники
  • появляются сложные интеграции и общие правила
  • растёт значимость нефункциональных требований (доступность, производительность, безопасность)
  • Примеры:

  • ERP
  • корпоративный документооборот
  • Межорганизационные и экосистемные

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

    Особенности:

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

  • B2B-порталы поставщиков
  • маркетплейсы
  • системы электронного обмена документами между компаниями
  • Как масштаб влияет на набор моделей

    Полезная связка с нотациями курса:

  • на корпоративном и межорганизационном уровне особенно важны C4-диаграммы контекста и контейнеров, чтобы согласовать границы и интеграции
  • по мере роста масштаба возрастает ценность BPMN (сквозные процессы между ролями и подразделениями)
  • на уровне компонентов и поведения чаще подключается UML (последовательности, состояния, компоненты)
  • Классификация по архитектуре

    Архитектура ИС — это ключевые решения о структуре программной части: из каких частей она состоит, как эти части взаимодействуют, как разворачиваются и масштабируются.

    Ниже — наиболее распространённые архитектурные стили, которые важно различать на уровне проектирования.

    Монолит

    Монолит — приложение, где основные функции собраны в одном развёртываемом блоке.

    Плюсы:

  • проще стартовать
  • проще транзакции и целостность в рамках одной базы и одного приложения
  • Минусы:

  • сложнее развивать большой командой
  • сложнее независимые релизы частей
  • Справочно: Монолитная архитектура

    Модульный монолит

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

    Идея:

  • развёртывание остаётся единым
  • проектирование модулей похоже на проектирование “будущих сервисов”, но без преждевременной сложности микросервисов
  • Клиент–сервер и многоуровневые системы

    Клиент–сервер — пользователи работают через клиент (браузер, мобильное приложение, толстый клиент), который взаимодействует с сервером.

    Справочно: Клиент-серверная архитектура

    Частный случай — трёхуровневая архитектура:

  • уровень представления (UI)
  • уровень логики (сервер приложений)
  • уровень данных (БД)
  • Справочно: Многоуровневая архитектура

    SOA (сервис-ориентированная архитектура)

    SOA — подход, где функции предоставляются как сервисы с формальными интерфейсами.

    Сильные стороны:

  • систематизация интеграций
  • повторное использование сервисов
  • Риски:

  • возможная избыточная сложность, если границы сервисов выбраны неправильно
  • Справочно: Service-oriented architecture

    Микросервисы

    Микросервисная архитектура — система состоит из набора небольших сервисов, которые можно разрабатывать и развёртывать независимо.

    Плюсы:

  • независимые релизы
  • масштабирование “точечно” (только нагруженных частей)
  • Минусы:

  • сложнее эксплуатация (мониторинг, трассировка, сеть)
  • сложнее согласованность данных и транзакции между сервисами
  • Справочно: Microservices

    Событийно-ориентированная архитектура

    Событийно-ориентированная архитектура строится вокруг событий: “что-то произошло”, а подписчики реагируют.

    Зачем применяется:

  • уменьшить связанность между частями системы
  • повысить устойчивость к пиковым нагрузкам
  • Справочно: Event-driven architecture

    Serverless (функции как сервис)

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

    Особенности:

  • разработчики меньше думают о серверах
  • удобно для нерегулярных или событийных нагрузок
  • Справочно: Serverless computing

    Как архитектурная классификация связана с нотациями

    Чтобы архитектурные решения были согласованными и проверяемыми:

  • C4 используют для описания контекста, контейнеров и компонентов, чтобы договориться что где находится и кто с кем интегрируется
  • UML-диаграммы последовательностей применяют, чтобы показать ключевые сценарии взаимодействий (например, синхронный вызов API или публикация события)
  • BPMN помогает связать архитектуру с процессом: где шаг автоматизирован, а где остаётся ручным
  • Частые ошибки при выборе класса системы

  • Подмена назначения: систему, которая должна быть операционной, проектируют как “отчётную”, и пользователи не могут нормально выполнять ежедневные операции.
  • Игнорирование масштаба: требования безопасности и ролей не учитывают будущий рост и подключение внешних участников.
  • Архитектура “по моде”: микросервисы выбирают без потребности в независимых релизах и без готовности к усложнению эксплуатации.
  • Несогласованность классификаций: по назначению система уже “корпоративная”, а по архитектуре и данным спроектирована как локальная (нет справочников, нет стратегии интеграции).
  • Итог

    Классификация ИС по назначению, масштабу и архитектуре даёт проектировщику общий язык для обсуждения требований и решений:

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

    30. Проектная документация и подготовка к реализации и тестированию

    Проектная документация и подготовка к реализации и тестированию

    Зачем нужна проектная документация на стыке проектирования, реализации и тестирования

    В предыдущих темах курса мы построили основу проектирования ИС: жизненный цикл и контрольные точки, требования и их управление, модели процессов (BPMN), функции и потоки (IDEF0, DFD), данные (ER/UML Class), архитектуру (C4), поведение (UML Sequence/State), а также практики валидации решений.

    На этом этапе у команды обычно появляется ключевой риск: всё вроде бы описано, но разработка и тестирование всё равно идут через догадки.

    Проектная документация в контексте курса нужна не для отчётности, а чтобы:

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

    Базовые определения

    Чтобы дальше не было неоднозначностей, зафиксируем термины.

  • Проектная документация: согласованный и версионируемый набор артефактов, который описывает что строим, как устроено решение, как проверяем и как меняем.
  • Пакет проектных артефактов: минимально достатный комплект документов и моделей, который позволяет начать реализацию без критических пробелов.
  • Базовая линия (baseline): зафиксированная версия требований и проектных артефактов, относительно которой принимаются изменения.
  • Тестируемость: свойство требований и решений быть проверяемыми через критерии приёмки и тесты.
  • В качестве опорных источников для качества требований и формулировок полезны:

  • ISO/IEC/IEEE 29148 как ориентир по инженерии требований
  • RFC 2119 как словарь модальных слов для формальных требований
  • Принципы хорошей проектной документации в ИС-проектах

    Документация как система артефактов, а не набор файлов

    Документация становится рабочей, когда артефакты связаны:

  • требование FR/NFR связано со сценарием или шагом процесса
  • шаг процесса связан с компонентом или интерфейсом
  • требование связано с критериями приёмки и тестами
  • архитектурное решение зафиксировано как ADR и объясняет последствия
  • Без связей документы начинают противоречить друг другу.

    Достаточно, чтобы безопасно реализовать и проверить

    Перегруз документацией так же опасен, как и недописанность. Практический критерий достаточности:

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

    Если требования хранятся в одном месте, модели в другом, а решения в третьем, baseline становится фикцией.

    Практический минимум:

  • единые идентификаторы (FR-, NFR-, AC-, ADR-)
  • версии процессов/диаграмм
  • правило: изменение считается завершённым только после обновления связанных артефактов
  • Состав проектной документации: что обычно входит в пакет перед реализацией

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

    Требования и приёмка

  • Baseline требований: версия SRS или согласованный срез бэклога
  • Функциональные требования FR-...
  • Нефункциональные требования NFR-...
  • Критерии приёмки AC-... для ключевых требований
  • Реестр открытых вопросов и допущений
  • Полезные источники, чтобы удерживать проверяемость:

  • ISO/IEC/IEEE 29148
  • Cucumber как пример экосистемы для BDD-стиля критериев, если команда автоматизирует тесты
  • Модели процессов, функций и границ

  • BPMN процесса как будет для сквозных потоков и согласований: BPMN 2.0
  • IDEF0 для функциональной декомпозиции и управляющих воздействий: IDEF (NIST)
  • DFD и словарь данных для потоков и структур данных
  • Практический смысл: эти модели объясняют что происходит и какие данные участвуют, а требования фиксируют обязательства системы.

    Архитектура и проектные решения

  • C4 System Context и C4 Container как минимум: The C4 model
  • при необходимости C4 Component для ключевых контейнеров
  • ADR для ключевых решений: асинхронность, кэш, стратегия интеграций, хранение аудита
  • Для воспроизводимой фиксации диаграмм:

  • Structurizr DSL
  • C4-PlantUML
  • Поведение, данные и интерфейсы

  • UML Use Case для акторов и границы ответственности
  • UML Class как концептуальная/логическая модель домена
  • UML Sequence для критических сценариев, включая ошибки и деградацию
  • UML State Machine для сущностей со статусами
  • Спецификации:

  • UML (OMG)
  • PlantUML как практичный формат хранения диаграмм в текстовом виде
  • Для интерфейсов:

  • спецификация HTTP API в OpenAPI: OpenAPI Specification
  • формат ошибок для HTTP API: RFC 7807
  • Документация для тестирования

    Чтобы тестирование было планируемым, обычно готовят:

  • список тестируемых требований и критериев приёмки
  • набор тестовых сценариев и тест-кейсов для критических потоков
  • тестовые данные и правила подготовки окружения
  • минимальный план тестирования и границы тестирования
  • Для базовых определений терминов тестирования удобно использовать:

  • ISTQB Glossary
  • Эксплуатационные артефакты, влияющие на тестирование

    Даже если эксплуатация формально позже, до реализации полезно зафиксировать минимум, потому что это влияет на сценарии тестов:

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

    Как сделать требования готовыми к реализации

    Definition of Ready для требований

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

    Минимально достаточные критерии готовности для требования или user story:

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

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

    Трассируемость как механизм подготовки к тестированию

    Почему тестирование начинается ещё на требованиях

    Если критерии приёмки отсутствуют, тестирование будет строиться по догадкам, а приёмка станет спором.

    Практический минимум связей:

  • FR/NFRAC
  • AC → тестовый сценарий или тест-кейс
  • критические интеграции → UML Sequence с ошибками
  • Минимальная матрица трассируемости

    | Требование | Критерии приёмки | Процесс/сценарий | Проектное решение | Проверка | |---|---|---|---|---| | FR-014 | AC-014-1, AC-014-2 | BPMN-Proc-01:Submit | ADR-002 очередь уведомлений | TC-014-1, TC-014-2 |

    Практический эффект: при изменении FR-014 сразу видно, какие тесты и решения надо пересмотреть.

    Подготовка к реализации: что именно должно быть “понятно разработке”

    Пакет на старт реализации

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

  • baseline требований и приоритеты
  • C4 контекст и контейнеры
  • список интеграций и владельцев
  • спецификации ключевых интерфейсов (хотя бы черновые)
  • UML Sequence для 1–3 критических сценариев
  • модель данных и словарь данных для ключевых потоков
  • ADR по ключевым решениям
  • Что часто забывают и из-за чего возникают задержки

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

    Готовность критериев приёмки

    Критерии приёмки должны быть:

  • однозначными
  • проверяемыми
  • привязанными к роли и ситуации
  • Пример в стиле Given/When/Then:

    Этот критерий тестируем и функционально, и как проверку деградации.

    Минимальные тестовые артефакты, которые стоит подготовить заранее

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

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

    Чтобы baseline и изменения были управляемыми, удобно хранить артефакты рядом.

    Пример структуры репозитория

    Какие форматы помогают в совместной работе

  • UML как текст: PlantUML
  • C4 как код: Structurizr DSL
  • BPMN как обменный формат: BPMN 2.0
  • Контрольная точка перед реализацией и тестированием

    В логике жизненного цикла и quality gates из предыдущих тем, перед началом реализации полезно провести gate готовности к реализации, а перед началом системного тестирования gate готовности к тестированию.

    Gate готовности к реализации

    Минимальные критерии:

  • baseline требований утверждён
  • границы системы и интеграции согласованы (C4 контекст)
  • архитектурные решения, влияющие на НФТ, зафиксированы (ADR)
  • критические сценарии описаны (UML Sequence) и покрывают ошибки
  • модель данных для критических потоков определена и согласована
  • Gate готовности к тестированию

    Минимальные критерии:

  • для ключевых требований есть AC и они проверяемы
  • тестовые данные и окружение определены
  • определены метрики и проверки для NFR
  • известны ожидаемые реакции на сбои внешних зависимостей
  • !Схема контрольных точек качества перед реализацией и тестированием

    Типовые ошибки в проектной документации и как их предотвратить

  • Диаграммы не связаны с требованиями
  • Есть требования, но нет критериев приёмки
  • Интеграции описаны без ошибок, таймаутов и повторов
  • Статусы сущности есть в UI, но нет формальной модели переходов
  • Baseline отсутствует, изменения идут “в чате”
  • Практическая защита:

  • единые ID и трассировка
  • gate требований и gate архитектуры
  • UML Sequence для критических сценариев, включая деградацию
  • ADR для решений с последствиями
  • хранение артефактов в управляемом репозитории
  • Итог

    Проектная документация на стыке проектирования, реализации и тестирования нужна, чтобы ИС развивалась управляемо:

  • требования становятся готовыми к разработке через baseline, сценарии и критерии приёмки
  • архитектура и поведение становятся проверяемыми через C4, ADR и UML Sequence
  • тестирование становится планируемым через трассировку FR/NFR → AC → тест
  • изменения становятся управляемыми через единый контур версий и анализ влияния
  • Дальнейшая работа в курсе опирается на эту дисциплину: любые диаграммы и спецификации ценны ровно настолько, насколько они помогают реализовать и проверить требования без противоречий и сюрпризов на поздних стадиях жизненного цикла.

    4. Участники и роли: заказчик, пользователь, аналитик, архитектор

    Участники и роли: заказчик, пользователь, аналитик, архитектор

    Зачем в проектировании ИС явно разделять роли

    В предыдущих статьях мы договорились о базовых понятиях (данные, информация, система, ИС) и посмотрели, что ИС бывают разного назначения, масштаба и архитектуры. Следующий практический шаг в проектировании — понять, кто именно участвует в создании ИС и какую ответственность несёт.

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

    Полезная опорная формула:

  • Заказчик формулирует зачем и какой результат нужен бизнесу.
  • Пользователь показывает как выполняется работа и что должно быть удобно и возможно в реальности.
  • Аналитик переводит потребности в проверяемые требования и модели предметной области/процессов.
  • Архитектор превращает требования в архитектурные решения и проверяет выполнимость по качественным атрибутам.
  • Если эти роли смешать, появляются типовые ошибки:

  • требования превращаются в список экранов без бизнес-целей
  • архитектура выбирается “по моде”, а не по ограничениям
  • пользователь “назначается виноватым” за неудобный процесс, который ему никто не показывал
  • Базовые термины: участник, роль, ответственность

  • Участник — конкретный человек или группа людей (например, “главный бухгалтер”, “команда эксплуатации”).
  • Роль — набор ожидаемых действий и ответственности в проекте (один человек может совмещать роли).
  • Стейкхолдер — любой, на кого влияет система или кто влияет на требования и решения. Справочно: Stakeholder.
  • Зона ответственности — что роль обязана сделать и за что её можно объективно оценить.
  • Практическое правило: в проекте нужно фиксировать не должности, а роли и ответственность, потому что должности разные, а роль “заказчик” или “пользователь” повторяется почти всегда.

    Заказчик: кто платит и принимает результат

    Кто обычно является заказчиком

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

    Типовые варианты:

  • руководитель подразделения (владелец функции)
  • владелец продукта (в продуктовой разработке)
  • комитет или несколько заказчиков (в корпоративных системах)
  • Важно: заказчик не всегда “самый громкий”. Заказчик — тот, кто имеет право принять или не принять результат и несёт ответственность за бизнес-эффект.

    Что должен дать заказчик проектированию

    Ключевые вклад и решения заказчика:

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

  • формулировка требований как готового решения: “сделайте как в системе X” вместо “нужно сократить время обработки до Y”
  • ожидание, что аналитик “сам угадает процесс” без участия пользователей
  • отсутствие единой точки принятия решений при нескольких заказчиках
  • Пользователь: кто работает в системе каждый день

    Кто такой пользователь

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

    В одном проекте обычно несколько классов пользователей:

  • исполнители (ввод, обработка, подготовка документов)
  • контролёры и согласующие (проверка, утверждение, отклонение)
  • администраторы (настройки, справочники, права)
  • внешние пользователи (клиенты, партнёры) в межорганизационных ИС
  • Что должен дать пользователь проектированию

    Пользовательский вклад особенно важен, потому что он превращает абстрактную “автоматизацию” в проверяемые сценарии:

  • сценарии работы “как есть” и “как должно быть”
  • исключения и нестандартные ситуации
  • реальные данные и документы, с которыми работают
  • критерии удобства и скорости выполнения операций
  • обратная связь по прототипам и моделям процессов
  • Типовые ошибки с пользователями

  • путать “самого опытного” пользователя с “типичным” и проектировать под редкие кейсы
  • собирать мнения без фиксации приоритетов и решений
  • игнорировать влияние мотивации: пользователь может сопротивляться изменениям процесса, даже если система “технически хорошая”
  • Аналитик: перевод потребностей в требования и модели

    Кто такой аналитик в контексте ИС

    В проектах встречаются разные специализации:

  • бизнес-аналитик ближе к целям, процессам и правилам
  • системный аналитик ближе к спецификации функций, интерфейсов и данных
  • В рамках курса будем называть роль обобщённо: аналитик.

    Главная ответственность аналитика

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

    Что делает аналитик:

  • выявляет стейкхолдеров и их цели
  • описывает процессы и сценарии
  • формулирует и структурирует требования
  • устраняет противоречия и пробелы
  • обеспечивает трассировку: от цели до требования и далее до проектного решения и тестов
  • Какие артефакты обычно создаёт аналитик

    Набор артефактов зависит от масштаба и методологии, но типовой список выглядит так:

  • список стейкхолдеров и ролей пользователей
  • глоссарий терминов предметной области
  • модели процессов в BPMN
  • функциональные требования и бизнес-правила
  • описание данных на уровне сущностей и атрибутов
  • пользовательские сценарии и критерии приёмки
  • Справочно о BABOK как о своде практик бизнес-анализа: Business Analysis Body of Knowledge.

    Типовые ошибки аналитика

  • писать “общее описание” без проверяемых критериев
  • не фиксировать решения и допущения, оставляя “устные договорённости”
  • уходить в детализацию экранов до согласования границ и целей
  • Архитектор: как сделать систему выполнимой и развиваемой

    Кто такой архитектор

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

    В проектах встречаются разновидности:

  • архитектор решения (solution architect)
  • корпоративный архитектор (enterprise architect)
  • технический архитектор (ближе к платформе и инфраструктуре)
  • Главная ответственность архитектора

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

    Типовые задачи:

  • зафиксировать границы системы и контекст интеграций
  • выбрать архитектурный стиль и ключевые подходы
  • определить разбиение на контейнеры и компоненты
  • определить принципы работы с данными и интеграциями
  • согласовать решения с эксплуатацией и безопасностью
  • Какие артефакты обычно создаёт архитектор

  • архитектурные диаграммы по C4 (контекст, контейнеры, компоненты)
  • ключевые сценарии взаимодействий в UML (например, диаграммы последовательностей)
  • архитектурные решения и их обоснования (почему выбран именно такой вариант)
  • требования к эксплуатации: логирование, мониторинг, резервирование
  • Справочно о модели C4: The C4 model.

    Типовые ошибки архитектора

  • выбирать решения без подтверждённых требований и ограничений
  • “оптимизировать заранее”, усложняя систему без необходимости
  • не договариваться об эксплуатационной модели, из-за чего система “не живёт” после внедрения
  • Как роли взаимодействуют: кто кому что должен

    Ниже — практическая схема обмена результатами между четырьмя ролями.

    !Карта коммуникаций между заказчиком, пользователем, аналитиком и архитектором

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

    Границы ответственности: что такое RACI на практике

    Чтобы не спорить “кто должен был”, часто используют матрицу ответственности RACI:

  • R: Responsible, выполняет работу
  • A: Accountable, несёт итоговую ответственность и принимает
  • C: Consulted, консультирует и даёт входные данные
  • I: Informed, получает информацию
  • Справочно: Responsibility assignment matrix.

    Пример упрощённого распределения для проектирования ИС:

    | Активность | Заказчик | Пользователь | Аналитик | Архитектор | |---|---|---|---|---| | Определение целей и метрик успеха | A | C | R | C | | Описание процесса и сценариев | C | R | A | C | | Формулирование требований | C | C | A/R | C | | Выбор архитектуры и ключевых решений | I | C | C | A/R | | Согласование изменений требований | A | C | R | C |

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

    Привязка ролей к нотациям курса

    Чтобы связать роли с методами и нотациями, полезно помнить:

  • BPMN чаще всего является рабочим языком для связи заказчика, пользователя и аналитика: “кто что делает, где ветвления, где автоматизация”. Справочно: BPMN.
  • IDEF0 полезен, когда нужно договориться о функциях, входах, выходах, управляющих воздействиях и механизмах, особенно на раннем обследовании.
  • UML чаще всего включается, когда аналитик и архитектор уточняют поведение системы: сценарии взаимодействия, состояния сущностей, структура модели. Справочно: UML.
  • C4 помогает архитектору и всей команде быстро согласовать границы системы, контейнеры и интеграции на понятном уровне.
  • Важно: нотации не “назначаются ролям”, они поддерживают коммуникацию. Но если роль не участвует в разборе модели, модель перестаёт выполнять свою функцию.

    Типовые конфликтные зоны и как их предотвращать

    Конфликт “заказчик просит одно, пользователь хочет другое”

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

    Что помогает:

  • фиксировать метрики успеха и критерии приёмки
  • показывать пользователю целевой процесс и объяснять причины изменений
  • согласовывать компромиссы письменно как решения, а не как “мнение на встрече”
  • Конфликт “аналитик написал требования, архитектор говорит, что так нельзя”

    Причина: нефункциональные требования и ограничения инфраструктуры выявлены поздно.

    Что помогает:

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

    Причина: нет общего понимания минимально достаточного решения.

    Что помогает:

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

    Проектирование ИС — это не только выбор нотаций и построение диаграмм, но и согласование ответственности между ключевыми ролями:

  • заказчик задаёт цель, приоритеты и принимает результат
  • пользователь подтверждает реальность сценариев и удобство работы
  • аналитик превращает потребности в проверяемые требования и модели
  • архитектор обеспечивает выполнимость и качество решения через архитектуру
  • В следующих темах курса это разделение станет практической основой для разговора о жизненном цикле и требованиях: кто инициирует изменения, кто формулирует и согласует требования, кто принимает архитектурные решения и как это отражается в UML, IDEF, BPMN и C4.

    5. История развития ИС и эволюция подходов

    История развития ИС и эволюция подходов

    Зачем проектировщику знать историю ИС

    В предыдущих темах мы договорились о базовых понятиях (данные, информация, система, ИС), рассмотрели классификации ИС и роли участников. История развития информационных систем полезна не как перечень дат, а как объяснение того, почему в проектах сосуществуют разные подходы (структурные методы, UML, BPMN, C4) и когда какой из них уместен.

    Историческая перспектива помогает:

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

    Как менялась роль ИС: от автоматизации учёта к цифровым продуктам

    Эволюция ИС происходила не линейно, но почти всегда толкалась одними и теми же силами:

  • рост объёма данных и числа пользователей
  • необходимость интеграции (систем становится много)
  • увеличение требований к доступности, безопасности и аудиту
  • переход от редких релизов к частым изменениям
  • В результате менялся и фокус проектирования:

  • Сначала важно было просто зафиксировать данные и корректно выполнить расчёты.
  • Затем стало важно описать функции и потоки работ между подразделениями.
  • Потом основной проблемой стала сложность программной системы и повторное использование.
  • Позже критичным стало управление процессами и интеграциями.
  • Сегодня на первый план вышли архитектура, эксплуатация, скорость изменений и работа с данными на масштабе предприятия и экосистем.
  • Ключевые этапы развития ИС и связанные подходы

    Пакетная обработка и ранняя автоматизация

    Ранние корпоративные вычисления были ориентированы на пакетную обработку: данные вводились партиями, результаты получались отчётами. Проектирование в этом контексте чаще означало:

  • описать источники данных и формат ввода
  • определить набор отчётов и расчётов
  • обеспечить корректность и повторяемость обработки
  • С точки зрения нотаций это ещё не эпоха UML/BPMN/C4, но уже появляется потребность формально описывать данные и правила.

    Структурный анализ и проектирование: функции и потоки

    С ростом систем стало недостаточно описывать только “что хранить”. Появилась необходимость понимать:

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

  • функциональная декомпозиция (типовой пример нотации: IDEF0)
  • моделирование потоков данных (семейство DFD-подходов)
  • ранние дисциплины управления требованиями и документацией
  • IDEF0 остаётся полезным и сегодня, когда нужно договориться о верхнеуровневых функциях и границах ответственности: IDEF (NIST).

    Моделирование данных: от файлов к концептуальным моделям

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

    В семействе IDEF это отражено в IDEF1X (моделирование данных), которое исторически помогало:

  • фиксировать сущности и связи предметной области
  • снижать неоднозначность терминов (что такое “клиент”, “договор”, “платёж”)
  • поддерживать целостность данных при усложнении системы
  • Объектно-ориентированный подход и UML

    Когда программные системы усложнились, акцент сместился с потоков данных и функций на:

  • структуру предметной области в виде объектов
  • взаимодействия между компонентами
  • сценарии поведения и состояния сущностей
  • Это подготовило почву для UML как универсального языка моделирования программных систем: UML (OMG).

    Практически важный эффект для проектирования:

  • структурные методы хорошо объясняют что делает организация и какие функции нужны
  • UML хорошо объясняет как ведёт себя программная система и как части взаимодействуют во времени
  • В реальных проектах эти подходы часто дополняют друг друга.

    Клиент–сервер, корпоративные пакеты и стандартизация процессов

    Распространение клиент–серверных систем и затем веб-приложений увеличило разнообразие пользователей и сценариев, а ERP/CRM-класс систем усиленно стандартизировал процессы “как должно быть”. В проектировании усилился интерес к процессным моделям:

  • “как есть” и “как будет”
  • роли, ответственность, точки контроля
  • исключения и маршруты согласования
  • Позже это оформилось в широкое применение BPMN как стандарта моделирования процессов: BPMN (OMG).

    SOA и интеграционная зрелость

    Когда в компании десятки и сотни систем, ключевой проблемой становится интеграция. Появляются сервисные подходы (SOA), корпоративные шины, API-стратегии.

    Проектирование начинает включать:

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

    Облака, DevOps и микросервисы: проектирование с учётом эксплуатации

    Рост требований к скорости изменений и масштабированию привёл к практикам DevOps, облачным моделям и, в ряде случаев, микросервисам. Проектирование всё чаще рассматривает “систему целиком”, включая эксплуатацию:

  • наблюдаемость (логи, метрики, трассировка)
  • устойчивость к сбоям внешних сервисов
  • безопасность как часть архитектуры
  • непрерывные изменения (частые релизы)
  • На этом фоне выросла популярность C4 как способа договориться о системе на разных уровнях абстракции: The C4 model.

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

    | Период | Ключевой вызов | Фокус проектирования | Типовые модели и нотации | |---|---|---|---| | Ранняя автоматизация | Корректный учёт | Данные, отчёты, расчёты | Описания форматов данных, регламенты | | Структурная эпоха | Управляемая сложность функций | Декомпозиция функций, входы/выходы | IDEF0, DFD-подходы | | Концептуальные данные | Целостность и единые определения | Сущности, связи, правила данных | ER-подходы, IDEF1X | | ООП и UML | Сложность программной логики | Структура и поведение ПО | UML (классы, последовательности, состояния) | | Процессная автоматизация | Сквозные процессы и согласования | Роли, события, ветвления, исключения | BPMN | | Интеграции и сервисы | Множество систем и зависимостей | Границы, интерфейсы, контракты | C4 (контекст/контейнеры), UML sequence | | Облака и DevOps | Скорость изменений и надёжность | Архитектура + эксплуатация | C4, сценарии отказов (UML sequence), процессные модели (BPMN) |

    Почему подходы не “сменяют” друг друга, а накапливаются

    В реальной практике старые методы не исчезают, потому что они отвечают на разные вопросы.

  • IDEF0 удобно фиксирует верхнеуровневые функции и границы ответственности.
  • BPMN удобно согласовывает бизнес-процесс между ролями и подразделениями.
  • UML удобно уточняет поведение системы и программных компонентов.
  • C4 удобно объясняет архитектурный контекст и структуру на разных уровнях детализации.
  • Поэтому современное проектирование ИС чаще выглядит как комбинация артефактов, связанных трассировкой: от цели и процесса к требованиям, от требований к архитектуре и далее к реализации и тестам.

    Практический вывод для следующих тем курса

    История развития ИС показывает, что “правильный подход” зависит от контекста:

  • назначения ИС (операционная, аналитическая, интеграционная)
  • масштаба (локальная, корпоративная, межорганизационная)
  • архитектуры и ограничений (монолит, сервисы, облака)
  • В следующих темах курса мы перейдём от исторического обзора к практике:

  • как концепция жизненного цикла ИС влияет на набор проектных артефактов
  • как формировать и уточнять требования так, чтобы они были проверяемыми
  • как выбирать нотации UML, IDEF, BPMN, C4 под конкретные вопросы проекта
  • 6. Концепция жизненного цикла ИС: модели и стандарты

    Концепция жизненного цикла ИС: модели и стандарты

    Зачем проектировщику понимать жизненный цикл

    В предыдущих статьях курса мы:

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

    Жизненный цикл задаёт ответы на вопросы:

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

    Жизненный цикл ИС

    Жизненный цикл ИС — это набор стадий (и связанных с ними работ), через которые проходит система от возникновения потребности до вывода из эксплуатации.

    Важно не путать:

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

    Чтобы не возникало “разных терминов для одного и того же”, зафиксируем:

  • Фаза — крупный период работ с доминирующей целью (например, формирование требований или проектирование).
  • Итерация — повтор цикла работ (например: уточнили требования → спроектировали → реализовали → проверили) на ограниченном объёме.
  • Инкремент — прирост функциональности, который добавляет ценность (то, что стало “больше/лучше”, чем было).
  • Релиз — поставка результата пользователям (в продуктах это часто “версии”, в корпоративных проектах — “ввод в промышленную эксплуатацию” части функций).
  • Контрольная точка (stage gate)

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

    Типовой укрупнённый жизненный цикл ИС и место проектирования

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

  • Инициирование (зачем, ценность, границы, ограничения).
  • Обследование и анализ (как устроено “как есть”, что нужно “как будет”).
  • Формирование и согласование требований.
  • Проектирование (архитектура, данные, интеграции, UX, эксплуатация).
  • Реализация (разработка/настройка).
  • Тестирование и приёмка.
  • Внедрение.
  • Эксплуатация и сопровождение.
  • Развитие или вывод из эксплуатации.
  • !Укрупнённая карта стадий и артефактов жизненного цикла

    Связь с предыдущими темами курса:

  • Требования — главный вход в проектирование.
  • Роли определяют, кто формирует цели, кто уточняет сценарии, кто фиксирует требования, кто принимает архитектурные решения.
  • Нотации становятся уместными в разные моменты жизненного цикла: BPMN и IDEF0 полезны при обследовании и анализе, C4 — при согласовании границ и архитектуры, UML — при уточнении поведения и структуры программной части.
  • Модели жизненного цикла: зачем их несколько

    Модель жизненного цикла — это способ организовать работы по созданию и изменению ИС.

    Одна и та же система может развиваться по разным моделям в разные периоды:

  • старт проекта может быть относительно “каскадным” (много неопределённости, нужно договориться о границах)
  • дальнейшее развитие может быть итеративным (быстрое добавление функций)
  • эксплуатация может включать DevOps-практики (частые поставки изменений)
  • Выбор модели зависит от:

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

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

    Типовая логика:

  • сначала максимально уточняем требования
  • затем проектируем
  • затем реализуем
  • затем тестируем и внедряем
  • Плюсы:

  • удобно для договоров с фиксированным объёмом и формальной приёмкой
  • проще планировать сроки и бюджет при стабильных требованиях
  • Минусы:

  • поздняя обратная связь от пользователей
  • высокая цена ошибки: если требования были неверно поняты, это обнаружится поздно
  • Когда уместно:

  • требования действительно стабильны
  • критична формальная документация (например, конкурсные/тендерные проекты)
  • V-модель (верификация и валидация)

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

    Определения, чтобы не путать:

  • верификация — “мы сделали продукт правильно?” (соответствует спецификации)
  • валидация — “мы сделали правильный продукт?” (соответствует потребности)
  • !V-модель: связь этапов проектирования и уровней тестирования

    Плюсы:

  • помогает не забывать про проверяемость требований
  • хорошо подходит там, где высока цена дефекта
  • Минусы:

  • если применять “жёстко”, всё равно остаётся риск позднего обнаружения неверных требований
  • Итеративно-инкрементальная модель

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

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

    Плюсы:

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

  • сложнее управлять целостной архитектурой без дисциплины архитектурных решений
  • нужен механизм приоритизации и управление бэклогом
  • Когда уместно:

  • требования неполные или меняются
  • важна скорость получения результата и обучаемость команды на обратной связи
  • Спиральная модель (управление рисками)

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

    Примеры рисков:

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

  • хорошо работает для технически сложных и рискованных проектов
  • Минусы:

  • требует зрелого управления рисками и прототипирования
  • Agile-модели (Scrum, Kanban) как практики управления работами

    Важно корректно сформулировать:

  • Agile — это семейство принципов и подходов
  • Scrum и Kanban — практики организации работы команды
  • Agile-проекты почти всегда опираются на итеративно-инкрементную модель, но добавляют управленческие механизмы:

  • короткие циклы планирования
  • постоянную приоритизацию задач
  • регулярную демонстрацию результата
  • Справочные источники:

  • Манифест Agile
  • Scrum Guide
  • DevOps и непрерывная поставка как продолжение жизненного цикла в эксплуатацию

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

    Ключевые практики, которые влияют на проектирование:

  • инфраструктура и конфигурации как управляемые артефакты
  • автоматизированные проверки (тесты, статический анализ, проверки безопасности)
  • наблюдаемость (логи, метрики, трассировка)
  • Справочно:

  • DevOps на Wikipedia
  • Continuous delivery на Wikipedia
  • Сравнение моделей: что выбрать на практике

    | Модель | Когда чаще подходит | Главный риск при неправильном применении | Что особенно важно в проектировании | |---|---|---|---| | Каскадная | стабильные требования, контрактная разработка | поздняя обратная связь | полнота и проверяемость требований до детальной архитектуры | | V-модель | высокая критичность качества и проверяемость | “жёсткость” при изменениях | трассировка требований к тестам и критическим сценариям | | Итеративно-инкрементная | неопределённость, развитие продукта | разъезд архитектуры, накопление техдолга | архитектурные принципы, границы, управление изменениями | | Спиральная | высокие технические/организационные риски | дороговизна без ясных критериев выхода из цикла | прототипы, риск-ориентированные сценарии, критерии готовности | | Agile-практики | частые изменения, необходимость ценности “частями” | потеря целостности документации | “достаточная” спецификация, живые модели, согласование терминов | | DevOps/непрерывная поставка | частые релизы, зрелая эксплуатация | снижение качества без автоматизации | эксплуатационные требования как часть архитектуры |

    Стандарты: как они описывают жизненный цикл

    Зачем вообще стандарты, если есть “методологии”

    Стандарты полезны, когда нужно:

  • согласовать общий словарь и состав работ между организациями
  • формализовать ожидания по артефактам и процессам
  • обеспечить сопоставимость проектов и управляемость качества
  • Важно: стандарты обычно описывают что должно быть сделано и какие процессы существуют, но не предписывают единственную “методологию управления” (Scrum/Waterfall и т.д.).

    ISO/IEC/IEEE 12207

    ISO/IEC/IEEE 12207 описывает процессы жизненного цикла программных систем (software life cycle processes).

    Практический смысл для проектировщика ИС:

  • помогает не забыть про процессы вокруг разработки: управление конфигурациями, верификация, валидация, сопровождение
  • задаёт “каркас” того, какие виды деятельности должны быть покрыты, даже если вы работаете итеративно
  • ISO/IEC/IEEE 15288

    ISO/IEC/IEEE 15288 описывает процессы жизненного цикла систем (systems and software engineering), шире чем только ПО.

    Это особенно актуально для ИС, потому что ИС включает:

  • людей и роли
  • процессы и регламенты
  • данные и правила качества
  • программные компоненты
  • инфраструктуру и эксплуатацию
  • То есть “ИС как система” лучше укладывается в системное мышление, о котором мы говорили в базовых понятиях.

    ISO/IEC/IEEE 29148

    ISO/IEC/IEEE 29148 посвящён инженерии требований.

    Практический смысл:

  • фиксирует подходы к требованиям и их качеству (однозначность, проверяемость, непротиворечивость)
  • помогает связать требования с проектированием и тестированием через трассировку
  • ISO/IEC/IEEE 24748-1

    ISO/IEC/IEEE 24748-1 — руководство по управлению жизненным циклом (life cycle management), полезно как “мета-уровень”: как адаптировать жизненный цикл под контекст проекта.

    Связанные стандарты качества (для нефункциональных требований)

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

  • ISO/IEC 25010 — модель качества систем и ПО (характеристики качества, такие как надёжность, безопасность, сопровождаемость и т.д.)
  • Смысл для жизненного цикла: качественные требования нельзя “добавить в конце”; они должны быть учтены при проектировании и проверяться в тестировании и эксплуатации.

    Как жизненный цикл связан с нотациями UML, IDEF, BPMN, C4

    Важный принцип курса: нотации не конкурируют, а покрывают разные вопросы на разных стадиях.

    Ниже — практическая “карта соответствий” (не как догма, а как типовой сценарий применения):

    | Вопрос жизненного цикла | Какой артефакт помогает ответить | Часто используемая нотация | |---|---|---| | Что система должна дать бизнесу и где её границы | контекст системы, внешние акторы/соседние системы | C4 System Context | | Какие функции есть и что на них влияет | функциональная декомпозиция, входы/выходы/управление/механизмы | IDEF0 | | Как выполняется процесс между ролями | модель процесса “как есть/как будет”, события, ветвления | BPMN | | Какие сущности и правила предметной области важны | модель данных/объектов, связи, ограничения | UML Class (и/или ER-подходы) | | Как компоненты взаимодействуют в сценарии | последовательности вызовов, интеграции, ошибки | UML Sequence | | Как устроена архитектура на уровнях | контейнеры, компоненты, связи, технологии | C4 Container/Component |

    Эта карта напрямую поддерживает идею трассировки:

  • из BPMN/IDEF0 можно получать функциональные требования
  • из требований можно выводить архитектурные решения (C4)
  • из архитектуры и ключевых сценариев (UML sequence) — тестовые сценарии и требования к наблюдаемости
  • Практика: как “адаптировать” жизненный цикл под проект

    На реальных проектах жизненный цикл почти всегда настраивается под контекст. Это обычно называется tailoring — адаптация.

    Рекомендуемый порядок действий:

  • Зафиксировать тип ИС по классификации (назначение, масштаб, архитектура), которую мы обсуждали ранее.
  • Зафиксировать критичность и ограничения:
  • - безопасность и персональные данные - требования по доступности и времени простоя - наличие внешних регуляторных требований - интеграции и зависимость от внешних владельцев данных
  • Выбрать базовую модель жизненного цикла:
  • - более “строгую” (каскад/V) при высокой критичности и контрактной приёмке - более “итеративную” при неопределённости и частых изменениях
  • Определить контрольные точки:
  • - что должно быть согласовано перед началом реализации - что должно быть проверено перед внедрением
  • Определить минимально достаточный набор артефактов:
  • - чтобы решения были повторяемыми, проверяемыми и согласуемыми

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

    Итог

    Концепция жизненного цикла ИС даёт проектировщику структуру, в которую укладываются требования, модели и архитектурные решения:

  • модели жизненного цикла (каскадная, V-модель, итеративная, спиральная, Agile/DevOps-практики) — это разные способы организовать работы
  • стандарты (ISO/IEC/IEEE 12207, 15288, 29148, 24748-1) помогают договориться о составе процессов, качестве требований и управлении жизненным циклом
  • нотации (IDEF0, BPMN, UML, C4) становятся инструментами фиксации решений на разных стадиях и для разных вопросов
  • В следующих темах курса мы перейдём от “каркаса жизненного цикла” к практикам формирования требований и их трассировки до проектных решений, чтобы проектирование было проверяемым и согласуемым.

    7. Фазы жизненного цикла: цели, артефакты, контрольные точки

    Фазы жизненного цикла: цели, артефакты, контрольные точки

    Зачем разбирать фазы подробно

    В предыдущей теме мы рассмотрели концепцию жизненного цикла, модели (Waterfall, V-модель, итеративность, Agile/DevOps) и стандарты (в частности, ISO/IEC/IEEE 12207, ISO/IEC/IEEE 15288, ISO/IEC/IEEE 29148). Теперь важно «приземлить» эту рамку в практику: какие фазы обычно выделяют в проектах ИС, какую цель каждая фаза преследует, какие артефакты должны появиться на выходе и какие контрольные точки помогают управлять рисками.

    Ключевая идея: фаза жизненного цикла не равна «периоду, когда рисуем диаграммы». Фаза задаёт:

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

    !Укрупнённая карта фаз и контрольных точек

    Базовые определения для этой темы

    Чтобы дальше не возникало «разных слов про одно и то же», зафиксируем термины.

  • Фаза: крупная часть жизненного цикла с доминирующей целью и формальным результатом.
  • Артефакт: фиксируемый результат работы, который можно согласовать, версионировать и использовать как вход в следующую работу.
  • Контрольная точка: момент формальной проверки готовности перейти дальше, часто называется stage gate.
  • Критерии готовности: проверяемые условия, по которым можно сказать «да, можно переходить».
  • Практическое правило: если результат нельзя проверить или согласовать, то это не артефакт, а лишь «активность».

    Что такое контрольные точки и почему они не равны бюрократии

    Контрольная точка нужна, чтобы управлять риском. У каждой контрольной точки должна быть логика:

  • какой риск мы уменьшаем (например, риск сделать не то, риск не пройти безопасность, риск сорвать внедрение)
  • какие доказательства нужны (артефакты)
  • кто принимает решение (роль, например заказчик или архитектурный комитет)
  • Типовые ошибки с контрольными точками:

  • gate существует, но критерии не описаны, поэтому решения принимаются «по ощущениям»
  • требуются артефакты, которые никто не использует (диаграммы ради диаграмм)
  • контрольная точка стоит слишком поздно, когда исправления уже дорогие
  • Укрупнённые фазы жизненного цикла ИС

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

    Инициирование

    Цель фазы

    Сформулировать зачем нужна система или изменение, и зафиксировать исходные ограничения.

    Ключевые вопросы

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

  • видение или краткий концепт (problem statement, цели, метрики)
  • границы системы на уровне контекста
  • реестр стейкхолдеров и ролей
  • первичный риск-лист
  • Контрольная точка

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

  • C4 System Context для первичных границ и внешних систем: The C4 model
  • Обследование и анализ предметной области

    Цель фазы

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

    Ключевые вопросы

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

  • модель функций верхнего уровня и декомпозиция
  • модель процесса как есть (если процесс важен)
  • глоссарий терминов предметной области
  • список болей и улучшений с приоритетами
  • Контрольная точка

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

  • IDEF0 для функционального анализа и границ ответственности
  • BPMN для процессов и взаимодействий ролей: BPMN (OMG)
  • Формирование и согласование требований

    Цель фазы

    Перевести потребности в проверяемые требования и договориться о приоритетах.

    Ключевые вопросы

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

  • спецификация требований, структурированная по уровням
  • пользовательские сценарии и критерии приёмки
  • бизнес-правила
  • требования к данным (термины, атрибуты, качества)
  • начальная трассировка: цель → требование → критерий
  • С практической точки зрения полезно опираться на подходы качества требований из ISO/IEC/IEEE 29148.

    Контрольная точка

  • Утверждение требований: требования непротиворечивы, согласованы по приоритету, определены критерии приёмки.
  • Нотации, которые чаще всего уместны

  • BPMN как «язык» обсуждения сценариев работы
  • UML Use Case как фиксация целей пользователей: UML (OMG)
  • Проектирование

    Цель фазы

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

    Ключевые вопросы

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

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

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

  • C4 Container и Component для структуры решения
  • UML Sequence для сценариев взаимодействий
  • UML Class для структур предметной области
  • Реализация

    Цель фазы

    Создать работающий инкремент системы на основе проектных решений.

    Ключевые вопросы

  • как обеспечить соответствие реализации требованиям
  • как управлять изменениями и версиями
  • как обеспечить воспроизводимость сборок и окружений
  • Типовые артефакты

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

  • Готовность к тестированию: окружение собрано, сборка воспроизводима, базовые проверки пройдены.
  • Тестирование и приёмка

    Цель фазы

    Подтвердить качество и соответствие: и спецификации, и реальным потребностям.

    Ключевые вопросы

  • выполняются ли функциональные требования
  • выдерживаются ли нефункциональные требования в целевых условиях
  • готовы ли бизнес-пользователи принять результат
  • Типовые артефакты

  • тест-план и результаты тестов
  • набор сценариев приёмки и протоколы
  • отчёты о дефектах и решения по ним
  • подтверждение выполнения требований безопасности (если применимо)
  • Контрольная точка

  • Приёмка: заказчик подтвердил, что критерии приёмки выполнены и можно внедрять.
  • Внедрение

    Цель фазы

    Перевести систему в продуктивное использование с управляемым риском.

    Ключевые вопросы

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

  • план внедрения и план отката
  • инструкции для эксплуатации
  • обучающие материалы и коммуникации
  • чек-лист готовности инфраструктуры и доступов
  • Контрольная точка

  • Go-Live: выполнены условия запуска, согласован план поддержки, определены ответственные.
  • Эксплуатация и сопровождение

    Цель фазы

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

    Ключевые вопросы

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

  • регламенты поддержки и SLA (если применимо)
  • мониторинг, дашборды, алерты
  • журнал изменений и релиз-ноты
  • база знаний и типовые решения инцидентов
  • Контрольная точка

  • Эксплуатационная готовность: наблюдаемость включена, ответственные назначены, есть процедуры резервирования и восстановления.
  • Развитие и вывод из эксплуатации

    Цель фазы

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

    Ключевые вопросы

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

  • бэклог развития и дорожная карта
  • архитектурные решения по модернизации
  • план вывода из эксплуатации и архивирования
  • Контрольная точка

  • Решение о модернизации или выводе: согласованы последствия по данным, процессам, интеграциям и обязательствам.
  • Сводная таблица: фаза, результат, контрольная точка

    | Фаза | Главный результат | Контрольная точка | Кто обычно принимает | |---|---|---|---| | Инициирование | цель, ценность, границы на уровне контекста | одобрение инициативы | заказчик | | Обследование и анализ | подтверждённое понимание как есть | согласование обследования | заказчик и ключевые пользователи | | Требования | проверяемые требования и приоритеты | утверждение требований | заказчик | | Проектирование | архитектура и ключевые решения | утверждение архитектуры | архитектор и заказчик | | Реализация | реализованный инкремент | готовность к тестированию | техлид и QA | | Тестирование и приёмка | подтверждённое качество | приёмка | заказчик | | Внедрение | запуск в продуктив | Go-Live | заказчик и эксплуатация | | Эксплуатация | стабильная работа и поддержка | эксплуатационная готовность | эксплуатация и владелец сервиса | | Развитие/вывод | план развития или закрытия | решение о модернизации/выводе | заказчик |

    Как связать артефакты трассировкой

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

  • Бизнес-цель связывается с требованиями и метриками успеха.
  • Требования связываются со сценариями и критериями приёмки.
  • Требования и сценарии связываются с архитектурными решениями.
  • Архитектурные решения связываются с тестами и с эксплуатационными механизмами.
  • !Как артефакты связываются от цели до эксплуатации

    Практический эффект трассировки:

  • если меняется цель или регуляторное ограничение, понятно, какие требования и решения нужно пересмотреть
  • если появляется дефект в эксплуатации, проще найти, какое требование или сценарий был недоописан
  • легче проводить контрольные точки, потому что есть проверяемые связи, а не «набор файлов»
  • Привязка нотаций UML, IDEF, BPMN, C4 к фазам

    Ниже полезная карта, которая продолжает идею из прошлой статьи, но теперь привязана именно к фазам и артефактам.

    | Фаза | Что нужно прояснить | Чаще всего полезно | |---|---|---| | Инициирование | границы и окружение системы | C4 Context | | Обследование | функции и ответственность, текущие процессы | IDEF0, BPMN | | Требования | сценарии, роли, критерии приёмки | BPMN, UML Use Case | | Проектирование | структура решения и критические взаимодействия | C4 Container/Component, UML Sequence, UML Class | | Тестирование и приёмка | доказательство соответствия | критерии приёмки, тестовые сценарии, протоколы | | Эксплуатация | наблюдаемость и управляемость | регламенты, мониторинг, алерты, журналирование |

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

    Минимальный набор критериев качества артефактов

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

  • Однозначность: термины определены в глоссарии, нет разных смыслов одного слова.
  • Проверяемость: есть критерии, по которым можно подтвердить выполнение.
  • Согласованность: артефакты не противоречат друг другу (например, BPMN и требования).
  • Актуальность: понятно, какая версия актуальна и кто владелец.
  • Итог

    Фазы жизненного цикла ИС полезно рассматривать как управляемую последовательность целей, артефактов и контрольных точек:

  • каждая фаза отвечает на свой набор вопросов и снижает конкретные риски
  • артефакты нужны не «для отчётности», а как проверяемые результаты и входы в следующие решения
  • контрольные точки работают, только если у них есть критерии и понятный владелец решения
  • нотации UML, IDEF, BPMN, C4 применяются там, где они лучше отвечают на вопрос фазы, а не «потому что так принято»
  • Дальше в курсе эта карта фаз станет опорой для более детального разбора: как формировать требования, как делать их проверяемыми, и как связывать требования с архитектурой и моделями (BPMN, UML, C4, IDEF) без противоречий.

    8. Специфика фазы проектирования в жизненном цикле

    Специфика фазы проектирования в жизненном цикле

    Место проектирования в общей картине курса

    В предыдущих темах курса мы:

  • определили базовые понятия (данные, информация, система, информационная система)
  • рассмотрели классификацию ИС (по назначению, масштабу и архитектуре)
  • зафиксировали роли участников (заказчик, пользователь, аналитик, архитектор)
  • разобрали жизненный цикл, модели (Waterfall, V-модель, итеративность, Agile/DevOps) и стандарты
  • описали фазы жизненного цикла через цели, артефакты и контрольные точки
  • На этой основе можно точно сформулировать, чем фаза проектирования отличается от соседних фаз.

  • На фазе требований команда отвечает на вопрос что нужно и зачем.
  • На фазе проектирования команда отвечает на вопрос как это будет устроено, чтобы требования стали выполнимыми и проверяемыми.
  • На фазе реализации команда отвечает на вопрос как это будет закодировано/настроено.
  • Проектирование в ИС особенно важно потому, что ИС включает не только программный код, но и процессы, роли, данные, интеграции и эксплуатацию. Это согласуется с системным взглядом, который отражён в стандарте ISO/IEC/IEEE 15288.

    Что делает фазу проектирования особенной

    Проектирование как перевод из языка потребностей в язык решений

    Требования описывают потребность и ограничения. Проектирование превращает их в набор согласованных решений, которые:

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

    !Проектирование как связующее звено между требованиями и реализуемым/проверяемым решением

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

    В проектировании почти всегда есть конфликтующие цели. Примеры типовых компромиссов:

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

  • выявлены
  • обсуждены со стейкхолдерами
  • зафиксированы как решения с последствиями
  • Проектирование как «точка невозврата» по стоимости изменений

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

    Входы в проектирование и выходы проектирования

    Что должно быть на входе

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

  • согласованные цели и границы инициативы
  • проверяемые требования и приоритеты
  • ключевые сценарии использования и критерии приёмки
  • нефункциональные требования (производительность, доступность, безопасность, аудит, совместимость)
  • ограничения (сроки, бюджет, регуляторика, технологический стек, существующие системы)
  • Требования к качеству требований как дисциплины описаны в стандарте ISO/IEC/IEEE 29148. Проектирование опирается на эти требования и одновременно выявляет, каких требований не хватает.

    Что должно появиться на выходе

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

    Ключевые результаты:

  • согласованные границы системы и интеграционное окружение
  • архитектура на выбранном уровне детализации
  • модель данных (минимально достаточная для реализации сценариев)
  • спецификация интерфейсов интеграций (API, события, форматы)
  • описание ключевых сценариев взаимодействия, включая ошибки и исключения
  • эксплуатационная модель (логирование, мониторинг, резервирование, управление доступом)
  • протоколы проектных решений и допущений
  • Важно: состав артефактов должен соответствовать масштабу и критичности ИС. Для межорганизационных систем «минимум» обычно больше, чем для локальных.

    Уровни проектирования: от границ до поведения

    Чтобы проектирование не превратилось в «рисование всего подряд», полезно различать уровни.

    Архитектурный уровень: границы и разбиение на крупные части

    На архитектурном уровне решают:

  • где граница системы и что остаётся во внешней среде
  • какие внешние системы и акторы участвуют
  • из каких контейнеров состоит решение (например, веб-приложение, мобильный клиент, БД, брокер сообщений)
  • как контейнеры взаимодействуют и через какие интерфейсы
  • Для этой части особенно уместен подход The C4 model (контекст и контейнеры).

    Логический уровень: доменная модель и правила данных

    На логическом уровне уточняют:

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

    Поведенческий уровень: ключевые сценарии и обработка исключений

    На поведенческом уровне отвечают:

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

    Эксплуатационный уровень: как решение живёт в реальности

    Эксплуатационный уровень проектирования отвечает на вопросы:

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

    Нотации UML, IDEF, BPMN, C4 в проектировании: кто на что отвечает

    В прошлых темах мы отмечали, что нотации не конкурируют. В проектировании это проявляется особенно ярко.

    C4: согласование границ и структуры решения

    C4 помогает быстро договориться:

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

    UML: уточнение структуры и поведения программной части

    UML полезен там, где нужна точность для реализации:

  • UML Class для структур и связей доменной модели
  • UML Sequence для сценариев взаимодействия
  • UML State Machine для жизненных циклов сущностей (когда статусы и переходы критичны)
  • Официальная спецификация: UML.

    BPMN: связь проектирования с реальным процессом

    BPMN помогает проверить, что проектируемая автоматизация соответствует процессу:

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

    IDEF0: функциональная декомпозиция и границы ответственности

    IDEF0 полезен, когда проектирование начинается от верхнеуровневых функций и нужно:

  • зафиксировать входы, выходы, управляющие воздействия и механизмы
  • договориться о том, какие функции покрывает система, а какие остаются вне её
  • Справочный источник: IDEF (NIST).

    Проектные решения как управляемые артефакты

    Что такое проектное решение

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

    Важные свойства хорошего проектного решения:

  • есть контекст (какие требования и ограничения привели к выбору)
  • есть альтернативы (что ещё рассматривалось)
  • есть последствия (что станет проще, что сложнее, какие риски остаются)
  • ADR как практика фиксации решений

    Часто используют формат ADR (Architecture Decision Record) — запись архитектурного решения.

    ADR не является стандартом ISO, но это распространённая инженерная практика. Идея проста: решения не должны быть «в головах» и «в чате». Они должны быть артефактом, который можно пересмотреть при изменении требований.

    Минимально достаточная структура ADR:

  • проблема и контекст
  • решение
  • альтернативы
  • последствия
  • Контрольная точка проектирования: что значит «архитектура утверждена»

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

    Типовые критерии готовности проектирования:

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

    Проектирование в разных моделях жизненного цикла

    В каскадной и V-модели

    Проектирование чаще стремятся выполнить как относительно завершённый этап до реализации. Специфика здесь:

  • больше внимания к полноте документации
  • выше роль трассировки «требование → проектное решение → тест»
  • меньше допускается неопределённость при входе в реализацию
  • Полезная опорная идея V-модели — связь работ по уточнению требований и проектирования с проверками на соответствующих уровнях тестирования.

    В итеративно-инкрементной модели и Agile-подходах

    Проектирование выполняется инкрементально. Специфика здесь:

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

    Типовые ошибки в фазе проектирования и как их предотвращать

  • Подмена проектирования реализацией: обсуждают классы и таблицы, когда не согласованы границы и сценарии.
  • Проектирование «в вакууме»: архитектор проектирует без пользователей и без проверки процесса, в итоге решение неудобно и не принимается.
  • Игнорирование нефункциональных требований: безопасность, аудит и эксплуатация «всплывают» ближе к внедрению.
  • Слишком ранняя микросервисность: архитектура усложняется без реальной потребности, эксплуатационные риски растут.
  • Несогласованность моделей: BPMN показывает один поток работ, UML sequence реализует другой, а C4-контейнеры не объясняют, где происходит автоматизация.
  • Практическая защита от этих ошибок:

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

    Чтобы проектные артефакты были версионируемыми и воспроизводимыми, часто используют текстовые форматы:

  • UML в виде PlantUML
  • C4 в виде Structurizr DSL
  • C4 поверх PlantUML через библиотеку C4-PlantUML
  • BPMN как формат обмена BPMN 2.0 XML по спецификации BPMN
  • Смысл этих форматов в том, что диаграммы становятся частью управляемых артефактов проекта, а не «картинками в презентации».

    Итог

    Специфика фазы проектирования в жизненном цикле ИС в том, что она:

  • превращает проверяемые требования в реализуемые решения
  • управляет компромиссами и рисками до начала дорогих изменений в коде и инфраструктуре
  • создаёт артефакты, которые поддерживают реализацию, тестирование, внедрение и эксплуатацию
  • использует разные нотации (C4, UML, BPMN, IDEF0) как инструменты ответа на разные вопросы
  • Дальше в курсе мы будем углубляться в формирование требований и методы проектирования так, чтобы можно было выстраивать трассировку от бизнес-цели до диаграмм и далее до тестов и эксплуатационных механизмов без противоречий.

    9. Организация работ: планирование, оценка, риски, качество

    Организация работ: планирование, оценка, риски, качество

    Зачем проектировщику уметь организовывать работы

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

    Организация работ в проектировании ИС — это управление четырьмя взаимосвязанными областями:

  • Планирование: что и в каком порядке делаем, какие артефакты должны появиться, кто принимает решения.
  • Оценка: сколько времени и усилий потребуется, где неопределённость, какие допущения заложены.
  • Риски: что может пойти не так, насколько это вероятно и что мы делаем заранее.
  • Качество: как убедиться, что требования, модели и решения пригодны для реализации, тестирования, внедрения и эксплуатации.
  • Ключевая мысль: хорошая организация работ — это не «больше документов», а меньше сюрпризов на поздних стадиях жизненного цикла.

    !Цикл из четырёх областей управления работами вокруг проектирования

    Базовые термины: чтобы не путать разговор об управлении

  • План — согласованный способ достижения результата: объём работ, порядок, ответственные, контрольные точки и критерии готовности.
  • Оценка — приближённый прогноз затрат (времени/усилий/денег) при заданных допущениях и неопределённости.
  • Риск — возможное событие или условие, которое при наступлении влияет на цели проекта (сроки, бюджет, качество, безопасность, приёмку).
  • Качество — степень соответствия результата требованиям и ожиданиям стейкхолдеров, включая нефункциональные требования. Полезная опора для качества ИС как продукта — модель ISO/IEC 25010.
  • Контрольная точка — момент, когда принимается решение «можно ли идти дальше» на основе артефактов и критериев. Это продолжает логику из статьи про фазы жизненного цикла.
  • Планирование работ в проектировании ИС

    Что именно нужно спланировать

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

    На практике планирование включает:

  • Объём проектирования
  • - Какие части системы проектируем сейчас (например, только первый релиз или весь контур). - Какие артефакты обязательны (например, C4 Context/Container, ключевые UML Sequence, модель данных). - Что явно не входит в текущий объём.

  • Последовательность работ
  • - Сначала границы и контекст (иначе детали будут про «не ту систему»). - Затем критические сценарии и интеграции (чтобы рано увидеть риски). - Затем уточнение данных и правил (чтобы обеспечить целостность и проверяемость).

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

  • Контрольные точки и критерии готовности
  • - Что должно быть готово, чтобы начать разработку. - Что нужно согласовать с владельцами внешних систем (интеграции и данные на границе).

    Планирование через артефакты, а не через «виды деятельности»

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

    Пример пакетов (инкрементальная логика):

  • Пакет границ и контекста
  • - C4 System Context. - Список внешних систем и владельцев. - Предварительные ограничения (безопасность, регуляторика, SLA).

  • Пакет критических сценариев
  • - BPMN «как будет» для ключевого процесса. - UML Sequence для 1–3 самых рискованных сценариев (включая ошибки внешних систем).

  • Пакет данных и правил
  • - Доменная модель (например, UML Class как концептуальная модель сущностей и связей). - Словарь данных и ключевые правила целостности.

  • Пакет архитектуры и эксплуатации
  • - C4 Container/Component. - ADR по ключевым решениям. - Минимальные требования к наблюдаемости: логирование, метрики, алерты.

    Планирование в разных моделях жизненного цикла

  • В каскадной/V-модели план проектирования чаще ориентирован на «закрытие этапа» до начала реализации, с высокой полнотой и формальными согласованиями.
  • В итеративной модели планирование проектирования идёт «волнами»: на каждый инкремент готовится минимально достаточный набор решений, но при этом ведутся общие архитектурные принципы и единые справочники/термины.
  • Смысл одинаковый: на каждой итерации должно быть понятно, что будет считаться готовым и согласованным.

    Оценка: как прогнозировать сроки и трудоёмкость без иллюзий точности

    Почему оценка почти всегда ошибается

    Оценка в ИС редко бывает точной по одной причине: в начале проектирования много неизвестного.

    Типовые источники неопределённости:

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

    Подходы к оценке

    На практике используют комбинацию методов:

  • Аналоговая оценка
  • - Берём похожий проект/модуль и корректируем под отличия. - Хорошо работает в организациях с историей проектов.

  • Декомпозиция и суммирование (bottom-up)
  • - Разбиваем работу на небольшие задачи (например, «описать 3 интеграционных контракта», «проработать 2 сценария UML Sequence», «согласовать модель данных»). - Оцениваем части и суммируем.

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

  • Относительная оценка в итеративных подходах
  • - Например, story points и скорость команды. - Подходит для планирования поставок инкрементов, но не отменяет проработку рисков и зависимостей.

    Быстрая техника диапазона: трёхточечная оценка PERT

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

    Где:

  • — ожидаемая (усреднённая) оценка.
  • — оптимистичная оценка (если всё идёт идеально).
  • — наиболее вероятная оценка (как обычно бывает).
  • — пессимистичная оценка (если сработают основные риски).
  • Смысл формулы: наиболее вероятный вариант учитывается сильнее (вес 4), а оптимистичный и пессимистичный ограничивают диапазон.

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

    Риски: как сделать «что может пойти не так» управляемым

    Риск-ориентированное мышление в проектировании

    Проектирование особенно чувствительно к рискам, потому что:

  • ошибки в границах и интеграциях дорого исправлять после начала реализации;
  • ошибки в данных и правилах целостности «портят» всю систему и отчётность;
  • игнорирование нефункциональных требований приводит к переделкам ближе к внедрению.
  • Хорошая опора по терминологии и процессу управления рисками — ISO 31000.

    Реестр рисков как главный артефакт управления

    Реестр рисков — это таблица, которую можно пересматривать на каждой итерации. Минимальный состав полей:

  • описание риска;
  • причина (почему возможно);
  • последствия (что пострадает);
  • вероятность и влияние;
  • владелец риска;
  • план реакции;
  • статус и дата пересмотра.
  • Матрица рисков и приоритизация

    Чтобы быстро приоритизировать риски, применяют матрицу «вероятность–влияние».

    !Матрица для приоритизации рисков по вероятности и влиянию

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

    Стратегии реакции на риски

    Типовые стратегии:

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

  • Снизить (смягчить)
  • - Уменьшить вероятность или влияние. - Пример: сделать прототип интеграции до старта основной разработки.

  • Передать
  • - Переложить последствия на другую сторону (например, через договор/страхование/внешний сервис). - В ИС часто выражается в контрактных SLA и ответственности поставщика.

  • Принять
  • - Осознанно согласиться с риском и подготовить план действий «если наступит».

    Важно: принятие риска без плана — это не стратегия, а отсутствие управления.

    Как нотации помогают снижать риски

  • C4 снижает риск неверных границ и «всплывающих интеграций».
  • BPMN снижает риск автоматизации «не того процесса» и пропуска ручных шагов/ответственности.
  • UML Sequence снижает риск неучтённых ошибок во взаимодействиях (таймауты, повторы, идемпотентность).
  • IDEF0 снижает риск неполного охвата функций и размытых зон ответственности.
  • Качество: что проверяем, чтобы проектирование было пригодно для реализации

    Качество в проектировании: два разных слоя

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

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

    Для второго слоя полезно опираться на характеристики качества из ISO/IEC 25010, чтобы не забывать важные аспекты (например, надёжность, сопровождаемость, безопасность).

    Обеспечение качества и контроль качества

    Чтобы не смешивать понятия:

  • Обеспечение качества — это организация процесса так, чтобы дефекты не возникали (стандарты, шаблоны, ревью, критерии готовности).
  • Контроль качества — это проверка результатов (инспекции, тесты, аудит артефактов).
  • И то и другое нужно уже на этапе проектирования.

    Чек-листы качества артефактов (минимально достаточные)

    #### Требования

  • Есть критерии приёмки и условия проверяемости.
  • Термины определены и используются единообразно.
  • Нефункциональные требования явно перечислены (а не подразумеваются).
  • Есть трассировка: цель → требование → артефакт проектирования.
  • Опорный стандарт по качеству требований: ISO/IEC/IEEE 29148.

    #### Архитектура и интеграции

  • Границы системы согласованы с владельцами внешних систем.
  • Для критических сценариев есть UML Sequence (включая ошибки и повторы).
  • Контракты интеграций имеют версионирование и владельца.
  • Есть решения по наблюдаемости (минимум: что логируем, какие метрики, какие алерты).
  • #### Процессная модель

  • В BPMN обозначены роли, события начала/конца, ветвления.
  • Понятно, где ручные шаги, где автоматизация.
  • Учтены исключения (например, отклонение, возврат на доработку).
  • Quality gates: контрольные точки качества

    На практике полезно вводить quality gates — короткие проверки перед тем, как «пустить дальше».

    Примеры gates для проектирования:

  • Gate требований
  • - требования согласованы; - критерии приёмки описаны; - ключевые нефункциональные требования зафиксированы.

  • Gate архитектуры
  • - C4 контекст/контейнеры актуальны; - ключевые сценарии проработаны; - зафиксированы ADR по решениям с последствиями.

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

    Сводная таблица: что планируем, чем измеряем, чем управляем

    | Область | Главный вопрос | Ключевые артефакты | Типовые контрольные точки | |---|---|---|---| | Планирование | что делаем и в каком порядке | план работ, RACI, список артефактов | согласование объёма и критериев готовности | | Оценка | сколько и при каких допущениях | диапазон оценок, список допущений | пересмотр оценки после уточнения требований | | Риски | что может сорвать цели | реестр рисков, матрица вероятности–влияния | регулярный пересмотр рисков на итерациях | | Качество | как не пропустить дефекты в требованиях и решениях | чек-листы, quality gates, ADR, трассировка | gate требований, gate архитектуры, gate готовности к реализации |

    Практический минимум: «скелет» организации работ для небольшого проекта

    Если нужен минимальный, но рабочий набор практик, который хорошо сочетается с UML, BPMN, IDEF0 и C4:

  • Зафиксировать границы системы (C4 Context) и владельцев интеграций.
  • Описать один ключевой процесс «как будет» (BPMN) и согласовать роли.
  • Проработать 1–3 критических сценария взаимодействия (UML Sequence), включая ошибки.
  • Сформировать минимальную модель данных для сценариев (UML Class + словарь терминов).
  • Создать реестр рисков и пересматривать его раз в неделю/итерацию.
  • Ввести два quality gates: gate требований и gate архитектуры.
  • Фиксировать ключевые решения через ADR.
  • Итог

    Организация работ в проектировании ИС связывает жизненный цикл, требования и архитектурные артефакты в управляемый процесс:

  • планирование делает понятными объём, порядок и критерии готовности;
  • оценка превращает неопределённость в диапазоны и допущения, а не в «точные обещания»;
  • риски становятся управляемыми через реестр, приоритизацию и планы реакции;
  • качество обеспечивается не «в конце», а через чек-листы, трассировку и quality gates.
  • Дальше по курсу это станет основой для более детального разбора требований и методов проектирования: как делать требования проверяемыми, как выбирать нотации под вопрос, и как поддерживать согласованность BPMN, UML, C4 и структурных моделей без противоречий.