Наталья Желнова
Ошибки аналитиков при определении нефункциональных требований Наталья Желнова
План презентации Какие бывают нефункциональные требования и почему с ними так много путаницы? Как составлять шаблоны для определения нефункциональных требований Как выбирать методы и инструменты для определения нефункциональных требований Как нефункциональные требования связаны с функциональными Как нефункциональные требования связаны друг с другом
Какие бывают нефункциональные требования и почему с ними так много путаницы?
Типы требований Потребности (needs) Функциональные требования Нефункциональные требования Системные требования Проблемы Что вообще под этим имеется в виду? Как определять? Откуда брать значения / характеристики? Как проверять?
Нефункциональные требования Бизнес-правила (Business Rules) Требования к внешним интерфейсам Атрибуты качества (Quality Attributes) Ограничения (Constraints) Предложения по реализации Предложения по тестированию разрабатываемого ПО Юридические требования
Производительность (Performance) Возможность модификации (Modifiability) Повторная используемость (Reusability) Надежность (Reliability) Стабильность (Stability) Безопасность (Security) Расширяемость (Extendibility) Портируемость (Portability) Удобство использования (Usability) Масштабируемость (Scalability) Сохранность данных (Data integrity) и многое другое Атрибуты качества
Источники нефункциональных требований Автоматизируемые бизнес-процессы Архитектура продукта(ов) Тест-планы/тест-кейсы продукта и результаты тестирования предыдущих версий Нефункциональные требования к предыдущим версиям продукта Экспертные знания
Методы определения нефункциональных требований Исследование бизнес-процессов (автоматизируемых и связанных с ними) Анализ предыдущих версий продукта и продуктов конкурентов Просмотр результатов тестирования предыдущих версий / benchmark tests Нефункциональные требования к предыдущим версиям продукта Интервью, опросы пользователей, анкеты Использование шаблонов нефункциональных требований Создание сценариев нефункциональных требований / атрибутов качества
Как составлять шаблоны для нефункциональных требований?
Шаблон Для каждой функциональной области – свои нефункциональные требования и их численные значения Определите список нефункциональных требований для продукта в целом и для каждой функциональной области Модель качества требования к качеству Дайте определение каждому нефункциональному требованию Укажите предельные диапазоны значений для нефункциональных требований
Формат шаблона Наименование требования Определение требования (напр.: производительность - число операций, выполняемых в секунду) Допустимый диапазон значений Способы проверки выполнения требования
Пример шаблона Требования к производительности o Какие типы запросов должна обрабатывать ФМ? Сколько запросов должен обрабатывать ФМ каждого типа? o Какая должна быть пропускная способность МБ/с? o Что будет, если ФМ будет обрабатывать меньше запросов или с меньшей пропускной способностью? Как это отразится на поведении продукта? ОС? На конечных пользователях? На партнерах? На продаже продукта? Требования к масштабируемости и алгоритмической сложности o Предполагается ли в будущем рост объема обрабатываемых данных? o Как повлияет заметное (в 10 раз) замедление выполнения ФМ при увеличении объема данных в два раза на поведение продукта? На ОС? На конечных пользователей? На партнеров? На продажу продукта? o Повлияет ли положительно и как сильно масштабируемость на 4/16/64 ядра ЦП ФО на поведение продукта? На ОС? На конечных пользователей? На партнеров? На продажу продукта?
Пример шаблона Требования к потребляемым ресурсам o Какие ограничения на дисковую и оперативную память? o Что будет, если ФМ будет требовать в 2/10/100 больше оперативной памяти, времени ЦПУ, места на жестком диске? Как это отразится на поведении продукта? На ОС? На конечных пользователях? На партнерах? На продаже продукта? Требования к входным и выходным данным o Какие данные и какого типа ФМ получает на вход? Какие могут быть минимальные и максимальные значения? Какая точность данных? Какой максимальный размер блока/вектора/строки может передаваться на вход? Какая кодировка используется для входных данных? o Откуда ФМ будет получать данные на вход? Какие модули являются источниками данных? o Какой тип выходных данных ожидается от ФО? Какие максимальные/минимальные значения? Какая требуется точность вычислений? Какая кодировка требуется для выходных данных? o Какие ФО/модули будут использовать выходные данные? Для чего?
Лица, интервьюируемые для определения нефункциональных требований заказчик продукта конечный пользователь, разработчики продукта тестировщики продукта, инженеры поддержки, сотрудники отделов маркетинга, обучения и продаж
Как выбирать методы и инструменты для определения нефункциональных требований Определить функциональную область Определить конечных пользователей и их число Определить лиц, влияющих на принятие архитектурных решений Составить список возможных инструментов и методов определения нефункциональных требований Составить шаблон нефункциональных требований
Как выбирать методы и инструменты для определения нефункциональных требований Определить функциональную область Определить конечных пользователей и их число Определить лиц, влияющих на принятие архитектурных решений Составить список возможных инструментов и методов определения нефункциональных требований Составить шаблон нефункциональных требований
Как нефункциональные требования связаны с функциональными
Состав спецификаций
Определение сценариев нефункциональных требований Определить функциональную область Определить конечных пользователей и их число Определить лиц, влияющих на принятие архитектурных решений Составить список возможных инструментов и методов определения нефункциональных требований Составить шаблон нефункциональных требований
Что определяет нефункциональные требования Специфика бизнеса клиента Решаемые проблемы Утвержденная архитектура/структура? Заинтересованные лица: Клиент Группы пользователей Разработчики
Что определяет нефункциональные требования Ожидаемые пользователи системы Ожидаемые изменения в системе Как часто и как скоро Неожиданные нагрузки на систему Хорошие сценарии охватывают возможный стимул и реакцию на интересы заинтересованных лиц
Описываются сценариями Стимул Реакция Источник реакции Среда Артефакт, на который оказывается воздействие Мера реакции
Таблица сценария Название сценария: Бизнес-цели: Атрибуты качества: Стимул: Источник стимула: Среда: Артефакт (если известен): Реакция: Мера реакции: Вопросы: Проблемы:
Стимул, Среда, Реакция Сценарий варианта использования Описание варианта использования Сценарий роста Что происходит в случае изменения нефункциональных требований Сценарий исследования Что произойдет при этом изменении (исследовать)
Охват сценариев нефункциональных требований Соберите данные о заинтересованных лицах системы Включите «бизнес-сторону» Запросите список «нефункциональных» требований не делайте выводы о «валидности» – только рассматривайте их
Затем – мозговой штурм Запросите всех заинтересованных лиц предоставить сценарии Используйте список «нефункциональных» требований для их детализации Убедитесь, что из сценария можно сформировать стимул и реакцию Определите количество «голосов» заинтересованных лиц Объедините анализ «голосов» и сценариев для приоритезации
Затем – мозговой штурм Запросите всех заинтересованных лиц предоставить сценарии Используйте список «нефункциональных» требований для их детализации Убедитесь, что из сценария можно сформировать стимул и реакцию Определите количество «голосов» заинтересованных лиц Объедините анализ «голосов» и сценариев для приоритезации
Примеры сценариев атрибутов качества Сценарий варианта использования Удаленный пользователь запрашивает отчет базы данных через веб-интерфейс в течении пикового периода и получает его в течении 5 секунд. Сценарий роста Добавить новый сервер данных для снижения задержек в соотношении 1 к 2.5 секунды в течении 1 человеко-недели Сценарий исследования Половина серверов может перестать работать в течении нормального режима эксплуатации с сохранением доступности всей системы.
Как нефункциональные требования связаны друг с другом
Нефункциональные требования к ПО