Разработка программного обеспечения основывается на требованиях - ожиданиях пользователей к будущей функциональности. Требования бывают очень разные по сути, составу, форме и качеству. Поэтому очень важно правильно называть и использовать требования разного сорта.
В Devprom ALM мы выделяем три основных уровня требований:
Уровень заказчика, пользователя или их представителей |
Первичные требования - пожелания, заявки, запросы на изменения, хотелки. Это неструктурированные, неполные и даже противоречивые требования, которые поступают команде из различных источников. Часто такие требования сформулированы вольным текстом или записаны в формате пользовательских историй. Принципиальное отличие первичных требований от остальных - в них содержатся как требования к функциональности, так и изменения к функциональности. Другими словами, по набору первичных требований крайне сложно получить целостное описание функциональности всей системы. |
Уровень анализа, проектирования и моделирования |
Бизнес-требования и системные требования (функциональные и нефункциональные, НФТ), которые целостно и непротиворечиво описывают бизнес-процессы и требования к разработке программной системы. Эти требования самого высокого качества, поскольку готовятся специально обученными людьми. Системные требования могут подразделяться на варианты использования, НФТ, UML-модели, макеты пользовательского интерфейса и т.п. В качестве форматов документирования обычно применяют: BRD (документ бизнес-требований), бизнес-кейс, SRS (спецификация системных требований), ТЗ (техническое задание) и т.п. |
Уровень разработчиков, тестировщиков и технических писателей | Задачи по реализации требований (целиком, частями или целыми документами) называются доработками. В доработке записано что необходимо реализовать или какие выполнить изменения в ранее реализованном требовании, когда и кому это сделать и т.д. Тестировщики также используют доработки для проверки реализации требований. |
Важно также отличать тип требования от формата, в котором оно задокументировано. Например, ТЗ (техническое задание) в себе содержит множество требований разных типов и общую информацию. Варианты использования (Use Cases) могут быть записаны в формате, предложенном А. Коберном или предложенном в процессе OpenUP (Rational Unified Process) и еще несколькими популярными вариантами. Вам необходимо самостоятельно определиться, каким именно образом эффективно документировать требования на ваших проектах.
В зависимости от сложности предметной области, сложности системы и квалификации исполнителя, описанные уровни требований могут пересекаться. Например, команда разработки может эффективно работать и с первичными требованиями.
Ниже приводятся современные способы выявления и сбора первичных требования.
Гойко Аджич усовершенствовал и развил практику сбора первичных требований под названием Impact Mapping. Ее суть заключается в выстраивании причинно-следственных связей (трассировки) от бизнес-целей к конкретным элементам автоматизации (функций продукта). Разработчик совместно с заказчиком должны ответить на следующие вопросы:
Визуализировать эти связи можно при помощи маркера и техники "ментальных карт", либо при помощи липких листочков.
Когда карта будет завершена и заказчик с разработчиком договорятся о целях и объеме работ, результаты можно зафиксировать в модуле "Цели и функции", например, следующим образом:
Джефф Паттон предложил коммуникационную практику, которая позволяет выявлять и структурировать пользовательские требования, трассировать их на бизнес-цели и конкретных людей, выполняющих какую-то деятельность для достижения этих целей (метод Персон). Для стори-мэппинга вам потребуется горизонтальная (столы) или вертикальная (стена) поверхность, на которой можно клеить липкие разноцветные листочки.
Совместно с бизнес-пользователем или представителем заказчика выявляются персоны, которым необходима автоматизация. Для каждой персоны записываются цели, ради которых планируется разработка/доработка программной системы. Цели записываются на желтых листочках. Бизнес-активности, которые выполняются персонами, для достижения целей, записываются на голубых листочках, которые размещаются под соответствющими целями. Под каждой активностью на желтых листочках записываются конкретные действия пользователя в системе (обычно такие действия записываются в формате пользовательской истории).
Пример того, как это может выглядеть: