2009 г.
Лекции по управлению программными проектами
С. Архипенков
Назад Содержание Вперёд
Лекция 5. Управление рисками проекта
Основные понятия
Том Демарко в своей книге [1] пишет: «Проект без риска — удел неудачников. Риски и выгода всегда ходят рука об руку». В первой лекции мы уже говорили о том, что, в силу специфики отрасли, программная инженерия остается и, в ближайшем будущем, будет оставаться производством с высоким уровнем рисков. Если задуматься, то все, что мы делаем, управляя проектом разработки ПО, направлено на борьбу с рисками не уложиться в срок, перерасходовать ресурсы, разработать не тот продукт, который требуется. Определение риска было дано в предыдущей лекции.
Риск это проблема, которая еще не возникла, а проблема — это риск, который материализовался. Риск характеризуется следующими характеристиками [2] (Рисунок 24):
- Причина или источник. Явление, обстоятельство обусловливающее наступление риска.
- Симптомы риска, указание на то, что событие риска произошло или вот-вот произойдет. Первопричина нам может быть не наблюдаема, например, заразились гриппом. Мы наблюдаем некоторые симптомы — поднялась температура.
- Последствия риска. Проблема или возможность, которая может реализоваться в проекте в результате произошедшего риска.
- Влияние риска. Влияние реализовавшегося риска на возможность достижения целей проекта. Воздействие обычно касается стоимости, графика и технических характеристик разрабатываемого продукта. Многие риски происходят частично и оказывают соразмерное отрицательное или положительное воздействие на проект.
Риск это всегда вероятность и последствия. Например, всегда есть вероятность того, что метеорит упадет на офис центра программных разработок, и это будет иметь катастрофические последствия для проекта. Однако вероятность наступления этого события настолько мала, что мы в большинстве проектов принимаем это риск и не пытаемся им управлять.
Майк Ньюэлл, вице-президент компании PSM Consulting, рассказывал, как он объясняет аудитории на своих лекциях, что такое риск. Он предлагает сыграть в кости на таких условиях, если на кубике выпадает шестерка, то выигрывает он. Если — любое другое число, то выигрывает слушатель. Ставка по 1 доллару. Обычно, большая часть аудитории соглашается сыграть на таких условиях. Майк поднимает ставки: $10, $100, $1000. Постепенно количество желающих поиграть становится все меньше и меньше. При ставке $1000, как правило, желающих рисковать не остается.
Принято [3] выделять две категории рисков:
- «Известные неизвестные». Это те риски, которые можно идентифицировать и подвергнуть анализу. В отношении таких рисков можно спланировать ответные действия.
- «Неизвестные неизвестные». Риски, которые невозможно идентифицировать и, следовательно, спланировать ответные действия.
Рисунок 24. Пример характеристик риска
Неизвестные риски это непредвиденные обстоятельства. Единственное, что мы можем в этом случае предпринять, это создать управленческий резерв бюджета проекта на случай незапланированных, но потенциально возможных изменений. На расходование этого резерва менеджер проекта, как правило, обязан получать одобрение вышестоящего руководства. Управленческие резервы на непредвиденные обстоятельства не входят в базовый план по стоимости проекта, но включаются в бюджет проекта. Они не распределяются по проекту, как бюджет, и поэтому не учитываются при расчете освоенного объема.
Девиз разработчиков ПО из Microsoft [2]: «Мы не боремся с рисками — мы ими управляем». Цели управления рисками проекта — снижение вероятности возникновения и/или значимости воздействия неблагоприятных для проекта событий. Адекватное управление рисками в компании — признак зрелости производственных процессов. Том Демарко пишет [1]: «Рассматривать только благоприятные сценарии и встраивать их в план проекта — настоящее ребячество. И все же мы постоянно так поступаем. ...Если тех, кто говорит о возможных проблемах до открытия проекта, называют troublemakers, а тех, кто сдает проект спустя 2 месяца после обещанного срока, работая при этом по 6080 часов в неделю, — героями, то у вас плохая команда».
Отказываться от управления проектными рисками это все равно, что в кинотеатре не иметь огнетушителей и плана эвакуации на случай пожара.
Планирование управления рисками
Управление рисками это определенная деятельность, которая выполняется в проекте от его начала до завершения. Как и любая другая работа в проекте управление рисками требует времени и затрат ресурсов. Поэтому эта работа обязательно должна планироваться. Планирование управления рисками — это процесс определения подходов и планирования операций по управлению рисками проекта. Тщательное и подробное планирование управления рисками позволяет:
- выделить достаточное количество времени и ресурсов для выполнения операций по управлению рисками,
- определить общие основания для оценки рисков,
- повысить вероятность успешного достижения результатов проекта.
Планирование управления рисками должен быть завершено на ранней стадии планирования проекта, поскольку оно крайне важно для успешного выполнения других процессов.
В соответствии с [3] исходными данными для планирования управления рисками служат:
- Отношение к риску и толерантность к риску организаций и лиц, участвующих в проекте, оказывает влияние на план управления проектом. Оно должно быть зафиксировано в изложении основных принципов и подходов к управлению рисками.
- Стандарты организации. Организации могут иметь заранее разработанные подходы к управлению рисками, например категории рисков, общие определение понятий и терминов, стандартные шаблоны, схемы распределения ролей и ответственности, а также определенные уровни полномочий для принятия решений.
- Описание содержания проекта подробно описывает результаты поставки проекта и работы, необходимые для создания этих результатов поставки.
- План управления проектом, формальный документ, в котором указано, как будет исполняться проект и как будет происходить мониторинг и управление проектом.
План управления рисками обычно включает в себя следующие элементы:
- Определение подходов, инструментов и источников данных, которые могут использоваться для управления рисками в данном проекте.
- Распределение ролей и ответственности. Список позиций выполнения, поддержки и управления рисками для каждого вида операций, включенных в план управления рисками, назначение сотрудников на эти позиции и разъяснение их ответственности.
- Выделение ресурсов и оценка стоимости мероприятий, необходимых для управления рисками. Эти данные включаются в базовый план по стоимости проекта.
- Определение сроков и частоты выполнения процесса управления рисками на протяжении всего жизненного цикла проекта, а также определение операций по управлению рисками, которые необходимо включить в расписание проекта.
- Категории рисков. Структура, на основании которой производится систематическая и всесторонняя идентификация рисков с нужной степенью детализации. Такую структуру можно разработать с помощью составления иерархической структуры рисков (Рисунок 25).
- Общие подходы для определения уровней вероятности, шкалы воздействия и близости рисков на проект.
Рисунок 25. Пример иерархической структуры рисков проекта
Шкала оценки воздействия отражает значимость риска (Таблица 2) в случае его возникновения. Шкала оценки воздействия может различаться в зависимости от потенциально затронутой риском цели, типа и размера проекта, принятыми в организации стратегиями и его финансовым состоянием, а также от чувствительности организации к конкретному виду воздействий.
Вес |
Значение |
Критерий |
3
|
Катастрофические
|
Потери более $100K
|
2
|
Критичные
|
Потери от $10K до $100K
|
1
|
Умеренные
|
Потери менее $10K
|
Таблица 2. Пример шкалы оценки воздействия рисков
Хотя риск может воздействовать и на сроки проекта, и на качество получаемого продукта, но все эти отклонения могут быть оценены в денежном эквиваленте. Например, последствия задержка по срокам для заказной разработки может быть выражена в сумме денежных санкций, определенных в контракте.
Похожая шкала может быть применена для оценки вероятности наступления риска (Таблица 3).
Вес |
Значение |
Критерий |
3
|
Очень вероятно
|
Шансы наступления весьма велики
|
2
|
Возможно
|
Шансы равны
|
1
|
Мало вероятно
|
Наступление события весьма сомнительно
|
Таблица 3. Пример шкалы оценки вероятности осуществления риска
Еще одной важной характеристикой риска является близость его наступления. Естественно, что при прочих равных условиях рискам, которые могут осуществиться уже завтра, следует сегодня уделять больше внимания, чем тем, которые могут произойти не ранее, чем через полгода. Для шкалы оценки близости риска может быть применена, например, следующая градация: очень скоро, не очень скоро, очень нескоро.
Идентификация рисков
Идентификация рисков — это выявление рисков, способных повлиять на проект, и документальное оформление их характеристик. Это итеративный процесс, который периодически повторяется на всем протяжении проекта, поскольку в рамках его жизненного цикла могут обнаруживаться новые риски.
Исходные данные для выявления и описания характеристик рисков могут браться из разных источников.
В первую очередь это база знаний организации. Информация о выполнении прежних проектов может быть доступна в архивах предыдущих проектов. Следует помнить, что проблемы завершенных и выполняемых проектов, это, как правило, риски в новых проектах.
Другим источником данных о рисках проекта может служить разнообразная информация из открытых источников, научных работ, маркетинговая аналитика и другие исследовательские работы в данной области. Наконец, многие форумы по программированию могут дать бесценную информацию о возникших ранее проблемах в похожих проектах.
Каждый проект задумывается и разрабатывается на основании ряда гипотез, сценариев и допущений. Как правило, в описании содержания проекта перечисляются принятые допущения — факторы, которые для целей планирования считаются верными, реальными или определенными без привлечения доказательств. Неопределенность в допущениях проекта следует также обязательно рассматривать в качестве потенциального источника возникновения рисков проекта. Анализ допущения позволяет идентифицировать риски проекта, происходящие от неточности, несовместимости или неполноты допущений.
Для сбора информации о рисках могут применяться различные подходы. Среди этих подходов наиболее распространены:
- Опрос экспертов
- Мозговой штурм
- Метод Дельфи
- Карточки Кроуфорда
Цель опроса экспертов — идентифицировать и оценить риски путем интервью подходящих квалифицированных специалистов. Специалисты высказывают своё мнение о рисках и дают им оценку, исходя из своих знаний, опыта и имеющейся информации. Этот метод может помочь избежать повторного наступления на одни и те же грабли.
Перед опросом эксперт должен получить всю необходимую вводную информацию. Деятельность экспертов необходимо направлять, задавая вопросы. Во время опроса вся информация, выдаваемая экспертом, должна записываться и сохраняться. При работе с несколькими экспертами выходная информация обобщается и доводится до сведения всех задействованных экспертов.
К участию в мозговом штурме привлекаются квалифицированные специалисты, которым дают «домашнее задание» — подготовить свои суждения по определенной категории рисков. Затем проводится общее собрание, на котором специалисты по очереди высказывают свои мнения о рисках. Важно: споры и замечания не допускаются. Все риски записываются, группируются по типам и характеристикам, каждому риску дается определение. Цель — составить первичный перечень возможных рисков для последующего отбора и анализа.
Метод Дельфи во многом похож на метод мозгового штурма. Однако есть важные отличия. Во-первых, при применении этого метода эксперты участвуют в опросе анонимно. Поэтому результат характеризуется меньшей субъективностью, меньшей предвзятостью и меньшим влиянием отдельных экспертов. Во-вторых, опрос экспертов проводится в несколько этапов. На каждом этапе модератор рассылает анкеты, собирает и обрабатывает ответы. Результаты опроса рассылаются экспертам снова для уточнения их мнений и оценок. Такой подход позволяет достичь некоего общего мнения специалистов о рисках.
Для быстрого выявления рисков можно воспользоваться еще одной из методик социометрии является известной как "Карточки Кроуфорда" [5] .
Суть этой методики в следующем. Собирается группа экспертов 7-10 человек. Каждому участнику мини-исследования раздается по десять карточек (для этого вполне подойдет обычная бумага для записок). Ведущий задает вопрос: "Какой риск является наиболее важным в этом проекте?" Все респонденты должны записать наиболее, по их мнению, важный риск в данном проекте. При этом никакого обмена мнениями не должно быть. Ведущий делает небольшую паузу, после чего вопрос повторяется. Участник не может повторять в ответе один и тот же риск.
После того как вопрос прозвучит десять раз, в распоряжении ведущего появятся от 70 до 100 карточек с ответами. Если группа подобрана хорошо (в том смысле, что в нее входят люди с различными точками зрения), вероятность того, что участники эксперимента укажут большинство значимых для проекта рисков, весьма высока. Остается составить список названных рисков и раздать его участникам для внесения изменений и дополнений.
В качестве источника информации при выявлении рисков могут служить различные доступные контрольные списки рисков проектов разработки ПО, которые следует проанализировать на применимость к данному конкретному проекту.
Например, Барии Боэм [6] приводит список 10 наиболее распространенных рисков программного проекта:
- Дефицит специалистов.
- Нереалистичные сроки и бюджет.
- Реализация несоответствующей функциональности.
- Разработка неправильного пользовательского интерфейса.
- "Золотая сервировка", перфекционизм, ненужная оптимизация и оттачивание деталей.
- Непрекращающийся поток изменений.
- Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.
- Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
- Недостаточная производительность получаемой системы.
- "Разрыв" в квалификации специалистов разных областей знаний.
Демарко и Листер [1] приводят свой список из пяти наиболее важных источников рисков любого проекта разработки ПО:
- Изъяны календарного планирования
- Текучесть кадров
- Раздувание требований
- Нарушение спецификаций
- Низкая производительность
Не существует исчерпывающих контрольных списков рисков программного проекта, поэтому необходимо внимательно анализировать особенности каждого конкретного проекта.
Результатом идентификации рисков должен стать список рисков с описанием их основных характеристик: причины, условия, последствий и ущерба.
Если вернуться к примеру проекта создания «Автоматизированной системы продажи документации», который мы рассматривали в предыдущих лекциях, то список главных выявленных рисков может выглядеть следующим образом:
Таблица 4 Список рисков проекта создания «Автоматизированной системы продажи документации»
Причина |
Условия |
Последствия |
Ущерб |
Требования не ясны. |
Отсутствие описания сценариев использования системы. |
Задержка начала разработки прикладного ПО. Большой объем переработок. |
Задержки в сроках сдачи готового продукта и дополнительные трудозатраты. |
Недостаток квалифицированных кадров. |
Архитектура и код низкого качества. |
Большое число ошибок. Большие затраты на их исправление. |
Задержки в сроках сдачи готового продукта и дополнительные трудозатраты. |
Текучесть кадров. |
Частая смена участников команды. |
Низкая производительность при вводе новых участников в проект. |
Задержки в сроках сдачи готового продукта и дополнительные трудозатраты. |
За процессом идентификации рисков следует процесс их качественного анализа.
Качественный анализ рисков
Качественный анализ рисков включает в себя расстановку рангов для идентифицированных рисков. При анализе вероятности и влияния предполагается, что никаких мер по предупреждению рисков не производится.
Качественный анализ рисков включает:
- Определение вероятности реализации рисков.
- Определение тяжести последствий реализации рисков.
- Определения ранга риска по матрице «вероятность — последствия».
- Определение близости наступления риска.
- Оценка качества использованной информации.
Для качественной оценки вероятности реализации риска и определения тяжести последствий его реализации применяется, как правило, общепринятые в организации шкалы, примеры которых мы приводили ранее.
Для определения ранга риска используется матрица вероятностей и последствий (Рисунок 26). Ранг риска определяется произведением веса вероятности и значимости последствий.
Могут, конечно, существовать и более сложные шкал для оценок вероятностей, значимости последствий и ранга рисков. Встречались шкалы, которые
содержали до 10 градаций. Но, на мой взгляд, наиболее прагматичный подход — это использовать трехуровневое ранжирование.
Продолжая рассмотрение примера проекта создания «Автоматизированной системы продажи документации», матрица рангов главных выявленных рисков может выглядеть следующим образом (Таблица 5).
Таблица 5. Матрица рангов главных выявленных рисков проекта создания «Автоматизированной системы продажи документации»
Причина |
Вероятность |
Воздействие |
Ранг |
Требования не ясны |
Очень вероятно |
Катастрофические |
9 |
Недостаток квалифицированных кадров. |
Очень вероятно |
Критичные |
6 |
Текучесть кадров. |
Возможно |
Критичные |
4 |
Рисунок 26. Ранг риска и матрица вероятностей и последствий
Для оценки рисков необходима точная и адекватная информация. Использование неточной информации ведет к ошибкам в оценке. Неверная оценка риска также является риском.
Критерии оценки качества используемой при анализе информации выглядят следующим образом:
- Степень понимания риска.
- Доступность и полнота информации о риске.
- Надежность, целостность и достоверность источников данных.
Результатом качественного анализа рисков является их подробное описание (Таблица 6).
Таблица 6. Пример карточки с описанием риска
Номер: R-101
|
Категория: Технологический.
|
Причина: Недостаток квалифицированных кадров.
|
Симптомы: Разработчики будут использовать новую платформу — J2EE.
|
Последствия: Низкая производительность разработки
|
Воздействие: Увеличение сроков и трудоемкости разработки.
|
Вероятность: Очень вероятно.
|
Степень воздействия: Критичная.
|
Близость: Очень скоро.
|
Ранг: 6.
|
Исходные данные: «Содержание проекта», «План обеспечения ресурсами», Протоколы совещаний №21 от 01.06.2008, №27 от 25.06.2008.
|
Результаты качественного анализа используются в ходе последующего количественного анализа рисков и планирования реагирования на риски.
Количественный анализ рисков
Количественный анализ производится в отношении тех рисков, которые в процессе качественного анализа были квалифицированы как имеющие высокий и средний ранг.
Для количественного анализа рисков могут быть использованы следующие методы:
- Анализ чувствительности.
- Анализ дерева решений.
- Моделирование и имитация.
Анализ чувствительности помогает определить, какие риски обладают наибольшим потенциальным влиянием на проект. В процессе анализа устанавливается, в какой степени неопределенность каждого элемента проекта отражается на исследуемой цели проекта, если остальные неопределенные элементы принимают базовые значения. Результаты представляются, как правило, в виде диаграммы «торнадо». Рисунок 27 представляет пример такой диаграммы, которая отражает влияние на проектные трудозатраты различных факторов профессионализма разработчиков ПО [7].
Рисунок 27. Влияние факторов профессионализма разработчиков ПО на трудозатраты по проекту.
Анализ последствий возможных решений проводится на основе изучения диаграммы дерева решений, которая описывает рассматриваемую ситуацию с учетом каждой из имеющихся возможностей выбора и возможного сценария. Рисунок 28 представляет пример диаграммы дерева решений на дугах которой проставлены вероятности и затраты при развитии событий по тому или иному сценарию. Критерием для принятия решения служит математическое ожидание потерь от его принятия.
Рисунок 28. Пример анализ дерева решений при выборе покупать или производить необходимую для проекта библиотеку визуальных компонентов (VCL).
При моделировании рисков проекта используется модель для определения последствий от воздействия подробно описанных неопределенностей на результаты проекта в целом. Моделирование обычно проводится с помощью метода Монте-Карло.
Интересный пример подобной модели — система Riskology от Демарко и Листера, который иллюстрирует применение метода Монте-Карло для получения информации о том, какой запас времени будет необходим для того, чтобы преодолеть влияние всех неуправляемых рисков проекта, приведен в источнике [8]. Модель позволяет учесть пять основных (Рисунок 29) и пять дополнительных рисков проекта.
Рисунок 29. Пять основных факторов риска программного проекта, учитываемые в модели Riskology
Характеристики предопределенных в системе Riskology рисков пользователь может изменить, задав значения минимальной, максимальной и наиболее вероятной задержки сроков сдачи проекта из-за влияния данного риска. Можно включить в модель дополнительные собственные риски. Результат моделирования по методу Монте-Карло будет представлен в виде гистограммы распределения срока завершения оцениваемого проекта (Рисунок 30).
Рисунок 30. Гистограмма распределения возможного срока завершения проекта, рассчитанная по результатам моделирования методом Монте-Карло
На диаграмме также приведено количество случаев, примерно 80 из 500 прогонов, в которых проект, согласно результатам моделирования, был отменен до своего завершения.
Назад Содержание Вперёд