Фред Брукс и «Мифический человеко

advertisement
Фред Брукс и
«Мифический человеко-месяц»
Фредерик Филлипс Брукс Младший
• Родился 19 апреля 1931 в городе Дарем, Северная Каролина
• 1953 год – окончил Университет Дьюка
• 1956 год – получил титул Ph.D. по прикладной математике в
Гарвардском университете. Научный руководитель – Говард
Эйкен.
• 1956-1964 – работа в IBM
• 1964 – основал факультет информатики в Университете
Северной Каролины
• 1994 – призван членом в Ассоциацию Вычислительной Техники
(ACM)
• 1999 – награжден Премией Тьюринга
2
3
Мифический человеко-месяц или
Как создаются программные системы
• Книга об управлении проектами в области разработки
программного обеспечения
• Основана на опыте работы в IBM, полученным в ходе
управления проектом по созданию операционной системы
OS/360
• «Библия для программной инженерии»: «все её читали, но
никто ей не следует!»
• Издана в 1975 и в 1995 году
4
Системный программный продукт
5
Причины провалов
• Программные проекты чаще проваливаются из-за нехватки
календарного времени, чем по всем остальным причинам
вместе взятым.
• Допущение, что все будет хорошо — каждая задача займет
столько времени, сколько "должна" занять
• Человеко-месяц — неподходящая единица измерения объема
работ
6
Человеко-месяц
Полностью разделяемая задача
Задача с обменом данными
Неделимая задача
Задача с интенсивным взаимодействием
7
Действия при срыве графика
8
Действия при срыве графика
9
Закон Брукса
Если проект не укладывается в
сроки, то добавление рабочей
силы задержит его еще больше.
10
Особенности оценки
Объем работы = (константа) х (количество команд)1,5
Зависимость от взаимодействия:
• Очень слабое взаимодействие: 10000 инструкций на человека в
год.
• Некоторое взаимодействие: 5000 инструкций на человека в год.
• Существенное взаимодействие: 1500 инструкций на человека в
год.
Только около половины времени отводится непосредственно работе
11
Отставание от графика
• Как оказывается, что проект отстает на год? Сначала он отстает
на один день…
• До начала работы оценки продолжительности работы почти не
меняются
• Завышенные оценки уменьшаются
• Заниженные оценки почти не меняются практически до конца
проекта
12
График
• Чтобы управлять большим проектом по жесткому графику,
прежде всего, надо иметь график.
• Вехи должны быть четко определены
• Метод критического пути, диаграмма PERT показывает
критические участки, задержка которых приведет к задержке
всего проекта
13
Эффект второй системы
• Общая тенденция заключается в перегруженности
проекта второй системы идеями и
украшательствами, благоразумно отложенными в
сторону при работе над первым проектом.
• Самодисциплина – способ избежать эффекта.
14
Планирование на выброс
• Первая версия системы как правило оказывается
малопригодной для использования
• Планируйте выбросить первую версию – вам все
равно придется это сделать
15
Сопровождение
• Общая стоимость сопровождения широко используемой
программы обычно составляет 40 и более процентов стоимости
ее разработки.
• Исправление ошибки часто влечет появление новой:
• Два шага вперед, один назад
• Разрушение структуры программы:
• Шаг вперед, шаг назад
16
Концептуальная целостность
• Лучше убрать из системы отдельные необычные возможности и
реализовать единый набор конструктивных идей, чем оснастить
ее многими хорошими, но невзаимосвязанными и
несогласованными идеями.
• Разделение архитектуры и реализации.
• Небольшое число разработчиков.
17
Операционная бригада
Распределение ролей:
• Хирург
• Второй пилот
• Администратор
• Редактор
• Секретари
• Делопроизводитель
• Инструментальщик
• Отладчик
• Языковед
18
Документация
• Руководство – внешняя спецификация продукта.
• Способы описания: естественный язык и формальные
определения.
• Можно использовать оба способа, но один должен быть
главным а другой – производным.
• Внесение изменений в руководство: конференции и «сессии
верховного суда»
19
Способы взаимодействия
• Неформально
• Совещания
• Рабочая тетрадь – структурированная совокупность всех
документов, созданных во время выполнения проекта.
• Журнал регистрации телефонных звонков.
20
Документация
Необходимая документация для пользователя:
• 1. Назначение.
• 2. Среда.
• 3. Область определения и область значений.
• 4. Реализованные функции и использованные алгоритмы.
• 5. Форматы ввода-вывода.
• 6. Инструкция по работе.
• 7. Опции.
• 8. Время работы.
• 9. Точность и проверка.
21
Документация
Для разработчика:
• 1. Блок-схема или граф подпрограммной организации.
• 2. Полные описания используемых алгоритмов или ссылки на
такие описания в литературе.
• 3. Разъяснение структуры всех используемых файлов.
• 4. Организация прохождения данных - последовательность, в
которой данные или программы загружаются с ленты или диска
и описание того, что делается на каждом шаге.
• 5. Обсуждение модификаций, предполагаемых исходным
проектом, сущность и расположение добавочных блоков и
выходов.
Способ организации документации: самодокументирующиеся
программы.
22
Нисходящее проектирование
• Разработка как последовательность
уточняющих шагов.
• Позволяет раньше начать
тестирование.
23
Структурное программирование
• Применение ветвлений с помощью GO TO образует
структуры, располагающие к появлению логических
ошибок.
• Операторов цикла DO WHILE и условия
IF THEN ELSE достаточно.
24
Сложности программирования
• Существенные задачи моделирование сложных
концептуальных структур, составляющих
абстрактный программный объект.
• Второстепенные задачи - создание представлений
этих абстрактных объектов с помощью языков
программирования и отображение их в машинные
языки.
• Существенные трудности: сложность,
согласованность, изменяемость и незримость.
25
Серебряной пули нет
Нет ни одного открытия ни в технологии, ни в методах
управления, одно только использования которых
обещало бы хоть на порядок величин повысить
производительность, надежность, простоту.
Три наиболее крупных шага:
• Языки высокого уровня
• Разделение времени.
• Объединенные среды программирования.
26
Серебряной пули нет
Кандидаты на роль пули:
• ADA и другие языки.
• Объектно-ориентированное программирование
• Экспертные системы и искусственный интеллект
• Автоматическое программирование
• Графическое программирование
• Верификация
• Среды и инструменты.
Итог по пулям: положение прежнее.
27
Мифический человеко-месяц
20 лет спустя
• Модель пошагового создания вместо
планирования на выброс.
• Сокрытие информации.
28
Download