2009 г.
Лекции по управлению программными проектами
С. Архипенков
Содержание
- Отзыв на книгу
- Об авторе
- Благодарности
- Предисловие
- Лекция 1. Введение в программную инженерию
- История и основные понятия
- Отличия программной инженерии от других отраслей
- Эволюция подходов к управлению программными проектами
- Модели процесса разработки ПО
- Что надо делать для успеха программного проекта
- Выводы
- Дополнительная литература и источники
- Лекция 2. Управление проектами. Определения и концепции
- Проект — основа инноваций
- Критерии успешности проекта
- Проект и организационная структура компании
- Организация проектной команпы
- Жизненный цикл проекта. Фазы и продукты
- Выводы
- Дополнительная литература и источники
- Лекция 3. Инициация проекта
- Управление приоритетами проектов
- Концепция проекта
- Цели и результаты проекта
- Допущения и ограничения
- Ключевые участники и заинтересованные стороны
- Ресурсы
- Сроки
- Риски
- Критерии приемки
- Обоснование полезности проекта
- Выводы
- Дополнительная литература и источники
- Лекция 4. Планирование проекта
- Уточнение содержания и состава работ
- Планирование управления содержанием
- Планирование организационной структуры
- Планирование управления конфигурациями
- Планирование управления качеством
- Базовое расписание проекта
- Выводы
- Дополнительная литература и источники
- Лекция 5. Управление рисками проекта
- Основные понятия
- Планирование управления рисками
- Идентификация рисков
- Качественный анализ рисков
- Количественный анализ рисков
- Планирование реагирования на риски
- Главные риски программных проектов и способы реагирования
- Управление проектом, направленное на снижение рисков
- Мониторинг и контроль рисков
- Выводы
- Дополнительная литература и источники
- Лекция 6. Оценка трудоемкости и сроков разработки ПО
- Оценка — вероятностное утверждение
- Негативные последствия «агрессивного» расписания
- Прагматичный подход. Метод PERT
- Обзор метода функциональных точек
- Основы метопики COCOMO II
- Выводы
- Дополнительная литература и источники
- Лекция 7. Формирование команды
- Лидерство и управление
- Правильные люди
- Мотивация
- Эффективное взаимодействие
- Выводы
- Дополнительная литература и источники
- Лекция 8. Реализация проекта
- Рабочее планирование
- Принципы количественного управления
- Завершение проекта
- Выводы
- Дополнительная литература и источники
- Заключение. Растите профессионалов
Отзыв на книгу
Когда я прочитал эту книжку, я расстроился. Дело в том, что существует огромное количество публикаций по управлению проектами, но все они носят либо формальный характер (просто описание стандарта PM BOK), либо слишком эклектичны и описывают только отдельные приемы управления. Зная это, я собирался сам написать практически полезную книгу по этому предмету. Теперь не буду, С. Архипенков меня опередил.
В книжке С. Архипенкова в достаточно интересной форме описаны основные элементы управления программными проектами. Автор, конечно, скромничает, говоря, что он охватил только 20% объема материала, я думаю, что гораздо больше. С массой интересных примеров описывается понятие программной инженерии, её сходства и отличия по сравнению с другими областями управления, далее в увлекательной форме описываются понятия проекта, жизненного цикла, планирования, управления рисками, вопросы формирования коллектива и реального управления. Некоторые свежие примеры (аналогия с киноиндустрией, культ «Карго» и многие другие) я обязательно буду использовать в своих лекциях. Каждая глава завершается выводами, где в краткой форме формулируются основные идеи раздела управления проектами. Мои студенты будут в восторге от этой книги, прежде всего благодаря выводам. Нынешнее поколение студентов очень экономно и не любит читать толстых книг.
Особенно мне понравилось внятное изложение принципов количественного управления и соответствующих экономических оценок. Каждый раз, когда я читаю лекцию на эту тему, я сталкиваюсь с непониманием студентов, как это можно сравнивать числа разной размерности — плановый объем PV и освоенный объем EV, где EV выражается в рублях, но на самом деле является некоторым эквивалентом реально выполненных работ. С. Архипенкову удалось это объяснить буквально на пальцах так, что даже я понял.
По въевшейся профессорской привычке не удержусь от нескольких замечаний. Прежде всего, меня резануло слишком частое упоминание программирования как ремесла, лишенного строгой научной базы. Разумеется, это не так. Сегодняшнее программирование как небо от земли отличается от того предмета, с которого я начинал 40 лет назад. Есть еще очень много открытых тем для исследований, но тем и характеризуется каждая живая наука.
На странице 44 в сноске есть язвительное замечание, что «в 2000 году ещё оставались те, кто верил, что из модели UML можно будет генерировать исходный код». Мы уже много лет создаем информационные системы, программное обеспечение для телефонных станций и других систем реального времени практически без единой строки кода, написанного вручную. Да, действительно, пришлось многие вещи додумать, защитить несколько диссертаций, но практический опыт промышленного применения показывает, что цитируемая идея вовсе не была эфемерной.
Если бы эту книгу писал я, то, конечно, не уделил бы столько внимания несколько шарлатанской идее определения объема будущего ПО на основе функциональных точек. Этот метод, и то с натяжкой, работает только для типового ПО. С. Архипенков всего второй человек среди моих знакомых, который верит в этот метод. Первым был профессор Александр Самочадин из Санкт-Петербургского Политеха, да и тот недавно в частной беседе признался, что разочаровался в нем.
Как обычно, нашлось около десятка опечаток, но ни эти мелочи, ни предыдущие, более серьезные, на мой взгляд, замечания не изменили моего мнения о книжке, которую я «проглотил» за два приема. Это действительно хорошая книга, написанная живым, приятным для чтения языком, отражающая основные аспекты столь важной науки, как управление проектами.
Я с удовольствием буду рекомендовать книгу С. Архипенкова своим студентам и аспирантам, а если удастся, то и сотрудникам нашего холдинга AT Software.
Зав.кафедрой системного программирования СПбГУ
Председатель Совета директоров AT Software
Доктор физ-мат наук, профессор
А.Н. Терехов
Об авторе
Эксперт в управлении проектами, PMP PMI. В разработке ПО более 30 лет. Создавал имитационные модели сложных космических систем в Центре управления полетами (ЦНИИМаш). Руководил коммерческой разработкой ПО и проектами организационного развития в компаниях PriceWaterhouseCoopers, Luxoft, CBOSS. Выполнял проекты по заказу Европейского космического агентства, «Даймлер-Бенц Аэроспейс», корпорации «Боинг», ЦБ РФ, ОАО «Газпром». Автор книг, статей и учебных курсов по информационным технологиям и управлению программными проектами.
Вопросы и отзывы о лекциях можно отправить автору по адресу:
Благодарности
Учителя это не те, кто учит, а те, у кого учатся. Мне повезло, для меня такими учителями стали Н.А.Анфимов, И.К.Бажинов, А.Т.Горяченков, Ю.А.Мозжорин, Н.Н.Нетылев, А.И.Шеховцов, а также многие другие научные работники и специалисты ЦНИИМаш. Еще больше было учителей, у которых я учился тому, как не надо руководить людьми. Всем спасибо!
Предисловие
Об управлении проектами за последние десять лет написано тысячи книг и прочитаны миллионы лекций. Какая может быть польза еще от одного курса лекций?
История этого курса берет начало в те времена, когда я руководил разработкой программного обеспечения (ПО) в Ассоциации CBOSS. Одной из задач, которую пришлось решать, было внедрение проектного управления в разработку. Когда в рамках этого внедрения первые руководители проектов прошли внешнее обучение, они высказали сомнение в эффективности такого подхода, поскольку «детальное планирование операции «Буря в пустыне» имеет очень мало общего с насущными задачами менеджера программного проекта».
С этим трудно было спорить, поскольку разработка ПО имеет свою специфику, которая плохо укладывается в классическое управление проектами. Поэтому было решено подготовить собственный курс по управлению проектами именно в разработке ПО. Так появилась первая версия данного «курса молодого бойца», который предназначался для начинающих руководителей проектов и их начальников. Не ставилась задача заменить свод знаний PMBOK от PMI. Знать и понимать лучшие практики, изложенные в этом руководстве, должен каждый профессиональный менеджер проекта. В лекции вошли лишь 20% знаний о дисциплине управления проектами, но эти знания будут востребованы в 80% ситуаций, с которыми участникам проекта придется столкнуться в реальной работе.
С тех пор этот курс был прочитан десятки раз в ходе корпоративных и открытых тренингов для руководителей программных проектов и лидеров команд разработчиков из ведущих российских компаний производителей ПО. Структура и содержание курса постоянно улучшались, благодаря обратной связи, получаемой от слушателей, в ходе активных дискуссий и обсуждений с коллегами выполненных ими проектов. Наконец, появилось ощущение определенной стабилизации текущей версии. Поэтому был объявлен режим «features freeze» и принято решение курс документировать.
Ну, и кому от этого счастье?
В первую очередь, хочется надеяться, что лекции будут полезны студентам, которые собираются профессионально заниматься разработкой ПО. В вузах изучают языки и системы программирования, теории алгоритмов и реляционных баз данных, где-то даже ООП, паттерны проектирования и много что еще, но я не встречал курсов, на которых бы учили работать. Профессиональная разработка ПО имеет мало общего со «спихиванием лабораторок». Приходя в промышленную разработку программного обеспечения, молодой специалист долго методом проб и ошибок обучается тому, что и как надо на работе делать. И еще больше времени у него уходит на понимание того, почему надо делать именно так, а не иначе. Хотелось бы восполнить данный пробел.
Вторая категория читателей, которым адресована данная книга, — начинающие руководители программных проектов и лидеры команд разработчиков, которые вышли из программистов. Люди — не программные компоненты, поэтому хороший программист не всегда становится хорошим руководителем. Надеюсь, что данный курс поможет им не только анализировать риски, планировать и контролировать проектные работы, но и, что самое главное, научит понимать людей, эффективно взаимодействовать с ними, разрешать конфликты и обеспечивать адекватную мотивацию продуктивной работы.
И, наконец, третья категория читателей — это руководители, которые ранее успешно управляли проектами в других отраслях и получили назначение руководить проектами разработки ПО. Буду удовлетворен, если данный курс поможет им понять, что в разработке программного обеспечения есть свои особенности, по сравнению с другими производствами, которые необходимо знать и понимать для того, чтобы более осмысленно общаться со своими подчиненными.
Содержание Вперёд