Мифический человеко-месяц или как создаются программные системы

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

Мифический человеко-месяц или как создаются программные системы

Frederick P. Brooks

THE MYTHICAL MAN-MONTH

(Essays on Software Engineering)

ADDISON-WESLEY PUBLISHING COMPANY READING 1975

Оглавление

Мифический человеко-месяц или как создаются программные системы 1

Посвящение издания 1975 года 1

Посвящение издания 1995 года 2

Предисловие к изданию 1995 года 2

Предисловие к первому изданию 3

Глава 1. Смоляная яма 4

Глава 2. Этот мифический "человеко-месяц" 7

Глава 3. Операционная бригада 14

Глава 4. Аристократия, демократия и системное проектирование 18

Глава 5. Эффект второй системы 22

Глава 6. Донести слово 25

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

Глава 8. Объявляя удар 33

Глава 9. Два в одном 37

Глава 10. Документарная гипотеза 40

Глава 11. Планируйте на выброс 42

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

Глава 13. Целое и части 51

Глава 14. Назревание катастрофы 55

Глава 15. Обратная сторона 59

Глава 16. Серебряной пули нет - сущность и акциденция в программной инженнерии 66

Глава 17. Новый выстрел "Серебряной пули нет" 78

Глава 18. Заявления "Мифического человеко-месяца": правда или ложь? 87

Глава 19 "Мифический человеко-месяц" двадцать лет спустя 97

Примечания и ссылки 113

Посвящение издания 1975 года

Посвящается двоим людям, благодаря которым мои годы в IBM былиособенно насыщенными: Томасу Дж. Уотсону Младшему, чье глубокое внимание клюдям по-прежнему ощущается в его фирме, и Бобу О. Эвансу, чье смелоеруководство превратило работу в приключение.

Посвящение издания 1995 года

Посвящается Нэнси, Божьему дару для меня.

Предисловие к изданию 1995 года

К моему удивлению и удовольствию, "Мифический человеко-месяц" остаетсяпопулярным через 20 лет после выхода. Тираж превысил 250 000 экземпляров.Меня часто спрашивают, какие из оценок и рекомендаций, изложенных в 1975году, я по- прежнему считаю верными, а какие претерпели изменения, и в чемименно. Несмотря на то, что в моих лекциях этот вопрос время от временизатрагивается, я давно жду возможности изложить его в печатном виде.

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

В главе 16 перепечатывается статья "Серебряной пули нет: сущность иакциденция в программной инженерии", опубликованная IFIPS (Международнаяфедерация обществ по обработке информации) в 1986 году и явившаясярезультатом опыта, полученного мною во время руководства исследованиемиспользования программного обеспечения в военных областях, проводившегосяВоенным комитетом по науке. Мои соавторы по этому исследованию, а также нашисполнительный секретарь Роберт Л. Патрик, оказали мне неоценимое содействиев моем возвращении к крупным практическим программным проектам. Статья былаперепечатана в издании IEEE "Computer" в 1987 году, благодаря которомуполучила широкую известность.

Статья "Серебряной пули нет" была дерзкой. В ней предрекалось, что в течение ближайшего десятилетия не возникнет методов программирования, использование которых позволит на порядок величин повысить производительность разработки программного обеспечения при прочих равныхусловиях. До конца этого десятилетия остался год, и, похоже, моепредсказание сбылось. Статья вызвала более оживленную дискуссию в печати,чем "Мифический человеко-месяц", поэтому в главе 17 содержатся ответы на некоторые из опубликованных критических замечаний, а также уточняютсявзгляды, изложенные в 1986 году.

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

Глава 19 собственно и представляет собой попытку пересмотретьизначальные утверждения. Следует предупредить читателя, что излагаемые новыевзгляды далеко не в той мере подкреплены "боевым опытом", как это было впервой части книги. Дело в том, что в последнее время я работал вуниверситетской среде, а не в промышленности, и над небольшими, а некрупномасштабными проектами. С 1986 года я занимаюсь толькопреподавательской деятельностью в области разработки программногообеспечения, но не исследованиями в ней. Моя исследовательская работа большекасается виртуальных сред и их применений.

При подготовке данной ретроспективы я поинтересовался современнымивзглядами своих друзей, которые практически занимаются разработкойпрограммного обеспечения. В число тех, перед кем я в долгу за готовностьподелиться своими взглядами, сделать полезные замечания к первоначальномутексту и усовершенствовать мое образование, входят Барри Бем (Barry Boehm),Кен Брукс (Ken Brooks), Дик Кейс (Dick Case), Джеймс Коггинс (JamesCoggins), Том Демарко (Tom DeMarco), Джим Маккарти (Jim McCarthy), ДэвидПарнас (David Parnas), Эрл Уилер (Earl Wheeler) и Эдвард Йордон (EdwardYordon). Фэй Уард (Fay Ward) прекрасно выполнила техническую работу,связанную с изданием новых глав.

Я благодарен моим коллегам из Группы по программному обеспечению длявоенных целей Военного комитета по науке Гордону Беллу (Gordon Bell), БрюсуБьюкенену (Bruce Buchanan), Рику Хейз-Роту (Rick Hayes-Roth) и особенноДэвиду Парнасу - за их плодотворные идеи, а Ребеке Бирли (Rebekah Bierly) -за подготовку к печати статьи, опубликованной в данной книге в качествеглавы 16. Анализ проблем программирования в категориях "сущность" (essence)и "акциденция" (accident) возникло благодаря Нэнси Гринвуд Брукс,использовавшей такой анализ в статье об обучении игре на скрипке методомСузуки.

Обычаи издательства Addison-Wesley не позволили мне в предисловии кизданию 1975 года выразить благодарность его сотрудникам за сыгранную имиважную роль. Следует особенно отметить вклад двух человек: Нормана Стентона(Norman Stenton), являвшегося ответственным редактором, и Герберта Боуза(Herbert Boes), бывшего художественным редактором. Боуз создал изящныйстиль, особо отмеченный одним из рецензентов: "широкие поля и творческоеиспользование шрифтов и компоновки материала". Что еще важнее, он дал важныйсовет поместить в начале каждой главы свою картинку. (В то время у меня былитолько картинки Смоляных ям и Реймского собора.) Чтобы найти все картинки,мне потребовался целый год, но я бесконечно благодарен за совет.

Soli Deo gloria - Богу единому слава! F. P. B., Jr. Чапел Хилл,Северная Каролина

Март 1995

Предисловие к первому изданию

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

Мое профессиональное становление в вычислительной технике первоначальнобыло связано с программированием, однако в период 1956-1963 годов, когдаразрабатывались автономные управляющие программы и языки высокого уровня, язанимался, в основном, архитектурой компьютеров. Когда в 1964 году я сталменеджером проекта разработки Operating System/360, то обнаружил, что мирпрограммирования совершенно изменился благодаря успехам, достигнутым занесколько последних лет.

Руководство разработкой OS/360 было очень поучительным, хотя и полнымрасстройств. Команде разработчиков, в том числе сменившему меня Ф. М.Трапнеллу (F. M. Trapnell), можно многим гордиться. Система содержит многоотличных решений в конструкции и функционировании, и ей удалось получитьширокое распространение. Некоторые идеи, в первую очередь, организацияввода/вывода, независимая от устройств, и управление внешними библиотекамистали техническими новинками, ныне широко используемыми. Сейчас эта системавполне надежна, достаточно производительна и весьма гибка.

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

Покинув в 1965 году IBM и придя в Чэпел Хилл, как это и предполагалось,я возглавил разработку OS/360 и стал анализировать опыт этой разработки,чтобы извлечь уроки технологических решений и администрирования. Вчастности, я хотел понять, почему столь различным оказался опытадминистрирования при разработке аппаратной части System/360, с однойстороны, и создании операционной системы OS/360 - с другой. Эта книгаявляется запоздалым ответом на вопросы Тома Уотсона относительно трудностиуправления разработкой программ.

В решении этой задачи я получил большую пользу от длительного общения сР. П. Кейсом (R. P. Case), помощником менеджера проекта в 1964-65 годах, иФ. М. Трапнеллом, менеджером проекта в 1965-68 годах. Я обсудил свои выводыс менеджерами других крупных программных проектов, в том числе Ф. Дж.Корбато (F. J. Corbato) из МТИ, Джоном Харром (John Harr) и В. Высоцким (V.Vyssotsky) из Bell Telephone Laboratories, Чарльзом Портманом (CharlesPortman) из International Computers Limited, А. П. Ершовым изВычислительного центра Сибирского отделения Академии наук СССР, а также А.М. Пьетрасанта (A. M. Pietrasanta) из IBM.

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

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

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

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

Я глубоко признателен мисс Саре Элизабет Мур (Sara Elizabeth Moore),мистеру Дэвиду Вагнеру (David Wagner) и миссис Ребекке Беррис (RebeccaBurris) за помощь в подготовке данной рукописи, а также профессору ДжозефуСлоуну (Joseph C. Sloane) за советы в отношении иллюстраций.

F. P. B., Jr.

Чэпел Хилл, Северная Каролина

Октябрь 1974

  1. Фредерик Брукс Мифический человеко-месяц или как создаются программные системы

    Документ
    Томасу Дж. Уотсону Младшему, чье глубокое внимание к людям по-прежнему ощущается в его фирме, и Бобу О. Эвансу, чье смелое руководство превратило работу в приключение.
  2. Доклад по книге Фредерика Брукса Мифический человек-месяц или как создаются программные системы Введение

    Доклад
    Фактически книга Ф. Брукса представляет собой сборник очерков, в которых последовательно обсуждаются узловые проблемы разработки крупных программных проектов (а их актуальность в течение последних 30 лет только возрастает): повышение
  3. Выявление и анализ требований. Требования к программному обеспечению. Схема разработки требований. Управление требованиями

    Документ
    Назначение технологии программирования. История развития технологии программирования. Типы программных проектов. Составные части технологии программирования.
  4. Рабочая программа по дисциплине «Технология разработки программного обеспечения» для специальности 230105 (220400) «Программное обеспечение вычислительной техники и автоматизированных систем»

    Рабочая программа
    Рабочая программа составлена в соответствии с Государственным образовательным стандартом по направлению подготовки 654600 – Информатика и вычислительная техника, специальность 230105 «Программное обеспечение вычислительной техники
  5. Программа курса "Технология программирования и управление программными проектами" (1)

    Программа курса
    Дисциплина "Технология программирования и управление программными проектами" Специальность и раздел стандарта - математика, прикладная математика, математика и компьютерные науки, общепрофессиональные и специальные дисциплины.
  6. Программа курса "Технология программирования и управление программными проектами" (2)

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

    Доклад
    Основная задача курса — дать студентам разносторонний и по возможности полный обзор вопросов, из которых состоит предмет "программной инженерии" (software engineering).
  8. Учебное пособие по курсу «Технология программирования»

    Учебное пособие
    Учебное пособие по курсу «Технология программирования» написано на основе одноимённого курса лекций читаемых автором в Ухтинском Государственном Техническом Университете.
  9. Конспект лекций по курсу «Объектно-ориентированный анализ и проектирование»

    План-конспект
    Основой проектирования программного обеспечения является системный подход. Системный подход – это методология исследования объекта любой природы как системы.

Другие похожие документы..