Comments 56
Нефункциональные требования — это требования, которые определяют не функции, а характеристики системы: ее производительность, надежность, доступность, масштабируемость и ряд других параметров (здесь перечислены характеристики качества, но, как уже сказано в статье, есть и другие виды нефункциональных требований). Требование к времени отклика вашего приложения — это тоже нефункциональное требование («производная» от производительности). Думаю, пользователям вряд ли понравится, если реакции системы они будут ждать 4 минуты после нажатия на кнопку интерфейса. Но в течение 2-3 секунд они могут подождать. Это самый простой пример.
Нефункциональные требования самым непосредственным образом определяют архитектуру разрабатываемого приложения, поэтому определять их очень важно, хотя многие предпочитают этого не делать, полагаясь на то, что hardware и технологии, с которыми они работают, уже обладает какими-то характеристиками качества — следовательно, определенное качество уже можно гарантировать. Отсутствие должного внимания, уделяемого нефункциональным требованиям, часто приводило к серьезным последствиям — от перепроектирования системы до полного провала проекта.
Что касается «основных» и «не основных» требований — приоритеты задаются для всех требований, как функциональных, так и нефункциональных. Категория требований и важность — это просто две разные вещи. Как функциональные, так и нефункциональные требования могут иметь как высокий, так и низкий приоритет.
Вигерс их относит к нефункциональным требованиям, и он, в общем прав, прав.
Что же касается Вигерса, то вы, простите, о каком издании говорите? Потому что в моем (второе издание, 2003-ий год в оригинале) бизнес-правила — это раздел 2.5 шаблона требований, «Design and implementation constraints», в то время как Quality Attributes — это раздел 5 того же шаблона. Собственно, во втором издании Вигерс уже не так активно делит требования на функциональные и нефункциональные.
А Макконнел, скажем, в Code Complete относит все и любые бизнес-требования к функциональным, а в нефункциональные попадает производительность, безопасность, поддерживаемость, надежность и тому подобные вещи.
Глава 1 стр. 8
Знаменитый рисунок, проводящий границу между функциональными и нефункциональными требованиями:
Думаю, что на основании этой картинки (там еще текст к ней есть) можно однозначно сказать, к какому виду требований относит Вигерс бизнес-правила.
Да, атрибуты качества — это, собственно, основная часть нефункциональных требований при разработке ПО. Поэтому ей уделяется так много внимания — это я про Макконнела. Про остальные виды нефункциональных требований вообще пишут мало. Про то, как их определять — практически никто.
Ну и Макконел — не аналитик, так сказать, в чистом виде, ему то, что не относится непосредственно к модели качества и метрикам, которые отражаются в коде, видимо, неинтересно.
Считать их разновидностью ограничений, диктующих нам, как реализовывать ту или иную функцию или группу функций — вполне корректно. Если предположить, что водораздел между функциональными и нефункциональными требованиями проходит по линии «что надо сделать (функциональные) — как надо сделать *нефункциональные)», то получится, что ограничения как раз попадают в нефункциональные требования.
Если предположить, что водораздел между функциональными и нефункциональными требованиями проходит по линии «что надо сделать (функциональные) — как надо сделать *нефункциональные)», то получится, что ограничения как раз попадают в нефункциональные требования.
Вот только приведенный вами пример бизнес-правила «При отгрузке заказа менеджер должен запросить у бухгалтера товарно-транспортную накладную и счет-фактуру» — это «что» надо сделать, а не «как».
Но на самом деле, я просто считаю, что разделение бизнес-требований на «функциональные» (пользовательские) и «нефункциональные» (правила) — надумано. Одно и то же требование иногда можно выразить и как правило, и как сценарий, но его суть же от этого не меняется? Так что для меня требования делятся на прикладные (т.е., то, что обеспечивает работу системы в соответствии с задачами и процессами заказчика) и качественные (собственно, все остальное).
Про то, как их определять — практически никто.
Вообще, у Вигерса целая глава про бизнес-правила.
Важнее — как их определять, и на что они влияют в системе.
С моей точки зрения разница между группой «сценарии использования»+«бизнес-правила» и группой «атрибуты качества»+«ограничения» существенно больше, нежели между группами «функциональные требования» и «нефункциональные требования».
Это просто к тому, что «эти требования не такие как другие».
1. Функциональные
2. Ограничения
3. Интерфейсы
4. Бизнес-правила
5. Атрибуты качества
Вот 2-5 условно для простоты называют «нефункциональные», это такой проф.жаргон.
Классификация 1-5 тоже такая, потому что она по факту удобна в работе, а не потому, что она идеальная в математическом смысле теории множеств.
Я понимаю, что это профжаргон, но какой в нем реальный смысл?
А про 2-5 клиенты говорить не умеют, а айтишники не умеют задавать правильные вопросы и понимание важности отдельных категорий этих требований приходит постепенно, с опытом. Причём начинается с каких-нибудь «требований к интерфейсу», «требований к дизайну».
И ещё смысл жаргона в том, что узус формируется независимо от нашего мнения о нём.
И ещё смысл жаргона в том, что узус формируется независимо от нашего мнения о нём.
Это правда. Но потом получается, что разные люди понимают под жаргонными словами разные вещи.
Клиенту и не нужно различать.
Айтишники должны были изучать дисциплину хотя бы software engineering requirements, где этот вопрос разбирается:
swebok.sorlik.ru/1_software_requirements.html
Если не изучали или не помнят, значит у них плохая подготовка.
Я не скрываю, что у меня далеко не идеальная аналитическая подготовка, но мне, тем не менее, интересно: приведенный пример — это бизнес-правило или функциональное требование? И почему?
По моему мнению, это бизнес-правило, т.к. бизнес-правило — это закономерность выполнения бизнеса, которая существует вне зависимости от того, автоматизирована деятельность или нет.
Как его выделять:
Добивайтесь атомарности требований.
Разбиваете предложение на фрагменты:
1) «отгрузка товара» (функция)
2) «запрос накладной» (функция)
3) 2 должно происходить в процессе 1.
Вот 3, как видно из его формы, это правило, а не функция.
Отгрузка товара — это некий сценарий. Например: «получить список товара под отгрузку — найти местоположение на складе — свезтии к машине — загрузить — отправить машину» (happy path). Почему шаг «запросить накладную», который мы теперь добавляем между первым и вторым шагом, как-то отличается?
Иными словами, почему это правило не может просто быть выражено как еще один пункт сценария?
Да, можно выразить бизнес-правило в сценарии или диаграмме бизнес-процессов. Но для задач планирования и контроля разработки полезно иметь бизнес-правило записанным в явном виде в реестре.
Допустим, приведенное высказывание — это «бизнес-правило». Однако, система, проверяющая наличие запроса накладной в процессе отгрузки товара — это система, ФУНКЦИОНАЛЬНО отличная от системы, НЕ проверяющей и не требующей выполнения данного правила.
Тогда какое же это «нефункциональное требование»? Спасибо за пояснения…
Ограничения на применение функций — это не преобразования входа в выхода.
Если в машине руль у водителя на потолке, то по набору функций машина та же самая.
Если одна функция должна запускаться вместе с другой — это не порождение 3-й функции.
Если это просто констатация, то согласен, это НФТ (хотя и полезность его в этом случае вызывает вопросы)
Начиная от кучи опечаток, в том числе на первой же странице, где перечислены посвящения:
Посвящается Крис.
– Крис Вигерс
заканчивая такими оборотами:
… за счет предъявления повелителям сайта ввести изображенные на картинке символы
и т.д.
ну по крайней мере ключевые термины типа product vision переведены правильно
Если бы переводчик потрудился заглянуть в те же «Пользовательские истории», то нашёл бы там «Журнал запросов на выполнение работ» – не первоклассный перевод, конечно, но хотя бы отражающий общую суть. Примечательно, что «Вильямс» открыто указывает переводчика А. Г. Гузикевича, тогда как у «Русской редакций» ничего подобного я не нашёл.
Такие известные книги, на мой взгляд, лучше всего переводить силами сообщества, потому как каждая ошибка перевода в терминологии и важных описаниях порождает массу когнитивных искажений со всеми вытекающими для отрасли последствиями.
У «Русской редакции когда-то была мода ставить в информацию об издании фамилию редактора. По крайней мере, свою я там видела, когда редактировала книги по SQL Server (администрирование и разработка). Иногда ставили фамилии переводчиков (по крайней мере я на этом настаивала, когда работала вместе с людьми, которые начинали свой путь в программировании с разработки движков для баз данных).
Теперь эта мода у „Русской редакции“ прошла — они переводят книги силами компании Логрус, занимающейся локализацией разных программных продуктов, в том числе и Microsoft. Работу переводчиков в Логрусе часто выполняют студенты. Что касается редактуры — похоже, что от нее и вовсе отказались.
На мой взгляд, самый простой вариант термина это «список [название элементов]»: «список нереализованных компонентов продукта», «список компонентов для реализации в спринте». Или сокращённо: «список компонентов продукта», «список компонентов спринта». Если команда использует истории, то соответственно: «список историй продукта», «список историй спринта».
Что касается политики издательства в отношении переводов и редактуры, это ещё один веский довод взяться за такую работу силами сообщества. К примеру, у Agile Ukraine есть замечательная инициатива Agile Translations. Думаю, в сообществе русскоязычных аналитиков не меньше людей, у которых достаточно компетенции и желания заниматься такой полезной и интересной деятельностью. Осталось их организовать +)
Даже если с переводами Вигерса могут возникнуть какие-то юридические проволочки, всегда остаётся возможность выслать издательству список найденных ошибок и параллельно постараться его максимально распространить в Сети. Пусть их учтут в следующем издании, а те, кто приобретёт нынешнее, будет проинформирован.
Поэтому если даже издательство посчитает невыгодным внесение правок в доптираж, то можно хотя бы попросить добавить ссылку на документ с известными ошибками в ту же аннотацию. То же самое можно попросить сделать онлайн магазины – добавить ссылку в описание товара. Ну, и продвинуть эту же ссылку через всевозможные тематические ресурсы. Думаю, комплекс подобных мер может дать некоторый ощутимый эффект.
Я бы с большим удовольствием и не меньшим пристрастием вычитал двадцатую главу +) Только уже осенью.
1. ISO IEC IEEE 29148-2011 Systems and software engineering — Life cycle processes — Requirements engineering
В нём есть рекомендуемые структуры документов и описания видов НФТ-требований (Раздел 9.5., например).
2.
ISO_IEC 25030.2007 Software engineering — Software product Quality Requirements and Evaluation (SQuaRE) — Quality requirements
и
ISO_IEC 25010 2011 Quality Requirements Models — они посвящены атрибутам качества, как видно из названия
(Это развитие ISO 9126)
3. ГОСТ Р ИСО 9241-210-2012 Человеко-ориентированное проектирование
В нём наиболее качественно раскрыты атрибуты класса «Quality in Use», качество в использовании.
Рекомендую ознакомиться.
Путать стандарты качества ПО и модели качества (о которых я говорю, определяя атрибуты качества) и "стандарты по требованиям" - это распространенная ошибка.
Рекомендую больше так не делать.
Это всё связанные вещи, странно этого не понимать.
Странно не понимать того, что связанные вещи не заменяют одна другую и не тождественны одна другой. Странно не понимать русского языка в комментарии (вроде бы родной, но создается впечатление, что я по-японски пишу - не доходит; очевидно, нужно разъяснить).
Ну, надеюсь, сейчас дойдет: стандарты качества ПО - это общие подходы к построению системы качества, которая начинается с определения целей, с которым мы оное качество обеспечиваем и поддерживаем. От целей мы идем к набору атрибутов качества и метрик, и вот тогда уже у нас появляются нефункциональные требования.
Стандарты, в общем, разные, у них разные области применения, и один другой ни в какой степени не заменяет.
как человек, который 8 лет не мог ответить на комментарий, ты не в той позиции, чтобы читать мне нотации
чтобы перестать брызгать слюной, шипеть "некомпетентносссссть" и проч, рекомендую пройти курс психотерапии
в 21-м веке уже немодно быть воинственным социопатом и психопатом
"Мог" и "хотел" - это разные вещи, путать их не надо, особенно людям, советующим "пройти курс психотерапии".
"Считал нужным" - тоже вещь, отличная от "мог".
Не думаю, что лично хоть как-то заинтересована в продолжении этого скучнейшего диалога с человеком, не делающим различий между понятиями, различия между которыми очевидны.
Ну а о позиции - подумай, нужно ли мне как-то коммуницировать с тобой, и в чем моя здесь выгода? Здесь только ты лезешь в тредик с Особо Ценным Мнением, кто в какой позиции - очевидно, чтобы показать, что разницы между понятиями, которые смешивать никак не нужно, в твоей голове не существует.
Ну, ОК, твой внутренний мир и установки в твоей голове - твоя проблема, я решать ее не собираюсь. Живи дальше с ними, желаю удачи и всяческих успехов.
«В этой статье я расскажу о следующем: … откуда берутся численные значения для нефункциональных требований.»
Я не нашёл в этой статье. Покажите, в каком абзаце?
Нефункциональные требования к программному обеспечению. Часть 1