Что такое нефункциональные требования в программной инженерии?
⚡ Умное резюме
Нефункциональные требования определяют качественные характеристики, такие как производительность, безопасность, удобство использования, надежность, масштабируемость и переносимость, определяя, насколько хорошо должна работать программная система, и превращая расплывчатые ожидания в измеримые, проверяемые и подлежащие исполнению инженерные цели на протяжении всего жизненного цикла разработки.
Что такое нефункциональное требование?
A Нефункциональное требование Нефункциональные требования (НФТ) определяют качественные характеристики программной системы. НФТ оценивают систему по таким параметрам, как скорость отклика, удобство использования, безопасность, переносимость и другие качественные характеристики, критически важные для успеха. Распространенный пример нефункционального требования: «Как быстро загружается сайт?» Несоответствие нефункциональным требованиям приводит к созданию систем, вызывающих у пользователей разочарование.
Нефункциональные требования в разработке программного обеспечения накладывают ограничения на проектирование системы в рамках гибкого бэклога. Например, сайт должен загружаться за три секунды, если количество одновременно работающих пользователей превышает 10 000. Описание нефункциональных требований так же важно, как и описание функциональных требований.
Типы нефункциональных требований
Основные категории нефункциональных требований:
Типы нефункциональных требований
- Удобство использования
- исправность
- Управляемость
- Восстанавливаемость
- Безопасность.
- Данные Integrity
- Рабочий диапазон
- Доступность
- Масштабируемость
- Взаимодействие
- Надежность
- Ремонтопригодность
- Соответствие нормативным требованиям
- Экологические ограничения
Примеры нефункциональных требований
Вот практические примеры нефункциональных требований:
- После первого успешного входа в систему пользователи должны изменить исходный пароль, и этот пароль ни в коем случае нельзя использовать повторно.
- Сотрудникам запрещается самостоятельно обновлять информацию о своей заработной плате, и о любой подобной попытке будет сообщено администратору по безопасности.
- Каждая неудачная попытка пользователя получить доступ к элементу данных должна быть зафиксирована в журнале аудита.
- Веб-сайт должен поддерживать 20 миллионов одновременных пользователей без ухудшения времени отклика.
- Программное обеспечение должно быть переносимым, чтобы переход с одной операционной системы на другую не вызывал проблем.
- Защита конфиденциальности информации, экспорт технологий ограниченного доступа и права интеллектуальной собственности должны подлежать аудиту.
Функциональные и нефункциональные требования
Основные различия между функциональными и нефункциональными требованиями заключаются в следующем:
| Параметры | Функциональное требование | Нефункциональное требование |
|---|---|---|
| Что это такое? | глагол | Атрибуты |
| Требование | Это обязательно | Это необязательно |
| Тип захвата | Он фиксируется в варианте использования. | Это фиксируется как атрибут качества. |
| Конечный результат | характеристика продукта | Свойства продукта |
| Захват | Легко захватить | Трудно захватить |
| Цель | Помогает вам проверить функциональность программного обеспечения. | Помогает вам проверить работоспособность программного обеспечения. |
| Область внимания | Сосредоточьтесь на требованиях пользователя | Концентрируется на ожиданиях пользователя. |
| Документация | Опишите, что делает продукт | Описывает, как работает продукт |
| Тип тестирования | Функциональное тестирование например, системное, интеграционное, сквозное тестирование, тестирование API и т. д. | Нефункциональное тестирование, такое как производительность, стресс, удобство использования, тестирование безопасности и т. д. |
| Выполнение теста | Выполнение теста выполняется перед нефункциональным тестированием. | После функционального тестирования |
| Информация о продукции | Особенности продукта | Свойства продукта |
Преимущества нефункциональных требований
Основные преимущества Нефункциональное тестирование составляют:
- Нефункциональные требования обеспечивают соответствие системы правовым нормам и правилам соответствия.
- Они обеспечивают надежность, доступность и производительность системы.
- Они обеспечивают удобство использования и простоту в работе.
- Они формируют политику безопасности программного обеспечения.
Недостатки нефункциональных требований
К распространенным недостаткам нефункциональных требований относятся:
- Нефункциональные требования могут затрагивать несколько высокоуровневых программных подсистем.
- Они требуют особого внимания на этапах архитектурного проектирования и разработки высокоуровневых проектов, что увеличивает стоимость.
- Реализация редко ограничивается одной-единственной программной подсистемой.
- После завершения этапа проектирования их сложно модифицировать.
Модель FURPS+ для классификации нефункциональных требований
FURPS+ — наиболее широко используемая таксономия для нефункциональных требований. Первоначально разработанная в Hewlett-Packard, она группирует атрибуты качества в пять основных категорий, а также дополнительные ограничения, отмеченные знаком «+». Эта модель помогает бизнес-аналитикам избежать пропуска целого класса требований.
- Функциональность: Возможности, безопасность и возможность повторного использования, выходящие за рамки базового списка функций.
- Юзабилити: Человеческий фактор, эстетика, согласованность, документация и отзывчивость пользовательского опыта.
- Надежность: Доступность, среднее время между отказами, восстанавливаемость, предсказуемость и точность.
- Производительность: Скорость, пропускная способность, производительность, масштабируемость и потребление ресурсов под нагрузкой.
- Поддержка: Тестируемость, гибкость, возможность установки, локализуемость и ремонтопригодность поставляемой системы.
- Плюс (+): Проектирование, реализация, интерфейс и физические ограничения, такие как необходимые платформы, стандарты или оборудование.
Команды, которые сопоставляют каждое нефункциональное требование с категорией FURPS+, с меньшей вероятностью выпустят систему, которая соответствует функциональным требованиям, но не соответствует требованиям к производительности, безопасности или ремонтопригодности.
Как писать тестируемые нефункциональные требования
Хорошо сформулированное нефункциональное требование должно быть измеримым, проверяемым и ограниченным по времени. Расплывчатые утверждения, такие как «система должна быть быстрой» или «приложение должно быть безопасным», являются скорее стремлениями, чем требованиями. Следуйте приведенным ниже шагам, чтобы преобразовать намерение в проверяемое нефункциональное требование.
- Определите качественный атрибут. Сопоставьте проблему с категорией FURPS+, чтобы команда знала, относится ли она к требованиям производительности, удобства использования, безопасности или надежности.
- Выберите показатель. Для каждого нефункционального параметра (NFR) необходимо указать единицу измерения — миллисекунды, количество запросов в секунду, количество одновременно работающих пользователей, процент времени безотказной работы или стандарт соответствия, например, ISO 27001.
- Установите числовой пороговый уровень. Замените «быстрый» на «менее 400 миллисекунд на 95-м процентиле». Замените «высокая доступность» на «99.9% ежемесячного времени безотказной работы».
- Опишите состояние. Укажите нагрузку, среду или сегмент пользователей, к которым применяется пороговое значение, например: «во время пиковых продаж с 10 000 одновременных пользователей».
- Определите метод проверки. Обратите внимание на тип теста — нагрузочный тест, тест на проникновение, эксперимент на хаос, аудит доступности — и инструмент, который подтвердит пороговое значение.
- Проведите проверку SMART. Перед тем как включить требование в список задач, убедитесь, что оно является конкретным, измеримым, достижимым, актуальным и ограниченным по времени.
Пример перефразирования: «Система должна быть быстрой» превращается в «Страница оформления заказа должна отвечать менее чем за 500 миллисекунд при 95-м процентиле и 5,000 одновременных пользователях, что подтверждено...» JMeter «Проводите нагрузочное тестирование каждого релиза». Пересмотренное заявление позволяет разработчикам проектировать с учетом этого, тестировщикам проверять его, а владельцам продукта принимать его без возражений.


