Открыть сервис

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

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

История и развитие понятия

Понятие функциональных требований возникло в контексте системного анализа и проектирования, которые активно развивались с середины XX века. В 1950–1960-х годах, с появлением первых компьютеров и программного обеспечения, возникла необходимость формализовать, что именно должна делать вычислительная машина. Первые методы описания требований были неформальными и основывались на интуиции разработчиков. В 1970-х годах, с развитием структурного программирования и методологий, таких как SADT (Structured Analysis and Design Technique), функциональные требования стали выделять в отдельную категорию. В 1980-х годах, с появлением объектно-ориентированного подхода (например, методология UML), функциональные требования стали описывать через диаграммы вариантов использования и сценарии. В 1990-х годах, с развитием гибких методологий (Agile), функциональные требования стали формулировать в виде пользовательских историй (user stories) и критериев приёмки. В XXI веке, с распространением DevOps, микросервисной архитектуры и облачных технологий, функциональные требования стали более динамичными, часто изменяемыми и тесно связанными с непрерывной интеграцией и тестированием.

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

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

По уровню детализации

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

По источнику возникновения

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

По типу функциональности

  • Транзакционные — связаны с обработкой данных (ввод, хранение, изменение, удаление, поиск).
  • Вычислительные — выполняют расчёты, преобразования, анализ данных.
  • Управляющие — управляют потоками данных, состоянием системы, доступом.
  • Коммуникационные — обеспечивают взаимодействие с другими системами, пользователями, устройствами.

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

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

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

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

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

  • Интервью — опрос заинтересованных сторон (пользователей, заказчиков, экспертов).
  • Анкетирование — сбор структурированных ответов от большого числа респондентов.
  • Наблюдение — изучение текущих процессов и поведения пользователей.
  • Анализ документов — изучение существующей документации, регламентов, стандартов.
  • Мозговой штурм — коллективное обсуждение и генерация идей.
  • Прототипирование — создание ранних версий системы для уточнения требований.
  • Варианты использования (use cases) — описание последовательности действий пользователя и системы для достижения конкретной цели.

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

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

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

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

Для интернет-магазина

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

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

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

Для банковской системы

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

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

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

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

Критика и ограничения

Несмотря на широкое распространение, подход, основанный на функциональных требованиях, имеет ряд недостатков:

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

В ответ на эти ограничения в гибких методологиях (Agile, Scrum, Kanban) акцент смещается с детальных спецификаций на короткие пользовательские истории и постоянное взаимодействие с заказчиком. Однако в регулируемых отраслях (медицина, авиация, финансы, оборонная промышленность) функциональные требования остаются обязательным элементом, так как они обеспечивают формальную основу для сертификации, аудита и безопасности.

Интересные факты

  • Первая формальная спецификация функциональных требований была создана в 1960-х годах для проекта SAGE (Semi-Automatic Ground Environment) — системы ПВО США.
  • В стандарте ISO/IEC 25010:2011 функциональные требования отнесены к категории «функциональная пригодность» (functional suitability), которая включает функциональную полноту, корректность и целесообразность.
  • В России требования к функциональным требованиям регулируются ГОСТ 34.602-2020 «Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы».

Источники

  • ГОСТ 34.602-2020 «Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы».
  • ISO/IEC 25010:2011 «Systems and software engineering — Systems and software Quality Requirements and Evaluation (SQuaRE) — System and software quality models».
  • IEEE Std 830-1998 «IEEE Recommended Practice for Software Requirements Specifications».
  • Вигерс, К. «Разработка требований к программному обеспечению». — М.: Русская редакция, 2004.
  • Леффингуэлл, Д., Уидриг, Д. «Принципы работы с требованиями к программному обеспечению». — М.: Вильямс, 2002.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →