В инженерии требование — это условие, которое должно быть выполнено для того, чтобы результат работы был приемлемым. Это явное, объективное, ясное и часто количественное описание условия, которому должен соответствовать материал, конструкция, продукт или услуга. [1]
Спецификация или СП — это набор требований, который обычно используется разработчиками на этапе проектирования продукта и тестировщиками в процессе проверки .
При итеративной и инкрементальной разработке , такой как agile software development , требования разрабатываются параллельно с проектированием и реализацией. При каскадной модели требования завершаются до начала проектирования или реализации.
Требования используются во многих областях техники, включая инженерное проектирование , системную инженерию , разработку программного обеспечения , корпоративную инженерию , разработку продуктов и оптимизацию процессов.
Требование — это относительно широкое понятие, которое может описывать любую необходимую или желаемую функцию, атрибут, возможность, характеристику или качество системы, чтобы она имела ценность и полезность для клиента, организации, пользователя или другой заинтересованной стороны.
Термин «требование» используется в сообществе разработчиков программного обеспечения по крайней мере с 1960-х годов. [2]
Согласно Руководству по своду знаний по бизнес-анализу® версии 2 от IIBA (BABOK), [3] требование следующее:
Это определение основано на IEEE 610.12-1990: Стандартный глоссарий терминов программной инженерии IEEE. [4]
Можно сказать, что требования относятся к двум областям:
Требования к продукту и процессу тесно связаны; можно сказать, что требование к продукту определяет автоматизацию, необходимую для поддержки требования к процессу, в то время как требование к процессу определяет действия, необходимые для поддержки требования к продукту. Например, требование максимальной стоимости разработки (требование к процессу) может быть установлено для достижения требования максимальной цены продажи (требование к продукту); требование, чтобы продукт был поддерживаемым (требование к продукту), часто выполняется путем установления требований следовать определенным стилям разработки (например, объектно-ориентированное программирование ), руководствам по стилю или процессу обзора/инспекции (требования к процессу).
Требования обычно классифицируются по типам, которые производятся на разных этапах в ходе разработки, с таксономией, зависящей от общей используемой модели. Например, следующая схема была разработана Международным институтом бизнес-анализа в их Своде знаний по бизнес-анализу [5] (см. также FURPS и Типы требований ).
Характеристики хороших требований по-разному излагаются разными авторами, причем каждый автор обычно подчеркивает характеристики, наиболее соответствующие их общему обсуждению или конкретной рассматриваемой технологической области. Однако следующие характеристики являются общепризнанными. [8] [9]
Есть еще много атрибутов, которые следует учитывать, чтобы повысить качество требований. Если требования подчиняются правилам целостности данных (например), то точность/правильность и действительность/авторизация также являются достойными атрибутами. Прослеживаемость подтверждает, что набор требований удовлетворяет потребность (не больше и не меньше, чем требуется).
К вышесказанному некоторые добавляют Externally Observable, то есть требование определяет характеристику продукта, которая внешне наблюдается или ощущается пользователем. Такие сторонники утверждают, что требования, которые определяют решения по внутренней архитектуре, дизайну, реализации или тестированию, вероятно, являются ограничениями и должны быть четко сформулированы в разделе «Ограничения» документа «Требования». Противоположная точка зрения заключается в том, что эта точка зрения терпит неудачу по двум пунктам. Во-первых, эта точка зрения не признает, что пользовательский опыт может поддерживаться требованиями, не воспринимаемыми пользователем. Например, требование представлять геокодированную информацию пользователю может поддерживаться требованием к интерфейсу с внешним сторонним деловым партнером. Интерфейс будет незаметен для пользователя, хотя представление информации, полученной через интерфейс, определенно не будет. Во-вторых, ограничение ограничивает альтернативы дизайна, тогда как требование определяет характеристики дизайна. Продолжая пример, требование, выбирающее интерфейс веб-службы, отличается от ограничения, ограничивающего альтернативы дизайна методами, совместимыми с архитектурой единого входа.
Все требования должны быть проверяемыми. Наиболее распространенный метод — это испытание. Если это не так, следует использовать другой метод проверки (например, анализ, демонстрация, осмотр или обзор проекта).
Некоторые требования по своей структуре не поддаются проверке. К ним относятся требования, которые говорят, что система никогда или всегда не должна демонстрировать определенное свойство. Надлежащее тестирование этих требований потребовало бы бесконечного цикла тестирования. Такие требования должны быть переписаны, чтобы быть проверяемыми. Как указано выше, все требования должны быть проверяемыми.
Нефункциональные требования, которые невозможно проверить на уровне программного обеспечения, по-прежнему должны храниться в качестве документации намерений заказчика. Однако их можно проследить до требований к процессу, которые определены как практический способ их выполнения. Например, нефункциональное требование быть свободным от бэкдоров может быть удовлетворено путем замены его на требование к процессу использовать парное программирование . Другие нефункциональные требования будут прослеживаться до других компонентов системы и проверяться на этом уровне. Например, надежность системы часто проверяется путем анализа на уровне системы. Программное обеспечение авионики с его сложными требованиями к безопасности должно следовать процессу разработки DO-178B .
Действия, которые приводят к получению системных или программных требований. Инженерия требований может включать в себя исследование осуществимости или фазу концептуального анализа проекта и выявление требований (сбор, понимание, рассмотрение и формулирование потребностей заинтересованных сторон ) и анализ требований , [10] анализ (проверка согласованности и полноты), спецификацию (документирование требований) и валидацию (убедиться, что указанные требования верны). [11] [12]
Требования подвержены проблемам двусмысленности, неполноты и непоследовательности. Было показано, что такие методы, как строгая проверка, помогают решать эти проблемы. Двусмысленности, неполноты и непоследовательности, которые можно разрешить на этапе требований, обычно обходятся на порядок дешевле, чем исправление тех же проблем на более поздних этапах разработки продукта. Анализ требований направлен на решение этих проблем.
Необходимо рассмотреть инженерный компромисс между требованиями, которые слишком расплывчаты, и требованиями, которые настолько подробны, что их невозможно реализовать.
Гибкие подходы развивались как способ преодоления этих проблем путем определения базовых требований на высоком уровне и детализации по принципу «точно вовремя» или в последний ответственный момент .
Требования обычно пишутся как средство общения между различными заинтересованными сторонами. Это означает, что требования должны быть понятны как обычным пользователям, так и разработчикам. Один из распространенных способов документирования требований — указание того, что должна делать система. Пример: «Подрядчик должен предоставить продукт не позднее даты xyz». Другие методы включают варианты использования и пользовательские истории .
Требования обычно меняются со временем. После определения и утверждения требования должны попадать под контроль изменений . Для многих проектов требования изменяются до завершения работы над системой. Это отчасти связано со сложностью компьютерного программного обеспечения и тем фактом, что пользователи не знают, чего хотят, пока не увидят это. Эта характеристика требований привела к исследованиям и практикам управления требованиями .
Существует несколько конкурирующих взглядов на то, что такое требования и как ими следует управлять и использовать. Двумя ведущими организациями в отрасли являются IEEE и IIBA. Обе эти группы имеют разные, но схожие определения того, что такое требование.
Многие проекты были успешными при незначительном или полном отсутствии согласия по требованиям. [13] Некоторые данные также указывают на то, что указание требований может снизить креативность и производительность дизайна . [14] Требования мешают творчеству и дизайну, поскольку дизайнеры становятся чрезмерно занятыми предоставленной информацией. [15] [16] [17] В более общем плане некоторые исследования показывают, что требования к программному обеспечению являются иллюзией, созданной путем неверного представления проектных решений в качестве требований в ситуациях, когда реальные требования не очевидны. [18]
Между тем, большинство гибких методологий разработки программного обеспечения ставят под сомнение необходимость строгого описания требований к программному обеспечению заранее, которое они считают движущейся целью. Вместо этого экстремальное программирование , например, описывает требования неформально, используя пользовательские истории (краткие резюме, помещающиеся на карточке, объясняющие один аспект того, что система должна делать), и считает обязанностью разработчика напрямую спрашивать у клиента разъяснения. Гибкие методологии пытаются фиксировать требования в серии автоматизированных приемочных тестов .
Расширение области действия может произойти из-за изменения требований с течением времени. В управлении требованиями изменение требований допускается, но если оно не отслеживается должным образом или предшествующие шаги (бизнес-цели, а затем требования пользователя) не сдерживаются дополнительным надзором или не рассматриваются как издержки и потенциальный сбой программы, то изменения требований происходят легко и, скорее всего, произойдут. Изменения требований легко происходят быстрее, чем разработчики успевают выполнить работу, и в результате усилия откатываются назад .
Существует несколько таксономий требований в зависимости от того, в рамках какой структуры вы работаете. (Например, заявленные стандарты IEEE, vice IIBA или подходы Министерства обороны США). Различия в языке и процессах в разных местах или неформальная речь могут привести к путанице и отклонению от желаемого процесса.
Процесс, которым управляют люди, подвержен человеческим недостаткам в управлении, где удобство, желания или политика могут привести к исключениям или прямому подрыву процесса и отклонениям от того, как должен проходить процесс по учебнику. Вот некоторые примеры:
В рамках процесса Министерства обороны США существуют некоторые исторические примеры проблем с требованиями:
{{cite book}}
: |first2=
имеет общее название ( помощь )