Анализ требований к автоматизированным информационным системам

Требования в управлении проектом

Лекция посвящена ключевым вопросам планирования и оценки проектов по созданию автоматизированных информационных систем (АИС) на ранних этапах, когда требования только начинают формироваться. Рассматривается проблема «курицы и яйца»: для оценки проекта нужен анализ требований, но анализ требует времени и денег заказчика. В лекции представлены различные методологические подходы к решению этой дилеммы: от экспресс-планирования на основе Vision до формализованных процессов в прогнозирующих методологиях (RUP) и гибких практик (Agile/XP). Отдельное внимание уделяется взаимосвязи требований и управления рисками как основополагающему фактору успеха проекта.

Основные мысли

• Невозможно точно оценить стоимость и сроки проекта без предварительного анализа требований, но сам анализ требует ресурсов, что создает противоречие между заказчиком и разработчиком.
• Прогнозирующие методологии (например, RUP) предлагают двухуровневое планирование: грубый план всего проекта (прогноз) и точные, жесткие по срокам планы итераций, которые базируются на детализированных требованиях.
• Гибкие методологии (Agile/XP) делают ставку на минимум документации и максимум взаимодействия, используя для планирования простые артефакты: карты с историями пользователей, приемочные тесты и CRC-карты.
• Планирование в XP основано на оценке историй пользователей в условных пунктах, что позволяет быстро рассчитать стоимость версии и принять решение о старте или закрытии проекта.
• Риск — это потенциальная проблема в будущем. Управление рисками (выявление, анализ, мониторинг) должно начинаться с этапа работы над требованиями, чтобы предотвратить кризисы.
Показывать лекцию целиком
Краткое изложение

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

Такая постановка вопроса вполне логична и обоснована, это подтвердит любой Разработчик. Однако, она вызывает много вопросов, например:

  • Где найти Заказчика, который согласится ждать 2-3 месяца, пока Разработчик составит для него коммерческое предложение?
  • Кто оплатит работы по анализу требований? (очевидно, Заказчик)
  • Как быть, если цена вопроса окажется непомерной и от проекта придется отказаться - кто возместит Заказчику убытки на проведение исследований?
  • Разумный Заказчик сможет найти выход из этого непростого положения, например:

  • подыскав Разработчика, обладающего богатым опытом выполнения подобных проектов, который сможет дать требуемую оценку значительно быстрее (но риск ошибки при этом остается);
  • взяв на себя риски возможного прекращения проекта на ранних стадиях, в случае, если выявится его несоответствие бюджетным ограничениям (в сложных рискованных проектах лучше потерять 5% или 10% от закладываемого бюджета, чем все 100%, как это было в "каскадных" схемах разработки) - путь прогнозирующих методологий
  • разделив с Разработчиком ответственность за конечный продукт, приготовившись день за днем работать с ним рука об руку вплоть до появления результата - путь гибких (Agile) методологий.
  • От рамок проекта к экспресс-планированию

    Начальную, самую грубую оценку проекта можно сделать на основании документа "Видение". Так, шаблон Vision/Scope MSF содержит список ключевых характеристик/функций, критерии приемлемости и (что очень важно) перечень характеристик/функций, которые лежат "вне рамок" проекта. Параллельно с проработкой концепции, первая фаза MSF содержит работы по анализу рисков: выявляются и оцениваются главные риски проекта.

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

  • Выделить 25 - 99 функций, характеризующих систему (совместно, Заказчик и Разработчик);
  • Установить приоритеты для каждой из функций (Заказчик);
  • Оценить трудозатраты (Разработчик);
  • Оценить риски (Разработчик, возможно привлечение Заказчика);
  • Все оценки делаются по 3-балльной шкале (высокий, низкий, средний; критический, важный, полезный и т.п.) и сводятся в таблицу:

    № пп. Функция Приоритет Трудоемкость Риск

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

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

    Планирование проекта на основе требований, путь RUP

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

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

    Назначаются даты главных вех (окончания фаз):

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

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

    Что это означает на практике:

  • укрупненный план работ составляется "как можно раньше", например - через месяц после начала работ;
  • бюджет появляется лишь к окончанию первой фазы (а она, в зависимости от сложности проекта может длиться месяц, а может и полгода);
  • как план, так и бюджет проекта представляют собой лишь прогноз, который может корректироваться на протяжении работ над проектом;
  • на момент появления плана и бюджета должно появиться подробное описание лишь 20% ключевой функциональности системы и "широкое, но неглубокое" [15.2] описание 80% функциональности.
  • Таким образом, концепция укрупненного планирования в RUP, как типичном представителе класса прогнозирующих методологий, предполагает базировать отношения между Заказчиком и Разработчиком на прогнозах, степень достоверности которых зависит от таких факторов, как качество проработки требований, квалификация команды Разработчика, сложность и новизна проекта.

    Более конкретная информация представлена в плане итерации. Основные его особенности:

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

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

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

    Требования в гибких методологиях

    В противовес прогнозирующим методологиям создания программного обеспечения, относительно недавно сформировалась парадигма гибких (Agile) методологий. В феврале 2001 г. инициативная группа из 17 специалистов объединилась в Альянс гибкой разработки программного обеспечения. Эта группа разработала и приняла Манифест гибкой разработки:

  • Индивидуальности и взаимодействия ВЫШЕ процессов и инструментов
  • Работающее программное обеспечение ВЫШЕ всесторонней документации
  • Сотрудничество с клиентами ВЫШЕ переговоров по контракту
  • Реакция на изменения ВЫШЕ следования плану и 12 приложений (в столь же лаконичной форме) к нему http://www.agilealliance.org .
  • В определенной степени в противовес всему тому, что было сказано в предыдущих лекциях, члены Альянса ставят под сомнение необходимость всестороннего моделирования и документирования требований и даже посягают на святое святых - планы и контракты.

    На сегодня "быть гибким" стало модным. Апологеты методологий, заклейменных членами Альянса, как "прогнозирующие" и даже "тяжеловесные" вступают в дискуссии - можно ли считать адаптированной ту или иную методологию на "гибкие рельсы". Так, опубликованы как минимум два варианта гибкой трансформации для RUP; MSF опубликовало нотацию Agile MSF.

    Артефакты для работы с требованиями в гибких методологиях

    С позиций работы с требованиями основными средствами, которыми оперируют гибкие методологии, являются карты представления системы, истории пользователей, приемочные тесты и CRC-карты [15.3-15.4].

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

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

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

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

  • Установка (контекст; инициирующее событие),
  • Операция (функция с количественными характеристиками),
  • Подтверждение (результаты исполнения функции).
  • CRC-карты (Класс-Ответственность-Кооперация), как и предыдущие 3 артефакта, представляют собой небольшие карточки, в заголовке которых представлено название класса, а ниже - таблица в две колонки. В левой колонке перечислены ответственности (т.е. высокоуровневый взгляд на его методы) класса, в правой - классы, состоящие в кооперации с рассматриваемым классом.

    Планирование на основе требований на примере XP

    Планирование включает следующие работы:

  • оценивание,
  • планирование версий и итераций.
  • Оценивание представляет собой определение объема работ в разрезе историй пользователя. Каждая история оценивается в пунктах. Один пункт равен "идеальной" (сорокачасовой) неделе, целиком посвященной программированию. Если оценка лежит в пределах от 1 до 3 пунктов - то он ставится на карточке истории. Если оценка менее 1 - на карточке ставится 0. Это - так называемый "песок". Если оценка превышает 3 пункта - мы имеем дело с "эпопеей". В этом случае карточка помечается, как "split" и подлежит процедуре разделения. Другая стратегия работы с такой карточкой -попытаться вместить ее в оптимальный срок путем исключения декораций. В случае, если история пользователя сложна для экспресс-оценки - необходимо провести исследование или "гвоздь" планирования.

    Планирование версий и итераций

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

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

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

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

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

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

    Анализ требований и управление рисками

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

    Управление риском - комплекс мероприятий по выявлению, оценке, предотвращению и контролю рисков проекта.

    Как пишет К.Вигерс [15.5], "Если что-либо нехорошее уже произошло с вашим проектом, то это - проблема, а не риск… Управление риском означает работу с потенциальной опасностью до того, как она перейдет в кризисную фазу". Менеджеры проектов должны выявлять риск и управлять им, начиная с факторов, связанных с требованиями, в сотрудничестве с представителями Заказчика.

    Стратегии и работы по управлению риском

    Управление риском включает в себя действия, показанные на рис. 15.1 [15.5].

    (рис 15.1)

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

    Так, все риски принято делить на прямые (те, на которые Разработчик может так или иначе влиять) и косвенные (независимые от Разработчика) [15.6].

    М. Фаулер [15.7] предложил разделить все риски на четыре категории:

  • риски, связанные с требованиями,
  • технологические риски,
  • риски, связанные с квалификацией персонала,
  • политические риски.
  • Распространенные факторы риска, связанные с требованиями, включают неверное понимание требований, недостаточное вовлечение пользователей, неточности или изменения в масштабах и целях проекта, постоянно нестабильные требования. Подробный анализ этих видов рисков можно найти в [15.5], глава 23.

    Анализ риска сводится к исследованию и описанию потенциальных последствий конкретных факторов риска для проекта, а также вероятности их проявления.

    Определение приоритетов состоит из поиска ответов на два вопроса: насколько вероятно проявление риска в проекте; насколько разрушительны могут быть последствия его проявления.

    Обнаруженные риски помещаются в специальный документ - risk list.

    Существуют три основные стратегии поведения в отношении рисков:

    Предотвращение риска, передача риска, принятие риска.

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

    Передача риска - перераспределение работ проекта таким образом, чтобы кто-то другой (Заказчик, партнер и т.п.) отвечал за работу с ним.

    Принятие риска обязывает Разработчика "заботиться" о нем. Мероприятия по контролю риска (risk control) включают планирование, разрешение и мониторинг.

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

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

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


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

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

    Планирование в RUP
    RUP разделяет план проекта и план итерации.
    • План проекта создается в начале первой фазы и делит проект на 4 фазы (Начало, Уточнение, Конструирование, Переход) с фиксацией дат крупных вех. Бюджет на этом этапе — это прогноз, основанный на 20% детализированных и 80% "широких" требований.
    • План итерации — это жесткий и точный план на ближайшую итерацию, основанный на уже отобранных функциональных требованиях с известными приоритетами и рисками. Перенос сроков итерации не допускается, допускается перенос требований.

    Планирование в Agile (на примере XP)
    Гибкие методологии основаны на Манифесте Agile, который ставит работающий продукт выше документации и сотрудничество выше контрактов. Вместо объемных спецификаций используются небольшие карточки:
    • Карта представления (20–30 слов) — аналог концепции.
    • Истории пользователя — краткое описание функции глазами пользователя, написанное самим пользователем.
    • Приемочные тесты — условия проверки истории, написанные на обратной стороне карточки.

    Планирование в XP
    Каждая история пользователя оценивается в «пунктах» (1 пункт = идеальная неделя программирования).
    Если история > 3 пунктов («эпопея»), ее нужно разделить.
    На основе производительности команды и приоритетов заказчика составляется план версий (стоимость всего проекта) и план итераций (детальные шаги).

    Анализ требований и управление рисками
    Риск — это потенциальная, еще не случившаяся проблема.
    • Оценка риска: выявление (например, мозговым штурмом), анализ последствий и определение приоритетов (вероятность + разрушительность).
    • Контроль риска: планирование мер по смягчению (prevention), разрешение ситуации и мониторинг. Риски делятся на связанные с требованиями, технологические, с квалификацией и политические.

    Выводы

    1. Точность планирования проекта напрямую зависит от глубины проработки требований. Однако на начальном этапе можно использовать упрощенные методы (таблицы, истории), чтобы получить приемлемую для старта оценку.
    2. Выбор методологии (прогнозирующая или гибкая) диктует способ работы с требованиями и формат плана. RUP предлагает детальное планирование «сверху-вниз» с контролем на вехах, а XP — непрерывное планирование «снизу-вверх» на основе коротких итераций.
    3. Ключевым фактором планирования в итерационных подходах является приоритизация. Заказчик определяет, что важно, а разработчик оценивает, сколько это стоит, что позволяет отсеять лишнее на ранних стадиях.
    4. Управление рисками — неотъемлемая часть работы с требованиями. Выявление рисков, связанных с нестабильностью или неверным пониманием требований, позволяет предотвратить провал проекта до того, как будут потрачены основные средства.

    Вопросы для самопроверки

    1. В чем заключается основное противоречие между заказчиком и разработчиком на этапе предпроектного обследования и какие существуют пути его решения?
    2. Какой подход к первичной оценке проекта предлагает шаблон MSF Vision/Scope и таблица с функциями?
    3. Чем отличается «план проекта» от «плана итерации» в методологии RUP? Какой из них имеет жесткие сроки и почему?
    4. Какие четыре основных артефакта для работы с требованиями используют гибкие методологии (Agile/XP) и какова функция каждого из них?
    5. Что такое «эпопея» и «песок» в контексте планирования XP? Каковы действия разработчика при обнаружении «эпопеи»?
    6. Дайте определение риска в управлении проектами. Чем риск отличается от уже возникшей проблемы?
    7. Какие существуют три основные стратегии поведения в отношении рисков? Приведите пример стратегии «предотвращения риска».
    Вернуться к учебному плану