СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

| сохранено

Нефункциональные требования в черновиках Recovery Mode Перевод

Вступление к переводу


Мы все с вами ежедневно сталкиваемся с нефункциональными требованиями. Мы приходим в мебельный магазин, садимся на кресло и говорим «не удобно» или «это долго не проживет». Мы приходим выбирать автомобиль и не спрашиваем может ли машина разгоняться (функциональное требование), мы спрашиваем за сколько она может разогнаться до 100 км (нефункциональное требование)?

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

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

Работая над проектами, хорошо составить для себя и всей команды чек-лист нефункциональных требований, о которых надо позаботиться при сборе требований и проектировании продукта. Перевод этой статьи, опубликованный ниже, даст дополнительную информацию по этой теме, хотя возможно и не ответит на все вопросы.
Дополнительные примеры можно найти на этом же ресурсе в статье Non Functional Requirement Graphs (англ).

Перевод публикуется с разрешения 3SL

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


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

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

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

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

NFRs включают такие характеристики как:
— Эргономичность.
— Надежность.
— Ремонтопригодность.
— Доступность.
— Жизнеспособность (для военных систем).
— Гибкость.
— Адаптируемость.

Функциональные требования будут в центре внимания в начале проектирования и разработки. Существуют техники моделирования (нотации), такие как UML Use Case и Activity Diagrams, extended Function Flow Block Diagrams (eFFBDs) или Behaviour Diagrams которые предлагают методы отображения того, какие операции должны быть выполнены во времени и логику управления, которая будет определять ход выполнения.

Работа с нефункциональными требованиями может оказаться не столь простой. Сначала мы должны посмотреть на базовые типы NFRs:
Окружение — требования, определяющие физическую среду (природную или созданную) в которой будет работать система. В некоторых случаях, это также может отражать политическую или экономическую обстановку, в которой выполняется работа или система будет функционировать.
Физические — требования, определяющие форму продукта или системы. Например, указание размера, формы, окраски, веса или других аналогичных свойств продуктов или систем.
Интерфейсные — требования, определяющие данные, структуру и физическую форму интерфейсов между компонентами (аппаратными средствами, программным обеспечением и людьми). Здесь также могут указываться требования по взаимодействию с существующими системами или использованию некоторых стандартных интерфейсов. Некоторые аналитики выделяют интерфейсные требования в отдельную группу, не включая их в NFR.
Ограничения — требования, предписывающие условия или ограничения на то, как система может быть построена или как и в каком контексте должны применяться другие требования. Нетехнические аспекты, такие как сроки или бюджет могут также органичивать проекты по разработке.
Факторы качества (эмерджетные свойства) — требования, которые касаются других качественных факторов продукта или процесса, так называемые «ильности», упомянутые выше.

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

Другие нефункциональные «ильности» включают тестируемость, переносимость/мобильность, эргономичность, масштабируемость, гибкость, поддерживаемость.

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

Конечно, не все факторы качества это «ильности» в строгом смысле слова. Такие требования как безопасность, системная целостность, качество изготовления – также важные нефункциональные требования.

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

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

Ключевой деятельностью при реализации NFRs является определение физической архитектуры.
Архитектура системы разрабатывается посредством:
— Определения структуры продукта (то есть составных частей).
— Выделение требуемых характеристик конкретных компонентов (например, цвета, размера, веса и др.), т.е. определение нефункциональных требований к каждому компоненту.
— Определение интерфейсов между составными частями.



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

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

комментарии (8)

+1
+2 –1
Cydoor ,  
Итоговая цель всего анализа нефункциональных требований пользователя – это выработать соответствующие системные нефункциональные требования, которые могут быть измерены, протестированы и распределены по компонентам системы.

Уважаемый автор, подскажите, что для Вас требования?

Ознакомились ли вы с аналитическим FAQ?

Нефункциональные требования описывают цели и атрибуты качества. Атрибуты качества (quality attributes) представляют собой дополнительное описание функций продукта, выраженное через описание его характеристик, важных для пользователей или разработчиков. К таким характеристикам относятся:
* легкость и простота использования
* легкость перемещения
* целостность
* эффективность и устойчивость к сбоям
* внешние взаимодействия между системой и внешним миром
* ограничения дизайна и реализации. Ограничения (constraints) касаются выбора возможности разработки внешнего вида и структуры продукта
–2
PMLE ,  

Сергей,

о моем взгляде на понятие «требование» и его точное определение написано подробно здесь edu.reqcenter.pro/?p=3540

+2
+3 –1
Cydoor ,   * (был изменён)

Юля, мне понятно, что Вы автор статей, писем и прочего. Но, к сожалению, Вы обладает только теоритическими знаниями.
В приведенной статье есть несколько различных и несвязанных определений, статья не обладает признаком однозначности. Приведенный список литературы верный по своей сути, но все таки непонятно, что такое требование для Вас? Вы прочитали хотя бы одну книгу?

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

Рекомендую Вам зарегистрироваться на сайте www.uml2.ru — это крупное сообщество бизнес и системных аналитиков, а также посетить по истине замечательное мероприятие: ЛАФ

От себя рекомендую дополнительно, после погружения в цели и задачи аналитика, ознакомиться с практиками гибой разработки Agile, с практикой стратегического развития продукта RUP

+1
PMLE ,  

Сереженька, Вы просто недочитали статью по ссылке, на второй странице дана четкая система определений.

С регистрацией на uml2.ru, я думаю, всех оттуда посмешили, меня там неплохо знают. И по поводу классифиации требований по Вигерсу я там уже писала.

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

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

+1
S_A ,  

Почитал статью… сложилось ощущение, что нефункциональные требования — это требования к функциональным требованиям. Их спецификация, что ли. Разгон — функция, а скорость разгона — это уже не функция, хотя и требование. Хотя плюс статье за то, что в ней связь FR и NFR с архитектурой затронута.

Когда я работал системным аналитиком (лет 7 назад), нефункциональные требования вытекали из окружения, чаще всего рассматриваемого через призму ITIL: непрерывность, доступность, и прочие метрики. Они вытекали так скажем из более общего use-case, так назовем, из meta-case, который состоял в том, что система (какая бы ни была) рассматривалась не как белый ящик, перерабатывающая входы в выходы, а как эксплуатируемый актив (личный или организационный).

Вот позолоченная мобила с кучей функций, уроненная в воду — актив или нет? Я к тому, что классификации подтипов требований — вообще наверное от лукавого. Как и весь ваш тут холивор форумного типа, не очень привычен для Хабра.

0
Leonid76 ,   * (был изменён)

Гм… Весьма спорный текст. Очень много мест, за которые цепляется глаз и которые приходится перечитывать (в основном, из-за сомнений, не подшучивает ли автор над читателем).

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

Автор статьи в курсе, что вообще означает термин «эмерджентность» в отношении системы? Догадывается, что под ним скрываются «внезапные» (emergent) свойства, которые могут проявляться в системе неведомо когда и неведомо с какой стати?
И что он (термин) чуть ли не диаметрально противоположен широко известной «синергии» (хотя и имеет то же происхождение, обусловленное самой природой системы)?

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

В этом контексте читать про «ильности» пользователей в отношении «нежданчиков» системы особенно пикантно.

* * *

Поделитесь ссылкой на оригинал статьи?

0
PMLE ,   * (был изменён)

Исходная статья www.threesl.com/pages/webletter-February10/Non_Functional_Requirements.php

Вы можете задать свои вопросы авторам здесь www.linkedin.com/groups?mostRecent=&gid=4027985

0
Leonid76 ,  

Да ну их, авторов… Мне лень там регистрироваться и некомфортно общаться на их языке. С Вами интереснее. :)

А ведь посмотрите — даже у Вас во введении сказано нечто, несогласующееся с текстом статьи:

Мы приходим выбирать автомобиль и не спрашиваем может ли машина разгоняться (функциональное требование), мы спрашиваем за сколько она может разогнаться до 100 км (нефункциональное требование)?


«разогнаться до 100 км» — нефункциональное требование, полностью согласен. Из разряда требований к производительности.

Читаем авторов:

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

Нефункциональные требования (NFRs), с другой стороны,


Т.е. у авторов получается, что требования к производительности не относятся к нефункциональным, которые они поместили «с другой стороны». Они их относят к категории «перформанса» (ориг. «performance requirements»)*

* которую в переводе не стоит сводить только к «производительности» (сугубо мое личное мнение, необязательно правильное).