Как написать бизнес требования к разработке проекта

ГЕОРГИЙ САВЕЛЬЕВ

Как разработать
Бизнес-требования

Модель выявления требований

Давайте поговорим о том, откуда берутся требования. И бизнес-требования (БТ), и нефункциональные требования напрямую вытекают из потребностей бизнеса.

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

Из бизнес-требований, помимо функциональных (ФТ) и нефункциональных требований, напрямую могут вытекать ещё и требования причастных сторон. В свою очередь, из требований причастных сторон могут вытекать ФТ и НФТ.

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

Все виды требований возникают в конкретном контексте, то есть следуют из Операционного контекста, к которому относятся активы, спрос, технологии и так далее. Подробнее про влияние контекста на бизнес-требования смотрите в статье Бизнес-требования. Назначение.

В наглядном виде модель выявления требований представлена на схеме:

Модель выявления требований

Почему важно выявлять и документировать
бизнес-требования?

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

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

Из БТ вытекают критерии приемки и именно на их основе производится оценка результатов разработки ИТ-решения.

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

Кроме того, бизнес-требования в Agile — это ключевой инструмент Product Owner для управления бэклогом продукта и ведения переговоров со стейкхолдерами.

Программа переподготовки

«Business Analyst Bootcamp»

Курс для тех, кто хочет сменить профессию и начать работать в ИТ с хорошими перспективами, занимаясь исследованием задач и проблем бизнеса и постановкой задач на автоматизацию

Какие бывают бизнес-требования?

Согласно концепции Six Sigma, бизнес-требования — это критичные активности предприятия, подлежащие выполнению для достижения целей организации, вне зависимости от конкретного решения.

Исходя из определения Six Sigma, классификация требований будет опираться на критичные активности, т. е. бизнес-требования могут быть связаны с:

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

      Ниже приведены примеры бизнес-требований по видам критичных активностей.

      Вид БТ: Значимые характеристики продуктов или услуг

      Примеры БТ:

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

      Вид БТ: Распознавание и обработка событий

      Примеры БТ:

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

      Вид БТ: Принятие решений

      Примеры БТ:

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

      Вид БТ: Сбор, обработка, хранение и предоставление информации

      Примеры БТ:

      • С момента обнаружения дефекта и до его полного устранения должна регистрироваться и храниться следующая информация.
      • Инвестиционный банк в конце каждого рабочего дня должен направлять Регулятору информацию о…
      • Для принятия решений об участии в тендере необходимы результаты предварительной оценки себестоимости проекта.

      Вид БТ: Обеспечение возможности выполнения действий

      Примеры БТ:

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

      Вид БТ: Предотвращение возможности выполнения действий

      Пример БТ:

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

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

      Требование, заданное с позиции «Система должна делать…», задает конкретное направление действиям разработчика, а также дает некоторые ограничения — в отличие от формулировки требований с позиции «Система не должна…»

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

      Признаки проблем в бизнес-требованих

      Можно выделить несколько типичных признаков проблем с бизнес-требованиями.

      • Неконкретность (слишком абстрактная формулировка)
      • Невозможность проверки (нет понимания, что является индикатором выполнения требования)
      • «Магические» числа (приведены какие-то необоснованные данные: «время обработки заявки 14 минут»)
      • Непонятная польза (не написано, для чего делаем то, что делаем; действительно ли это необходимо)
      • Избыточная детализация (зачастую делает требование слишком жестким и нечитаемым)
      • Невыполнимость (например, требование «обеспечить 100%-ую достоверность данных». Для чего это требование? Почему возникают недостоверности? С этой проблемой можно как-то бороться или это просто факт?)
      • Несогласованность (противоречивость; с одной стороны Покупатель хочет найти продукт с наилучшими качествами по наименьшей цене, а с другой — Продавец хочет стимулировать покупку продуктов, приносящих наибольшую прибыль)
      • Нерелевантность (приведено требование, которое вообще не понятно, какое отношение имеет к данному проекту)
      • Привязка к конкретному решению, в том числе — конкретный бизнес-процесс

      Хотелось бы сделать акцент на работе с «Магическими числами», поскольку зачастую такие ошибки в требованиях встречаются даже у опытных аналитиков.

      Работа с «магическими» числами

      Чтобы проверить требование на наличие данной проблемы, можно определить чувствительность (столбец «чуть-чуть» в таблице) требования и его границы (столбец «гораздо» в таблице).

      Для успеха проекта важно своевременно обнаруживать некорректные требования и решать, что с ними делать.

      Для тестирования бизнес-требований на «магические числа» можно использовать модель, представленную на рисунке.

      Любое число (разместим его в центральном круге) проверяется на чувствительность (на рисунке это столбец «чуть-чуть»). Что будет, если число будет немного больше? Есть ли какие-то последствия в таком случае для системы, стейкхолдеров? А если число будет чуть-чуть меньше?

      Затем мы задаем вопросы, пытаясь выявить реальные границы требования. Что, если число будет значительно больше? На что это повлияет? А если влияние достаточно серьезно, то нельзя ли предложить дополнительный способ обойти проблему? Границы обозначены в модели как столбец «гораздо».

      Расмотрим пример требования, которое содержит «магическое» число:

      Требование: Сократить среднее время обработки заявки до 14 минут

      Проверим это требование на чувствительность. Для этого зададим вопросы:

      1. Что будет, если время обработки заявки будет не 14, а 12 минут?
      2. Что, если увеличить до 14,5 мин? Насколько это критично?

      В процессе проверки может выясниться, что обработка заявки может занимать даже 30 минут, не принося никакого ущерба бизнесу.

      Проверим границы требования, ответив на вопросы:

      1. Может быть, целесообразно сократить время обработки до 0 минут, т. е. не обрабатывать заявки и перевести клиента на самообслуживание?
      2. Что будет, если одна заявка будет обрабатываться день? Это плохо? Как это скажется на бизнесе?

      Данный тест помогает понять, является ли число «магическим». Если число связанно с какими-то объективными процессами (например, требованиями законодательства),
      то мы можем определить его чувствительность и границы, а значит появление этого числа в требованиях вполне обосновано.

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

      Попробуем переформулировать требование на примере:

      Исходное требование:
      Оповестить надлежащих стейкхолдер не позднее 5 минут, после наступления события.

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

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

      Примеры некорректных бизнес-требований

      1. Обеспечить высокое качество обслуживания — Как проверить, что качество обслуживания высокое?
      2. Сократить среднее время обработки заказа до 14 минут — Почему до 14 минут, чем это обосновано? А почему не до 1 минуты? Какую пользу принесет сокращение времени обработки заказа?
      3. Обеспечить 100% достоверность учетных данных — Как мы узнаем какая достоверность? Как можно определить, что данные достоверны? В результате чего возникает недостоверность? С этим реально можно что-то сделать? Выполнимо ли данное требование?
      4. Гарантировать правильность принимаемых решений — Что выступает гарантом? Это выполнимо?
      5. Внедрить ERP — Кому и зачем это нужно? В чем проблема?

        Типовые ловушки аналитика

        Проблемы с требованиями, как правило, возникают, когда аналитик попадает в одни и те же типовые ловушки. Вот основные ловушки аналитика при работе с бизнес-требованиями:

        • Формальность — «пишу, потому что надо здесь что-то написать».
        • Узкие рамки анализа — не рассматриваем ничего, что выходит за рамки проекта.
        • Превращение в аудит — выясняем все обо всем «на всякий случай».
        • Превращение метода в цель — строгое следование определенному шаблону с превращением средств в цель и потерей основной цели проекта.

        Что можно сделать с каждой из этих ловушек?

        Как документируются бизнес-требования?

        В практике бизнес-аналитика присутствует два основных подхода документирования требований:

        1. Монолитно

        • Все требования описываются вместе в виде структурированного повествовательного текста.
        • Возможны ссылки на элементы требований (цели, метрики, предположения, риски и т. п.).

        2. Дробно

        • Каждое требование описывается отдельно.
        • Каждому требованию присваивается уникальный идентификатор.
        • Возможна трассировка к конкретному бизнес-требованию.

        Ниже будет приведен шаблон для каждого из этих видов документирования.

        Где документируются бизнес-требования?

        Стандартом ISO предполагается, что бизнес требования будут отражены монолитно в Спецификации требований стейкхолдеров (StRS). Для этого предусмотрен отдельный раздел Introduction, который включает в себя Business Purpose (цели), Business Scope (границы), Business Overview (обзор бизнеса).

        В ГОСТе 34.602−89 предполагается, что бизнес-требования будут описаны также, монолитом, в техническом задании на создание автоматизированной системы. в разделе Назначение и цели создания системы и Характеристика объектов автоматизации.

        Если говорить о дробном документировании, то чаще всего это подходы, подразумевающие использование Спецификации бизнес-требований (BRD).

        В Agile бизнес-требования могут быть отражены по-разному. Это не формализовано, нет стандарта документов и способов описания.

        Шаблон монолитного описания БТ

        Карл Вигерс в своей книге «Разработка требований к программному обеспечению. Руководство» предлагает хороший шаблон описания БТ монолитом в рамках документа Scope and Vision (рамки и видение). В этом документе выделяется раздел Бизнес-требования, который включает в себя:

        • Контекст.
        • Описание возможности.
        • Бизнес-цели.
        • Метрики успешности.
        • Образ результата (Vision).
        • Деловые риски.
        • Предположения и зависимости бизнеса.

        Советы Вигерса по описанию БТ

        • Сокращайте шаблон в соответствии с потребностями.
        • Заполняйте не сверху вниз, а по мере поступления информации.
        • Пустой раздел — признак его ненужности или необходимости дополнительного изучения.
        • Не повторяйте то, что уже описано в другом месте — сошлитесь на имеющееся описание.
        • Исходите из возможности повторного использования БТ в других проектах.
        • Выявляйте конфликты, противоречия и выносите на обсуждение.
        • Проводите повторное рассмотрение БТ при каждой смене лиц, принимающих решения, чтобы убедиться, что понимание БТ не изменилось

          Шаблон дробного описания БТ

          Ниже представлен авторский шаблон дробного описания бизнес-требований. Он состоит из нескольких ключевых элементов:
          1. Заголовок, который включает в себя:

          • Уникальный идентификатор.
          • Краткое описание.

          2. Определение, развернутое объяснение, что из себя представляет БТ.
          3. Источник, откуда это требование взялось.
          4. Зависимости, если они есть между другими требованиями.
          5. Обоснование, краткое пояснение мотивации.
          6. Комментарий, любые пояснения. В приведенном ниже примере представлено описание диаграммы состояний.

            Шаблон дробного описания БТ

            Как документировать —
            объединять или дробить?

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

            1. Нет нужды документировать, если:

            • Узко-технический проект небольшого объема.
            • Всем все понятно и вряд ли кому-то когда-то что-то будет непонятно.

            2. Объединяем, если:

            • Компактный проект с узкими целями.
            • Узкая предметная область.
            • Бизнес-требования умещаются на паре страниц.

            3. Дробим, если:

            • Много бизнес-требований.
            • Сложные бизнес-требования.
            • Могут реализовываться по отдельности.
            • Высокая степень неопределенности.

            Что делать с отсутствующими или плохими БТ?

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

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

            Полученную информацию необходимо задокументировать одним из нескольких способов:
            1. Создать отдельный документ. Например, «Каталог целей» с дробным документированием бизнес-требований, на которые будем ссылаться.

            2. Добавить комментарии к уже существующим требованиям, поясняя откуда оно взялось.

            3. Собрать все непонятные требования в один документ и в начале этого документа вставить раздел Мотивация. В этом разделе необходимо указать, для чего нужно все то, что мы выяснили.

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

            Программа переподготовки

            «Business Analyst Bootcamp»

            Курс для тех, кто хочет сменить профессию и начать работать в ИТ с хорошими перспективами, занимаясь исследованием задач и проблем бизнеса и постановкой задач на автоматизацию

            • Что делать, если, помимо ТЗ, есть еще и пользовательские требования?

              Зачастую пользовательские требования объединяются с бизнес-требованиями, т.к. объем БТ не очень большой, если они правильно определены, а значит делить эти требования на 2 отдельных документа нецелесообразно.
              Во избежание возможного недопонимания, в названии документа можно явно указать «Требования бизнеса и пользователей».

            • Вопрос:

              Имеет ли смысл создание промежуточных документов таких как VSD (Vsion & ScopeDocument) и BRD (Business Requirement Document)?

              С точки зрения Agile практик, бизнес-требования — это епархия Product Owner. Следовательно, работать нужно так, как удобно, и не создавать лишних документов для соблюдения формального протокола. Чем документов меньше, чем они компактнее и проще, тем эффективнее.

            • Должны ли в описание БТ быть включены требования к описанию «хотелок» в части User Interface?

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

            • Обязательно ли современному аналитику владеть навыками программирования?

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

            • Должен ли аналитик просматривать баги проекта и принимать решения о их важности?

              Иногда аналитик должен просматривать баги, а иногда — нет. Зависит от договоренностей в рамках проекта и распределения ролей в команде.

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

            • Должен ли аналитик проводить тестирование и валидацию продукта?

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

            • Что является объектом требований вида «Должна собираться информация о недоступности банкомата» — к чему это бизнес требование? К организации? Подразделению? К бизнес-процессу?

              Это требование бизнеса, объектом является банкомат, которым мы должны управлять. Управление состоит в том, что мы умеем различать его состояния, умеем отслеживать то, что с ним происходит, умеем реагировать на эти события и изменять состояния объекта управления, т. е. банкомата. Получается, это бизнес-требование, связанное с необходимостью и способностью организации управлять определенными типами объектов (например, банкоматами).

            • Что делать с функциями, если они не мапятся на конкретное БТ или мапятся сразу на два (при этом функция должна быть в скоупе)?

              Важно понимать, для чего мы делаем трассировку. В данном случае мы делаем трассировку, чтобы понять — БТ выполняется или нет?
              Нам не важно замапить все на все. Если мы делаем трассировку к модулям, это не значит, что нам надо оттрасировать каждую функцию и каждое требование. Достаточно понимать, данное требование — оно выполнено или нет? Если понимания достигнуто, то дальше можно не трассировать. Если мы пытаемся оттрасировать в другую сторону и видим какую-то висячую функцию, то это не значит, что у нас не должно быть никаких висячих функций, которые мы не можем замапить на какую-то функцию.
              Стоит помнить, что трассировка — это инструмент, а не цель.

            Георгий Савельев

            Эксперт по бизнес-анализу, член Международного института бизнес-анализа (IIBA), первый CBAP в России. Соавтор BABOK v.3. Вице-президент IIBA Russian Chapter.

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

            Участвовал в реализации более 50 проектов по разработке, внедрению и совершенствованию программного обеспечения.

            С 1990 года занимается проведением тренингов и деловых игр для руководителей и специалистов. Автор статей по бизнес-анализу.

            Создатель авторских аналитических методик и моделей оперативного планирования. Участвовал более чем в 20 консалтинговых проектах по увеличению прибыльности и совершенствованию операционной эффективности компаний.

            Участник профессиональных ассоциаций IASA, ABPMP Russian Chapter.

            Подписаться на новые статьи

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

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

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

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

            Само слово «функционал» подводит к тому, что мы задаем вопрос: как работает этот сайт, какие у него будут функции. Сюда относится все, что касается логики работы.

            Если заказчик хочет интернет-магазин, то сразу возникает куча вопросов: есть ли в магазине личный кабинет, есть ли в корзине возможность оплаты через эквайринг, существует ли какая-то система лояльности и еще множество нюансов.

            Пример ФТТ для сайта

            Пример того, как выглядят функциональные требования в техзадании

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

            Нефункциональных требований очень много. Вот основные:

            • Производительность. Например, скорость загрузки страницы или время реакции на определенные действия.
            • Удобство для пользователя. Насколько интуитивное меню, сколько времени уходит у пользователя на поиск нужной информации.
            • Безопасность. Персональные данные должны быть защищены от взломов, хакерских атак, вирусов.
            • Совместимость. Как сайт смотрится на различных браузерах и устройствах. Возможно, с экрана телефона часть картинки не видно.
            • Локализация. Если компания сотрудничает с иностранными клиентами, нужно адаптировать сайт под их запросы. Например, перевести контент на английский язык, добавить другую валюту или часовые пояса.

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

            Чтобы объяснить отличие функциональных требований от нефункциональных, приведу такое сравнение. Функциональные требования – это авто или телега, у которых есть 4 колеса, место, где сидеть, и тягловая сила (двигатель или лошадь). А нефункциональные – это кузов мерседеса, с красивыми лампочками и шильдиками. Большинство людей покупают этот значок мерседеса на капоте, но это не отменяет и того, что под капотом все должно хорошо работать.

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

            Продвинем ваш бизнес

            В Google и «Яндексе», соцсетях, рассылках, на видеоплатформах, у блогеров

            Подробнее

            Продвинем ваш бизнес

            Что такое бизнес-требования

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

            Бизнес-требования включают:

            • Информацию о компании: название, год основания, сфера деятельности, товарный знак, список клиентов, преимущества перед конкурентами.
            • Данные о целевой аудитории. Нужно примерно представлять, кто будет посетителем сайта: его пол, возраст, регион проживания, привычки и увлечения. Еще нужно понимать, зачем людям вообще приходить к вам на сайт. Например, купить товары, узнать стоимость дизайн-проекта или почитать новости.
            • Цель создания сайта: что вы хотите получить в итоге. Например, увеличить количество продаж или повысить узнаваемость бренда.

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

            Пример того, что нужно сделать до ТЗ

            Бизнес-требования от заказчика сайта

            Зачем нужны функциональные и бизнес-требования

            Функциональные и бизнес-требования решают такие задачи:

            1. Упрощают взаимодействие между заказчиком и разработчиком. Они помогают избежать недопонимания, определяют общие термины и роли.
            2. Сокращают срок реализации проекта. Благодаря четким требованиям разработка сайта займет меньше времени.
            3. Экономят бюджет. Когда заказчик понимает что ему нужно, он может более точно спланировать бюджет. Размытые требования приводят к неопределенной стоимости разработки, которая впоследствии может вырасти.
            4. Выявляют возможные ошибки. Выявление ошибок на начальном этапе поможет сократить время и деньги на их исправление.
            5. Помогают предвидеть итоговый результат. С помощью требований разработчик понимает, что двигается в правильном направлении. Они не дают увлечься и отойти от первоначальной идеи, выступая некими границами проекта.

            Выполнение функциональных и бизнес-требований – готовые критерии, по которым заказчик принимает и оценивает работу команды разработчика.

            Техзадание на разработку сайта: запрещенные слова и выражения

            Техзадание на разработку сайта: запрещенные слова и выражения

            Кто занимается сбором требований

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

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

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

            Заказчик может собирать требования в паре с маркетологом. Иногда подключается специалист от разработчика. Но все равно, продумывание логики работы сайта висит на заказчике. Это не тот вопрос, где можно откупиться деньгами.

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

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

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

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

            Спасибо!

            Ваша заявка принята.
            Мы свяжемся с вами в ближайшее время.

            Как проходит сбор требований

            Методы сбора функциональных и бизнес-требований:

            • бриф на разработку сайта;
            • личное интервью;
            • изучение документации компании (например, регламентов, спецификаций продукта, инструкций);
            • участие представителя от компании-заказчика;
            • мозговой штурм;
            • общее совещание.

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

            Для удобства документ обычно разбит на несколько разделов:

            • Бизнес-требования. Это самые приоритетные требования, которые определяют цель создания сайта и задачи.
            • Дизайнерские требования. Здесь описаны цвета, шрифты, стилистика будущего сайта. Они должны совпадать с идеей или фирменным стилем заказчика.
            • Требования пользователей сайта. В данном блоке прописано, какую информацию может просматривать/добавлять/редактировать пользователи сайта. Например, менеджеру по продажам в интернет-магазине нужен только доступ к заказам, а бухгалтеру – к счетам и отчетам.
            • Требования посетителей сайта. Здесь описан путь посетителя на сайте. Если проект очень крупный, составляется полноценная концепция поведения аудитории – Customer Journey Map.

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

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

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

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

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

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

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

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

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

            Пример того, что нужно сделать до ТЗ

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

            Ошибки при сборе функциональных и бизнес-требований

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

            Не подойдет

            Подойдет

            Форма регистрации должна быть удобной и простой.

            Форма регистрации должна содержать три поля: имя и электронную почту. Кроме это, пользователь может зарегистрироваться через соцсети.

            Страница должна быстро загружаться.

            Время загрузки сайта – 3 секунды. Сохранение работоспособности при посещаемости 100 тысяч человек в сутки.

            Сайт не должен содержать уязвимостей. Копии ПО хранятся на внешнем носителе.

            Обеспечение защиты от межсайтового скриптинга (XSS), SQL-инъекций, CSRF-уязвимостей. Хранение копии ПО и файла базы данных на внешнем носителе.

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

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

            Какие ошибки чаще всего допускают при сборе ФТ и БТ?

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

            Бывает такое, что в процессе обсуждения не учли какую-нибудь роль пользователя, который будет взаимодействовать с сайтом.

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

            Бизнес-требования от заказчика сайта

            Макет будущего сайта на основе функциональных и бизнес-требований заказчика

            Выводы

            • Собрать функциональные и бизнес-требования нужно перед постановкой техзадания на разработку сайта. Это сэкономит бюджет заказчика, сократит время создания и исключит недопонимание сторон.
            • Чем конкретнее поставлены требования в ТЗ, тем больше вероятность создания сайта, который будет решать все поставленные задачи.
            • Принимать участие в сборе требований должен непосредственно заказчик, так как именно он понимает всю специфику бизнеса. Но если компания небольшая, стоит привлечь к проекту специалистов на аутсорсе или доверить сбор требований команде разработчика.

            Мы в TexTerra тоже начинаем разработку сайта со сбора функциональных и бизнес-требований. Это помогает нам выполнить работу в точности так, как это необходимо клиенту. При этом заказчик во время проработки требований сам лучше понимает, что получит на выходе. Если вашему бизнесу нужен сайт – обращайтесь за разработкой в TexTerra.

            Шаблон или уникальный дизайн: что выбрать для сайта

            Шаблон или уникальный дизайн: что выбрать для сайта

            Недавно мой друг, программист, рассказал, что он не читает требования, а вместо этого приглашает аналитика на чашку чая, они вместе садятся, и аналитик рассказывает, что должно быть реализовано. Мой друг — умный человек и хороший программист, и причина, почему он получает знания о требованиях именно так, не в том, что ему лень читать документацию, а в том, что, даже прочитав ее, он до конца не разберется, что же надо сделать. В данной статье я хочу рассказать, как можно написать требования к программному продукту так, что программисты не просто используют требования, но и участвуют в их написании; на основе собственно опыта я хочу показать, каким образом можно описать требования, чтобы эти описания были достаточными для реализации системы.

            Целью нашей разработки было создание с нуля учетной системы для одной из крупных российских компаний. Система была призвана заменить текущую, написанную в конце 90-х. В результате были реализованы платформа и один из бизнес-модулей. В реализованной части было порядка 120 объектов, 180 таблиц, около 30 печатных форм.

            Хочу оговориться, что подход, описанный ниже, не универсален для написания любого ПО. Он подходит для систем уровня предприятия, которые строятся на основе объектно-ориентированного подхода: учетных, CRM-, ERP-систем, систем документооборота и т.п.

            Вся документация на наш программный продукт состояла из следующих разделов:

            • Общая часть
              • Список терминов и определений
              • Описание бизнес-ролей
            • Требования
              • Бизнес-требования

              • Общие сценарии
              • Сценарии использования
              • Алгоритмы и проверки

              • Системные требования
              • Нефункциональные требования
              • Требования к интеграции
              • Требования к пользовательскому интерфейсу

            • Реализация
            • Тестирование
            • Руководства
            • Управление

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

            Бизнес-требования описывали то, что необходимо бизнес-пользователям. Например, им вовсе не нужен объект системы Пользователь, но зато им нужно иметь возможность поменять стоимость товара в счете и распечатать его. Бизнес-требования состояли из общих сценариев, сценариев использования (use cases) и описания алгоритмов обработки данных. Подробно о разработке подобного рода требований можно узнать из книги Карла И. Вигерса и Джоя Битти Разработка требований к программному обеспечению.

            Системные требования описывали свойства и методы всех объектов системы.

            Нефункциональных требований в данной статье мы касаться не будем. Могу лишь отослать вас к отличной книге Architecting Enterprise Solutions авторов Paul Dyson, Andrew Longshaw.

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

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

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

            Давайте рассмотрим подробнее, что такое список терминов и зачем он нужен.

            Список терминов и определений

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

            Поясню это на примере термина Пользователь. Википедия дает такое определение:

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

            Но нас оно не устраивало по нескольким причинам. Во-первых, в систему может зайти только человек, но не организация. Во-вторых, для нашей системы некорректно настоящее время глагола «использует» — система хранит данные о неактивных или удаленных пользователях, т.е. о тех, которые использовали систему ранее, но не могут в настоящее время. И наконец, у нас есть данные о потенциальных пользователях. Например, мы регистрируем сотрудника компании-клиента, который в дальнейшем может получить (а может и не получить) доступ в систему. Наше определение:

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

            Термины связаны друг с другом. В термине Пользователь используется «операция», поэтому приведу и ее определение:

            Операция — совокупность действий, составляющих содержание одного акта бизнес-деятельности. Операция должна соответствовать требованиям ACID (Atomicity, Consistency, Isolation, Durability). Совокупность операций одного модуля представляет интерфейс взаимодействия клиент-сервер этого модуля.

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

            Работа над списком терминов происходила постоянно. Мы поддерживали его полноту, т.е. старались, чтобы в документации не было термина, который бы не был определен в этом списке. Кроме того, были случаи, когда мы меняли термины. Например, по прошествии нескольких месяцев с начала написания требований мы решили заменить Контрагент на Компания. Причина была проста: оказалось, что никто не в состоянии в речи, при разговоре, использовать слово «контрагент». А если так, то он должен был быть заменен на что-то более благозвучное.

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

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

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

            Описание бизнес-ролей

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

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

            Пара примеров:

            Уровни требований

            Одной из важных концепций, которую мы применяли при разработке требований, было разделение их на уровни. Алистер Коберн в книге Современные методы описания функциональных требований к системам выделяет 5 уровней. Мы использовали 4 – три уровня бизнес-требований плюс системные требования:

            Бизнес-требования

            1. Общие сценарии (соответствует уровню очень белого у Коберна)
            2. Сценарии использования (соответствует голубому)
            3. Алгоритмы и проверки (скорее черный)

            4. Системные требования (нет прямого аналога, скорее черный)

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

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

            На картинке ниже представлена часть нашей иерархии (о содержании речь пойдет дальше).

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

            Интересен вопрос, кому в проектной команде какой из уровней нужен. Будущие пользователи могут читать общие сценарии. Но уже сценарии использования для них сложны, поэтому аналитик обычно обсуждает сценарии с пользователями, но не отдает их им для самостоятельного изучения. Программистам обычно нужны алгоритмы, проверки и системные требования. Вы однозначно можете уважать программиста, который читает сценарии использования. Тестировщикам (как и аналитикам) нужны все уровни требований, поскольку им приходится проверять систему на всех уровнях.

            Использование wiki позволяло работать над требованиями параллельно всем членам проектной команды. Замечу, что в один и тот же момент разные части требований находились в разных состояниях: от находящихся в работе до уже реализованных.

            Бизнес-требования

            Общие сценарии

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

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

            Некоторые другие цели общих сценариев:

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

            Вот пример одного из общих сценариев:

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

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

            Наши сценарии использования имели следующий формат:

            • Заголовок со следующими полями:
              • статус (В работе | Готов к рецензированию | Согласован)
              • пользователи (по описанию бизнес-ролей)
              • цель
              • предусловия
              • гарантированный исход
              • успешный исход
              • ссылка на описание пользовательского интерфейса (разработанного проектировщиком интерфейсов)
              • ссылка на сценарий тестирования (заполнялось тестировщиками)
            • Основной сценарий
            • Расширения сценария

            Сценарии использования

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

            Приведу сценарий использования, на который ссылается общий сценарий выше.

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

            Алгоритмы и проверки

            Интересная проблема возникла при написании алгоритмов. Аналитик пытался их описать как можно более полно, т.е. включать все возможные проверки и ответвления. Однако получившиеся тексты оказывались плохо читабельны, и, как правило, все равно какие-то детали упускались (вероятно, сказывалось отсутствие компилятора -). Поэтому аналитику стоит описывать алгоритм настолько полно, насколько это важно в плане бизнес-логики, второстепенные проверки программист сам обязан предусмотреть в коде.

            Например, рассмотрим простой алгоритм ниже.

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

            Системные требования

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

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

            Описание каждого объекта располагалось на одной wiki-странице и состояло из следующих частей:

            • Определение объекта (копия из списка терминов)
            • Описание свойств объекта
            • Описание операций и прав
            • Данные
            • Дополнительная информация

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

            Первая таблица каждого объекта описывала признаки его свойств, необходимые для того, чтобы программист смог создать структуры данных в БД и реализовать объект на сервере приложения:

            Название
            Названием свойства оперирует как пользователь (например, «я изменил номер счета», Номер – свойство объекта Счет), так и проектная команда. Повсеместно в документации использовались ссылки на свойства в виде простой нотации Объект.Свойство, очевидной для любого участника проекта.

            Тип
            Мы использовали Datetime, Date, Time, GUID, String, Enum, Int, Money, BLOB, Array(), Float, Timezone, TimeSpan. Тип имел отражение на всех уровнях приложения: на уровне БД, сервера приложения, в пользовательском интерфейсе в виде кода и графического представления. Каждому типу было дано определение, чтобы их реализация не вызывала вопросов у программистов. Например, было дано такое определение типу Money: содержит вещественное число с точностью до 4-го знака после запятой, число может быть отрицательным и положительным; одновременно со значением система хранит валюту; валюта по умолчанию — российский рубль.

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

            Признак наличия нуля
            Да или Нет в зависимости от того, может ли поле не содержать значения. Например, поле типа Bool должно содержать одно из возможных значений, а поле типа String обычно может быть пустым (NULL). Это ограничение реализовывалось на уровне БД и на сервере приложения.

            Признак уникальности
            Да или Нет в зависимости от того, является ли это поле уникальным. Часто уникальность определяется на группе полей, в этом случае у всех полей в группе стояло Да+. Это ограничение реализовывалось на уровне БД (индекс) и на сервере приложения.

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

            Кроме этих было еще две колонки, которые заполнялись программистами серверной части при реализации объекта:

            • Название свойства объекта в программном интерфейсе.
            • Название поля в БД.

            Оба этих поля не обязательные, поскольку, например, свойство объекта может не храниться в БД, а быть вычисляемым, как сумма счета.

            Хочу еще раз обратить внимание, что в написании требований принимали участие программисты. Это важно по многим причинам. Во-первых, таким образом программисты лучше осознавали требования, более того, требования становились «ближе к телу», а не просто неким куском бумаги, написанным каким-то аналитиком. Во-вторых, автоматически формировалась документация для API. В-третьих, поддерживалась трассируемость (traceability) требований, т.е. всегда было понятно, реализовано ли то или иное свойство, что особенно становилось важным при модификации требований. Безусловно, такая методология требовала большей дисциплины от программистов, что на самом деле являлось положительным фактором.

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

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

            Вот типичное описание свойств нашего объекта.

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

            Колонка Название в коде опять заполнялась программистом что, как и при описании объекта, было нужно для документирования API, повышения вовлеченности программистов в написание требований и трассируемости. Ниже – пример описания операций объекта:

            В этом разделе были также таблицы, описывающие переход по статусам.

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

            После инсталляции системы в ней должны присутствовать определенные данные. Например, пользователь с администраторскими правами или список стран согласно общероссийскому классификатору стран мира. Эти данные описывались в разделе Данные.

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

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

            Многие скажут, что такая детализация требований отнимает много времени и не нужна. На что я возражу – а как программист догадается, что конкретно необходимо реализовать? Разве фразы «Необходимо реализовать объект Пользователь» достаточно, чтобы через некоторое время получить работающий код? Сколько надо выпить чая с аналитиком, чтобы вытащить из него данные по 40 (столько было у нас) свойствам пользователя? Кто, как не аналитик или проектировщик, должен приложить усилия и описать все объекты?

            Постановка задач программистам

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

            Типовая задача 1
            Заголовок: Реализовать такой-то объект.
            Текст задачи — ссылка на страницу с системными требованиями к объекту.
            В такой задаче программисту необходимо:

            • создать структуры в БД (таблица, ключи, индексы, триггеры и т.д.);
            • реализовать доменный объект;
            • реализовать создание начальных данных.

            Все это возможно сделать на основе описания объекта в системной части требований. Программист также должен дополнить таблицу с описанием свойств названиями полей таблицы БД и объекта API.

            Типовая задача 2
            Заголовок: Реализовать такую-то операцию такого-то объекта и права на нее
            Текст задачи — ссылка на страницу с системными требованиями к объекту.
            Программист находит на странице название операции и права, а по ссылке в колонке Комментарий – алгоритмы, проверки, сценарий использования.

            Типовая задача 3
            Заголовок: Скорректировать объект и/или операцию.
            Данная задача необходима в случае изменений требований. Текст задачи содержит описание изменений или ссылку на страницу сравнения версий требований.

            Инструмент для написания и управления требованиями

            Как, возможно, многие догадались, для работы с требованиями мы использовали Atlassian Confluence. Хочу кратко перечислить достоинства этого продукта.

            • Удаленная работа. Собственно, как и у любой wiki.
            • Ссылки. Как вы видели выше, ссылки для нас – один из основных инструментов для связывания отдельных частей требований.
            • Возможность дробить требования на части (каждая часть – на своей странице).
            • Оповещения при изменении. Это одно из важнейших средств совместной работы. Например, получив такое оповещение по одному из сценариев, руководитель разработки может ставить задачи разработчикам, а тестировщики знает, что надо скорректировать сценарии тестирования.
            • Комментарии. Многие страницы требований у нас обрастали развесистыми иерархиями комментариев. В Confluence работать с ними достаточно удобно, поскольку иерархия не плоская, а в виде дерева. Кроме того есть возможность использовать полноценный редактор, а не просто текст.
            • Наличие мощного текстового редактора. Не буду здесь подробно останавливаться, отмечу лишь, что на всем протяжении нашей работы Atlassian совершенствовал редактор, и если вначале было достаточно много глюков, то затем подавляющее большинство из них было исправлено.
            • Хранение истории, сравнение разных версий страниц, возможность отката на старую версию.
            • Просмотр иерархии страниц в виде дерева.

            Однако было и несколько проблем:

            • Поскольку все требования используют одни и те же названия объектов и их свойств, то было бы очень удобно иметь инструмент, который при изменении названия менял его во всей документации. А при удалении – находил все, уже недействительные, ссылки на него.
            • Не было возможности сбора статистики. Например, каждое требование имело статус, но мы не могли автоматически собирать статусы всех требований и иметь динамическую картину процесса разработки требований. Но, кажется, на данный момент что-то подобное в Confluence уже появилось.
            • Диаграммы приходилось рисовать в другой системе, сохранять в PNG и уже картинку помещать на страницу Confluence. При этом еще надо было приложить исходник, чтобы через пару месяцев его можно было найти и поправить.
            • Я не нашел способа экспортировать иерархию страниц в MS Word. Экспорт в XML и PDF очень часто глючил (возможно, дело в размере иерархии).

            В конце хочу выразить благодарность Вадиму Лободе и Артему Каратееву за ценные советы и тщательное рецензирование данной статьи.

            Антон Стасевич

            Наименование департамента

            [НАИМЕНОВАНИЕ ПРИЛОЖЕНИЯ ИЛИ СИСТЕМЫ]

            Документ с бизнес-требованиями

            Документ с бизнес-требованиями

            Руководство по использованию шаблона требований

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

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

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

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

            Определение бизнес-требований является обязательным этапом во всех проектах.

            Template Completion

            Note:  Text within <  > brackets need to be replaced with project-specific information.

            Сбор требований непростой процесс, как это может показаться изначально. Это достаточно сложная задача, поскольку требования:

            ·   не всегда очевидны;

            ·   могут поступать из многочисленных и разнообразных источников;

            ·   нуждаются в управлении кросс-функциональными группами людей;

            ·   могут вызывать сложности при формулировании в ходе написании документации;

            ·   могут формулироваться на разных уровнях детализации.

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

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

            2.     Заполните документ, используя вспомогательную информацию в <скобках>.

            3.     Для небольших проектов можно объединить все разделы требований в одну таблицу, добавив столбец «Тип требования».

            4.     Если некоторые требования не применяются в вашем проекте, то не удаляйте его, а пометьте его как «Не применяется» и укажите краткое пояснение, почему в текущем проекте данное требование не актуально.

            5.     Если на проекте имеются дополнительные требования, то ими нужно дополнить раздел 5. Можно создать отдельную таблицу для помощи в выявлении, определении и отслеживании требований. Обратите внимание, что если новое требование идентифицируется после того, как утвержден документ с бизнес-требованиями, то новое требование необходимо внести в раздел 10.1 Дополнения (новые требования).

            6.     После того, как были внесены изменения в документ, и вы готовы его завершить, убедитесь, что Вы обновили оглавление документа.

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

            8.     Из-за того, что документ с бизнес-требованиями является динамичным, после того, как менеджер проекта получает согласованный документ, все дополнительные, измененные или отмененные требования вносятся в 10 раздел.

            9.     Если вносятся изменения в документ, то необходимо обновить раздел с историей обновлений документа.

            10.  Документ с описанием бизнес-требований будет храниться вместе с другими документами проекта и поддерживаться в соответствии с политикой хранения документов.

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

            Информация по документу и согласование документа

            История версий  
            № версии Дата создания Кем пересмотрена версия Причина для изменений
            1.0 9/17/09 Иванов Петр Рассмотрение проектным офисом
                   
                   
                   
                     

            Этот документ был утвержден в качестве официального документа с бизнес-требованиями для проекта «<имя проекта>», и точно отражает текущее понимание бизнес-требований. После утверждения этого документа, изменения требований будет регулироваться через процесс управления изменениями, включая анализ последствий (impact analysis), проходя стадии рассмотрения и согласования.

            Согласование документа  
            Имя утверждающего Проектная роль Подпись/Электронная подпись Дата
                   
                   
                   
                   
                     

            Оглавление документа

            1. Назначение документа. 1
            2. Ресурсы для создания документа. 1
            3. Словарь терминов.. 1
            4. Обзор проекта. 1

            4.1 Обзор проекта и предпосылки. 1

            4.2 Зависимости проекта. 1

            4.3 Заинтересованные стороны.. 1

            1. Основные допущения и ограничения. 2

            5.1 Основные допущения и ограничения. 2

            1. Сценарии использования/Варианты использования (Use Cases) 2

            6.1 Диаграмма вариантов использования. 2

            6.2 Изложение фактов по варианту использования. 3

            1. Бизнес-требования. 5
            2. Приложения. 7

            8.1 Приложение A – Потоки бизнес-процессов. 7

            8.1.1 Диаграммы «Как Есть» (As Is) 8

            8.2 Приложение B – Каталог бизнес-правил. 10

            8.3 Приложение C- Модели. 10

            8.4 Матрица трассировки/отслеживания требований (Traceability Matrix) 10

            8.5 Инструкция описания вариантов использования. 10

            1. Назначение документа

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

            • Создание дизайнов Решения;
            • Разработка плана тестирования, скриптов тестирования и сценариев тестирования;
            • Определение критериев завершенности проекта;
            • Оценка успешности проекта.
            1. Ресурсы для создания документа
            Имя Бизнес-подразделение Роль
            <Идентифицируйте все заинтересованные стороны и ресурсы, которые будут вовлечены в процесс сбора требований>    
                 
                 
                 
                 
            1. Словарь терминов
            Термин / Сокращение Определение
            <Определите термины и сокращения, которые используются в данном документе >  
               
               
               
               
            1. Обзор проекта

            Contents

            • 1 4.1 Обзор проекта и предпосылки
            • 2 4.2 Зависимости проекта
            • 3 4.3 Заинтересованные стороны
            • 4 5.1 Основные допущения (предположения) и ограничения
            • 5 6.1 Диаграмма вариантов использования
            • 6 6.2 Изложение фактов по варианту использования
            • 7 8.1 Приложение A – Потоки бизнес-процессов
              • 7.1 8.1.1 Диаграммы «Как Есть» (As Is)
            • 8 8.2 Приложение B – Каталог бизнес-правил
            • 9  
            • 10 8.3 Приложение C- Модели
            • 11 8.4 Матрица трассировки/отслеживания требований (Traceability Matrix)
            • 12 8.5 Инструкция описания вариантов использования

            4.1 Обзор проекта и предпосылки

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

            4.2 Зависимости проекта

            <Перечислите любые связанные проекты, которые затрагивают целиком или частично Ваш проект, или которые имеют зависимости от этого проекта.>

            4.3 Заинтересованные стороны

            Ниже перечислены внутренние и внешние заинтересованные стороны, чьи требования представлены в этом документе:

              Заинтересованные стороны
            1.  
            2.  
            3.  
            1. Основные допущения и ограничения

            5.1 Основные допущения (предположения) и ограничения

            # Допущения (предположения)
              Перечислите любые допущения, на которых основаны требования
               
               
               
               
               
            # Ограничения
              Перечислите любые ограничения, на которых основаны требования
               
               
               
               
               
            1. Сценарии использования/Варианты использования (Use Cases)

            <Основная цель сценариев использования (вариантов использования) заключается в том, чтобы зафиксировать требуемое поведение системы с точки зрения конечного пользователя для достижения одной или нескольких желаемых целей. Вариант использования содержит описание потока событий, который описывает взаимодействие между акторами и системой. Вариант использования также может быть представлен визуально в UML для того, чтобы показать взаимосвязи с другими вариантами использования и акторами>.

            6.1 Диаграмма вариантов использования

            6.2 Изложение фактов по варианту использования

            <Каждый вариант использования должен быть задокументирован с помощью этого шаблона. Смотрите инструкцию для описания вариантов использования>

            ID Варианта использования:  
            НаименованиеВарианта использования:  
            Кем создан:   Кем в последний раз изменен:  
            Дата создания:   Дата последнего изменения:  
            Акторы:  
            Описание:  
            Предварительные условия:  
            Постусловие:  
            Нормальный ход событий:  
            Альтернативный ход событий:  
            Исключения:  
            Содержит:  
            Приоритет:  
            Частота использования:  
            Бизнес-правила  
            Специальные требования:  
            Предпосылки (предположения):  
            Примечания и вопросы:  
            Графическое представление варианта использования

            Пример заполненного варианта использования:

            ID Варианта использования: 1
            НаименованиеВарианта использования: Просмотр интерактивной карты кампуса
            Кем создан: Иванов Петр Кем в последний раз изменен:  
            Дата создания: 19/04/2015 Дата последнего изменения:  
            Акторы: Пользователь
            Описание: Этот вариант использования описывает основной способ использования интерактивной карты кампуса. Пользователь через браузер получает доступ по соответствующему URL и взаимодействует с представленной функциональностью.
            Предварительные условия: Веб-браузер открыт и получен доступ к интерактивной карте кампуса через URL.
            Постусловие: Пользователь переходит с интерактивной карты кампуса на веб-сайт.
            Нормальный ход событий: 1.     Открывается браузер;

            2.     Переход по URL карты кампуса;

            3.     Взаимодействие с картой кампуса при помощи доступной функциональности.

            Альтернативный ход событий: Отсутствует
            Исключения: Отсутствуют
            Содержит:  
            Приоритет: Высший
            Частота использования: Одно использование на одно посещение.
            Бизнес-правила TBD
            Специальные требования: ·         Доступ 24/7

            · Время отклика сопоставимо с общими картографическими решениями (например, карты Google)

            Предпосылки (предположения):  
            Примечания и вопросы:  
            Графическое представление варианта использования  
            1. Бизнес-требования

            Следующие разделы документа представляют различные бизнес-требования данного проекта.

            Тип требования ID – Префикс  

            ID – Номер

            Функция Характеристика Требование

            Ссылка на вариант использования

            ?? ?? ?? ??

            Комментарии

              Требования бизнес-пользователей
              f 01-001              
              f 01-002              
              f 01-003              
              f 01-004              
              f 01-005              
              f 01-006              
              f 01-007              
              f 01-008              
              Требования к отчетности
              f 02-001              
              f 02-002              
              f 02-003              
              f 02-004              
              f 02-005              
              f 02-006              
              f 02-007              
              f 02-008              
              Требования к правам доступа пользователей и безопасности
              f 03-001              
              f 03-002              
              f 03-003              
              f 03-004              
              F 03-005              
              f 03-006              
              f 03-007              
              f 03-008              
              Требования к уровню сервиса и к производительности
              f 04-001              
              f 04-002              
              f 04-003              
              f 04-004              
              f 04-005              
              f 04-006              
              f 04-007              
              f 04-008              
              Требования к масштабируемости
              f 05-001              
              f 05-002              
              f 05-003              
              f 05-004              
              f 05-005              
              f 05-006              
              f 05-007              
              f 05-008              
              Требования к поддержке и техническому обслуживанию
              f 06-001              
              f 06-002              
              f 06-003              
              f 06-004              
              f 06-005              
              f 06-006              
              f 06-007              
              f 06-008              
            1. Приложения

            8.1 Приложение A – Потоки бизнес-процессов

            <Опишите текущий существующий процесс документооборота используя диаграмму потоков (Visio Flowcharts) и дайте подробное описание>

            8.1.1 Диаграммы «Как Есть» (As Is)

            <Вставьте сюда диаграмму «Как Есть» (если это применимо к проекту)>

            8.2.2 Диаграммы «Как Будет» (To Be)

            < Вставьте сюда диаграмму «Как Будет» (если это применимо к проекту)>

            8.2 Приложение B – Каталог бизнес-правил

            <Инструкции: используйте следующий шаблон для каждого бизнес-правила>

            Наименование бизнес-правила <Имя должно дать вам хорошее представление о теме бизнес-правила>
            Идентификатор <Определите уникальный идентификатор.> Например: BR1
            Описание <Опишите детали бизнес-правила.>

            Например: «Весь труд рабочих отслеживается, составляется отчет и выставляется счет в 30 минутных интервалах»

            Пример <(Необязательное поле) Пример использования бизнес-правила>
            Источник <Источник правила. Например, заинтересованная сторона>
            Связанные бизнес-правила <Список связанных правил, для обеспечения процесса трассировки>

             

            8.3 Приложение C- Модели

            <Вставьте сюда модели>

            8.4 Матрица трассировки/отслеживания требований (Traceability Matrix)

            <Вставьте сюда матрицу трассировки требований>

            8.5 Инструкция описания вариантов использования

            <Инструкции по заполнению описаний по сценариям использования содержатся в этом разделе. По завершению документа с бизнес-требованиями удалите эти инструкции>.

            Наименование поля Варианта использования Определение
            ID Варианта использования Присвойте каждому варианту использования уникальный числовой идентификатор в иерархическом формате: X.Y. Связанные варианты использования могут быть сгруппированы в иерархию. Функциональные требования могут отслеживаться по меченным Вариантам использования.
            Наименование Варианта использования Ориентированное на результат имя в краткой форме для Варианта использования. Оно должно отражать задачи, которые пользователь может выполнить, используя систему. Включите в наименование глагол и существительное. Вот некоторые примеры:

            · Просмотреть информацию по номеру заказа.

            · Вручную пометить гипертекст источника и установить ссылку на целевой контекст.

            · Заказать компакт-диск с обновленной версией ПО.

            Кем создан Содержит имя человека, который изначально задокументировал этот Вариант использования
            Дата создания Введите дату, когда был задокументирован изначально Вариант использования
            Дата последнего изменения Введите дату последнего обновления Варианта использования
            Кем в последний раз изменен Содержит имя человека, который внес последние изменения.
            Актор Введите лицо или другие субъекты, которые являются внешними по отношению к системе ПО, и которые взаимодействуют с системой в соответствии с вариантом использования в рамках выполнения задач. Различные акторы часто соответствуют различным классам пользователей или ролям, идентифицируя их с группой пользователей заказчика, которые будут использовать продукт. Имя акторов, которые будут выполнять этот Вариант использования.
            Описание Дайте краткое описание причины и результатов этого Варианта использования, или приведите высокоуровневое описание последовательности действий и результата выполнения Варианта использования.
            Предварительные условия Перечислите мероприятия, которые должны состояться, или любые условия, которые должны выполниться до того, как вариант использования будет запущен. Количество предварительных условий. Примеры:

            · Идентификатор пользователя должен пройти проверку подлинности.

            · Компьютер пользователя имеет достаточное количество свободной памяти для запуска задачи.

            Постусловие Опишите состояние системы по завершении исполнения варианта использования. Количество постусловий. Примеры:

            · Документ содержит только допустимые теги в SGML.

            · Цена товара в базе данных была обновлена с новым значением.

            Нормальный ход событий Предоставьте подробное описание действий пользователя и реакции системы, которые будут проходить во время выполнения варианта использования в нормальных, ожидаемых условиях. Это последовательность действий внутри диалогового окна, в ходе которой будет достигнута цель, которая указана в названии варианта использования и в его описании. Это описание может быть написано как ответ на гипотетический вопрос: «Как мне выполнить задачу, которая указана в имени Варианта использования?». Лучше всего это делать в виде нумерованного списка действий, которые выполняет актор, чередуя их с реакциями системы на производимые действия.
            Альтернативный ход событий Задокументируйте другие, разумные сценарии использования, которые могут иметь место в пределах данного варианта использования. Обозначьте альтернативный ход событий и опишите какие-либо различия в последовательности шагов, которые могут потребоваться. Укажите номер каждого альтернативного хода, используя ID варианта использования в качестве префикса, а затем добавьте к номеру префикс «AC», чтобы обозначить «альтернативный ход событий». Например: X.Y.AC.1
            Исключения Опишите любые предполагаемые условия возникновения ошибок, которые могут возникнуть во время выполнения варианта использования, а также определите, как система должна отреагировать на эти условия. Также опишите, каким образом система должна реагиовать, если вариант использования завершится по какой-то непредвиденной причине. Номер каждого исключения формируется при помощи ID Варианта использования и специального префикса «EX». Пример: X.Y.EX.1
            Содержит Перечислите любые другие варианты использования, которые вызываются этим вариантом использования. Общие функциональные возможности, которые появляются в нескольких отдельных вариантах использования могут быть включены в отдельный вариант использования.
            Приоритет Укажите относительный приоритет реализации функциональности, которая необходима для того, чтобы этот вариант использования был выполнен. Используемая схема приоритетов должна быть такой же как та, которая используется в спецификации требований к программному обеспечению.
            Частота использования Оцените частоту использования данного Use Case за единицу времени.
            Бизнес-правила Перечислите любые бизнес-правила, которые влияют на этот вариант использования.
            Специальные требования Идентифицируйте любые дополнительные требования, такие как нефункциональные требования, для варианта использования, которые необходимо будет рассмотреть в ходе проектирования и реализации решения. Они могут включать в себя требования к производительности или атрибуты качества.
            Предпосылки (предположения) Перечислите какие-либо допущения, которые были сделаны при анализе, что привело к принятию данного варианта использования в описании продукта и написанию подробной информации по варианту использования.
            Примечания и вопросы Перечислите любые дополнительные комментарии по данному варианту использования или любые нерешенные вопросы, или TBD лист (то, что будет определено позднее). Определите, кто будет заниматься каждым отдельным вопросом или проблемой и к какому сроку все пункты должны быть разрешены.

            4.7
            3
            Голоса

            Рейтинг статьи

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

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

            Здесь не будет базовой теории, что есть требование и что оно должно соответствовать SMART (надеюсь, вы это и так знаете). Скорее, я покажу некие best practice, как требования лучше оформлять в документации.

            Начнем с обсуждения:

            • Общих принципов написания «удобных» требований
            • Использования таблиц
            • Использования схем и диаграмм

            Если тема окажется интересной, то в следующей статье посмотрим на использование более продвинутых инструментов, таких как:

            • Подход Specification by Example
            • Варианты использования
            • Мокапы интерфейса

            1. Пишите просто

            Требования это не роман и удивлять слогом тут никого не нужно. Я еще не раз это повторю в статье, но тот кто читает ваши требования, должен напрягаться по минимуму.

            Здесь, как и в дизайне интерфейсов, отлично работает правило: «Не заставляйте меня думать», про которое писал Стив Круг в одноименной книге.

            Ниже я привел рекомендации, которые призваны упростить восприятие ваших требований:

            • Используйте простой слог и слова, избегайте общих формулировок.
            • Избегайте сложносочиненных предложений. В идеале, одно предложение = одна мысль.
            • Если вы встречаете союзы «но», «или», то скорее всего, здесь скрыты два отдельных требования.
            • Не используйте двойные отрицания.
            • Для требованиий со структурой «если <условие>, то <результат>» пишите сначала результат, а потом — условие. Пример: «Система должна запрещать сохранение заказа, если хотя бы одного товара нет в наличии».

            Пример — Упрощаем составное требование

            Исходное требование:

            «Должна быть возможность удалить конкретный товар или сразу все товары из корзины».

            По сути, данное требование содержит два отдельных требования:

            1. «Должна быть возможность удалить конкретный товар из корзины».
            2. «Должна быть возможность удалить сразу все товары из корзины».

            Такое разделение поможет не пропустить скрытое требование разработчику или QA и подскажет менеджеру, что здесь лучше завести две отдельные задачи.

            2. Используйте форматирование

            Сам текст должен быть хорошо отформатирован. Есть мнение, что разработчики «не читают» требования. Оно отчасти верно. Обычно это вызвано тем, что требования «неудобно» читать: плохая структура, сложный слог, слишком большие блоки текста — пока дочитываешь конец, забываешь началои т.д.

            Используйте средства, которые доступны вам в любом редакторе:

            • Списки
            • Абзацы
            • Полужирный шрифт

            Например, если вы используете союз «и» (или несколько таких союзов), то лучше каждое условие написать с новой строки.

            Пример — Применяем форматирование

            Исходное требование:

            «Необходимо перевести заказ в статус «Доставляется», если заказ оплачен и весь товар есть в наличии на складе.»

            Давайте упростим восприятие этого требования. Получим следующее:

            «Необходимо перевести заказ в статус «Доставляется», если:

            • Заказ оплачен
            • И весь товар есть в наличии на складе.

            Что мы сделали? Мы сняли часть когнитивной нагрузки с того, кто будет изучать данное требование. Уже из форматирования становится видно, что:

            • Речь идет о заказе в статусе «Доставляется».
            • Действие изменения статуса должно выполняться при соблюдении двух условий.

            На первый взгляд все это очевидно, но в процессе рабочей деятельности, я постоянно сталкиваюсь с подобными недочетами. Я намерено не пишу «ошибки», так как формально оба требования равнозначны, но на практике, второй вариант воспринимается гораздо проще.

            3. Упрощайте требования

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

            Пример — Оптимизируем длинное требование

            Исходное требование:

            «Заказ отображается в личном кабинете пользователя, если заказ находится в одном из статусов: «Новый», «Ожидает оплаты», «Оплачен», «Доставляется». Заказ в статусе «Доставлен» не должен отображаться в личном кабинете.»

            Как можно его упростить:

            «Заказ отображается в личном кабинете пользователя, если его статус не равен «Доставлен».

            Во-первых, мы сделали само требование короче, а значит вероятность, что его прочитают стала выше.

            Во-вторых, технические специалисты отлично считывают такие конструкции и вы, опять же, снимаете с них когнитивную нагрузку.

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

            4. Используйте таблицы

            Запомните, таблицы — ваш главный «бро» 🙂

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

            • Как я могу упростить эти требования?
            • Как эти требования можно оформить в табличном виде?

            Почему таблицы лучше работают:

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

            Рассмотрим пример части из ТЗ на большую государственную систему из открытых источников:

            «Успешно авторизованный пользователь, входящий в группу пользователей c ролью «Исполнитель», должен попадать на «UI-006 Главная страница личного кабинета», а пользователь, входящий в группу пользователей с ролью «Наблюдатель» – на «UI-092 Главная страница Мониторинга (дашборд)» подсистемы «Мониторинг». Если пользователь в личном кабинете настроил страницу по умолчанию, то открываемая страница должна определяться на основе выбранной настройки.»

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

            «После успешной авторизации в системе, пользователю должна открываться стартовая страница, согласно условиям ниже:»

            Используем таблицы для оформления требований Anton Lazovskiy

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

            Таблицы для описания интерфейсов

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

            Пример формы редактирования из того же ТЗ:

            Для описания требований к форме можно использовать таблицу ниже, в которой мы укажем для каждого поля:

            • Тип поля.
            • Значение поля при открытии формы.
            • Ограничения на выбираемые данные.
            • Можно ли редактировать поле и требования к валидации (если есть).
            Использование таблицы для описания интерфейса Anton Lazovskiy

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

            Когда использовать таблицы (спойлер — всегда!):

            • Вы описываете два и более объектов со одинаковыми свойствами (поля формы; разделы сайта; роли пользователей и т.д.).
            • Вы хотите описать реакцию системы при возникновении определенных событий.
            • Вы описываете миграцию данных или маппинг полей между системами.

            5. Используйте схемы

            Схемы и диаграммы — это еще один отличный способ улучшить качество передачи знаний в команде разработки.

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

            Далее я поделюсь схемами, которые использую чаще всего.

            Контекстная диаграмма

            Зачем нужна: Показывает как разрабатываемая система взаимодействует с внешними миром.

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

            Когда использовать: На этапе проектирования системы, чтобы:

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

            P.S. Еще эту диаграмму очень любят архитекторы.

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

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

            Пример контекстной диаграммы из книги «Разработка требований к программному обеспечению» (Джой Битти, Карл Вигерс):

            Пример контекстной диаграммы Джой Битти, Карл Вигерс

            Схема бизнес-процессов (BPMN-диаграмма)

            BPMN — это нотация описания бизнес-процессов в виде набора обозначений и ряда определенных правил.

            Зачем нужна: Позволяет зафиксировать описание бизнес-процессов на этапе их дизайна и использовать это «знание» на этапе разработки и внедрения решения.

            Когда использовать: Вообще, у BPMN довольно широкий спектр применения.

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

            При разработке BPMN-диаграмм (в контексте описания требований) главное — избавиться от перфекционизма.

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

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

            • Start/End Events — начальное и конечное события.
            • Activity — Действие, которое выполняет пользователь или система.
            • Gates — Шлюзы. Используются для принятия решений и запуска параллельных процессов.
            • Lanes — Дорожки, которые разграничивают разные типы пользователей и системы.

            Пример описания бизнес-процесса обработки инцидентов:

            BPMN-диаграмма Anton Lazovskiy

            Если вам интересна отдельная статья про примеры построения BPMN-диаграмм на реальных примерах, напишите об этом в комментариях.

            Диаграмма состояний

            Зачем нужна: показывает как объект переходит из одного состояния в другое.

            Когда использовать:

            • У объекта много состояний (2+), логика переходов зависит от определенных событий.
            • С объектом могут совершать действия сразу несколько пользователей (например, редактирование заказа). Это поможет выявить исключительные ситуации, которые можно заранее продумать, а не фиксить потом на production.

            Как и схемы в BPMN, диаграмма состояний отлично читается и техническими специалистами, и бизнес-пользователями, и экспертами.

            Пример диаграммы состояний для объекта «инцидент» из BPMN-диаграммы выше:

            Диаграмма состояний Anton Lazovskiy

            Заключение

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

            Шпаргалка бизнес-аналитика. Бизнес-требования

            Print Friendly, PDF & Email

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

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

            Источник материала: https://systems.education/biz-req и https://systems.education/biz-req-dev

            Роль Бизнес-требований (БТ)

            1. Бизнес-требования определяют смысл проекта и обосновывают его необходимость
            2. Бизнес-требования – это удобный инструмент договоренности: они объективны, компактны и понятны стейкхолдерам
            3. Из бизнес-требований вытекают критерии приемки проекта
            4. Бизнес-требования используются для определения рамок проекта
            5. Бизнес-требования помогают принимать решения о приоритетах
            6. В Scrum бизнес-требования являются (во всяком случае, так должно быть) основным инструментом владельца продукта для управления продуктовым бэклогом и для согласования его с другими стейкхолдерами

            Требования в бизнес-анализе

            Версия 3 BABOK Guide определяет требования таким образом:

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

            Для формулирования требования потребность нужно поместить в какой-то контекст. Например потребность «Люди испытывают ежедневную потребность в пище» слишком общая. Если ее поместить в контекст морского путешествия, то требование становится уже более осмысленным: «Продукты питания, используемые в рационе моряков, должны сохранять пригодность для употребления в пищу в течение, как минимум, 30 дней при температуре до +30оС и высокой влажности, поскольку моряки длительное время вынуждены обходиться без поставок продовольствия».

            Способы выполнения требования могут быть разными и они называются решениями.

            Потребности, требования, решения, контекст

            Потребности, требования, решения, контекст

            • Голубой блок обозначает контекст проекта и его элементы.
            • Красный блок в левой части — потребности бизнеса и стейкхолдеров.
            • Желтый блок в центре — бизнес-требования, требования стейкхолдеров и требования к решению.
            • Зеленый блок справа — решения, удовлетворяющие требования (бизнес-процессы и информационные системы).

            Потребности бизнеса, подлежащие удовлетворению в конкретном контексте, отражаются в бизнес-требованиях.

            Решением для бизнес-требования обычно является бизнес-процесс или организация, выполняющая множество бизнес-процессов.

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

            Полное решение состоит из бизнес-процессов и [информационных] систем, поддерживающих и обеспечивающих эти процессы. Системы реализуют требования к решению.

            Пример определения бизнес-требования на основе анализа потребности

            Потребность — «Торговой компании необходимо постоянно иметь в наличии или оперативно получать нужные товары в нужном количестве.»

            Если бизнес-модель компании предполагает поддержание товарных запасов на складе, то бизнес-требование можно сформулировать так:

            Для поддержания нужных товарных запасов на складах компании, их необходимо регулярно (BR-INV-01) пополнять через формирование заказов поставщикам.

            Размер поддерживаемого запаса каждого товара должен определяться, исходя из оптимизации затрат и минимизации рисков упущенной прибыли (BR-INV-02).»

            В тексте этого требования есть две ссылки: BR-INV-01 и BR-INV-02. Здесь BR означает «бизнес-правило» (Business Rule), а INV — Inventory (запас). Это ссылки на бизнес-правила, определяющие то, с какой именно регулярностью нужно пополнять запасы, и каков алгоритм расчета оптимального товарного запаса.

            Бизнес-правило — один из типичных артефактов, сопровождающих бизнес-требования.

            Артефакты бизнес-анализа, сопровождающие бизнес-требования

            По мере определения бизнес-требований появляются:

            1. Доменные модели — высокоуровневые информационные модели предметной области.
            2. Глоссарий предметной области.
            3. Модели состояния объектов управления: на этом этапе мы определяем, какими объектами мы хотим управлять, и какие состояния нас интересуют (или какие состояния мы хотим отслеживать).
            4. Метрики и показатели этой деятельности, которые говорят нам о том, что важно для бизнеса и как мы оцениваем то, насколько хорошо или плохо, лучше или хуже выполняется его деятельность.
            5. Бизнес-правила: описания применяемых в данной компании алгоритмов, нормативов, ограничений, проверок, и политик.

             Немного слов про бизнес-правила

            Как правильно описывать бизнес-правила?

            1. Бизнес-правило должно быть сформулировано на языке бизнеса. В описании бизнес-правил не должны использоваться технические термины. Язык написания бизнес-правил должен быть понятным представителю бизнеса, не являющимся IT-специалистом. После описания бизнес-правил, постарайтесь абстрагироваться от своих технических знаний, поставьте себя на место представителя бизнеса, руководителя компании, для который вы разрабатываете продукт. Понятен ли вам написанный документ? Не содержит ли документ технических терминов, указания систем и языков программирования?
            2. Бизнес-правило должно описывать правило бизнеса, а не работу системы. Описание бизнес-правил должно содержать те требования бизнеса, которые должна решить система, но без описания работы системы. Например, у бизнеса есть правило: «Отслеживать время прихода и ухода сотрудников на рабочее место». Бизнес-правило не должно содержать описания, как достичь соблюдения данного правила: будет ли сотрудник записываться в журнал прихода и ухода, или на входе будет стоять автоматическая пропускная система, которая будет фиксировать время.
            3. Бизнес-правило должно описывать ограничения: какие операции не могут быть выполнены. Ограничительные бизнес-правила могут определять ограничения пользователей. Например: “В полис ОСАГО страховщик может вписать не более 5-ти водителей”; «Оформить заказ-онлайн может только клиент компании».
            4. Бизнес-правило подчиняется бизнесу: принять, изменить, отменить. Представители бизнеса могут изменять бизнес-правила, вносить поправки или отменять.

            Рассмотрим несколько примеров бизнес-правил и требований к системе

            Бизнес-правило Требование к системе
            Постоянный посетитель библиотеки может отложить для себя до 10 книг. Посетитель, имеющий карточку в библиотеке; посещающий библиотеку не менее 1 раза в месяц является постоянным.

            Постоянный посетитель должен иметь возможность отложить для себя 10 книг.

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

            Пользователь, должен иметь возможность оформить заказ.

            Заказ может быть оформлен:

            с доставкой по указанному адресу;

            с оплатой наличными при получении;

            с оплатой банковской картой при получении.

            Требования стейкхолдеров

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

            Предположим, мы проектируем бизнес-процесс поддержания товарных запасов на складах компании. Одной из разновидностей стейкхолдеров будут закупщики — специалисты, которые формируют заказы поставщикам. Если мы придем к такому человеку и попросим рассказать, чем он занимается и в чем нуждается, мы услышим примерно следующее:

            Как специалисту, отвечающему за поддержание запасов, мне нужно иметь возможность:

            1. Автоматически рассчитывать заказ по каждому товару с использованием определенного алгоритма (здесь прозвучит то же самое бизнес-правило, которое упоминалось в бизнес-требовании). Почему автоматически? Потому что мне надо на 4 складах поддерживать 3000 товарных позиций, поступающих от 100 поставщиков — это невозможно или крайне сложно обрабатывать вручную.
            2. По любой позиции автоматически рассчитанного заказа видеть то, как именно была посчитано это значение и почему оно именно такое — алгоритм может не учитывает какие-то известные мне нюансы. Например, ожидаемое значительное повышение или снижение продаж.
            3. Менять количество в автоматически рассчитанном заказе — в конечном счете за заказ отвечаю я, а не система. Система не может учесть всё, и если я считаю нужным поменять заказанное количество, у меня должна быть возможность это сделать.
            4. Смотреть для проверки не на все 3000 позиций, а только на те, где расчеты системы могут быть вызвать сомнения. Например, недостаточная история продаж, высокая волатильность продаж или другие подобные факторы.

            Примерно так будет рассказывать нам живой человек. «Пользовательская история» (User Story) — естественная форма представления требований стейкхолдеров, имеющая формат <роль> <задача> <нужная возможность>.

            Например:

            Как специалисту, отвечающему за поддержание запасов, для формирования заказов поставщикам мне нужно:

            1. Автоматически рассчитывать заказ по каждому товару с использованием BR-INV-02;
            2. по любой позиции заказа иметь возможность посмотреть детали расчета и
            3. вручную изменить заказываемое количество,
            4. видеть отдельно те позиции заказа, по которым, возможно, требуется моя корректировка (BR-INV-03)

            Обычно требованиям стейкхолдеров сопутствуют дополнительные артефакты:

            • Карты стейкхолдеров (показывают, кто участвует в процессах)
            • Модели и другие описания процессов
            • Варианты использования (Use Cases)
            • Образцы данных, с которыми работают стейкхолдеры (помогают понять ситуацию и потребности стейкхолдеров)

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

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

            Из бизнес-требований, помимо функциональных (ФТ) и нефункциональных требований, напрямую могут вытекать ещё и требования причастных сторон. В свою очередь, из требований причастных сторон могут вытекать ФТ и НФТ.

            В наглядном виде модель выявления требований представлена на схеме:

            модель выявления требований

            Почему бизнес-требования так важны

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

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

            Из БТ вытекают критерии приемки и именно на их основе производится оценка результатов разработки ИТ-решения.

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

            Кроме того, бизнес-требования в Agile — это ключевой инструмент Product Owner для управления бэклогом продукта и ведения переговоров со стейкхолдерами.

            Какие бывают бизнес-требования?

            Согласно концепции Six Sigma, бизнес-требования — это критичные активности предприятия, подлежащие выполнению для достижения целей организации, вне зависимости от конкретного решения.

            Исходя из определения Six Sigma, классификация требований будет опираться на критичные активности, т. е. бизнес-требования могут быть связаны с:

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

            Ниже приведены примеры бизнес-требований по видам критичных активностей.

            Вид БТ: Значимые характеристики продуктов или услуг

            Примеры БТ:

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

            Вид БТ: Распознавание и обработка событий

            Примеры БТ:

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

            Вид БТ: Принятие решений

            Примеры БТ:

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

            Вид БТ: Сбор, обработка, хранение и предоставление информации

            Примеры БТ:

            • С момента обнаружения дефекта и до его полного устранения должна регистрироваться и храниться следующая информация.
            • Инвестиционный банк в конце каждого рабочего дня должен направлять Регулятору информацию о…
            • Для принятия решений об участии в тендере необходимы результаты предварительной оценки себестоимости проекта.

            Вид БТ: Обеспечение возможности выполнения действий

            Примеры БТ:

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

            Вид БТ: Предотвращение возможности выполнения действий

            Пример БТ:

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

             Проблемы в бизнес-требованиях

            Можно выделить несколько типичных признаков проблем с бизнес-требованиями.

            • Неконкретность (слишком абстрактная формулировка)
            • Невозможность проверки (нет понимания, что является индикатором выполнения требования)
            • «Магические» числа (приведены какие-то необоснованные данные: «время обработки заявки 14 минут»)
            • Непонятная польза (не написано, для чего делаем то, что делаем; действительно ли это необходимо)
            • Избыточная детализация (зачастую делает требование слишком жестким и нечитаемым)
            • Невыполнимость (например, требование «обеспечить 100%-ую достоверность данных». Для чего это требование? Почему возникают недостоверности? С этой проблемой можно как-то бороться или это просто факт?)
            • Несогласованность (противоречивость; с одной стороны Покупатель хочет найти продукт с наилучшими качествами по наименьшей цене, а с другой — Продавец хочет стимулировать покупку продуктов, приносящих наибольшую прибыль)
            • Нерелевантность (приведено требование, которое вообще не понятно, какое отношение имеет к данному проекту)
            • Привязка к конкретному решению, в том числе — конкретный бизнес-процесс

            Примеры некорректных бизнес-требований

            Обеспечить высокое качество обслуживания — Как проверить, что качество обслуживания высокое?

            1. Сократить среднее время обработки заказа до 14 минут — Почему до 14 минут, чем это обосновано? А почему не до 1 минуты? Какую пользу принесет сокращение времени обработки заказа?
            2. Обеспечить 100% достоверность учетных данных — Как мы узнаем какая достоверность? Как можно определить, что данные достоверны? В результате чего возникает недостоверность? С этим реально можно что-то сделать? Выполнимо ли данное требование?
            3. Гарантировать правильность принимаемых решений — Что выступает гарантом? Это выполнимо?
            4. Внедрить ERP — Кому и зачем это нужно? В чем проблема?

            Типовые ловушки аналитика

            Проблемы с требованиями, как правило, возникают, когда аналитик попадает в одни и те же типовые ловушки. Вот основные ловушки аналитика при работе с бизнес-требованиями:

            • Формальность — «пишу, потому что надо здесь что-то написать».
            • Узкие рамки анализа — не рассматриваем ничего, что выходит за рамки проекта.
            • Превращение в аудит — выясняем все обо всем «на всякий случай».
            • Превращение метода в цель — строгое следование определенному шаблону с превращением средств в цель и потерей основной цели проекта.

            Что можно сделать с каждой из этих ловушек?

            Ловушка Описание Решение
            Формальность «Пишу, потому что надо здесь что-то написать» Ставить себя на место читателя (необходимо понимать, что и для кого мы пишем).
            Узкие рамки анализа Фокусировка только на том, что относится к проекту, т.е. не рассматриваем ничего, что выходит за рамки проекта Анализировать область шире, чем те рамки, которые хотим установить для проекта.
            Превращение в аудит «На всякий случай» выясняем все обо всем Постоянно спрашивать себя: «как это связано с проектом?»
            Превращение метода в цель Строгое следование определенному шаблону с превращением средств (канва бизнеса, бизнес-процессы, стейкхолдеры) в цель и потерей основной цели проекта Задать себе вопрос: «можно ли обойтись без э

            Документирование бизнес-требований

            В практике бизнес-аналитика присутствует два основных подхода документирования требований:
            1. Монолитно

            • Все требования описываются вместе в виде структурированного повествовательного текста.
            • Возможны ссылки на элементы требований (цели, метрики, предположения, риски и т. п.).

            2. Дробно

            • Каждое требование описывается отдельно.
            • Каждому требованию присваивается уникальный идентификатор.
            • Возможна трассировка к конкретному бизнес-требованию.

            Шаблон монолитного описания БТ

            Карл Вигерс в своей книге «Разработка требований к программному обеспечению. Руководство» предлагает хороший шаблон описания БТ монолитом в рамках документа Scope and Vision (рамки и видение). В этом документе выделяется раздел Бизнес-требования, который включает в себя:

            • Контекст.
            • Описание возможности.
            • Бизнес-цели.
            • Метрики успешности.
            • Образ результата (Vision).
            • Деловые риски.
            • Предположения и зависимости бизнеса.

            Советы Вигерса по описанию БТ

            • Сокращайте шаблон в соответствии с потребностями.
            • Заполняйте не сверху вниз, а по мере поступления информации.
            • Пустой раздел — признак его ненужности или необходимости дополнительного изучения.
            • Не повторяйте то, что уже описано в другом месте — сошлитесь на имеющееся описание.
            • Исходите из возможности повторного использования БТ в других проектах.
            • Выявляйте конфликты, противоречия и выносите на обсуждение.
            • Проводите повторное рассмотрение БТ при каждой смене лиц, принимающих решения, чтобы убедиться, что понимание БТ не изменилось

            Шаблон дробного описания БТ

            Ниже представлен авторский шаблон дробного описания бизнес-требований. Он состоит из нескольких ключевых элементов:
            1. Заголовок, который включает в себя:

            • Уникальный идентификатор.
            • Краткое описание.

            2. Определение, развернутое объяснение, что из себя представляет БТ.
            3. Источник, откуда это требование взялось.
            4. Зависимости, если они есть между другими требованиями.
            5. Обоснование, краткое пояснение мотивации.
            6. Комментарий, любые пояснения. В приведенном ниже примере представлено описание диаграммы состояний.

            ЧАСТЬ I. Что такое бизнес-требования и зачем они нужны

            Глава 1. Как начинается разработка

            Вместо эпиграфа

            Заказчик на объекте принимает работу у подрядчика. Заказчик смотрит: вырыта глубокая узкая круглая яма, на дне которой горит прожектор. Он гневно спрашивает:

            — Что за чёрт?!

            Подрядчик:

            — Всё сделано по чертежу, вот, посмотрите.

            Заказчик, переворачивая чертеж вверх ногами:

            — Это должен был быть маяк!

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

            Да, возможно, это и так. Ну, а, если ошибся чертежник и переворачивать чертеж по правилам не было нужно? Почему возможна такая дикая нестыковка с ожиданиями заказчика?

            Ответ простой — подрядчик исполнял задание, не задумываясь о бизнес-задачах заказчика! Он просто не знал, зачем заказчику то, что он делает. Возможно, заказчик собирался указывать путь кораблям? Но это предположение. Может быть, маяк ему нужен был совсем для другого, и тогда нужно было бы строить совсем другой маяк, или вообще не маяк?

            Подрядчик всего этого не знал и не спросил, вот и получился анекдот вместо результата.

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

            Давайте посмотрим, почему это происходит и как это можно улучшить.

            Как начинается разработка

            Как начинается разработка ИТ-решения?

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

            — Конкуренция и то, что у других компаний данный процесс работает лучше.

            — Время на принятие решений и выполнение операций превышает желаемое.

            — Оптимизации и прочие внутрикорпоративные движения повышения эффективности.

            — Желание стать более современным и цифровизированным подразделением.

            — Хайп на рынке, влияние внешнего маркетинга.

            — Вера в чудесное новое решение всех проблем.

            — Новости законодательства и отраслевых регуляторов.

            — Воля вышестоящего руководства.

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

            Появляется критерий «соответствие ожиданиям», то есть:

            — ожидания должны быть сформированы;

            — ожидания должны быть формализованы до метрик или категорий, которые позволили ли бы определить меру соответствия ситуации этим ожиданиям;

            — для метрик и категорий определены целевые значения.

            В реальности так бывает редко. Обычно ожидания сродни мечте или иллюзорному образу «светлого будущего». При этом воля (или драйв, как нынче модно говорить) имеется, а, значит, есть и движение к мечте.

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

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

            Чем более размыты и абстрактны ожидания, тем меньше шансов на удовлетворенность результатами проекта.

            Итак, ключевые факторы начала разработки это:

            — Желание, или даже мечта, драйв;

            — Возможность привлечь для создания решения необходимые ресурсы;

            — Понимание целей того, что собрались сделать, и вера в бизнес-полезность этого.

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

            Немного остановимся, на том, что такое требование и каковы его свойства.

            Глава 2. Немного о требованиях

            Основные виды требований

            Детально требования и все аспекты работы с ними проработаны книгах по управлению требованиями, например, Карла Вигерса и соавторов. Приведем необходимый для дальнейшего изложения минимум, а за остальным предлагаем обратиться к упомянутой классике.

            Итак, выделяются следующие виды требований:

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

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

            Ограничение — ограничение на выбор вариантов, доступных разработчику при проектировании и разработке решения

            Требование к взаимодействию — описание взаимодействия с пользователем, другой программной системой или устройством.

            Функциональное требование — описание требуемого поведения системы в определенных условиях. Функциональные требования описываются в форме традиционных утверждений со словами «должен» или «должна».

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

            Среди нефункциональных требований обычно выделяют:

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

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

            Требования к безопасности — все, что касается обеспечения информационной безопасности и защиты информации, включая требования по криптографической защите.

            Требование к доступности и надежности — необходимые параметры, определяющие доступность системы, простои (например, по рабочим дням с 9:00 до 18:00 московского времени, с не более, чем двумя перерывами обслуживания в день продолжительностью до 5 минут), резервирование данных и вычислительных средств.

            Далее покажем основные пути, как из мечты или представлений формируются требования.

            Способы сбора требований

            Источников требований к ИТ-решению не так много. Вот основные из них:

            — Лицо, принимающее решения по проекту и эксперты его команды, то есть те, кого абстрактно именуют заказчиком. Они имеют мечту и представление о том, чего хотят добиться ИТ-решением и потому являются основным источником требований.

            — Нормативно-регулятивное окружение бизнеса. Это законодательство, регуляторные требования, обычаи делового оборота, внутрикорпоративные и даже этические нормы, в пределах которых должно строиться ИТ-решение.

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

            Среди традиционных способов сбора требований упомянем такие как:

            — Проведение фокус-групп типичных пользователей.

            — Работа с пользователями для выяснения назначения продукта.

            — Проведение интервью для выявления требований.

            — Проведение совместных семинаров.

            — Наблюдение за пользователями на рабочих местах.

            — Разработка и раздача опросных листов.

            — Анализ документов.

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

            Если говорить о ведении разработки в зависимости от формы требований, стоит выделить следующие подходы:

            — со слов, без документирования;

            — с использованием спецификаций требований, то есть с предварительным документированием и согласованием требований до разработки;

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

            Ознакомимся детальнее с каждым из перечисленных подходов.

            Разработка «со слов»

            Желание начать разработку немедленно, не тратя времени и ресурсов на подготовку, потребность обойти конкурентов, сократив до минимума время, проходящее от идеи до работающего ИТ-решения — все это породило разработку «со слов». Сюда же добавляется отношение к документации, как пережитку забюрократизированных старорежимных контор.

            Так в чем же сильные и слабые стороны такого подхода? Какие условия необходимы для достижения успеха проекта при его реализации?

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

            Как это может выглядеть? Например, так: заказчик вызывает к себе разработчика и рассказывает ему, что хотел бы видеть в ИТ-решении. Разработчик его выслушивает, возможно конспектирует, и после этого начинает разработку.

            Важно, что этапа согласования письменных требований нет — как понял разработчик, так и реализует.

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

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

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

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

            Ценна и возможность оперативной обратной связи разработчика с заказчиком — можно просто быстро устно спросить, получить ответ и сразу брать его в разработку.

            Недостатки не столь очевидны, но они есть:

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

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

            — отсутствие возможности восстановления истории требований. Это негативно влияет на ведение изменений, может привести к «хождению по кругу», когда одно и то же требование то возникает, то пропадает в последовательных правках решения;

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

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

            — потребность в многократном объяснении запутанных моментов со стороны заказчика при доведении информации до разработчика — излишние временные затраты и все тот же риск недопонимания и искажения восприятия;

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

            В иных случаях шанс достижения цели разработки «со слов» без разочарований невелик.

            Письменная спецификация требований к разработке

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

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

            Первое ощущение, которое возникает при описании такого подхода — долго, нудно и, скорее всего, дорого. И это ощущение имеет под собой реальную почву. Так почему же и в каких случаях имеет смысл использовать такой подход?

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

            Хорошая спецификация дает нам предварительно построенную достаточно детальную и непротиворечивую картину, что же мы должны построить.

            При этом еще и определены приоритеты, как это строить, проработаны и сняты основные нестыковки, с которыми при построении решения столкнется разработчик.

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

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

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

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

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

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

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

            Случаи, когда требования к моменту завершения их подготовки уже устарели — увы, обычная история в современном корпоративном мире.

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

            Agile-подход

            Нужны ли письменные спецификации в Agile? Недальновидные поклонники методологии думают, что ее придумали, как отказ от документирования. Гуру указывают, что они такого не замышляли, и вот почему. Посмотрим на Agile манифест, широко известный в русском переводе, где говорится, что:

            — Люди и взаимодействие важнее процессов и инструментов.

            — Работающий продукт важнее исчерпывающей документации.

            — Сотрудничество с заказчиком важнее согласования условий контракта.

            — Готовность к изменениям важнее следования первоначальному плану.

            То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева.

            Все заявления затрагивают требования, попробуем понять, как.

            «Люди и взаимодействие важнее процессов и инструментов» говорит нам о том, что нужно выбирать тот объем и характер взаимодействия специалистов заказчика и разработчика, который позволил бы им максимально быстро и комфортно сформировать единое мнение о том, какое ИТ-решение нужно разработать. Для хорошо сыгранной команды и простого решения это может быть разработка «со слов», для множества распределенных команд и сложной корпоративной системы — объемная согласованная стандартизованная документация. Именно выбор людьми команды подходящего ситуации инструмента и процесса декларируется здесь.

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

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

            «Готовность к изменениям важнее следования первоначальному плану» указывает, как и предыдущее, что изменения неизбежны и к ним нужно быть готовыми. Тем не менее, чтобы изменить первоначальный план, его нужно сначала выстроить. А если изменять планы и не отслеживать (документировать) отклонения, вполне возможно начать ходить по кругу, зациклиться в изменениях, и цель не будет достигнута.

            Таким образом, Agile придерживается позиции постоянной готовности к изменениям ради движения к цели в целом, и, для обеспечения этого, предлагает использование разумного объема документирования, исходя из текущей ситуации (и этот объем может меняться по ходу работ вместе с ситуацией).

            Agile позволяет совместить преимущества ранее описанных подходов «со слов» и письменной спецификации, устранив часть недостатков.

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

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

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

            Когда же разумно начинать разработку?

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

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

            Поэтому нужен какой-то критерий. Сформулировать его нам поможет представление о рисках проекта, которое поверхностно сводится к тому, что:

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

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

            Начать разработку означает «начать что-то делать» для снижения риска «не разработать никогда, потому что не начали», а этот риск реален. Для проекта этот риск выглядит скорее с временным ограничением — «не успеть разработать вовремя».

            Не начать разработку, но уточнять требования, означает «делать что-то» для снижения риска «разработать не то, что нужно, но потратить ресурсы и время».

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

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

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

            — Получение части функций решения (непосредственно приближает к цели);

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

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

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

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

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

            Глава 3. Зачем бизнес-требования?

            Строить или перестраивать?

            Мне нравится подход, восходящий к ТРИЗ (Теория решения изобретательских задач, разработанная Г.Альтшуллером в середине 20 века), который предполагает, что идеальное решение задачи, когда она сама себя решает. В рамках этого подхода при появлении любого нового компонента стоит спросить себя, а зачем он? Нельзя ли прийти к цели без него?

            Зададим этот вопрос к бизнес-требованиям. Нельзя ли получить решение без них? И правильный ответ будет «да, это возможно».

            Так зачем же нам тратить усилия на них? Все дело в затратах и вероятности. Как и в когда-то популярной вероятностной задаче о вероятности того, что обезьяна, сидящая за пишущей машинкой, напечатает роман «Война и Мир», в нашем ответе также нужно указать вероятность того, что полученное решение без требований совпадет с задачей.

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

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

            Такое решение обычно существенно дешевле по стоимости внедрения, но может нести риски потери части бизнес-процессов, ухода персонала при переучивании на новые процессы (изменения не всем по душе) и утрате каких-то важных «ноу-хау», запрятанных в процессе и составлявших конкурентные преимущества.

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

            Вопрос, нужны ли требования, еще и сводится к тому, хотим ли мы максимально быстро построить целевое решение, или готовы постепенно и последовательно приближаться к целевому, перестраивая и перестраивая?

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

            — это исследования и уточнения требований, когда в некоторый момент можно просто остановиться, сказать себе «стоп, теперь нам все понятно» и приступить к разработке решения с понятными требованиями или просто получить необходимые выводы и остановиться (например, CusDev прототипы);

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

            Завершая этот раздел, отметим, что требования нужны и есть они всегда. Они могут быть уже готовы до нас и «упакованы» в типовое решение, или разработаны нами с разной степенью детальности. Совсем без них не получится, надо же знать, какую цель мы хотим достичь.

            Проект или прототип?

            Любое дело (конечно, не приводящее к разрушениям) можно делать, по крайней мере, двумя способами:

            — сначала подумать, потом сделать;

            — сначала сделать потом посмотреть на результат, подумать и переделать.

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

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

            Конец ознакомительного фрагмента.

            Понравилась статья? Поделить с друзьями:
          1. Как написать бизнес проект для получения субсидии
          2. Как написать бизнес план экономика 10 класс
          3. Как написать бизнес план фотографу
          4. Как написать бизнес план составить бизнес план
          5. Как написать бизнес план пособие