Системный анализ

Требования и аналитические артефакты

Какие есть способы сбора требований? Какие используешь?

Короткий ответ

Способы сбора требований: Это техники, которые аналитик использует для выявления, сбора и документирования потребностей заинтересованных сторон. Основные способы: - Интервью (Interviews): Индивидуальные беседы со стейкхолдерами для глубокого понимания их потребностей, проблем и ожиданий. Могут быть структурированными, полуструктурированными или неструктурированными.

Полный ответ

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

    • Интервью (Interviews): Индивидуальные беседы со стейкхолдерами для глубокого понимания их потребностей, проблем и ожиданий. Могут быть структурированными, полуструктурированными или неструктурированными.
    • Семинары/Воркшопы (Workshops): Групповые сессии с участием ключевых стейкхолдеров для совместного определения, обсуждения и согласования требований. Эффективны для быстрого сбора и валидации требований от нескольких сторон.
    • Мозговой штурм (Brainstorming): Генерация идей в группе для решения проблем или определения новых возможностей. Полезен на ранних этапах для выявления высокоуровневых требований.
    • Анализ документов (Document Analysis): Изучение существующей документации (бизнес-процессы, инструкции, ТЗ на старые системы, отчеты, нормативные акты) для понимания текущей ситуации и ограничений.
    • Наблюдение (Observation / Shadowing): Наблюдение за пользователями в их рабочей среде для понимания реальных процессов, проблем и неявных потребностей.
    • Анкетирование/Опросы (Surveys/Questionnaires): Сбор информации от большого числа людей с помощью стандартизированных вопросов. Полезно для сбора количественных данных или мнений по конкретным вопросам.
    • Прототипирование (Prototyping): Создание интерактивных макетов или моделей системы (UI-прототипы, рабочие прототипы) для визуализации требований и получения обратной связи от пользователей на ранних этапах.
    • Анализ интерфейсов (Interface Analysis): Изучение существующих или требуемых интерфейсов между системами, пользователями или устройствами.
    • Reverse Engineering (при анализе legacy-систем): Анализ существующей системы для понимания ее функциональности и воссоздания требований.
    • Benchmarking / Анализ конкурентов: Изучение аналогичных продуктов или решений на рынке.
  • Какие использую (типичный ответ аналитика): “На практике я чаще всего использую комбинацию методов в зависимости от проекта и стейкхолдеров. Ключевыми для меня являются:

    • Интервью: Для глубокого погружения в потребности конкретных ролей или экспертов.
    • Воркшопы: Для согласования требований между разными группами стейкхолдеров и быстрого решения спорных моментов.
    • Анализ документов: Особенно при работе с существующими системами или в регулируемых отраслях, это дает базовое понимание и контекст.
    • Прототипирование (UI Mockups/Wireframes): Незаменимо при работе с пользовательскими интерфейсами, так как позволяет визуализировать идеи и быстро получить обратную связь, избегая недопонимания.”

Кто такие стейкхолдеры? Кто является стейкхолдерами для тебя? Были ли требования от тебя по разработке?

Короткий ответ

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

Полный ответ

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

    • Примеры стейкхолдеров: Конечные пользователи, Заказчики (кто платит), Спонсоры проекта, Руководители подразделений, Команда разработки (разработчики, тестировщики, дизайнеры), Команда поддержки, Продакт-менеджеры/Владельцы продукта, Юристы, Отдел безопасности, Администраторы системы, Регуляторы и т.д.
  • Кто является стейкхолдерами для тебя (аналитика): Стейкхолдерами для аналитика являются все те, с кем он взаимодействует для выявления, документирования, согласования и управления требованиями. Это в первую очередь:

    • Заказчики / Бизнес-представители / Владелец продукта: Основные источники бизнес-требований и целей.
    • Конечные пользователи / Эксперты предметной области: Источники пользовательских и функциональных требований, информации о процессах.
    • Команда разработки (включая тимлида/архитектора): Помогают оценить техническую реализуемость, предлагают технические решения, уточняют детали реализации. Являются потребителями артефактов аналитика (постановок).
    • Тестировщики: Используют требования для написания тест-кейсов, задают уточняющие вопросы для обеспечения тестируемости.
    • Дизайнеры (UI/UX): Взаимодействуют по требованиям к интерфейсу и пользовательскому опыту.
    • Менеджер проекта: Взаимодействие по вопросам скоупа, приоритетов, рисков.
  • Были ли требования от тебя по разработке? Этот вопрос можно трактовать по-разному.

    • Вариант 1 (Прямой): Обычно аналитик не является источником первоначальных бизнес- или пользовательских требований (он их выявляет и формулирует). Но аналитик может формулировать требования к процессу или инструментам, которые нужны ему или команде для работы (например, “Требуется доступ к тестовому стенду”, “Необходимо использовать определенный шаблон для User Story”, “Нужно настроить трейсбилити в Jira”).
    • Вариант 2 (Косвенный): Аналитик трансформирует высокоуровневые потребности стейкхолдеров в конкретные, детализированные требования (функциональные, нефункциональные), которые затем передаются в разработку. В этом смысле, сформулированные аналитиком требования являются “требованиями по разработке”. Также аналитик может выдвигать требования, основанные на лучших практиках, стандартах или собственном опыте (например, предложить требование по логированию определенных событий для упрощения поддержки).
    • Как лучше ответить: “Я не являюсь первоисточником бизнес-требований, моя задача – выявить их у стейкхолдеров и грамотно сформулировать. Однако, я формулирую детализированные функциональные и нефункциональные требования на основе этих потребностей, которые и ложатся в основу разработки. Также я могу инициировать требования, касающиеся качества продукта (например, по удобству использования или полноте логирования) или требования к организации процесса работы с требованиями.”

Какие есть виды требований? Можешь привести примеры? С какими видами требований работаешь?

Короткий ответ

Виды требований (по уровням и типам): Существует несколько классификаций, часто используется следующая иерархия (например, по BABOK guide): - Бизнес-требования (Business Requirements): Высокоуровневые цели, задачи и потребности организации, которые должен решить проект или система. Отвечают на вопрос “Зачем?”.

Полный ответ

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

    • Бизнес-требования (Business Requirements): Высокоуровневые цели, задачи и потребности организации, которые должен решить проект или система. Отвечают на вопрос “Зачем?”.
      • Пример: “Увеличить долю рынка онлайн-продаж на 15% в течение года”, “Сократить время обработки заявок клиентов на 20%”, “Обеспечить соответствие новым законодательным нормам X”.
    • Требования заинтересованных сторон (Stakeholder Requirements): Потребности конкретных стейкхолдеров или групп стейкхолдеров, описывающие, что им нужно от системы для достижения бизнес-целей. Мост между бизнес- и системными требованиями. Часто выражаются как User Stories или Use Cases на высоком уровне.
      • Пример: “Менеджеру по продажам необходим отчет по продажам в разрезе регионов”, “Клиент должен иметь возможность отслеживать статус своего заказа онлайн”.
    • Требования к решению (Solution Requirements): Описывают возможности и качества системы (решения), которые должны быть реализованы для удовлетворения бизнес-требований и требований стейкхолдеров. Делятся на:
      • Функциональные требования (Functional Requirements - FR): Описывают, что система должна делать. Функции, поведение, операции, данные, которые система должна обрабатывать.
        • Пример: “Система должна позволять пользователю регистрироваться с использованием email и пароля”, “Система должна рассчитывать сумму налога на добавленную стоимость для заказа”, “Система должна отображать список доступных товаров с возможностью фильтрации по категории и цене”.
      • Нефункциональные требования (Non-Functional Requirements - NFR): Описывают, как система должна выполнять свои функции, или задают ограничения на ее работу. Атрибуты качества, условия эксплуатации, ограничения.
        • Пример: “Страница поиска товаров должна загружаться не дольше 2 секунд”, “Система должна поддерживать одновременную работу 1000 пользователей”, “Пароль пользователя должен соответствовать политике сложности X”, “Система должна быть доступна 99.9% времени”.
    • Транзитные (Переходные) требования (Transition Requirements): Описывают возможности, необходимые для перехода из текущего состояния в будущее, но которые не будут нужны после завершения перехода.
      • Пример: “Необходимо перенести данные клиентов из старой системы в новую”, “Требуется провести обучение пользователей работе с новым интерфейсом”. (См. также вопрос 6).
  • С какими видами требований работаешь: “Я работаю со всеми перечисленными видами требований. Моя работа начинается с понимания бизнес-требований и требований стейкхолдеров. Затем я преобразую их в детализированные функциональные и нефункциональные требования, которые понятны команде разработки и тестирования. Также я участвую в определении и документировании переходных требований, если проект включает миграцию или существенные изменения в процессах.”

Какая классификация нефункциональных требований? Какие нефункциональные требования описываешь на практике?

Короткий ответ

Классификация нефункциональных требований (NFR): Существует несколько моделей, одна из самых известных – FURPS+ (разработана HP): - Functionality (Функциональность): (Иногда включают сюда, но чаще это отдельная категория FR).

Полный ответ

  • Классификация нефункциональных требований (NFR): Существует несколько моделей, одна из самых известных – FURPS+ (разработана HP):

    • Functionality (Функциональность): (Иногда включают сюда, но чаще это отдельная категория FR).
    • Usability (Удобство использования): Насколько легко пользователям изучить и использовать систему (эффективность, понятность интерфейса, эстетика, доступность для людей с ограниченными возможностями - accessibility).
    • Reliability (Надежность): Способность системы выполнять требуемые функции в заданных условиях в течение заданного периода времени (частота сбоев, возможность восстановления после сбоев - availability, fault tolerance).
    • Performance (Производительность): Характеристики быстродействия и эффективности использования ресурсов (время отклика, пропускная способность, нагрузочная способность, потребление памяти/CPU).
    • Supportability (Поддерживаемость): Легкость внесения изменений, исправления ошибок, адаптации к новым условиям (модульность, тестируемость, сопровождаемость, масштабируемость - scalability).
    • ”+” (Дополнительные категории):
      • Security (Безопасность): Защита от несанкционированного доступа, обеспечение конфиденциальности, целостности данных, аутентификация, авторизация.
      • Interface Requirements (Требования к интерфейсам): Взаимодействие с другими системами, устройствами, пользователями.
      • Data Requirements (Требования к данным): Объем данных, требования к хранению, резервному копированию, архивированию.
      • Legal/Regulatory Requirements (Правовые/Нормативные требования): Соответствие законам, стандартам, политикам (например, GDPR, PCI DSS).
      • Operational Requirements (Эксплуатационные требования): Требования к среде эксплуатации, мониторингу, администрированию.
  • Какие NFR описываешь на практике: “На практике я чаще всего описываю следующие NFR, так как они наиболее критичны для большинства систем:

    • Производительность: Особенно время отклика для ключевых операций (например, “Время отклика на поиск не должно превышать X секунд при Y одновременных запросах”) и требования к нагрузке (например, “Система должна выдерживать Z активных пользователей”).
    • Безопасность: Требования к аутентификации, авторизации (ролевая модель доступа), хранению чувствительных данных, соответствию политикам безопасности.
    • Надежность/Доступность: Например, “Система должна быть доступна 24/7 с плановыми простоями не более X часов в месяц”.
    • Удобство использования: Часто формулируются совместно с UX/UI-дизайнерами или на основе гайдлайнов (например, “Интерфейс должен соответствовать корпоративному дизайн-гайду”, “Ключевые функции должны быть доступны не более чем в 3 клика”).
    • Поддерживаемость: Требования к логированию событий для диагностики проблем.
    • Нормативные требования: Если проект работает с персональными данными или в финансовой сфере (например, “Система должна соответствовать требованиям ФЗ-152 о персональных данных”). Я стараюсь делать NFR измеримыми и проверяемыми.”

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

Короткий ответ

Ключевое отличие: - Функциональные требования (FR): Определяют ЧТО система должна делать (ее функции, поведение). Они описывают взаимодействие пользователя с системой или системы с другими системами для выполнения конкретной задачи. Пример: “Система должна позволять пользователю добавить товар в корзину”.

Полный ответ

  • Ключевое отличие:

    • Функциональные требования (FR): Определяют ЧТО система должна делать (ее функции, поведение). Они описывают взаимодействие пользователя с системой или системы с другими системами для выполнения конкретной задачи. Пример: “Система должна позволять пользователю добавить товар в корзину”.
    • Нефункциональные требования (NFR): Определяют КАК система должна выполнять свои функции или каким КАЧЕСТВОМ она должна обладать. Они задают атрибуты системы или ограничения на ее разработку и функционирование. Пример: “Добавление товара в корзину должно занимать не более 1 секунды”, “Кнопка ‘Добавить в корзину’ должна быть зеленого цвета и размером XY пикселей”.*
  • Аналогия: Представьте автомобиль.

    • FR: Умеет ехать вперед, тормозить, поворачивать, включать фары.
    • NFR: Максимальная скорость 200 км/ч (производительность), расход топлива 8 л/100 км (эффективность), цвет – красный (атрибут), соответствует нормам Euro-5 (ограничение/стандарт), подушки безопасности (надежность/безопасность).
  • Итог: FR – это про функционал, NFR – это про качество, атрибуты и ограничения этого функционала (и системы в целом).

Что такое транзитные (переходные) требования?

Короткий ответ

Транзитные (Переходные) требования (Transition Requirements): Как уже упоминалось (в вопросе 3), это требования, описывающие действия и возможности, необходимые для успешного перехода от текущего состояния (“as-is”) к будущему состоянию (“to-be”) с новой системой или решением. Они носят временный характер и перестают быть актуальными после завершения перехода.

Полный ответ

  • Транзитные (Переходные) требования (Transition Requirements): Как уже упоминалось (в вопросе 3), это требования, описывающие действия и возможности, необходимые для успешного перехода от текущего состояния (“as-is”) к будущему состоянию (“to-be”) с новой системой или решением. Они носят временный характер и перестают быть актуальными после завершения перехода.
  • Цель: Обеспечить плавный и эффективный переход, минимизировать риски и простои.
  • Примеры:
    • Миграция данных: “Необходимо разработать скрипты для переноса исторических данных заказов из старой CRM в новую за период с 2018 года по настоящее время”.
    • Обучение пользователей: “Провести серию обучающих семинаров для сотрудников отдела продаж по работе с новым интерфейсом системы”.
    • Параллельный запуск: “Старая и новая системы должны работать параллельно в течение одного месяца для сверки результатов”.
    • Развертывание: “Требуется подготовить инфраструктуру для развертывания новой системы в продуктивной среде”.
    • Вывод из эксплуатации: “Старую систему необходимо вывести из эксплуатации и архивировать ее данные к дате Х”.

Что такое User story? Можешь привести пример? Применяешь ли на практике?

Короткий ответ

User Story (Пользовательская история): Это короткое, неформальное описание одной или нескольких функций системы, сформулированное с точки зрения конечного пользователя или заказчика. User Story фокусируется на ценности, которую эта функция приносит пользователю. Это основной артефакт для описания требований в Agile-методологиях (Scrum, Kanban). - Классический формат: Как , я хочу , чтобы .

Полный ответ

  • User Story (Пользовательская история): Это короткое, неформальное описание одной или нескольких функций системы, сформулированное с точки зрения конечного пользователя или заказчика. User Story фокусируется на ценности, которую эта функция приносит пользователю. Это основной артефакт для описания требований в Agile-методологиях (Scrum, Kanban).

  • Классический формат: Как <тип пользователя>, я хочу <выполнить действие>, чтобы <получить ценность/достичь цели>.

    • <Тип пользователя> (Who): Роль, для которой создается функциональность.
    • <Выполнить действие> (What): Что пользователь хочет сделать с помощью системы.
    • <Получить ценность/достичь цели> (Why): Какую пользу или выгоду это действие принесет пользователю (обоснование необходимости).
  • Пример:

    • Как зарегистрированный покупатель, я хочу добавить товар в список желаний, чтобы я мог легко найти и купить его позже.
    • Как администратор системы, я хочу иметь возможность заблокировать пользователя, чтобы предотвратить несанкционированный доступ.
  • Применяешь ли на практике? “Да, User Stories – это один из основных инструментов, которые я использую на большинстве проектов, особенно если команда работает по Agile. Этот формат помогает сфокусироваться на пользователе и ценности, способствует лучшему пониманию требований всей командой и облегчает приоритизацию.”

Что такое User story map (USM) и зачем ее использовать?

Короткий ответ

User Story Map (Карта пользовательских историй): Это визуальный инструмент, который помогает организовать User Stories и представить их в контексте пользовательского опыта и всего продукта. USM обычно представляет собой двумерную структуру: - Горизонтальная ось (Backbone/Каркас): Представляет основные шаги или активности пользователя при взаимодействии с продуктом (высокоуровневые задачи, user journey).

Полный ответ

  • User Story Map (Карта пользовательских историй): Это визуальный инструмент, который помогает организовать User Stories и представить их в контексте пользовательского опыта и всего продукта. USM обычно представляет собой двумерную структуру:

    • Горизонтальная ось (Backbone/Каркас): Представляет основные шаги или активности пользователя при взаимодействии с продуктом (высокоуровневые задачи, user journey). Эти шаги располагаются в хронологическом порядке.
    • Вертикальная ось (Body/Тело): Под каждой активностью каркаса располагаются User Stories, относящиеся к этой активности. Истории часто группируются по степени важности или по релизам (например, сверху вниз: MVP, Release 2, Release 3…).
  • Зачем использовать USM:

    • Визуализация “большой картины”: Помогает увидеть весь пользовательский путь и как отдельные истории вписываются в него.
    • Понимание контекста: Истории не существуют в вакууме, карта показывает их взаимосвязь.
    • Планирование релизов и MVP: Позволяет легко выделить “Walking Skeleton” (минимально жизнеспособный продукт, проходящий через все основные шаги) и спланировать последующие инкременты.
    • Приоритизация: Наглядно видно, какие активности и истории являются наиболее важными.
    • Выявление пробелов: Помогает обнаружить пропущенные шаги или необходимые функции.
    • Улучшение коммуникации: Служит отличным инструментом для обсуждения продукта со стейкхолдерами и командой.

Какие преимущества использования User story?

Короткий ответ

Фокус на пользователе и ценности: Формат заставляет думать о том, кто будет использовать функцию и зачем она ему нужна. - Простота и понятность: Легко читаются и понимаются всеми участниками процесса (бизнесом, разработчиками, тестировщиками). - Способствуют обсуждению: User Story – это не исчерпывающая спецификация, а “обещание обсуждения”.

Полный ответ

  • Фокус на пользователе и ценности: Формат заставляет думать о том, кто будет использовать функцию и зачем она ему нужна.
  • Простота и понятность: Легко читаются и понимаются всеми участниками процесса (бизнесом, разработчиками, тестировщиками).
  • Способствуют обсуждению: User Story – это не исчерпывающая спецификация, а “обещание обсуждения”. Она инициирует диалог между аналитиком, заказчиком и командой для уточнения деталей.
  • Облегчают приоритизацию: Понимание ценности помогает легче расставлять приоритеты.
  • Поддерживают итеративную разработку: Истории обычно небольшие и могут быть реализованы за одну итерацию (спринт).
  • Улучшают оценку: Небольшой размер и четкая цель упрощают оценку трудоемкости разработки.
  • Повышают гибкость: Легче добавлять, изменять или удалять истории по мере изменения требований.

Как понять, что User story написана хорошо? Можешь привести пример?

Короткий ответ

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

Полный ответ

  • Критерии хорошей User Story (часто используют акроним INVEST):

    • Independent (Независимая): Насколько это возможно, история должна быть независимой от других историй, чтобы их можно было разрабатывать и доставлять в любом порядке.
    • Negotiable (Обсуждаемая): История – это не контракт, а отправная точка для обсуждения деталей реализации. Она должна оставлять место для диалога.
    • Valuable (Ценная): История должна приносить явную ценность для пользователя или заказчика (это отражено в части “чтобы…”).
    • Estimable (Оценимая): Команда разработки должна быть в состоянии оценить трудоемкость реализации истории. Если история слишком большая или неясная, ее нужно разбить или уточнить.
    • Small (Маленькая): История должна быть достаточно маленькой, чтобы ее можно было реализовать в рамках одной итерации (спринта). “Правильный” размер зависит от команды.
    • Testable (Тестируемая): Должно быть понятно, как проверить, что история реализована корректно. Обычно это достигается с помощью Acceptance Criteria (Критериев приемки).
  • Пример хорошей User Story:

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

    Acceptance Criteria (Критерии приемки):

    1. В панели фильтров отображается блок “Цвет”.
    2. В блоке “Цвет” перечислены все цвета, доступные для товаров в текущей категории.
    3. Пользователь может выбрать один или несколько цветов для фильтрации.
    4. При выборе цвета(ов) список товаров на странице немедленно обновляется.
    5. В списке отображаются только товары выбранного(ых) цвета(ов).
    6. Выбранные фильтры по цвету отображаются в панели фильтров и могут быть сброшены.

    Почему она хороша (проверка по INVEST):

    • I (Независимая): В целом да, фильтрация по цвету может быть реализована независимо от фильтрации по размеру (хотя они могут быть частью одной большой фичи “Фильтрация”).
    • N (Обсуждаемая): Да, детали (как отображать цвета – списком, квадратиками; как обрабатывать товары с несколькими цветами) можно и нужно обсудить с командой и дизайнером.
    • V (Ценная): Да, явно указана ценность для покупателя – ускорение поиска.
    • E (Оценимая): Да, объем работ понятен для оценки командой.
    • S (Маленькая): Да, вероятно, реализуема за один спринт.
    • T (Тестируемая): Да, критерии приемки четко описывают, как проверить результат.

Что такое Use cases? Как они описываются (пример)? Применяешь ли на практике?

Короткий ответ

Use Case (Вариант использования): Это описание взаимодействия между внешним актором (пользователем или другой системой) и описываемой системой для достижения определенной цели актора. Use Case фокусируется на последовательности действий и описывает, как актор использует систему. Use Cases более формальны и детализированы, чем User Stories.

Полный ответ

  • Use Case (Вариант использования): Это описание взаимодействия между внешним актором (пользователем или другой системой) и описываемой системой для достижения определенной цели актора. Use Case фокусируется на последовательности действий и описывает, как актор использует систему. Use Cases более формальны и детализированы, чем User Stories.

  • Как описываются (структура): Полное описание Use Case обычно включает:

    • Название (Use Case Name): Краткое, глагольное описание цели (например, “Зарегистрировать нового пользователя”).
    • ID: Уникальный идентификатор.
    • Актор(ы) (Actor(s)): Кто инициирует и участвует во взаимодействии (основной и второстепенные).
    • Краткое описание (Brief Description): 1-2 предложения о сути Use Case.
    • Предусловия (Preconditions): Состояние системы, которое должно быть истинным до начала выполнения Use Case.
    • Постусловия (Postconditions): Состояние системы после успешного выполнения Use Case.
    • Основной поток событий (Main Success Scenario / Basic Flow): Нумерованная последовательность шагов взаимодействия актора и системы при успешном достижении цели.
    • Альтернативные потоки (Alternative Flows): Описание других, менее типичных, но успешных путей достижения цели.
    • Потоки исключений (Exception Flows / Error Flows): Описание того, что происходит, если возникает ошибка или условие, мешающее достижению цели.
    • (Опционально): Нефункциональные требования, связанные с этим Use Case, Бизнес-правила, Частота выполнения и др.
  • Пример (упрощенный) Use Case “Аутентификация пользователя”:

    • Название: Аутентификация пользователя
    • Актор: Пользователь
    • Предусловия: Пользователь находится на странице входа. Пользователь зарегистрирован в системе.
    • Постусловия: Пользователь успешно аутентифицирован и перенаправлен на главную страницу личного кабинета.
    • Основной поток событий:
      1. Пользователь вводит логин (email) и пароль в форму входа.
      2. Пользователь нажимает кнопку “Войти”.
      3. Система проверяет введенные логин и пароль.
      4. Система аутентифицирует пользователя.
      5. Система регистрирует факт успешного входа.
      6. Система отображает пользователю главную страницу личного кабинета.
    • Потоки исключений:
      • 3а. Неверный логин или пароль:
        1. Система отображает сообщение об ошибке “Неверный логин или пароль”.
        2. Пользователь остается на странице входа. Use case завершается неудачно.
      • 3б. Учетная запись заблокирована:
        1. Система отображает сообщение об ошибке “Ваша учетная запись заблокирована”.
        2. Пользователь остается на странице входа. Use case завершается неудачно.
  • Применяешь ли на практике? “Да, я применяю Use Cases, но реже, чем User Stories. Они особенно полезны для:

    • Описания сложных сценариев взаимодействия с множеством шагов и альтернативных путей.
    • Проектов, где требуется более формальная и детальная документация (например, в банковской сфере, для государственных проектов или при работе по Waterfall/RUP).
    • Визуализации общей функциональности системы с помощью Use Case диаграмм (UML). Часто я использую комбинацию: User Story для высокоуровневого описания и приоритизации, а Use Case для детализации сложных историй.”

В чем отличие User stories от Use cases?

Короткий ответ

Краткая суть раскрыта в полном ответе с кодом или практическим примером.

Полный ответ

ПризнакUser StoryUse Case
ФокусНа ценности для пользователя (Why)На взаимодействии и цели актора (How)
Уровень деталиНизкий (высокоуровневое описание)Высокий (детальное описание шагов)
ФорматНеформальный (текст по шаблону)Более формальный (структурированный шаблон)
РазмерМаленький (реализуется за итерацию)Может быть большим (охватывает цель целиком)
Цель”Обещание обсуждения”, основа для диалогаДетальная спецификация взаимодействия
КонтекстПреимущественно AgileWaterfall, RUP, Agile (для сложных сценариев)
ПредставлениеКарточки, записи в бэклогеТекстовые документы, UML Use Case диаграммы
Что описываетОбычно одну функцию или ее частьПолный сценарий достижения цели актора
СтруктураРоль-Действие-Ценность (+ Acceptance Criteria)Название, Акторы, Потоки (основной, альт., искл.), Условия

Что такое ГОСТ 19 и ГОСТ 34 и для чего они нужны?

Короткий ответ

ГОСТ 19 (Серия стандартов ЕСПД - Единая система программной документации): Это комплекс государственных стандартов Российской Федерации (ранее СССР), который устанавливает виды, состав, правила оформления и обращения программных документов. Он регламентирует документацию, создаваемую в процессе разработки, сопровождения и эксплуатации программ и программных изделий.

Полный ответ

  • ГОСТ 19 (Серия стандартов ЕСПД - Единая система программной документации): Это комплекс государственных стандартов Российской Федерации (ранее СССР), который устанавливает виды, состав, правила оформления и обращения программных документов. Он регламентирует документацию, создаваемую в процессе разработки, сопровождения и эксплуатации программ и программных изделий.

    • Для чего нужен:
      • Стандартизация: Обеспечивает единообразие программной документации.
      • Полнота: Гарантирует наличие необходимого комплекта документов для понимания, использования и модификации программы.
      • Качество: Устанавливает требования к содержанию и оформлению документов.
      • Взаимодействие: Упрощает обмен информацией между разработчиками, заказчиками и эксплуатирующими организациями.
    • Ключевые документы по ГОСТ 19 (примеры): Техническое задание (ТЗ) на программу, Спецификация, Текст программы, Описание программы, Руководство программиста, Руководство оператора, Ведомость эксплуатационных документов и т.д.
  • ГОСТ 34 (Серия стандартов на АС - Автоматизированные системы): Это комплекс государственных стандартов РФ, который устанавливает стадии создания, виды, состав и содержание документов при разработке, сопровождении и эксплуатации автоматизированных систем (АС). АС – это более широкое понятие, чем просто программа; оно включает в себя персонал, комплекс средств автоматизации (ПО, технические средства, информационное обеспечение) и регламенты их взаимодействия.

    • Для чего нужен:
      • Регламентация жизненного цикла АС: Определяет этапы создания системы (от исследования до ввода в эксплуатацию и сопровождения).
      • Стандартизация документации на АС: Устанавливает требования к комплекту документов на каждом этапе.
      • Управление проектом: Помогает структурировать процесс создания сложных систем.
      • Приемка и эксплуатация: Обеспечивает наличие документации, необходимой для сдачи-приемки и дальнейшей эксплуатации системы.
      • Требования регуляторов: Часто является обязательным при создании систем для госсектора или крупных корпораций.
    • Ключевые документы по ГОСТ 34 (примеры): Техническое задание на создание (модернизацию) АС (ТЗ на АС), Эскизный проект, Технический проект, Рабочая документация (включая программную по ГОСТ 19), Эксплуатационная документация, Программа и методика испытаний (ПМИ).
  • Общее назначение ГОСТ 19 и 34: Обеспечить стандартизированный, документированный и управляемый процесс создания и сопровождения программного обеспечения и автоматизированных систем, что особенно важно для крупных, сложных или государственных проектов.

В чем разница между ГОСТ 19 и ГОСТ 34?

Короткий ответ

Основная разница – в объекте стандартизации и масштабе: - ГОСТ 19 (ЕСПД): Фокусируется на программном обеспечении (ПО) и документации к нему. Регламентирует документы на конкретные программы или программные комплексы. - ГОСТ 34 (АС): Фокусируется на автоматизированных системах (АС) в целом.

Полный ответ

  • Основная разница – в объекте стандартизации и масштабе:
    • ГОСТ 19 (ЕСПД): Фокусируется на программном обеспечении (ПО) и документации к нему. Регламентирует документы на конкретные программы или программные комплексы.
    • ГОСТ 34 (АС): Фокусируется на автоматизированных системах (АС) в целом. АС включает ПО как один из компонентов, но также охватывает аппаратные средства, информационное обеспечение (базы данных), организационное обеспечение (инструкции для персонала) и сам персонал. ГОСТ 34 регламентирует весь жизненный цикл АС и документацию на всех его стадиях.
  • Иерархия: Можно сказать, что ГОСТ 19 является частью или используется в рамках ГОСТ 34, когда речь идет о документации на программное обеспечение, входящее в состав автоматизированной системы. ТЗ по ГОСТ 19 описывает программу, ТЗ по ГОСТ 34 описывает систему в целом.
  • Область применения: ГОСТ 19 применяется при разработке любого ПО, где требуется формальная документация. ГОСТ 34 применяется при создании комплексных систем (например, АСУ ТП, информационные системы предприятий, государственные информационные системы).

Как ты понимаешь, что требования хорошие? Какие есть критерии хороших требований?

Короткий ответ

Понимание “хороших” требований: Хорошие требования – это те, которые минимизируют риски недопонимания, неправильной реализации, превышения бюджета/сроков и создания продукта, не нужного пользователю. Они служат надежным фундаментом для проектирования, разработки и тестирования.

Полный ответ

  • Понимание “хороших” требований: Хорошие требования – это те, которые минимизируют риски недопонимания, неправильной реализации, превышения бюджета/сроков и создания продукта, не нужного пользователю. Они служат надежным фундаментом для проектирования, разработки и тестирования.
  • Критерии хороших требований (часто расширяют SMART или используют другие акронимы, например, FURPS+ для NFR, INVEST для User Stories, а для требований в целом):
    • Полные (Complete): Требование содержит всю необходимую информацию для его реализации и проверки. Не упущены важные детали или условия.
    • Корректные (Correct): Требование точно отражает бизнес-потребность или пользовательскую нужду. Оно не содержит ошибок.
    • Недвусмысленные (Unambiguous): Требование имеет только одно толкование. Все термины четко определены (часто используется глоссарий). Избегаются расплывчатые формулировки.
    • Согласованные (Consistent): Требование не противоречит другим требованиям (внутри документа и между разными документами).
    • Верифицируемые / Тестируемые (Verifiable / Testable): Существует способ проверить (протестировать, продемонстрировать, измерить), что требование выполнено. Оно должно быть измеримым (особенно NFR).
    • Осуществимые / Реализуемые (Feasible / Achievable): Требование технически и экономически возможно реализовать в рамках ограничений проекта (бюджет, сроки, технологии).
    • Атомарные / Модульные (Atomic / Modular): Требование описывает одну и только одну вещь. Его нельзя разбить на более мелкие независимые требования без потери смысла. Это упрощает тестирование и трассировку.
    • Приоритезированные (Prioritized): Указана важность требования (например, Must Have, Should Have, Could Have, Won’t Have или нумерация) для помощи в планировании и принятии решений при ограничении ресурсов.
    • Понятные (Understandable): Требование написано ясным языком, понятным для всех заинтересованных сторон (бизнеса, разработчиков, тестировщиков).
    • Трассируемые (Traceable): Есть возможность проследить связь требования с его источником (бизнес-целью, запросом стейкхолдера) и с артефактами, созданными на его основе (элементы дизайна, код, тест-кейсы).

Что является артефактом работы аналитика? Какие артефакты ты создаешь?

Короткий ответ

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

Полный ответ

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

  • Основные артефакты:

    • Документы требований:
      • Business Requirements Document (BRD) - Документ бизнес-требований
      • Software/System Requirements Specification (SRS) - Спецификация требований к ПО/системе (или ТЗ по ГОСТ)
      • Vision and Scope Document - Документ видения и границ проекта
    • Модели и диаграммы:
      • Диаграммы бизнес-процессов (BPMN, EPC, Cross-functional flowcharts)
      • Use Case диаграммы (UML) и текстовые описания Use Cases
      • Диаграммы состояний (State Machine Diagram, UML)
      • Диаграммы деятельности (Activity Diagram, UML)
      • Диаграммы последовательности (Sequence Diagram, UML)
      • Модели данных (ERD - Entity-Relationship Diagram, UML Class Diagram)
      • Контекстные диаграммы (System Context Diagram)
    • Agile-артефакты:
      • User Stories с Acceptance Criteria
      • Product Backlog (аналитик часто помогает Владельцу Продукта его вести)
      • User Story Map (USM)
    • Визуализации интерфейса:
      • Wireframes (каркасные диаграммы)
      • Mockups (макеты)
      • Интерактивные прототипы (иногда создаются аналитиком или совместно с дизайнером)
    • Другие документы:
      • Глоссарий терминов проекта
      • Матрица трассировки требований (Traceability Matrix)
      • Запросы на изменение (Change Requests)
      • Результаты анализа (например, Feasibility Study, Gap Analysis)
      • Протоколы встреч (Meeting Minutes) с зафиксированными решениями и требованиями
      • Постановки задач (Task Specifications) в баг-трекере (Jira, Azure DevOps и т.п.)
  • Какие артефакты ты создаешь (типичный ответ): “Набор артефактов зависит от проекта, методологии и потребностей команды. Чаще всего я создаю:

    • User Stories с детальными Acceptance Criteria.
    • Постановки задач в Jira/Confluence, включающие описание проблемы, требования, макеты и критерии приемки.
    • Диаграммы бизнес-процессов (BPMN), чтобы описать текущие (as-is) и будущие (to-be) процессы.
    • Wireframes или Mockups для визуализации пользовательских интерфейсов (иногда в тесном сотрудничестве с UX/UI дизайнером).
    • Текстовые описания Use Cases для сложных сценариев.
    • Модели данных (ERD) на концептуальном или логическом уровне, если требуется описать структуру данных.
    • Описание API/интеграций (если это входит в зону ответственности).
    • Глоссарий терминов.
    • Поддерживаю Product Backlog совместно с Владельцем Продукта.”

Кто является пользователями артефактов аналитика?

Короткий ответ

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

Полный ответ

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

  • Команда разработки:
    • Разработчики: Используют спецификации, User Stories, Use Cases, модели данных, описания API для написания кода.
    • Тестировщики / QA-инженеры: Используют требования и критерии приемки для создания тест-планов, тест-кейсов и проведения тестирования.
    • Архитекторы: Используют высокоуровневые требования, NFR, модели для проектирования архитектуры системы.
  • UX/UI Дизайнеры: Используют бизнес-требования, User Stories, описания процессов для проектирования пользовательского интерфейса и опыта. Сами создают Mockups/прототипы, которые аналитик может использовать в своих постановках.
  • Владелец Продукта / Product Manager: Используют артефакты (особенно бэклог, USM, Vision) для понимания скоупа, приоритизации, планирования релизов и коммуникации с бизнесом.
  • Менеджер Проекта: Используют документы требований, Vision & Scope для планирования, управления объемом работ, рисками и коммуникации со стейкхолдерами.
  • Бизнес-стейкхолдеры / Заказчики: Используют высокоуровневые документы (BRD, Vision), прототипы, USM для понимания того, что будет сделано, и для согласования требований.
  • Технические писатели: Используют спецификации и описания для создания пользовательской документации и справок.
  • Команда поддержки / Эксплуатации: Используют описания функциональности, NFR, эксплуатационную документацию (если аналитик участвует в ее создании) для поддержки и обслуживания системы.
  • Другие аналитики: Для понимания смежных областей системы или при передаче дел.

Что должен включать шаблон постановки? Как выглядит твоя постановка?

Короткий ответ

Шаблон постановки задачи (Task Specification) в трекере (например, Jira): Должен содержать всю необходимую и достаточную информацию для того, чтобы разработчик мог реализовать фичу, а тестировщик – ее проверить. Четкая структура помогает избежать пропусков информации. - Основные разделы типового шаблона: 1.

Полный ответ

  • Шаблон постановки задачи (Task Specification) в трекере (например, Jira): Должен содержать всю необходимую и достаточную информацию для того, чтобы разработчик мог реализовать фичу, а тестировщик – ее проверить. Четкая структура помогает избежать пропусков информации.

  • Основные разделы типового шаблона:

    1. Название (Title / Summary): Краткое, понятное, отражающее суть задачи (часто в формате User Story или “[Компонент]: [Действие]”).
    2. ID Задачи: Уникальный идентификатор в трекере.
    3. Тип Задачи (Issue Type): Story, Task, Bug, Improvement и т.д.
    4. Приоритет (Priority): Важность задачи.
    5. Исполнитель (Assignee): Кто будет выполнять (может быть не назначен сразу).
    6. Автор (Reporter): Кто создал задачу.
    7. Компонент(ы) (Component(s)): К какой части системы относится задача.
    8. Версии (Affects Version/s, Fix Version/s): Версии, где проблема проявилась / где будет исправлена/реализована.
    9. Описание (Description):
      • Контекст / Проблема / Цель (Context / Problem / Goal): Краткое описание, зачем нужна эта задача, какую проблему решает или какую цель преследует. Часто здесь приводится User Story.
      • Требования к реализации (Functional Requirements / Implementation Details): Детальное описание того, что должно быть сделано. Может включать:
        • Пошаговые сценарии (если нужно).
        • Описание логики, расчетов, алгоритмов.
        • Бизнес-правила.
        • Требования к данным (структура, валидация).
        • Описание взаимодействия с другими системами (API).
      • Требования к UI/UX (если применимо): Описание интерфейса, поведения элементов, ссылки на макеты (Figma, Sketch и т.п.). (См. вопрос 19).
      • Нефункциональные требования (NFRs): Указание специфичных для этой задачи NFR (например, “операция должна выполняться < 1 сек”).
    10. Критерии Приемки (Acceptance Criteria - AC): Четкие, измеримые, тестируемые условия, при выполнении которых задача считается завершенной. Часто в формате списка или Given/When/Then (BDD).
    11. Макеты / Вложения (Mockups / Attachments): Ссылки на дизайн-макеты, диаграммы, примеры данных и т.п.
    12. Допущения / Ограничения (Assumptions / Constraints): Любые предположения или ограничения, важные для понимания задачи.
    13. Вопросы / Открытые моменты (Questions / Open Issues): Раздел для фиксации нерешенных вопросов.
  • Как выглядит твоя постановка (примерный ответ): “Моя постановка задачи в Jira обычно следует структуре, похожей на описанную выше. Я всегда начинаю с User Story или четкого описания цели, чтобы команда понимала бизнес-контекст. Затем я детально расписываю функциональные требования, используя списки, таблицы, иногда псевдокод для сложной логики. Обязательно включаю ссылки на актуальные макеты в Figma. Ключевой элемент – это четкие и атомарные Критерии Приемки, по которым тестировщик сможет проверить результат, а разработчик – понять, когда работа закончена. Если есть интеграции, я описываю контракт API или ссылаюсь на соответствующую документацию. Я стараюсь делать постановки самодостаточными, но всегда готов ответить на уточняющие вопросы команды.”

Что нужно описать в постановке для пользовательского интерфейса? Можешь привести пример?

Короткий ответ

Описание UI в постановке задачи должно быть однозначным и полным, чтобы разработчик и тестировщик точно понимали, что и как должно выглядеть и работать. - Что нужно описать: 1. Ссылка на макет/прототип: Всегда должна быть ссылка на актуальный и согласованный дизайн-макет (Figma, Sketch, Zeplin, Axure и т.п.). Это основной источник правды для внешнего вида. 2.

Полный ответ

  • Описание UI в постановке задачи должно быть однозначным и полным, чтобы разработчик и тестировщик точно понимали, что и как должно выглядеть и работать.

  • Что нужно описать:

    1. Ссылка на макет/прототип: Всегда должна быть ссылка на актуальный и согласованный дизайн-макет (Figma, Sketch, Zeplin, Axure и т.п.). Это основной источник правды для внешнего вида.
    2. Общее расположение элементов: Если макета нет или он схематичный, описать, где какие блоки и контролы находятся на экране/странице.
    3. Описание контролов (элементов управления):
      • Типы контролов (кнопки, поля ввода, чекбоксы, радио-кнопки, выпадающие списки, таблицы, вкладки и т.д.).
      • Тексты на контролах (лейблы, плейсхолдеры, подсказки, названия кнопок).
      • Состояния контролов (активный, неактивный/disabled, в фокусе, ховер, ошибка валидации).
    4. Динамическое поведение:
      • Реакция на действия пользователя (что происходит при клике, вводе текста, выборе значения).
      • Появление/скрытие элементов в зависимости от условий.
      • Анимации (если есть специфичные требования).
    5. Отображение данных:
      • Откуда берутся данные для отображения.
      • Форматы отображения (даты, числа, валюты).
      • Сортировка, пагинация (для списков и таблиц).
    6. Валидация ввода:
      • Правила валидации для полей ввода (обязательность, формат, длина, диапазон значений).
      • Тексты и вид сообщений об ошибках валидации (как и где они отображаются).
    7. Навигация: Куда ведут ссылки и кнопки.
    8. Обратная связь с пользователем: Индикаторы загрузки, сообщения об успехе/ошибке операции.
    9. Адаптивность/Отзывчивость (если требуется): Как интерфейс должен выглядеть и вести себя на разных размерах экранов (десктоп, планшет, мобильный). Обычно это зона ответственности дизайнера и фронтенд-разработчика, но аналитик может фиксировать ключевые требования.
    10. Доступность (Accessibility): Если есть требования по поддержке скринридеров, навигации с клавиатуры и т.п.
  • Пример описания (фрагмент для поля ввода Email на форме регистрации):

    Кодпример
    **Поле "Email"**
    
    *   **Ссылка на макет:** [Ссылка на Figma Frame]
    *   **Тип:** Поле ввода текста (Input Text).
    *   **Лейбл:** "Email" (расположен над полем).
    *   **Плейсхолдер:** "Введите ваш email".
    *   **Обязательность:** Да.
    *   **Валидация:**
        *   При потере фокуса (onBlur) и при отправке формы.
        *   Правило 1: Поле не должно быть пустым. Текст ошибки: "Поле Email обязательно для заполнения".
        *   Правило 2: Значение должно соответствовать формату email (содержать "@" и домен). Текст ошибки: "Введите корректный email адрес".
        *   Ошибки отображаются красным текстом под полем ввода. Бордер поля также становится красным.
    *   **Состояние Disabled:** Нет.
    *   **Подсказка (Tooltip):** При ховере на иконку "?" рядом с лейблом появляется тултип: "Мы будем использовать этот email для входа и отправки уведомлений".

Что должно включать описание интеграции?

Короткий ответ

Описание интеграции систем должно четко определять, как две или более системы будут обмениваться данными или вызывать функции друг друга. - Ключевые элементы описания: 1. Интегрируемые системы: Какие системы участвуют во взаимодействии (названия, роли - кто источник, кто приемник). 2. Цель интеграции: Зачем нужен этот обмен данными/вызов функции? Какую бизнес-задачу решает? 3.

Полный ответ

  • Описание интеграции систем должно четко определять, как две или более системы будут обмениваться данными или вызывать функции друг друга.
  • Ключевые элементы описания:
    1. Интегрируемые системы: Какие системы участвуют во взаимодействии (названия, роли - кто источник, кто приемник).
    2. Цель интеграции: Зачем нужен этот обмен данными/вызов функции? Какую бизнес-задачу решает?
    3. Триггер: Какое событие инициирует интеграционное взаимодействие (например, нажатие кнопки пользователем, наступление времени по расписанию, изменение данных в одной из систем).
    4. Направление: Однонаправленная (система А -> система Б) или двунаправленная (А <-> Б).
    5. Способ взаимодействия / Протокол:
      • API (RESTful HTTP, SOAP, gRPC).
      • Очереди сообщений (Kafka, RabbitMQ, ActiveMQ).
      • Общая база данных (менее предпочтительно).
      • Обмен файлами (FTP/SFTP, общая папка).
    6. Формат данных: В каком формате передаются данные (JSON, XML, CSV, Protocol Buffers и т.д.).
    7. Структура данных / Контракт:
      • Для API: Описание эндпоинта (URL, HTTP метод - GET/POST/PUT/DELETE), заголовков (Headers), параметров запроса (Query/Path parameters), тела запроса (Request Body) и тела ответа (Response Body), включая типы данных, обязательность полей, примеры. Часто используется спецификация OpenAPI (Swagger).
      • Для очередей: Описание топика/очереди, структура сообщения.
      • Для файлов: Описание структуры файла, разделителей, кодировки.
    8. Аутентификация и Авторизация: Как системы проверяют подлинность друг друга (API ключи, токены OAuth2/JWT, сертификаты, логин/пароль). Какие права нужны для выполнения запроса.
    9. Обработка ошибок: Как системы должны реагировать на ошибки (сетевые проблемы, ошибки валидации данных, недоступность другой системы). Какие коды/сообщения об ошибках возвращаются. Механизмы повторных попыток (retry).
    10. Нефункциональные требования к интеграции:
      • Производительность: Ожидаемое время отклика, пропускная способность (количество запросов/сообщений в секунду/минуту).
      • Надежность: Гарантии доставки сообщений (для очередей).
      • Безопасность: Требования к шифрованию данных при передаче.
    11. Мониторинг и Логирование: Какие события интеграции должны логироваться для отладки и мониторинга.
    12. Транзакционность (если необходимо): Требования к обеспечению целостности данных при операциях, затрагивающих обе системы.

Что такое SRS (Software (or System) Requirements Specification)? Когда применяют? Применяешь ли на практике?

Короткий ответ

SRS (Software/System Requirements Specification) / Спецификация требований к ПО/системе: Это формальный, комплексный документ, который исчерпывающе описывает все требования к программному продукту или системе. Он служит основным документом для проектирования, разработки, тестирования и приемки системы. SRS обычно включает: - Введение (цели, аудитория, границы системы, определения).

Полный ответ

  • SRS (Software/System Requirements Specification) / Спецификация требований к ПО/системе: Это формальный, комплексный документ, который исчерпывающе описывает все требования к программному продукту или системе. Он служит основным документом для проектирования, разработки, тестирования и приемки системы. SRS обычно включает:

    • Введение (цели, аудитория, границы системы, определения).
    • Общее описание (контекст системы, функции продукта, характеристики пользователей, ограничения, предположения).
    • Функциональные требования (детальное описание всех функций, входов, выходов, обработки). Часто организуются по фичам, Use Cases или объектам.
    • Нефункциональные требования (производительность, безопасность, надежность, удобство использования и т.д.).
    • Требования к внешним интерфейсам (пользовательские, программные, аппаратные, коммуникационные).
    • Требования к данным (логическая структура, целостность).
    • Иногда включает модели (UML, ERD и т.п.) или ссылки на них.
    • Стандарты оформления часто базируются на IEEE 830 (старый, но влиятельный) или ISO/IEC/IEEE 29148.
  • Когда применяют:

    • Традиционные модели разработки (Waterfall, V-Model): Где требуется полная спецификация до начала разработки.
    • Крупные и сложные проекты: Где необходима высокая степень формализации и детализации.
    • Аутсорсинг / Работа с подрядчиками: Как контрактный документ, четко фиксирующий объем работ.
    • Регулируемые отрасли (медицина, авиация, финансы): Где требуется строгая документация для сертификации или соответствия нормам.
    • Государственные контракты: Часто является обязательным документом (в РФ аналогом может служить ТЗ по ГОСТ 34 или 19).
  • Применяешь ли на практике? “В чистом виде, как единый монолитный SRS-документ на сотни страниц, я сталкиваюсь с ним нечасто, так как многие команды сейчас работают по Agile. Однако, принципы и структура SRS остаются актуальными. На практике я часто создаю фрагменты SRS или документы, выполняющие его роль для конкретных фичей или модулей, особенно для описания сложных частей системы или интеграций. Например, детальное описание требований к API или сложной бизнес-логике может быть оформлено в виде отдельного документа-спецификации в Confluence, который по сути является частью того, что было бы в классическом SRS. В Agile-проектах мы используем комбинацию User Stories, критериев приемки, моделей и таких вот мини-спецификаций для документирования требований, что позволяет сохранять гибкость, но при этом иметь достаточную детализацию там, где это необходимо.”

В чем отличие верификации требований от валидации?

Короткий ответ

Верификация и Валидация (V&V) – это два ключевых процесса контроля качества требований (и продукта в целом). Их часто путают, но они отвечают на разные вопросы:

Полный ответ

  • Верификация и Валидация (V&V) – это два ключевых процесса контроля качества требований (и продукта в целом). Их часто путают, но они отвечают на разные вопросы:

    • Верификация (Verification): “Делаем ли мы продукт ПРАВИЛЬНО?”

      • Цель: Убедиться, что продукт (или артефакт, например, документ требований, дизайн, код) соответствует заданным спецификациям, стандартам и условиям.
      • Вопросы: Соответствует ли этот документ требованиям к оформлению? Реализована ли функция так, как описано в ТЗ? Проходит ли код статический анализ? Соответствует ли дизайн гайдлайнам? Покрывают ли тест-кейсы все требования?
      • Когда проводится: На протяжении всего процесса разработки (ревью требований, код-ревью, статическое тестирование, модульное тестирование, интеграционное тестирование).
      • Применительно к требованиям: Проверка требований на соответствие критериям качества (полнота, непротиворечивость, недвусмысленность, тестируемость и т.д.). Ревью документа требований аналитиками, разработчиками, тестировщиками.
    • Валидация (Validation): “Делаем ли мы ПРАВИЛЬНЫЙ продукт?”

      • Цель: Убедиться, что разрабатываемый продукт соответствует реальным потребностям пользователей и бизнес-целям.
      • Вопросы: Решает ли эта функция проблему пользователя? Нужна ли пользователям эта фича? Удобно ли пользоваться этим интерфейсом? Поможет ли система достичь заявленных бизнес-результатов?
      • Когда проводится: В основном на более поздних этапах (приемочное тестирование пользователями - UAT, бета-тестирование), но также и на ранних (ревью требований стейкхолдерами, тестирование прототипов, демонстрации).
      • Применительно к требованиям: Проверка того, что задокументированные требования действительно отражают нужды бизнеса и пользователей. Согласование требований с заказчиком, демонстрация прототипов, проведение UAT.
  • Простая аналогия:

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

Нотации моделирования

Какие существуют нотации моделирования? Какие используешь на практике и для чего?

Короткий ответ

Нотации моделирования: Это стандартизированные графические языки (наборы символов и правил их использования) для визуального представления различных аспектов систем, процессов, данных и т.д. Они помогают: - Визуализировать сложные концепции. - Улучшить понимание и коммуникацию между стейкхолдерами. - Анализировать и оптимизировать процессы и системы. - Создавать однозначную документацию.

Полный ответ

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

    • Визуализировать сложные концепции.
    • Улучшить понимание и коммуникацию между стейкхолдерами.
    • Анализировать и оптимизировать процессы и системы.
    • Создавать однозначную документацию.
  • Основные нотации:

    • BPMN (Business Process Model and Notation): Стандарт для моделирования бизнес-процессов. Позволяет детально описать шаги процесса, точки принятия решений, события, роли участников, потоки данных и сообщений.
    • UML (Unified Modeling Language): Обширный стандарт для моделирования программных систем. Включает множество диаграмм для описания структуры, поведения, взаимодействия и развертывания системы.
    • ERD (Entity-Relationship Diagram) / Диаграммы сущность-связь: Используются для моделирования структуры данных, баз данных. Показывают сущности (таблицы), их атрибуты (поля) и связи между ними. Существуют разные нотации (Чена, Crow’s Foot/Воронья лапка и др.).
    • Flowcharts (Блок-схемы): Простая и универсальная нотация для описания алгоритмов или последовательности шагов в процессе. Менее формальна, чем BPMN. Часто используется для высокоуровневых или простых схем.
    • IDEF (Integration DEFinition): Семейство нотаций, используемых в системной инженерии и бизнес-анализе (например, IDEF0 для функционального моделирования, IDEF1X для моделирования данных). Более формальные, чаще применяются в госструктурах или на производстве.
    • EPC (Event-driven Process Chain): Нотация для моделирования бизнес-процессов, ориентированная на события. Была популярна до широкого распространения BPMN, лежит в основе ARIS.
    • DFD (Data Flow Diagram): Диаграммы потоков данных. Показывают, как данные перемещаются через систему, где они обрабатываются и хранятся. Фокус на данных, а не на последовательности управления, как в BPMN.
    • Archimate: Язык моделирования для корпоративной архитектуры. Позволяет связать бизнес-процессы, приложения, данные и технологическую инфраструктуру.
  • Какие используешь и для чего (типичный ответ):

    • BPMN: Мой основной инструмент для моделирования бизнес-процессов ‘as-is’ (как есть) и ‘to-be’ (как будет). Она позволяет четко показать последовательность действий, ответственных (через дорожки/пулы), ветвления логики (шлюзы), взаимодействие с другими системами или процессами. Это помогает согласовывать процессы с бизнесом и ставить задачи разработчикам.
    • UML: Использую несколько ключевых диаграмм:
      • Use Case Diagram: Для визуализации основных функций системы и взаимодействия пользователей (акторов) с ними на высоком уровне. Помогает определить границы системы и основные требования.
      • Activity Diagram: Похожа на блок-схему, но с возможностями UML. Использую для детализации логики внутри сложного Use Case или для описания алгоритмов, где BPMN избыточен.
      • Sequence Diagram: Для моделирования взаимодействия между объектами или компонентами системы во времени. Особенно полезна при описании интеграций или сложных сценариев с несколькими участниками.
      • State Machine Diagram: Для описания жизненного цикла объекта (например, статусной модели заказа: ‘Новый’ -> ‘В обработке’ -> ‘Отправлен’ -> ‘Доставлен’/‘Отменен’) и переходов между состояниями.
      • Class Diagram (иногда): На концептуальном уровне для описания основных сущностей системы и их связей, если нужно зафиксировать ключевые бизнес-объекты до детального проектирования БД.
    • ERD (чаще Crow’s Foot): Применяю для проектирования или описания структуры баз данных совместно с разработчиками или при анализе существующих БД. Показывает таблицы, поля, типы данных, ключи и связи.
    • Flowcharts: Использую для очень простых процессов или быстрых зарисовок во время обсуждений, когда формализм BPMN не требуется.”

Какие есть элементы в BPMN?

Короткий ответ

BPMN состоит из четырех основных категорий элементов:

Полный ответ

BPMN состоит из четырех основных категорий элементов:

  1. Объекты потока управления (Flow Objects): Определяют поведение процесса.

    • События (Events): Что-то, что происходит во время процесса. Обозначаются кружками. Бывают:
      • Стартовые (Start): Начинают процесс (тонкая линия).
      • Промежуточные (Intermediate): Происходят во время процесса (двойная линия). Могут быть на границе задачи (Boundary Events).
      • Завершающие (End): Заканчивают поток или процесс (жирная линия).
    • Действия (Activities): Работа, которая выполняется в процессе. Обозначаются прямоугольниками со скругленными углами. Бывают:
      • Задачи (Tasks): Атомарные действия.
      • Подпроцессы (Sub-processes): Декомпозированные части процесса, которые можно свернуть/развернуть.
    • Шлюзы (Gateways): Контролируют расхождение и схождение потоков управления. Обозначаются ромбами. Определяют ветвления и слияния в процессе.
  2. Соединяющие объекты (Connecting Objects): Связывают объекты потока управления.

    • Поток управления (Sequence Flow): Показывает порядок выполнения действий. Сплошная линия со стрелкой. Используется внутри одного пула/дорожки.
    • Поток сообщений (Message Flow): Показывает обмен сообщениями между разными участниками (пулами). Пунктирная линия с кружком в начале и стрелкой в конце.
    • Ассоциация (Association): Связывает артефакты (например, данные) или текст с объектами потока. Пунктирная линия (иногда с направлением).
  3. Зоны ответственности (Swimlanes): Организуют и категоризируют действия.

    • Пул (Pool): Представляет участника процесса (например, компанию, систему, отдел). Является контейнером для процесса.
    • Дорожка (Lane): Представляет роль, подразделение или систему внутри пула. Разделяет действия внутри одного пула по ответственным.
  4. Артефакты (Artifacts): Дают дополнительную информацию о процессе, не влияя на поток управления.

    • Объект данных (Data Object): Показывает данные, необходимые для действия или создаваемые им (например, документ “Заявка”). Значок листа бумаги.
    • Группа (Group): Используется для визуальной группировки элементов на диаграмме без влияния на логику. Прямоугольник из штрих-пунктирной линии.
    • Текстовая аннотация (Text Annotation): Позволяет добавить комментарии к диаграмме. Текст с квадратной скобкой, связанный ассоциацией.

Какие есть типы шлюзов в BPMN?

Короткий ответ

Шлюзы (Gateways) управляют потоками управления (Sequence Flow), разделяя их (ветвление) или объединяя (слияние). Основные типы:

Полный ответ

Шлюзы (Gateways) управляют потоками управления (Sequence Flow), разделяя их (ветвление) или объединяя (слияние). Основные типы:

  1. Эксклюзивный шлюз (Exclusive Gateway / XOR-шлюз):

    • Ветвление: Только один из исходящих потоков активируется в зависимости от условия. Условия пишутся на исходящих потоках. Если ни одно не выполнено, может быть поток “по умолчанию”.
    • Слияние: Ожидает завершения одного входящего потока и активирует исходящий.
    • Обозначение: Ромб (пустой или с маркером ‘X’).
  2. Параллельный шлюз (Parallel Gateway / AND-шлюз):

    • Ветвление: Все исходящие потоки активируются одновременно (параллельно). Условия не нужны.
    • Слияние: Ожидает завершения всех входящих потоков, прежде чем активировать исходящий. Синхронизирует параллельные ветки.
    • Обозначение: Ромб с маркером ’+’.
  3. Неэксклюзивный (Инклюзивный) шлюз (Inclusive Gateway / OR-шлюз):

    • Ветвление: Один или несколько исходящих потоков могут быть активированы одновременно в зависимости от выполнения их условий. Условия пишутся на исходящих потоках. Хотя бы одно условие должно быть истинным (или должен быть поток по умолчанию).
    • Слияние: Ожидает завершения всех активных входящих потоков (которые были запущены соответствующим инклюзивным шлюзом ветвления). Это сложная логика синхронизации.
    • Обозначение: Ромб с маркером ‘O’.
  4. Шлюз на основе событий (Event-Based Gateway):

    • Ветвление: Поток направляется по одному из путей в зависимости от того, какое событие произойдет первым после шлюза. За шлюзом следуют промежуточные события-обработчики (например, получение сообщения или таймер).
    • Слияние: Не используется для слияния.
    • Обозначение: Ромб с маркером в виде двойного круга с пентаграммой внутри (похоже на промежуточное событие внутри ромба).
    • Частный случай: Event-Based Gateway для запуска процесса. Начинает процесс при наступлении первого из нескольких возможных стартовых событий.
  5. Комплексный шлюз (Complex Gateway):

    • Используется для моделирования сложной логики ветвления или слияния, которую нельзя выразить другими шлюзами. Требует текстового описания логики. Используется редко, так как усложняет понимание диаграммы.
    • Обозначение: Ромб с маркером ’*’.

Какие есть события в BPMN?

Короткий ответ

События (Events) обозначают что-то, что случается в процессе. Они классифицируются по нескольким признакам:

Полный ответ

События (Events) обозначают что-то, что случается в процессе. Они классифицируются по нескольким признакам:

  1. По позиции в процессе:

    • Стартовые (Start Events): Начинают процесс (тонкая линия круга). Может быть только одно None Start Event в процессе верхнего уровня, но несколько других (сообщение, таймер и т.д.).
    • Промежуточные (Intermediate Events): Происходят во время процесса (двойная линия круга). Могут быть:
      • В потоке (Catching/Throwing): Размещаются прямо на линии потока управления. Catching (пустой маркер) ожидает событие, Throwing (закрашенный маркер) инициирует событие.
      • На границе (Boundary Events): Прикрепляются к границе действия (задачи или подпроцесса). Всегда являются Catching. Реагируют на событие, пока действие активно (например, ошибка, таймер). Могут быть прерывающими (сплошная линия) или непрерывающими (пунктирная линия).
    • Завершающие (End Events): Заканчивают поток/процесс (жирная линия круга). Всегда являются Throwing (сигнализируют о результате).
  2. По типу триггера или результата (основные): Внутри круга события помещается маркер, обозначающий тип.

    • None: Простое начало или конец потока без указания причины/результата.
    • Сообщение (Message): Отправка или получение сообщения (маркер - конверт).
    • Таймер (Timer): Срабатывание по времени (календарная дата, интервал, цикл) (маркер - часы).
    • Ошибка (Error): Возникновение именованной ошибки (маркер - молния). Используется как End или Boundary Catching.
    • Эскалация (Escalation): Передача проблемы на более высокий уровень без прерывания (маркер - стрелка вверх). Используется как End или Boundary (обычно непрерывающий).
    • Сигнал (Signal): Трансляция сигнала всем возможным обработчикам (широковещательный) (маркер - треугольник).
    • Условие (Conditional): Срабатывание при выполнении определенного условия (маркер - лист с линиями).
    • Ссылка (Link): Используется парами (Throwing + Catching) для соединения частей диаграммы на одной странице (как goto) (маркер - стрелка вправо/влево).
    • Компенсация (Compensation): Инициирование или выполнение отката транзакции/действий (маркер - две стрелки назад).
    • Отмена (Cancel): Используется в подпроцессах транзакций для индикации отмены (маркер - ‘X’).
    • Завершение (Terminate): Немедленно прекращает выполнение всего процесса (маркер - закрашенный круг). Используется только как End Event.
    • Множественный (Multiple): Означает один из нескольких возможных триггеров/результатов (маркер - пентагон/звезда).

Какие есть виды диаграмм в UML?

Короткий ответ

UML (Unified Modeling Language) включает множество диаграмм, которые делятся на две основные категории:

Полный ответ

UML (Unified Modeling Language) включает множество диаграмм, которые делятся на две основные категории:

  1. Структурные диаграммы (Structure Diagrams): Показывают статическую структуру системы и ее частей.

    • Диаграмма классов (Class Diagram): Наиболее распространенная. Описывает классы системы, их атрибуты, методы и отношения между классами (ассоциация, наследование, реализация).
    • Диаграмма объектов (Object Diagram): Показывает экземпляры классов (объекты) и их связи в конкретный момент времени. Снимок системы.
    • Диаграмма компонентов (Component Diagram): Показывает организацию и зависимости между компонентами системы (модули, библиотеки, исполняемые файлы).
    • Диаграмма развертывания (Deployment Diagram): Показывает физическое размещение артефактов ПО на узлах (серверах, устройствах) и связи между ними. Моделирует топологию системы.
    • Диаграмма пакетов (Package Diagram): Показывает организацию элементов модели (классов, use cases) в пакеты (папки/пространства имен) и зависимости между пакетами.
    • Диаграмма композитной/внутренней структуры (Composite Structure Diagram): Показывает внутреннюю структуру класса или компонента, его части и порты взаимодействия.
    • (Profile Diagram): Определяет пользовательские стереотипы, помеченные значения и ограничения для адаптации UML.
  2. Диаграммы поведения (Behavior Diagrams): Показывают динамическое поведение системы.

    • Диаграмма вариантов использования (Use Case Diagram): Очень важна для аналитика. Описывает функциональность системы с точки зрения внешних пользователей (акторов), показывая, какие цели они могут достичь с помощью системы.
    • Диаграмма деятельности (Activity Diagram): Популярна у аналитиков. Показывает пошаговый поток работ или алгоритм, похожа на блок-схему или BPMN, но в нотации UML. Используется для моделирования бизнес-процессов или логики операций.
    • Диаграмма состояний (State Machine Diagram): Описывает состояния, в которых может находиться объект, и переходы между этими состояниями в ответ на события. Показывает жизненный цикл объекта.
    • Диаграммы взаимодействия (Interaction Diagrams): Подкатегория диаграмм поведения, показывающая потоки управления и данных между объектами.
      • Диаграмма последовательности (Sequence Diagram): Очень популярна. Показывает взаимодействие объектов во времени, фокусируясь на последовательности отправки сообщений.
      • Диаграмма коммуникации (Communication Diagram / Collaboration Diagram): Показывает взаимодействие объектов, фокусируясь на структуре связей между ними, а не на времени. Сообщения нумеруются.
      • Диаграмма обзора взаимодействия (Interaction Overview Diagram): Вариант Activity Diagram, где узлами являются ссылки на другие диаграммы взаимодействия (Sequence, Communication и т.д.). Показывает общую картину сложных взаимодействий.
      • Диаграмма синхронизации (Timing Diagram): Фокусируется на временнЫх ограничениях и изменениях состояний объектов во времени.

Какие есть фреймы в Sequence диаграмме?

Короткий ответ

Фреймы (Frames) или Операторы взаимодействия (Combined Fragments) в диаграмме последовательности (Sequence Diagram) используются для описания сложной логики управления потоком сообщений. Это прямоугольники, охватывающие часть диаграммы, с оператором в верхнем левом углу. Основные операторы:

Полный ответ

Фреймы (Frames) или Операторы взаимодействия (Combined Fragments) в диаграмме последовательности (Sequence Diagram) используются для описания сложной логики управления потоком сообщений. Это прямоугольники, охватывающие часть диаграммы, с оператором в верхнем левом углу. Основные операторы:

  • alt (Alternatives): Показывает альтернативные сценарии (как if-then-else). Фрейм делится пунктирными линиями на операнды. У каждого операнда (кроме последнего else) есть условие (guard condition) в квадратных скобках. Выполняется только один операнд, условие которого истинно.
  • opt (Optional): Показывает необязательный фрагмент (как if-then). Выполняется, только если условие во фрейме истинно.
  • loop (Loop): Показывает повторяющийся фрагмент. Может иметь условие продолжения цикла или указание на минимальное/максимальное число итераций.
  • par (Parallel): Показывает фрагменты, которые выполняются параллельно. Фрейм делится пунктирными линиями на операнды, выполняемые одновременно.
  • ref (Reference): Ссылка на другую, отдельно определенную диаграмму последовательности. Позволяет декомпозировать сложные взаимодействия.
  • break (Break): Показывает фрагмент, который выполняется вместо оставшейся части объемлющего фрейма, если условие break истинно (аналог break в программировании).
  • critical (Critical Region): Показывает фрагмент, который не может быть прерван другими сообщениями (“атомарная” операция).
  • neg (Negative): Описывает последовательность сообщений, которая не должна произойти.
  • assert (Assertion): Указывает, что любое поведение, не описанное в этом операнде, является недопустимым (условие, которое должно быть истинным).
  • strict (Strict Sequencing): Указывает, что порядок сообщений внутри этого фрагмента строго определен (в отличие от par).
  • ignore / consider: Указывают, какие типы сообщений следует игнорировать или рассматривать внутри данного фрагмента при анализе взаимодействия.

Наиболее часто аналитики используют alt, opt, loop, par и ref.

В чем разница между Class Diagram и ER Diagram?

Короткий ответ

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

Полный ответ

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

ПризнакДиаграмма Классов (UML Class Diagram)ER-диаграмма (Entity-Relationship Diagram)
Основная цельМоделирование структуры объектно-ориентированной системы (классы, их атрибуты, методы и отношения).Моделирование логической структуры базы данных.
Ключевые элементыКлассы, Интерфейсы, Атрибуты, Методы (Операции), Пакеты.Сущности (Entities), Атрибуты, Ключи (PK, FK).
ОтношенияАссоциация (в т.ч. Агрегация, Композиция), Зависимость, Наследование (Генерализация), Реализация интерфейса.Связи (Relationships) с указанием мощности (кардинальности) (один-к-одному, один-ко-многим, многие-ко-многим).
Представление поведенияЯвно показывает методы (операции), связанные с классом.Не показывает поведение, фокусируется только на данных.
Уровень абстракцииМожет использоваться на разных уровнях: концептуальном (бизнес-сущности), спецификации (интерфейсы), реализации (конкретные классы ПО).Обычно используется для логического и физического проектирования БД.
Область примененияОбъектно-ориентированный анализ и проектирование (ООАП), разработка ПО.Проектирование реляционных (и не только) баз данных.
НотацияСтандарт UML.Различные нотации (Чена, Crow’s Foot, IDEF1X и др.).

Ключевое различие: Диаграмма классов моделирует программные конструкции (классы с методами), а ER-диаграмма – структуру хранения данных (таблицы с ключами). Они могут описывать схожие концепции (например, класс “Клиент” и сущность “Клиенты”), но с разным фокусом и деталями.

Что такое Use case диаграмма? Какие есть элементы?

Короткий ответ

Use Case Диаграмма (Диаграмма Вариантов Использования): Это одна из поведенческих диаграмм UML, которая описывает функциональность системы с точки зрения пользователя. Она показывает: - Какие цели (варианты использования) внешние пользователи (акторы) могут достичь с помощью системы. - Кто (какие акторы) взаимодействует с системой для достижения этих целей.

Полный ответ

  • Use Case Диаграмма (Диаграмма Вариантов Использования): Это одна из поведенческих диаграмм UML, которая описывает функциональность системы с точки зрения пользователя. Она показывает:

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

    • Определение и согласование требований к системе.
    • Визуализация общего скоупа (границ) системы.
    • Идентификация основных пользователей и их целей.
    • Основа для дальнейшей детализации требований (например, через текстовые Use Cases или Activity Diagrams).
  • Основные элементы:

    1. Актор (Actor):
      • Представляет роль, которую играет пользователь (человек, другая система, устройство) при взаимодействии с моделируемой системой.
      • Обозначается фигуркой человека (stick figure).
      • Находится вне границ системы.
      • Примеры: “Клиент”, “Администратор”, “Платежная система”, “Складская система”.
    2. Вариант использования (Use Case):
      • Представляет собой отдельную, завершенную функцию или цель, которую актор может достичь с помощью системы.
      • Название обычно формулируется глаголом или глагольным оборотом (например, “Зарегистрировать пользователя”, “Оформить заказ”, “Просмотреть каталог”).
      • Обозначается овалом.
      • Находится внутри границ системы.
    3. Граница системы (System Boundary):
      • Прямоугольник, который визуально отделяет Use Cases (внутреннее) от Акторы (внешнее). Показывает, что входит в разрабатываемую систему.
      • Не всегда явно рисуется, но подразумевается.
    4. Отношения (Relationships):
      • Ассоциация (Association): Связывает Актора и Use Case, показывая, что актор участвует в выполнении этого варианта использования. Обозначение: Сплошная линия между актором и овалом.
      • Включение (<<include>>): Показывает, что один Use Case (базовый) всегда включает в себя поведение другого Use Case (включаемого). Это способ вынести общую функциональность. Обозначение: Пунктирная стрелка от базового к включаемому, помеченная стереотипом <<include>>.
      • Расширение (<<extend>>): Показывает, что один Use Case (расширяющий) может опционально добавлять свое поведение к другому Use Case (расширяемому) при определенных условиях (точка расширения). Обозначение: Пунктирная стрелка от расширяющего к расширяемому, помеченная стереотипом <<extend>>.
      • Генерализация (Generalization): Используется между Акторами (показывает иерархию ролей, например, “VIP Клиент” - это частный случай “Клиент”) или между Use Cases (показывает, что один Use Case является более специфичным вариантом другого). Обозначение: Сплошная линия с незакрашенным треугольным наконечником (стрелкой), направленная от специфичного к общему элементу.