Пользователь
0,0
рейтинг
1 августа 2014 в 19:33

Разработка → Нефункциональные требования к программному обеспечению. Часть 1

Введение


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

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



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


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

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

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

Примеры ограничений: «Разработка должна вестись на платформе вендора X», «При аутентификации пользователя должны использоваться биометрические методы идентификации».

  • Бизнес-правила — политика, руководящие принципы или положения, которые определяют или ограничивают некоторые аспекты бизнеса, в т.ч. правила, определяющие состав и правила выполнения определенных бизнес-процессов. К бизнес-правилам относятся корпоративные политики, правительственные постановления, промышленные стандарты и вычислительные алгоритмы, которые используются при разработке продукта или системы либо непосредственно влияют на разработку.

Примеры бизнес-правил: «При отгрузке заказа менеджер должен запросить у бухгалтера товарно-транспортную накладную и счет-фактуру», «Если оплата по счету не поступила в течение 15 дней, заказ считается отменённым».

  • Внешние интерфейсы — описание аспектов взаимодействия с другими системами и операционной средой. К ним относятся требования к API продукта или системы, а также требования к API других систем, с которыми осуществляется интеграция.

Примеры внешних интерфейсов: «Обеспечить запись в журнал операционной системы следующих событий: сообщения о запуске и остановке сервиса XX»; «Обеспечить запись в журнал параметров модулей программы: сканера, ядра, антивирусных баз (информация должна заноситься в журнал при запуске программы и при обновлении модулей)»

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


  • Предложения по тестированию разрабатываемого ПО — дополнения к требованиям, указывающие, каким образом то или иное требование должно быть протестировано.


  • Юридические требования — требования к лицензированию, патентной чистоте, etc.


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

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



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

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

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

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

Роли, которые при этом играют участники рабочей группы по определению нефункциональных требований, описаны далее.

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


Пример сценария, используемого для определения требований к производительности модуля системы, рассылающего уведомления пользователям сайта по электронной почте:
1. Система получает оповещение о событии, инициирующем рассылку уведомлений.
2. Система осуществляет рассылку оповещений по адресам из списка рассылки X, используя шаблон Y. Для рассылки сообщений используется сервис Z.
3. В случае невозможности завершения рассылки, система предпринимает повторные попытку рассылки.

Требования к времени оповещения о событии, инициирующем рассылку уведомлений: система должна получать оповещение не позднее чем через XX секунд после возникновения события.
Требования к времени отправки уведомлений: все уведомления должны быть отправлены не позднее YY минут после получения оповещения о событии
Требования к повторной отправке рассылки после неудачной попытки: число повторных попыток должно быть равным 10, с интервалом в 10 мин после каждой неудачной попытки отправки.

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

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

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

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


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

Атрибуты качества



Этот раздел будет посвящен характеристикам качества продукта или системы.

Характеристики качества и модель качества ПО


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

В индустрии ПО есть несколько моделей качества, принятых в качестве стандарта. Эти модели были разработаны в 70-е-80-е годы прошлого века и продолжают совершенствоваться.

Среди них можно выделить следующие:

Также можно назвать еще два стандарта, которые могут послужить источником для определения вашей модели качества:

  • 1061-1998 IEEE Standard for Software Quality Metrics Methodology
  • ISO 8402:1994 Quality management and quality assurance


Характеристики качества с точки зрения влияния на архитектуру системы

Все атрибуты качества с точки зрения архитектуры системы можно разделить на две большие группы: первая группа (runtime) – это атрибуты, относящиеся ко времени работы приложения или системы; вторая группа (design time) определяет ключевые аспекты проектирования приложения или системы. Многие из этих атрибутов взаимозависимы.

Рассмотрим более подробно каждую из этих групп.

Группа runtime

К этой группе относятся следующие атрибуты качества:
  • Доступность — атрибут качества, определяющий время непрерывной работы приложения или системы. Чтобы определить этот параметр, обычно указывают максимально допустимое время простоя системы.
  • Надежность — требование, описывающее поведение приложения или системы в нештатных ситуациях (примеры: автоматический перезапуск, восстановление работы, сохранение данных, дублирование важных данных, резервирование логики)
  • Требования к времени хранения данных (например, использование БД в качестве постоянного хранилища данных, продолжительность хранения данных)
  • Масштабируемость — требования к горизонтальному и/или вертикальному масштабированию приложения или системы. Говоря о вертикальной масштабируемости, мы определяем требования к вертикальной архитектуре системы или приложения. К требованиям вертикальной масштабируемости могут относиться, например, возможность переноса приложений на более мощные SMP-системы, поддержка большого объема памяти и файлов. Говоря о горизонтальной масштабируемости, мы определяем требования к горизонтальной архитектуре системы или приложения. К требованиям горизонтальной масштабируемости могут относиться, например, возможность использования технологий кластеризации. Следует особо заметить, что вертикальное масштабирование обычно направлено на повышение производительности системы. Горизонтальное масштабирование, помимо производительности, позволяет повысить отказоустойчивость системы. Более подробно о вертикальном и горизонтальном масштабировании можно прочитать, например, здесь.
  • Требования к удобству использования системы/приложения (с точки зрения пользователя) и требования к удобству и простоте поддержки (Usability)
  • Требования к безопасности, как правило, включают в себя три большие категории: требования, связанные с разграничением доступа, требования, связанные с работой с приватными данным, и требования, направленные на снижение рисков от внешних атак.
  • Требования к конфигурируемости приложения, взаимодействия и расположения компонентов можно условно разделить на четыре уровня:
    1. конфигурируемость на основе предопределенного набора параметров (predefined configurability), когда необходимый уровень модификации достигается путем изменения значений параметров из предопределенного набора;
    2. конфигурируемость на основе предопределенного набора базовых объектов (framework constrained configurability), когда необходимый уровень модификации достигается путем перекомпоновки предопределенного набора процессов, сущностей и служебных процедур;
    3. конфигурируемость путем реализации новых базовых объектов (basis reimplementation), когда обеспечивается расширение набора процессов и сущностей;
    4. конфигурируемость путем новой реализации системы (system reimplementation), когда система должна устанавливаться и настраиваться с нуля.
  • Требования к производительности решения, определяемые в терминах количества одновременно работающих пользователей, обслуживаемых транзакций, времени реакции, продолжительности вычислений, а также скорости и пропускной способности каналов связи
  • Ограничения, накладываемые на объем доступной памяти, процессорного времени, дискового пространства, пропускную способность сети, при которых приложение должно эффективно выполнять возложенные на него задачи


Группа design time

К этой группе относятся следующие атрибуты качества:
  • Требования к повторному использованию реализации или компонентов приложения или системы (Reusability). О том, как это выражается в конкретной реализации, будет рассказываться далее. Пока ограничимся лишь тем, что чаще всего эти требования будут возникать там, где общие компоненты используются несколькими модулями разрабатываемой вами системы.
  • Требования к расширяемости (Extensibility) приложения или системы в связи с появлением новых функциональных требований, тесно связанное с таким архитектурным атрибутом качества, как переносимость кода. Как правило, на начальном этапе сбора требований можно ограничиться указанием тех функциональных областей, которые в дальнейшем должны удовлетворять требованию расширяемости.
  • Требования к переносимости (Portability) приложения или системы на другие платформы.
  • Требования к взаимодействию между компонентами решения, между внешними компонентами, использование стандартных протоколов и технологий взаимодействия (Interoperability). Например, к таким требованиям можно отнести возможность использования нескольких стандартных протоколов для обмена данными между одной из подсистем разрабатываемой системы и внешней системой-поставщиком данных (на примере ArcGIS)
  • Требования к поддержке системы или приложения (Supportability). Среди этих параметров могут быть названы такие как, напрмер, дешевизна и скорость разработки, прозрачность поведения приложения, простота анализа ошибок и проблем в работе
  • Требования к модульности приложения или системы (Modularity). Обычно такие требования указывают, каким образом система должна быть разделена на модули, или перечисляют список обязательных модулей, которые должны входить в состав системы.
  • Требования к возможности тестирования (Testability) приложения или системы определяют объем требований к автоматическому и ручному тестированию, наличие необходимого инструментария
  • Требования к возможности и простоте локализации (Localizability) приложения или системы определяют возможности и специфические архитектурные требования, накладываемые процессом локализации. Эти требования содержат также перечень языков, на которые предполагается выполнять локализацию приложения или системы


О том, как, где, когда и откуда нужно взять конкретные значения для всех этих параметров, я расскажу в продолжении этой статьи.
Наталья Желнова @enotinka
карма
25,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (49)

  • 0
    Что вы думаете о такой точке зрения, в которой нефункциональных требований не бывает? Тем более с таким категоричным разделением. То, что является «нефункциональными» требованиями для одного стейкхолдера, может быть основными для другого.
    • +1
      Я думаю, что мы должны в первую очередь определиться с терминологией.
      Нефункциональные требования — это требования, которые определяют не функции, а характеристики системы: ее производительность, надежность, доступность, масштабируемость и ряд других параметров (здесь перечислены характеристики качества, но, как уже сказано в статье, есть и другие виды нефункциональных требований). Требование к времени отклика вашего приложения — это тоже нефункциональное требование («производная» от производительности). Думаю, пользователям вряд ли понравится, если реакции системы они будут ждать 4 минуты после нажатия на кнопку интерфейса. Но в течение 2-3 секунд они могут подождать. Это самый простой пример.
      Нефункциональные требования самым непосредственным образом определяют архитектуру разрабатываемого приложения, поэтому определять их очень важно, хотя многие предпочитают этого не делать, полагаясь на то, что hardware и технологии, с которыми они работают, уже обладает какими-то характеристиками качества — следовательно, определенное качество уже можно гарантировать. Отсутствие должного внимания, уделяемого нефункциональным требованиям, часто приводило к серьезным последствиям — от перепроектирования системы до полного провала проекта.
      Что касается «основных» и «не основных» требований — приоритеты задаются для всех требований, как функциональных, так и нефункциональных. Категория требований и важность — это просто две разные вещи. Как функциональные, так и нефункциональные требования могут иметь как высокий, так и низкий приоритет.
  • 0
    .
  • +1
    Как так вышло, что бизнес-правила внезапно попали в нефункциональные требования? Они-то как раз определяют функции системы.
    • +1
      Разновидность ограничений. Это не функции системы, а то, что определяет, как конкретно эти функции должны быть реализованы.
      Вигерс их относит к нефункциональным требованиям, и он, в общем прав, прав.
      • +1
        «Если оплата по счету не поступила в течение 15 дней, заказ считается отменённым» — это как раз функция системы.

        Что же касается Вигерса, то вы, простите, о каком издании говорите? Потому что в моем (второе издание, 2003-ий год в оригинале) бизнес-правила — это раздел 2.5 шаблона требований, «Design and implementation constraints», в то время как Quality Attributes — это раздел 5 того же шаблона. Собственно, во втором издании Вигерс уже не так активно делит требования на функциональные и нефункциональные.

        А Макконнел, скажем, в Code Complete относит все и любые бизнес-требования к функциональным, а в нефункциональные попадает производительность, безопасность, поддерживаемость, надежность и тому подобные вещи.

        • 0
          Вигерс Карл, Разработка требований к программному обеспечению, Москва, «Русская Редакция», Подписано в печать 03.12.03
          Глава 1 стр. 8
          Знаменитый рисунок, проводящий границу между функциональными и нефункциональными требованиями:

          image

          Думаю, что на основании этой картинки (там еще текст к ней есть) можно однозначно сказать, к какому виду требований относит Вигерс бизнес-правила.

          Да, атрибуты качества — это, собственно, основная часть нефункциональных требований при разработке ПО. Поэтому ей уделяется так много внимания — это я про Макконнела. Про остальные виды нефункциональных требований вообще пишут мало. Про то, как их определять — практически никто.

          Ну и Макконел — не аналитик, так сказать, в чистом виде, ему то, что не относится непосредственно к модели качества и метрикам, которые отражаются в коде, видимо, неинтересно.
          • 0
            Бизнес-правила — сущность (пусть и абстрактная) реального мира. Они существуют безотносительно наличия каких-либо систем. Например, правило, что одна стриптизерша не может работать более 2 часов подряд без перерыва будет существовать вне зависимости от того, автоматизирован ли стрип-клуб. Так что считать их непосредственно требованиями некорректно. Эффективней выделять их в отдельный раздел/документ и мапить на них требования, чтобы было понятно их происхождение.
            • 0
              Да, в общем, многое в требованиях является сущностью реального мира. И бизнес-правила, как один из типов ограничений — тоже. И в зависимости от наличия автоматизации и способа автоматизации некоторые бизнес-правила могут меняться.
              Считать их разновидностью ограничений, диктующих нам, как реализовывать ту или иную функцию или группу функций — вполне корректно. Если предположить, что водораздел между функциональными и нефункциональными требованиями проходит по линии «что надо сделать (функциональные) — как надо сделать *нефункциональные)», то получится, что ограничения как раз попадают в нефункциональные требования.
              • 0
                Если предположить, что водораздел между функциональными и нефункциональными требованиями проходит по линии «что надо сделать (функциональные) — как надо сделать *нефункциональные)», то получится, что ограничения как раз попадают в нефункциональные требования.

                Вот только приведенный вами пример бизнес-правила «При отгрузке заказа менеджер должен запросить у бухгалтера товарно-транспортную накладную и счет-фактуру» — это «что» надо сделать, а не «как».
                • 0
                  Это смесь того, «что» и «как». По отношению к сценарию отгрузки товара — это как должна выполняться операция.
                  • 0
                    Эээ, мне кажется, что тут мы ушли в демагогию, потому что с некоторой точки зрения любое описание сценария — это то, как должен выполняться сценарий.
                    • +1
                      Да, но разница в том, что бизнес-правило может диктовать, как именно должен выполняться сценарий. Если бы бизнес-правила не существовало, этот сценарий мог бы быть реализован 10-20 различными вариантами. А если оно есть — то только одним.
          • +1
            Во втором издании эта картинка тоже есть, только текст под ней уже не так однозначен. Если вы обратите внимание, то заметите, что функциональные требования в картинке встречаются дважды — в качестве категории и в качестве пункта, так что не всегда очевидно, о чем именно пишет Вигерс.

            Но на самом деле, я просто считаю, что разделение бизнес-требований на «функциональные» (пользовательские) и «нефункциональные» (правила) — надумано. Одно и то же требование иногда можно выразить и как правило, и как сценарий, но его суть же от этого не меняется? Так что для меня требования делятся на прикладные (т.е., то, что обеспечивает работу системы в соответствии с задачами и процессами заказчика) и качественные (собственно, все остальное).

            Про то, как их определять — практически никто.

            Вообще, у Вигерса целая глава про бизнес-правила.
            • 0
              Да, собственно, как их классифицировать или делить на категории — это не столь уж принципиально.
              Важнее — как их определять, и на что они влияют в системе.
              • 0
                Ну, вы же зачем-то пишете пост именно о нефункциональных требованиях, значит, у них есть что-то общее. Нет?
                • 0
                  Есть, они типа те, которые не как другие :) (we who are not as others, говоря корявым языком детей бразильских дипломатов)
                  • 0
                    Так все требование не такие, как другие. С моей точки зрения, прикладные требования существенно более «не такие».
                    • 0
                      Какие такие прикладные? Это ваша собственная классификация? Зачем?
                      • 0
                        Я выше писал.

                        С моей точки зрения разница между группой «сценарии использования»+«бизнес-правила» и группой «атрибуты качества»+«ограничения» существенно больше, нежели между группами «функциональные требования» и «нефункциональные требования».

                        Это просто к тому, что «эти требования не такие как другие».
                        • 0
                          Специалисты различают вот такие виды требований:
                          1. Функциональные
                          2. Ограничения
                          3. Интерфейсы
                          4. Бизнес-правила
                          5. Атрибуты качества

                          Вот 2-5 условно для простоты называют «нефункциональные», это такой проф.жаргон.

                          Классификация 1-5 тоже такая, потому что она по факту удобна в работе, а не потому, что она идеальная в математическом смысле теории множеств.
                          • 0
                            Вот классификацию 1-5 я очень хорошо понимаю, а вот смысла совместно рассматривать 2-5 вместе — не вижу, потому что общего у них не так много, как кажется. Мы же не называем пп.1+3-5 «неограниченными» или 1-4 — «некачественными»?

                            Я понимаю, что это профжаргон, но какой в нем реальный смысл?
                            • 0
                              Смысл в том, что про 1 в целом знают и понимают клиенты и айтишники.

                              А про 2-5 клиенты говорить не умеют, а айтишники не умеют задавать правильные вопросы и понимание важности отдельных категорий этих требований приходит постепенно, с опытом. Причём начинается с каких-нибудь «требований к интерфейсу», «требований к дизайну».

                              И ещё смысл жаргона в том, что узус формируется независимо от нашего мнения о нём.
                              • +1
                                В моем опыте как раз люди регулярно не могут отличить 1 от 4. Вот тот же пример из поста: «При отгрузке заказа менеджер должен запросить у бухгалтера товарно-транспортную накладную и счет-фактуру» — почему это бизнес-правило, а не функциональное требование к системе?

                                И ещё смысл жаргона в том, что узус формируется независимо от нашего мнения о нём.

                                Это правда. Но потом получается, что разные люди понимают под жаргонными словами разные вещи.
                                • 0
                                  Какие люди?
                                  Клиенту и не нужно различать.

                                  Айтишники должны были изучать дисциплину хотя бы software engineering requirements, где этот вопрос разбирается:
                                  swebok.sorlik.ru/1_software_requirements.html

                                  Если не изучали или не помнят, значит у них плохая подготовка.
                                  • 0
                                    Если клиенты не различают, то как может быть так, что про 1 они говорить умеют, а про 4 — нет. Они же не различают? Не складывается.

                                    Я не скрываю, что у меня далеко не идеальная аналитическая подготовка, но мне, тем не менее, интересно: приведенный пример — это бизнес-правило или функциональное требование? И почему?
                                    • 0
                                      Они не умеют 4 осознавать и выделять.

                                      По моему мнению, это бизнес-правило, т.к. бизнес-правило — это закономерность выполнения бизнеса, которая существует вне зависимости от того, автоматизирована деятельность или нет.

                                      Как его выделять:
                                      Добивайтесь атомарности требований.
                                      Разбиваете предложение на фрагменты:
                                      1) «отгрузка товара» (функция)
                                      2) «запрос накладной» (функция)
                                      3) 2 должно происходить в процессе 1.

                                      Вот 3, как видно из его формы, это правило, а не функция.
                                      • 0
                                        Ммм.

                                        Отгрузка товара — это некий сценарий. Например: «получить список товара под отгрузку — найти местоположение на складе — свезтии к машине — загрузить — отправить машину» (happy path). Почему шаг «запросить накладную», который мы теперь добавляем между первым и вторым шагом, как-то отличается?

                                        Иными словами, почему это правило не может просто быть выражено как еще один пункт сценария?
                                        • 0
                                          Откуда вдруг из-за угла выехали сценарии? Классические требования атомарны и не имеют связей предшествования/следования.

                                          Да, можно выразить бизнес-правило в сценарии или диаграмме бизнес-процессов. Но для задач планирования и контроля разработки полезно иметь бизнес-правило записанным в явном виде в реестре.
                                      • +1
                                        Если следовать намекам, которые дает нам русский язык, то нефункциональные требования — это те, которые определяют ВСЕ ЧТО УГОДНО, КРОМЕ функциональности.

                                        Допустим, приведенное высказывание — это «бизнес-правило». Однако, система, проверяющая наличие запроса накладной в процессе отгрузки товара — это система, ФУНКЦИОНАЛЬНО отличная от системы, НЕ проверяющей и не требующей выполнения данного правила.

                                        Тогда какое же это «нефункциональное требование»? Спасибо за пояснения…
                                        • 0
                                          Функция — это то, что преобразует вход в выход.

                                          Ограничения на применение функций — это не преобразования входа в выхода.

                                          Если в машине руль у водителя на потолке, то по набору функций машина та же самая.

                                          Если одна функция должна запускаться вместе с другой — это не порождение 3-й функции.
                                          • 0
                                            Я рассматриваю данное (обсуждаемое) бизнес-правило как ограничение, которое надо проверять в коде (проверка — это та же функциональность). А Вы, похоже, как констатацию (типа «в этой системе по другому не бывает»).

                                            Если это просто констатация, то согласен, это НФТ (хотя и полезность его в этом случае вызывает вопросы)
  • +1
    Вместо неработающей ссылки на пиратский файл отвратительно переведённого 2-го издания Вигерса можно поставить ссылку на свежее 3-е издание за 200 рублей в электронном виде на русском языке: www.litres.ru/dzhoy-bitti/karl-vigers/razrabotka-trebovaniy-k-programmnomu-obsespecheniu/
    • +1
      Третье издание тоже отличилось качеством перевода.
      Начиная от кучи опечаток, в том числе на первой же странице, где перечислены посвящения:
      Посвящается Крис.
      – Крис Вигерс

      заканчивая такими оборотами:
      … за счет предъявления повелителям сайта ввести изображенные на картинке символы

      и т.д.
      • 0
        мда, с посвящением трешак.

        ну по крайней мере ключевые термины типа product vision переведены правильно
        • 0
          Я, конечно понимаю, что для «классических требований» термин «backlog» не ключевой, но бездумная копипаста «резерва проекта» с Википедии дискредитирует это издание гораздо сильнее, чем опечатка в посвящении и всякие «повелители сайта» по тексту.

          Если бы переводчик потрудился заглянуть в те же «Пользовательские истории», то нашёл бы там «Журнал запросов на выполнение работ» – не первоклассный перевод, конечно, но хотя бы отражающий общую суть. Примечательно, что «Вильямс» открыто указывает переводчика А. Г. Гузикевича, тогда как у «Русской редакций» ничего подобного я не нашёл.

          Такие известные книги, на мой взгляд, лучше всего переводить силами сообщества, потому как каждая ошибка перевода в терминологии и важных описаниях порождает массу когнитивных искажений со всеми вытекающими для отрасли последствиями.
          • +1
            Журнал запросов на выполнение работ — на мой взгляд, не самый удачный перевод. Лучше, мне кажется, журнал запросов на изменение.
            У «Русской редакции когда-то была мода ставить в информацию об издании фамилию редактора. По крайней мере, свою я там видела, когда редактировала книги по SQL Server (администрирование и разработка). Иногда ставили фамилии переводчиков (по крайней мере я на этом настаивала, когда работала вместе с людьми, которые начинали свой путь в программировании с разработки движков для баз данных).
            Теперь эта мода у „Русской редакции“ прошла — они переводят книги силами компании Логрус, занимающейся локализацией разных программных продуктов, в том числе и Microsoft. Работу переводчиков в Логрусе часто выполняют студенты. Что касается редактуры — похоже, что от нее и вовсе отказались.
            • +2
              Это не самый удачный перевод в первую очередь из-за того, что бэклог некорректно называть журналом. Термин «журнал» в техническом и околотехническом мире обладает устойчивой психологической инерцией — «документ с записями о событиях в хронологическом порядке». Бэклог же представляет собой приоритезированный список элементов не привязанный к какой-либо хронологии.

              На мой взгляд, самый простой вариант термина это «список [название элементов]»: «список нереализованных компонентов продукта», «список компонентов для реализации в спринте». Или сокращённо: «список компонентов продукта», «список компонентов спринта». Если команда использует истории, то соответственно: «список историй продукта», «список историй спринта».

              Что касается политики издательства в отношении переводов и редактуры, это ещё один веский довод взяться за такую работу силами сообщества. К примеру, у Agile Ukraine есть замечательная инициатива Agile Translations. Думаю, в сообществе русскоязычных аналитиков не меньше людей, у которых достаточно компетенции и желания заниматься такой полезной и интересной деятельностью. Осталось их организовать +)
              • 0
                А что известно про юридические аспекты таких переводов?
                • 0
                  Специально уточнил этот вопрос у организаторов сообщества. Переводы на сто процентов легитимны, поскольку делались с личного согласия авторов на безвозмездной основе. «Те, кто просят деньги, сразу пишут об этом на своих сайтах». Авторами переведённых книг являются граждане Швеции, ведущие активисты гибкой разработки Хенрик Книберг и Маттиас Скарин.

                  Даже если с переводами Вигерса могут возникнуть какие-то юридические проволочки, всегда остаётся возможность выслать издательству список найденных ошибок и параллельно постараться его максимально распространить в Сети. Пусть их учтут в следующем издании, а те, кто приобретёт нынешнее, будет проинформирован.
                  • 0
                    Вадим, учитывая, что между выпуском 2-го и 3-го изданий на русском языке прошло 10 лет, то информировать издательство об ошибках, которые можно учесть в следующем издании — на мой взгляд слишком благородная затея :) Если понадобится доптираж, оно вряд ли будет заморачиваться правками, а 4-е издание пока не светит, да и дяденька уже старенький.
                    • 0
                      В том то и дело, что, ввиду перечисленных обстоятельств, есть немалая вероятность того, что в ближайшие годы нынешнее третье издание будет оставаться одной из самых авторитетных и рекомендуемых книг по бизнес-анализу. А это чревато распространением всяких «резервов проекта» в довольно широких масштабах, чего лично мне очень не хотелось бы.

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

                      Я бы с большим удовольствием и не меньшим пристрастием вычитал двадцатую главу +) Только уже осенью.
  • 0
    Как понять, какие из 50-100 возможных видов НФТ из общего предъявлять в конкретном проекте?
  • +1
    По требованиям есть более современные стандарты:

    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», качество в использовании.

    Рекомендую ознакомиться.
  • 0
    «В этой статье я расскажу о следующем: … откуда берутся численные значения для нефункциональных требований.»

    Я не нашёл в этой статье. Покажите, в каком абзаце?
    • 0
      Во второй части будет.
      • 0
        А когда она будет?
        • 0
          Хороший вопрос.
          Я думаю, что нынешним летом (но уже ближе к августу) я ее напишу.
          • 0
            Теперь уже прошло 2 года.

            Может всё-таки поправить текст статьи и убрать ложное обещание?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.