Текст книги "Вальсируя с медведями"
Автор книги: Том ДеМарко
Соавторы: Тимоти Листер
Жанры:
Программирование
,сообщить о нарушении
Текущая страница: 6 (всего у книги 12 страниц) [доступный отрывок для чтения: 6 страниц]
Глава 11
Возвращение к основам
В этой главе мы вернемся к основам рисков, диаграммам риска и взаимодействию управления рисками с более знакомыми ролями управления проектами. Нашей задачей при этом повторном проходе будет добавление некоторой строгости поверхностному представлению, данному во вводных главах.
Скрытый смысл выражения «я не знаю»
Существенной частью управления проектами является нахождение ответов на ключевые вопросы, такие как: «Когда вы закончите? Какое среднее время безотказной работы покажет ваш продукт? Примет ли пользователь продукт и будет ли его использовать?» Все они относятся к «денежным» вопросам, поскольку имеют дело непосредственно с соотношением «затраты/стоимость» продукта, который вам предстоит создать.
На все эти вопросы есть общий честный ответ: «я не знаю». Конечно, вы не знаете. Тот, кто задает вам эти вопросы, знает, что вы не знаете. Вопросы о будущих результатах и сама концепция знания – несовместимы друг с другом.
Можно предварять любой свой ответ словами: «Я не знаю, но…» Но даже если вы не начинаете с этого уточнения, оно неявно подразумевается.
Мы хотим здесь показать, что вам нужно узнавать эти «я-не-знаю» вопросы, потому что они всегда являются показателями риска. У того, чего вы не знаете, есть оборотная сторона, которая может повернуться против вас, в этом и состоит ваш риск. Если бы вы смогли собрать все уникальные «я-не-знаю» вопросы о своем проекте и докопаться до глубинной причины неизвестного в каждом из них, то перед вами оказался бы полный список рисков вашего проекта.
Тактика, присущая управлению риском, состоит в том, чтобы слушать каждое свое произнесение слов «я не знаю» (вслух или мысленно) и всякий раз принуждать себя задавать вспомогательный вопрос:
Что я знаю (или что я мог бы знать) о том, чего я не знаю?
Всегда доступна какая-то информация о неизвестном. И всегда лучше иметь эту информацию, чем обходиться без нее.
Вот пример. Вы возделываете свой сад 31 марта, но поскольку рядом с садом нет воды для полива, вы рассчитываете на дождь, чтобы он полил ваш сад. Итак, денежный вопрос здесь звучит так: «Сколько дождя прольется на ваш сад?» Вы, разумеется, отвечаете: «Я не знаю». Ясно, что это сигнализирует вам о риске, заключающемся в том, что ваши труды и деньги, потраченные на семена, могут пойти прахом, если не будет достаточного количества влаги. Теперь вы задаете вспомогательный вопрос: «Что я знаю (или что я мог бы знать) о том, чего я не знаю?» Быстрый поиск в Интернете или визит к местному агроному может снабдить вас информацией о прошлых дождях в вашем районе:

На этом рисунке показаны данные за последние сто лет об апрельских дождях в вашей местности. Если продавец семян, у которого вы покупали их для своего сада, предупреждал, что для всходов довольно всего 2 дюймов осадков в первый месяц, можно вполне уверенно считать, что риск невелик. А что, если нужно не меньше 4,4 дюйма? Тогда риск серьезнее. На графике видно, что почти треть апрельских осадков за последние сто лет была меньше.
Вы по-прежнему не знаете, какими будут дожди в этом году, но то, что вам теперь известно об этом неизвестном, имеет ценность. Это направляет вас при планировании того, как справиться с вашей неопределенностью. Если схема ослабления риска (вроде проведения трубопровода) слишком дорого стоит, у вас есть полезные данные для принятия решения о том, ослаблять ли вам риск.
Вновь о диаграммах неопределенности (диаграммах риска)
Неудивительно, что график осадков, который вы рассматривали, представляет собой диаграмму неопределенности. Наше формальное определение таково:
диаграмма неопределенности: график, показывающий по горизонтали набор перечисленных возможных результатов и по вертикали относительную вероятность каждого результата.
Если то, что вам неизвестно, имеет финансовую значимость для вашего проекта, эта диаграмма называется диаграммой риска.
Диаграмма неопределенности показывает набор предыдущих результатов:

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

Пока поверьте нам на слово, что вы всегда сможете построить такую диаграмму для своего проекта, и давайте первым делом сосредоточим внимание на том, чем хорошо для вас такое умение.
Можно использовать диаграмму риска для количественной оценки любого рассматриваемого риска. Например, вы ищете точку, для которой площади под кривой слева и справа одинаковы, называя ее риском 50 на 50, это самый ранний срок, когда вероятность успеть вовремя сравнялась с вероятностью не успеть к этому сроку. Вы можете посмотреть правее, где под кривой находится уже 90% площади (похоже, что на рисунке это приходится на май следующего года), и узнать, что при назначении его сроком сдачи вы можете не уложиться лишь с 10%-ной вероятностью. Другими словами, гораздо вероятнее, что вы успеете завершить проект раньше этой даты, чем позже. Вы можете также исключить самые оптимистичные 10% и самые пессимистичные 10% и уверенно считать, что с 80%-ной вероятностью завершите проект в период между нынешним и следующим маем. Диаграмма риска – инструмент для оценки размера риска в любой выбранной вами форме выражения. Но мы собираемся сообщить вам еще более грандиозное понимание диаграммы риска: идею о том, что ситуация, нарисованная диаграммой, и является риском. Это ведет к следующему окончательному определению риска, взамен временного определения, предложенного в главе 2:
риск n:взвешенное отображение возможных результатов и связанных с ними последствий.
Таким определением риска мы пытаемся отучить вас от привычки думать о риске с помощью цифр и склонить вас вместо этого думать о нем наглядно (с помощью графиков). Прежде вопрос вашего босса о том, «каков риск не успеть к началу следующего года», казался требующим явного или подразумевающегося ответа в процентах:
• «Дело в шляпе, босс!» (по сути 100%-ная уверенность);
или
• «Я думаю, что шансы равны» (50%);
или
• «Разве что рак на горе свистнет!» (меньше 1%).
С нашим уточненным теперь понятием риска, мы отвечаем на этот вопрос диаграммой риска, подобной приведенной выше. Мы не разжевываем ответ для начальника, клиента или контрагента, а просто выкладываем карты на стол: «Как вы прекрасно знаете, в разработке программного обеспечения всегда есть элемент неопределенности, вот посмотрите на его размеры в этом проекте».
Характеристики диаграмм риска
Некоторые из приведенных выше диаграмм неопределенности были простыми гистограммами, где столбцы точно соответствовали перечисленным результатам. А другие были плавными кривыми. В чем разница? Рассмотрим для примера диаграмму, приведенную ниже. Чем диаграмма осадков слева отличается от той, что справа?

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

Обычно более распространены асимметричные диаграммы, которые выглядят так:

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

Совокупные и причинные риски
До сих пор мы сваливали в одну кучу риски двух разных типов. Мы приводили как профили рисков для целых проектов, выраженные диаграммами неопределенности, где показаны сроки сдачи, общие затраты и усилия, или версии, которые могли быть готовыми к заданной дате. Кроме того, мы говорили и о сложных (многокомпонентных) рисках, вроде производительности труда персонала или текучести кадров. Первая категория состоит из того, что мы называем совокупными (агрегированными) рисками, поскольку они относятся к проекту в целом; а вторую категорию мы называем причинными (слагающими) рисками. Ясно, что эти категории связаны между собой. Неопределенность относительно совокупного результата является прямым результатом неопределенностей причинных факторов, ведущих к успеху или провалу:

Процесс, происходящий между ними (процесс преобразования набора причинных рисков в совокупный риск) – это то, что мы будем рассматривать ниже в качестве «модели риска».
Как можно видеть, наша установка призывает использовать диаграммы риска как вход и выход этого процесса. Другими словами, каждый слагающий или причинный риск описан диаграммой риска, а мы используем автоматический подход для классификации причинных рисков и создания на их основе совокупного показателя риска, опять же в форме диаграммы.
Два типа моделей
То, что нам бы сейчас пригодилось, – комбинация генератора прогнозов и индикаторов риска. Это было бы чудесное устройство (или программный продукт). Сначала вам были бы заданы десятки вопросов о вашем проекте, а затем была бы выдана диаграмма риска, показывающая диапазон возможных дат завершения, каждая из которых отмечена неким уровнем неопределенности. За нас было бы сделано оценивание и проведен анализ неопределенности по тем оценкам, с которыми она связана.
Такое чудо служило бы отчасти для параметрического оценивания, отчасти для перекрывания неопределенности. Компонент для параметрического оценивания уже появился на рынке. Возможно, у вас уже есть этот инструмент, который либо приобретен вашей компанией, либо разработан собственными силами. Вы вливаете в него все, что вам известно о проекте (функциональные точки, параметры SLIM, предсказания модели СОСОМО[20]20
Конструктивная модель стоимости (Constructive Cost Model – СОСОМО), разработанная в конце 70-х годов Барри Боэмом. Построена на основе анализа ряда проектов, выполненных в основном в интересах Министерства Обороны США, устанавливает соответствие между размером системы в тысячах условных строк кода и «классом» проекта, с одной стороны, и трудоемкостью разработки системы, с другой стороны (прим. пер.)
[Закрыть] или что-то в этом духе), вместе с некоторой индивидуализирующей информацией об используемых вами процедурах и прошлой истории, а он выдает время, за которое проект может быть завершен.

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

Мы представили результат как график в форме диаграммы риска. Она показывает, насколько можно быть уверенным или неуверенным в возможности завершения проекта в любой заданный момент в будущем. Такая же схема может быть использована для создания диаграммы совокупного риска, показывающей версии, которые весьма вероятно подготовить к сроку сдачи в некотором диапазоне дат.
Единственным параметром, соединяющим эти модели, является N. Как предлагается на диаграмме, мы рекомендуем вам настроить свою производственную модель или инструмент оценивания на самый оптимистичный сценарий и определить N, то есть наилучший случай. Тогда модель риска перекрывает неопределенности для создания диаграммы совокупного риска.
Еще один нюанс относительно диаграмм риска
Для того, чтобы продемонстрировать следующую идею, придется построить очень грубую диаграмму неопределенности («крупнозернистость» сделает эффект более очевидным). Предположим, мы изучаем небольшие группы учащихся. У нас есть какие-то данные о них, включая вес в фунтах. Мы группируем данные по весу с шагом в 20 фунтов и обнаруживаем, что есть один ребенок в группе 101-120 фунтов, три – в группе 121-140 фунтов и два – в группе 141-160 фунтов:

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

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

Здесь снова оба графика показывают одни и те же данные, просто представленные слегка по-разному. Заметно, что шкалу по вертикали при кумулятивной форме несколько легче понять: она показывает непосредственно вероятность от 0 до 100%. Любая дата влево от 1 января безнадежна (0%-ная вероятность), но если мы захотим пройти весь путь до конца декабря следующего года, есть 100%-ная вероятность того, что к сроку все будет готово. Факт, что 1 мая следующего года дает вероятность 50 на 50, сразу виден на кумулятивной диаграмме, а на дифференциальной нужно оценить площади слева и справа отданной точки.
Обе формы полезны, и если у вас есть данные для одной из них, вы всегда можете использовать их для построения другой.
Глава 12
Инструменты и процедуры
В этой главе у нас две задачи: (1) снабдить нас удобным инструментом для оценки рисков и (2) дать некоторые основные знания о пользовании им. Инструмент, названный RISKOLOGY, можно бесплатно скачать с нашего сайта в Интернете (http://www.systemsguild.com/riskology/)[21]
[Закрыть]. Это – модель риска в смысле, описанном в предыдущей главе. Инструмент предназначен для использования вместе с вашей собственной производственной моделью или механизмом параметрического оценивания. Наш инструмент не оценивает, сколько времени будет длиться ваш проект, он всего лишь говорит вам о том, сколько неопределенности следует приписать любой выдвигаемой оценке.
Модель представлена в виде электронной таблицы. Она исходит из логики, необходимой для работы с набором рисков в количественном выражении, включая исходную базу данных для четырех главных рисков разработки программного обеспечения. (Мы обсудим главные риски в главе 13).
Как можно водить машину без понимания всех тонкостей ее устройства, так можно использовать модель риска без глубокого понимания того, как она работает. В этой главе мы все же дадим вам возможность заглянуть внутрь модели. Это поможет слегка уменьшить суеверный страх и дать вам точку опоры, если вы решите самостоятельно подстроить электронные таблицы, чтобы они лучше соответствовали вашим задачам. Индивидуальная подгонка может быть важна, поскольку позволяет вам уничтожить, по крайней мере, некоторые из явных неопределенностей, относящихся к вашим проектам. Ваши собственные данные могут оказаться более оптимистичными и более применимыми, чем наша общеотраслевая информация.
Прежде, чем погрузиться в детали, обещаем не напрягать ваши мозги: мы не использовали «крутой» математики в этой главе. Если вы хоть немного знаете арифметику, эта глава будет вам посильна. Если вы собрались использовать электронную таблицу, например, для прогнозирования размера своей пенсии, у вас не должно быть проблем с тем, чтобы разобрать эту модель риска и собрать ее обратно, если решите заняться ее подгонкой.
Сложная смесь
В центре любой модели риска – метод определения объединенного воздействия двух и более неопределенностей:

К концу следующей главы будет показано, как это работает в проектах разработки программного обеспечения. А прямо сейчас мы намерены предложить для иллюстрации рассказ об очевидно надуманной проблеме, которую зато легче понять.
Предположим, что вы – бегун. Вы честно бегаете ежедневно, но время пробежки варьируется в зависимости от других ваших дел. Ваша ежедневная тренировка занимает от 15 минут до 1 часа. Вы ведете записи и обнаруживаете, что совершенно независимо от расстояния (в указанном временном диапазоне) скорость бега варьируется от 6,5 до 9 миль/час. Записи вы ведете так давно, что накоплена вполне приличная статистика:

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


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


Эти данные более «зернистые» из-за недостаточного их количества.
Итак, сколько займет ваш следующий забег? Вы помните, что время – это расстояние, деленное на скорость (мили расстояния, поделенные на мили/час). Если расстояние и скорость были бы фиксированными величинами, то нам предстояло бы элементарное арифметическое действие, но в данном случае, оба параметра являются неопределенными, меняющимися в рамках определенного диапазона. Это обеспечивает наличие неопределенности также и в результате:

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

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

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

Эффект Монте-Карло
Выборка Монте-Карло – это подход, гарантирующий соблюдение формы наблюдаемой кривой во времени. Механизм выбора Монте-Карло использует данные прошлых наблюдений в форме кумулятивной диаграммы неопределенности вместе с простым генератором случайных чисел для отбора. Если выбрать достаточное количество данных, гистограмма этой выборки начнет аппроксимировать фигуру ваших наблюдаемых данных. Генератор настроен на выдачу случайных чисел между 0 и 1. Вся штука в том, чтобы использовать сгенерированное число для выбора значения на вертикальной оси диаграммы неопределенности и проведения через него горизонтальной линии. Если, например, первое сгенерированное число было 0,312, вы рисуете горизонтальную линию, проходящую через точку 0,312 на вертикальной оси (см. верхний рисунок на следующей странице).
Затем вы проводите вертикальную линию через точку, где ваша горизонталь пересекает кривую. Соответствующая величина на горизонтальной оси – это ваша первая точка выборки (см. нижний рисунок на следующей странице).
Второй рисунок говорит о том, что для первого выборочного забега вокруг площадки можно ожидать скорость 7,66 миль/час. Теперь повторим это, взяв больше случайных чисел, каждое из которых дает выборочное значение скорости. Если достаточно долго продолжать этот процесс и построить из результатов гистограмму, то огибающая гистограммы начнет аппроксимировать диаграмму неопределенности, с которой вы начали (ее дифференциальный вид).


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

Этот подход позволяет обходиться арифметическими действиями с выборками, вместо интегрального исчисления по кривым. В первый раз, когда вы запускаете этот процесс, он говорит вам, что вы пробежите, скажем, за 33 минуты. Этот результат не так уж и значим – это просто рассчитанное время для случайно выбранных величин из диапазона разброса скорости и расстояния. Но повторение этого процесса снова и снова даст распределение результатов, которые начинают аппроксимировать неопределенности ожидаемого времени забега.
Диаграмма, показанная выше, – это симулятор Монте-Карло для проблемы двойной неопределенности. Он позволяет вам моделировать n случаев проблемы и отображать результаты в форме результирующей диаграммы неопределенности. Вот результат для 100 образцов:

Метод, использованный здесь, не ограничен двумя неопределенностями. Его можно использовать для всего портфеля рисков, грозящих проекту по созданию программного обеспечения.
Модель риска для проектов программного обеспечения
«RISKOLOGY» – это симулятор Монте-Карло, созданный для менеджера, занимающегося рисками в проекте по разработке программного обеспечения. Это – прямое воплощение механизма выборки по методу Монте-Карло, выраженное в терминах логики электронных таблиц. Мы написали эту программу в Excel, поэтому вам понадобится лицензионная копия программы, чтобы использовать этот инструмент. «RISKOLOGY» идет в комплекте с нашими собственными данными о некоторых рисках, с которыми может столкнуться ваш проект. Вы можете использовать наши данные или заменить их собственными.
Скачайте копию симулятора «RISKOLOGY» с нашего сайта:http://www.pmo.ru/riskology
Там же можно найти некоторые шаблоны и инструкции по использованию и подгонке симулятора.
Побочный эффект использования симуляции
Как только вы смоделировали достаточное количество примеров для своего проекта, симулятор обеспечит вам достаточно гладкую результирующую кривую. Эта кривая может показывать совокупные риски, связанные со сроком сдачи вашего проекта или с набором функциональных качеств, которые могут быть готовы к заданному сроку. В терминах управления рисками, результат представляется как диаграмма совокупного риска.
Для незнакомых с управлением рисками, или тех, кому очень сложно понять неопределенность, мы предлагаем воспринимать это как результат моделирования: «Мы прогнали этот проект 500 раз через симулятор, и получили результат, показанный на рисунке».

«Как вы видите, это показывает, что мы закончим работу до конца 30-го месяца проекта только в 15% случаев, – говорите вы. – Это не значит, что дата недостижима, она всего лишь имеет высокие риски. На нее можно рассчитывать лишь с 15%-ной уверенностью. Если вам нужна 75%-ная уверенность, вам лучше объявить датой сдачи 40-й месяц».
Альтернативы «RISKOLOGY»
Наш симулятор «RISKOLOGY» не является единственным вариантом решения этой задачи. Существуют в продаже и другие подобные продукты. Вместо того, чтобы давать здесь прямые указания, мы будем поддерживать список на нашем сайте «RISKOLOGY» (см. URL выше). Там есть описания еще, по крайней мере, двух инструментов – наборов для построения своих собственных симуляторов риска. Эти продукты недороги, и их весьма легко освоить. Далее, как было обещано, мы перейдем к тому, что считаем самыми распространенными ключевыми рисками, с которыми сталкиваются руководители проектов по разработке программного обеспечения.




























