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

Вид материалаДокументы
Глава 12. Острый инструмент
Целевые машины
Каковы типы целевых средств?
Планирование времени.
Подобный материал:
1   ...   19   20   21   22   23   24   25   26   ...   48

Глава 12. Острый инструмент


Хорошего работника узнают по инструменту.

ПОСЛОВИЦА

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

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

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

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

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

Целевые машины


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

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

Если требуется отдельная машина, то она должна быть довольноспецифической: не требуется, чтобы она была быстрой, но требуется, поменьшей мере, 1 Мбайт оперативной памяти, 100 Мбайт в активных дисках итерминалы. Достаточно символьных терминалов, но со значительно большейскоростью, чем 15 символов в секунду, характерных для пишущих машинок.Наличие большой памяти значительно способствует продуктивности, позволяязаняться разбиением на оверлеи и минимизацией размера после тестированияфункций.

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

Планирование времени. Если целевая машина новая, - например, для неесоздается первая операционная система, - то машинного времени мало, ипланирование становится большой проблемой. Потребности в рабочем временицелевой машины имеет специфическую кривую роста. При разработке OS/360 у насбыли хорошие эмуляторы System/360 и другие машины. По прежнему опыту мыоценили, сколько часов рабочего времени S/360 нам понадобится, и сталиполучать первые машины с производства. Но месяц за месяцем они оставалисьбез нагрузки. Затем сразу все 16 систем оказались загруженными, ираспределение времени стало проблемой. Использование машин выгляделопримерно как на рисунке 12.1. Все одновременно начали отлаживать первыекомпоненты, и затем все команды постоянно что-то отлаживали.



Рис. 12.1 Рост использования целевых машин

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

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

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

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