В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Part of a series on |
Software development |
---|
В системной инженерии и программной инженерии анализ требований фокусируется на задачах, которые определяют потребности или условия для удовлетворения нового или измененного продукта или проекта, принимая во внимание возможные противоречивые требования различных заинтересованных сторон , анализируя, документируя, проверяя и управляя требованиями к программному обеспечению или системе . [2]
Анализ требований имеет решающее значение для успеха или неудачи системного или программного проекта . [3] Требования должны быть документированы, выполнимы, измеримы, проверяемы, [4] прослеживаемы, [4] связаны с выявленными бизнес-потребностями или возможностями и определены на уровне детализации, достаточном для проектирования системы .
Концептуально анализ требований включает три типа деятельности: [ необходима ссылка ]
Анализ требований может быть длительным и утомительным процессом, в ходе которого задействованы многие тонкие психологические навыки. Новые системы изменяют среду и отношения между людьми, поэтому важно определить всех заинтересованных лиц, учесть все их потребности и убедиться, что они понимают последствия новых систем. Аналитики могут использовать несколько методов для выявления требований у клиента. Они могут включать разработку сценариев (представленных в виде пользовательских историй в гибких методах ), идентификацию вариантов использования , использование наблюдения за рабочим местом или этнографии , проведение интервью или фокус-групп (более точно названных в этом контексте семинарами по требованиям или сессиями обзора требований) и создание списков требований. Прототипирование может использоваться для разработки примера системы, который может быть продемонстрирован заинтересованным лицам. При необходимости аналитик будет использовать комбинацию этих методов для установления точных требований заинтересованных лиц, чтобы была создана система, отвечающая потребностям бизнеса. [5] [6] Качество требований можно улучшить с помощью этих и других методов:
См. Анализ заинтересованных сторон для обсуждения людей или организаций (юридических лиц, таких как компании и органы по стандартизации), которые имеют обоснованный интерес к системе. Они могут быть затронуты ею как напрямую, так и косвенно.
Важным новым акцентом в 1990-х годах стало внимание к выявлению заинтересованных сторон . Все больше осознается, что заинтересованные стороны не ограничиваются организацией, нанимающей аналитика. Другие заинтересованные стороны включают:
Требования часто имеют кросс-функциональные последствия, которые неизвестны отдельным заинтересованным сторонам и часто упускаются или не полностью определяются во время интервью с заинтересованными сторонами. Эти кросс-функциональные последствия могут быть выявлены путем проведения сессий JRD в контролируемой среде, проводимых обученным фасилитатором (бизнес-аналитиком), где заинтересованные стороны участвуют в обсуждениях для выявления требований, анализа их деталей и раскрытия кросс-функциональных последствий. Для документирования обсуждения должен присутствовать специальный секретарь, освобождая бизнес-аналитика для ведения обсуждения в направлении, которое генерирует соответствующие требования, отвечающие цели сессии.
Сессии JRD аналогичны сессиям Joint Application Design Sessions. В первом случае сессии выявляют требования, которые направляют проектирование, тогда как во втором выявляют конкретные особенности дизайна, которые должны быть реализованы для удовлетворения выявленных требований.
Одним из традиционных способов документирования требований были списки требований в стиле контракта. В сложной системе такие списки требований могут занимать сотни страниц.
Подходящей метафорой был бы чрезвычайно длинный список покупок. Такие списки очень непопулярны в современном анализе; поскольку они оказались впечатляюще неэффективными в достижении своих целей [ необходима цитата ] ; но они все еще встречаются по сей день.
В качестве альтернативы спискам требований Agile Software Development использует пользовательские истории для формулирования требований на повседневном языке.
Лучшие практики принимают составленный список требований просто как подсказки и постоянно спрашивают «почему?», пока не будут обнаружены фактические бизнес-цели. Затем заинтересованные стороны и разработчики могут разработать тесты для измерения того, какой уровень каждой цели был достигнут на данный момент. Такие цели меняются медленнее, чем длинный список конкретных, но неизмеренных требований. После того, как будет установлен небольшой набор критических, измеряемых целей, быстрое прототипирование и короткие итеративные фазы разработки могут приступить к предоставлению фактической ценности для заинтересованных сторон задолго до того, как проект будет завершен наполовину.
Прототип — это компьютерная программа, которая демонстрирует часть свойств другой компьютерной программы, позволяя пользователям визуализировать приложение, которое еще не было создано. Популярная форма прототипа — это макет , который помогает будущим пользователям и другим заинтересованным лицам получить представление о том, как будет выглядеть система. Прототипы облегчают принятие решений по проектированию, поскольку аспекты приложения можно увидеть и поделиться ими до того, как приложение будет создано. Значительные улучшения в общении между пользователями и разработчиками часто наблюдались с введением прототипов. Ранние представления приложений приводили к меньшему количеству изменений в дальнейшем и, следовательно, значительно сокращали общие затраты. [ необходима цитата ]
Прототипы могут быть плоскими диаграммами (часто называемыми каркасами ) или рабочими приложениями, использующими синтезированную функциональность. Каркасы создаются в различных графических дизайнерских документах и часто удаляют все цвета из дизайна (т. е. используют палитру оттенков серого) в случаях, когда ожидается, что окончательное программное обеспечение будет иметь графический дизайн , примененный к нему. Это помогает избежать путаницы относительно того, представляет ли прототип окончательный визуальный вид и ощущение приложения. [ необходима цитата ]
Вариант использования — это структура для документирования функциональных требований к системе, обычно включающая программное обеспечение, будь то новое или изменяемое. Каждый вариант использования предоставляет набор сценариев , которые передают, как система должна взаимодействовать с пользователем-человеком или другой системой для достижения определенной бизнес-цели. Варианты использования обычно избегают технического жаргона, предпочитая вместо этого язык конечного пользователя или эксперта в предметной области . Варианты использования часто соавторами являются инженеры по требованиям и заинтересованные стороны.
Варианты использования — это обманчиво простые инструменты для описания поведения программного обеспечения или систем. Вариант использования содержит текстовое описание того, как пользователи должны работать с программным обеспечением или системой. Варианты использования не должны описывать внутреннюю работу системы и не должны объяснять, как эта система будет реализована. Вместо этого они показывают шаги, необходимые для выполнения задачи без последовательных предположений.
This section needs expansion. You can help by adding to it. (February 2018) |
Спецификация требований — это синтез результатов обнаружения текущих потребностей бизнеса и оценки этих потребностей для определения и указания того, что требуется для удовлетворения потребностей в рамках фокусируемого решения. Обнаружение, анализ и спецификация перемещают понимание из текущего состояния «как есть» в будущее состояние «будет». Спецификация требований может охватывать всю широту и глубину будущего состояния, которое должно быть реализовано, или она может быть нацелена на определенные пробелы, которые необходимо заполнить, например, приоритетные ошибки в программной системе, которые необходимо исправить, и улучшения, которые необходимо внести. Учитывая, что любой крупный бизнес-процесс почти всегда использует программное обеспечение и системы данных и технологии, спецификация требований часто связана со сборками программной системы, покупками, стратегиями облачных вычислений, встроенным программным обеспечением в продукты или устройства или другими технологиями. Более широкое определение спецификации требований включает или фокусируется на любой стратегии или компоненте решения, например, обучении, руководствах по документации, персонале, маркетинговых стратегиях, оборудовании, расходных материалах и т. д.
Требования классифицируются несколькими способами. Ниже приведены общие классификации требований, которые относятся к техническому управлению: [1]
Заявления о целях на уровне бизнеса без ссылки на подробную функциональность. Обычно это высокоуровневые (программные и/или аппаратные) возможности, необходимые для достижения бизнес-результата.
Заявления о фактах и предположения, которые определяют ожидания системы с точки зрения целей миссии, среды, ограничений и мер эффективности и пригодности (MOE/MOS). Клиенты — это те, кто выполняет восемь основных функций системной инженерии, с особым акцентом на оператора как ключевого клиента. Эксплуатационные требования будут определять основную потребность и, как минимум, отвечать на вопросы, поставленные в следующем списке: [1]
Архитектурные требования объясняют , что должно быть сделано, путем определения необходимой системной архитектуры системы .
Поведенческие требования объясняют, что необходимо сделать, определяя необходимое поведение системы.
Функциональные требования объясняют, что должно быть сделано, определяя необходимую задачу, действие или деятельность, которые должны быть выполнены. Анализ функциональных требований будет использоваться в качестве функций верхнего уровня для функционального анализа. [1]
Нефункциональные требования — это требования, определяющие критерии, которые можно использовать для оценки работы системы, а не конкретные поведения.
Степень, в которой миссия или функция должны быть выполнены; обычно измеряется с точки зрения количества, качества, охвата, своевременности или готовности. В ходе анализа требований требования к производительности (насколько хорошо это должно быть сделано) будут интерактивно разрабатываться по всем выявленным функциям на основе факторов жизненного цикла системы; и характеризоваться с точки зрения степени определенности в их оценке, степени критичности для успеха системы и их связи с другими требованиями. [1]
Требования к продуктам «создать для», «кодировать для» и «купить для», а также требования к процессам «как выполнять» выражены в пакетах технических данных и технических руководствах. [1]
Требования, которые подразумеваются или трансформируются из требований более высокого уровня. Например, требование большой дальности или высокой скорости может привести к проектному требованию малого веса. [1]
Требование устанавливается путем деления или иного распределения требования высокого уровня на несколько требований более низкого уровня. Пример: 100-фунтовый элемент, состоящий из двух подсистем, может привести к требованиям веса в 70 фунтов и 30 фунтов для двух элементов более низкого уровня. [1]
К известным моделям категоризации требований относятся FURPS и FURPS+, разработанные в Hewlett-Packard .
Стив Макконнелл в своей книге «Быстрая разработка » подробно описывает ряд способов, с помощью которых пользователи могут препятствовать сбору требований:
Это может привести к ситуации, когда требования пользователей продолжают меняться даже после начала разработки системы или продукта.
Возможные проблемы, возникающие по вине инженеров и разработчиков при анализе требований:
Одной из попыток решения проблем коммуникации было привлечение специалистов по бизнес- или системному анализу.
Методы, представленные в 1990-х годах, такие как прототипирование , унифицированный язык моделирования (UML), варианты использования и гибкая разработка программного обеспечения , также предназначены для решения проблем, возникавших при использовании предыдущих методов.
Кроме того, на рынок вышел новый класс инструментов моделирования или определения приложений. Эти инструменты предназначены для преодоления разрыва в коммуникации между бизнес-пользователями и ИТ-организацией, а также для того, чтобы приложения могли быть «тестированы на рынке» до того, как будет создан какой-либо код. Лучшие из этих инструментов предлагают:
В индустрии программного обеспечения широко признано, что проекты по разработке программного обеспечения становятся критически уязвимыми, если эти действия выполняются ненадлежащим образом.
[1]