Фредерик П. Брукс

Вид материалаДокументы
Журнал регистрации телефонных разговоров
Тестирование продукта
Глава 7. Почему не удалось построить Вавилонскую башню?
Аудит менеджмента Вавилонского проекта
Обмен информацией в большом программном проекте
Подобный материал:
1   ...   10   11   12   13   14   15   16   17   ...   48

Журнал регистрации телефонных разговоров


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

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

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

Тестирование продукта


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

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

Глава 7. Почему не удалось построить Вавилонскую башню?


На всей земле был один язык и одно наречие. Двинувшись с востока, они нашли в земле Сеннаар равнину и поселились там. И сказали друг другу: наделаем кирпичей и обожжем огнем. И стали у них кирпичи вместо камней, а земляная смола вместо извести. И сказали они: построим себе город и башню, высотою до небес, и сделаем себе имя прежде, нежели рассеемся по лицу всей земли. И сошел Господь посмотреть город и башню, которые строили сыны человеческие. И сказал Господь: вот,один народ, и один у всех язык; и вот что они начали делать, и не отстанут они от того, что задумали делать; сойдем же и смешаем там язык их, так чтобы один не понимал речи другого. И рассеял их Господь оттуда по всей земле; и они перестали строить город [и башню].

КНИГА БЫТИЯ 11:1-8

Аудит менеджмента Вавилонского проекта


Согласно Книге бытия, Вавилонская башня была вторым крупным инженерным предприятием человека после Ноева ковчега. Вавилонская башня стала первым инженерным фиаско.

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

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

2. Человеческие ресурсы? В большом числе.

3. Материалы? Глина и битум в изобилии имеются в Месопотамии.

4. Достаточно времени? Да, нет никаких указаний на ограничения повремени.

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

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

Обмен информацией в большом программном проекте


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

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

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

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

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

- Рабочая тетрадь. В самом начале нужно завести рабочую тетрадь учета проделанной работы. Эта тема заслуживает отдельного раздела.