Управление программными проектами Учебно-методическое пособие
..pdfМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ «МИРЭА Российский технологический университет»
(РТУ МИРЭА)
Завьялов А. В.
Управление программными проектами
Учебно-методическое пособие
Москва 2021
УДК 005.8:004.4
ББК 65.291.2 З-138
Завьялов А. В. Управление программными проектами [Электронный ресурс]: Учебно-
методическое пособие / Завьялов А.В. — М.: МИРЭА – Российский технологический университет, 2021. — 1 электрон.опт. диск (CD-ROM)
В пособии приведен базовый теоретический материал по теме управления программными проектами, а также задания для самостоятельного более глубокого изучения студентами. Предназначено для использования в практических занятиях по дисциплинам «Управление разработкой программного обеспечения» (направление подготовки бакалавров по направлению 01.03.02 «Прикладная математика и информатика» с профилем подготовки «Системное программирование и компьютерные технологии») и «Управление командными программными проектами» (направление подготовки магистров 01.04.02 «Прикладная математика и информатика», все программы).
Учебно-методическое пособие издается в авторской редакции.
Автор: Завьялов Антон Владимирович, к.т.н., доцент РТУ МИРЭА
Рецензенты:
Силкин Александр Тихонович, д.в.н., главный научный сотрудник АО «Концерн «ВЕГА», Крыжановский Юрий Маркович, к.т.н., профессор РТУ МИРЭА
Системные требования:
Наличие операционной системы Windows, поддерживаемой производителем. Наличие свободного места в оперативной памяти не менее 128 Мб.
Наличие свободного места в памяти постоянного хранения (на жестком диске) не менее 30 Мб. Наличие интерфейса ввода информации.
Дополнительные программные средства: программа для чтения pdf-файлов (Adobe Reader). Подписано к использованию по решению Редакционно-издательского совета МИРЭА — Российский технологический университет.
Обьем: 0.9 мб Тираж: 10
©Завьялов А. В., 2021
©МИРЭА – Российский технологический университет, 2021
ОГЛАВЛЕНИЕ
Введение....................................................................................................................... |
4 |
|
1. |
Проектная деятельность ......................................................................................... |
5 |
2. |
Жизненный цикл программного продукта ........................................................... |
6 |
3. |
Методология гибкой разработки программных продуктов Agile...................... |
8 |
4. |
Принципы бережливого производства в программных проектах.................... |
10 |
5. |
Работа в команде ................................................................................................... |
12 |
6. |
Коллективный интеллект...................................................................................... |
14 |
7. |
Процесс разработки программных продуктов Scrum........................................ |
15 |
8. |
Scaled Agile Framework......................................................................................... |
17 |
Заключение................................................................................................................. |
19 |
|
Список литературы.................................................................................................... |
19 |
3
ВВЕДЕНИЕ
Разработка программных продуктов — высокотехнологичная индустрия, результатами деятельности которой становятся новые и уникальные решения для быта, бизнеса, технологических процессов, исследовательской деятельности в самых сложных и разнообразных сферах деятельности. Процесс создания таких результатов — творческий интеллектуально емкий. Поэтому организация и управление таким процессом сильно отличается от более предсказуемых производственных процессов и также требуют многостороннего и творческого подхода. Различные аспекты программных проектов, современные технологии управления разработкой и стали предметом данного пособия.
Учебный план РТУ МИРЭА по направлению 01.03.02 «Прикладная математика и информатика» с профилем подготовки «Системное программирование и компьютерные технологии» включает дисциплину «Управление разработкой программного обеспечения», в ходе изучения которой студенты активно участвуют в подготовке и проведении занятий. При этом они анализируют как собственный опыт в небольших коллективных разработках, так и организацию научно-исследовательских и опытноконструкторских работ на базовом предприятии.
Дальнейшее развитие управленческих навыков этих студентов происходит в магистратуре РТУ МИРЭА по направлению 01.04.02 «Прикладная математика и информатика» в рамках дисциплины «Управление командными программными проектами». Оно направлено в первую очередь на формирование профессиональных и управленческих навыков, необходимых не рядовому исполнителю, а ведущему разработчику, способному руководить группой, планировать и осуществлять проектную деятельность, анализировать результаты разработки, находить возможности развития программного продукта, команды, технологии разработки и определять приоритеты.
В пособии в тезисном виде приведены самые базовые теоретические положения, которые необходимы для того, чтобы направить самостоятельное изучение этих тем студентами, подготовку материалов и участие в проведении занятий по данным дисциплинам. А также перечислены дополнительные вопросы, которые должны быть изучены в обязательном порядке.
4
1. ПРОЕКТНАЯ ДЕЯТЕЛЬНОСТЬ
Проект – это деятельность, направленная на получение нового ценного для потребителя результата, ограниченная в доступных ресурсах и во времени.
Ограничения, накладываемые на деятельность человека, команды или некоторой организации, позволяют спланировать, организовать, контролировать и оценивать результаты деятельности, а значит, сделать ее более эффективной.
В качестве результата проекта в зависимости от профессиональной области, поставленных целей и выбранных методов может выступать некоторый продукт, желаемые характеристики деятельности или объектов, знания, навыки и даже впечатления. Для профессиональных проектов при этом наиболее важным является продуктовый результат. Тем не менее, развитие организации, команды разработчиков, получение новых компетенций также может быть важно и с образовательной, и с коммерческой точки зрения. Важно соблюдать баланс между продуктовыми, образовательными и другими целями проекта.
Существуют различные виды проектов, но в чаще всего в них выделяют следующие этапы:
–исследование проблемы;
–поиск возможных решений;
–формулировка целей и задач конкретного проекта;
–реализация;
–подготовка результатов;
–внедрение;
–оценка результатов и рефлексия.
Широко распространенным является утверждение, что основными управляемыми переменными проекта являются время выполнения, качество и стоимость работ. На самом деле таких переменных гораздо больше. К ним, очевидно, относятся объем производимых работ, объем предоставляемой заказчику функциональности, различные виды используемых ресурсов, внутреннее качество (инженерная точка зрения), внешнее качество (для потребителя), исполнители, расписание, процессы, коммуникации и многие другие. Многие из них могут противопоставляться друг другу в связи с имеющимися ограничениями и важно найти оптимальный баланс.
5
К наиболее важным и интересным аспектам проектной деятельности, которые необходимо изучить самостоятельно, относятся:
1.Виды результатов проектов.
2.Основные этапы выполнения проектов.
3.Методы изучения деятельности, выявления заинтересованных сторон и их интересов. Виды заинтересованных сторон.
4.Методы генерации и отбора решений.
5.Формулирование целей проекта. SMART-цели.
6.Виды привлекаемых исполнителей и участников проекта.
7.Методы планирования проектов.
8.Методы мониторинга, контроля и корректировки хода выполнения проекта.
9.Способы оценки результатов.
10.Методы рефлексии и совершенствования процессов.
11.Наставничество и методы фасилитации проектов.
12.Свод знаний по управлению проектами PMBoK.
Данные темы представлены в приведенных источниках [1.1–1.6].
2.ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММНОГО ПРОДУКТА
Всоответствии со стандартом ISO 12207 к основным этапам выполнения программных проектов относятся:
–системный анализ и разработка спецификаций;
–предварительное (эскизное) проектирование;
–детальное (техническое) проектирование;
–кодирование и отладка компонентов;
–интеграция компонентов и комплексная отладка;
–испытания и документирование;
–поддержка эксплуатации;
–сопровождение [2.1].
Эти этапы могут выполняться строго последовательно, тогда процесс создания называется водопадным. Если этапы циклически повторяются, воспроизводя в каждом цикле такую последовательность для отдельных компонентов или версий программы, то процесс называется итерационным. Итерации могут частично перекрываться по времени.
6
Современные модели жизненного цикла программных систем являются итерационными, причем время итераций в большинстве случаев рекомендуется ограничивать 2–4 неделями. При этом в структуре жизненного цикла могут выделяться и более крупные блоки.
В частности, унифицированный процесс Rational (RUP) определяет фазы жизненного цикла (начало, проектирование, конструирование и внедрение), разделяемые вехами, а также процессы, выполняемые с различной интенсивностью, на протяжении всего жизненного цикла:
–управление проектом;
–моделирование производства;
–управление требованиями;
–анализ и проектирование;
–реализация;
–тестирование;
–управление конфигурацией;
–управление средой разработки;
–распространение.
Подходы к организации жизненного цикла и процессов разработки различаются также степенью формализованности. Программные продукты, предназначенные для ответственных применений чаще создаются с помощью высокоформализованных подходов (например, ISO 12207, RUP), что не исключает возможности настройки процесса под нужды конкретного заказчика и разработчика. Другие программные продукты могут разрабатываться с помощью более гибких и низкоформализованных подходов (XP, Agile, Scrum). Зачастую такие подходы представляют собой совокупность практик и приемов для организации проекта, а не устанавливают жесткую структуру жизненного цикла. Предпринимаются также попытки создать гибридные процессы, совмещающие гибкость разработки, минимизацию требований к структуре цикла, исполнителей и артефактов и при этом наличие необходимой для развития продукта документации (например, ICONIX).
К наиболее важным и интересным видам и моделям жизненного цикла программных продуктов, которые необходимо изучить самостоятельно, относятся:
1.ISO 12207.
2.eXtreme Programming.
3.Rational Unified Process.
7
4.ICONIX.
5.Свод знаний по разработке программного обеспечения SWEBoK.
Необходимо изучить элементы деятельности, основные артефакты, роли исполнителей и практики, предлагаемые каждым из этих подходов для различных этапов и процессов разработки программного продукта.
Основные источники для изучения указаны в списке литературы [2.1– 2.5]. Гибкие подходы к разработке программных продуктов Agile, Scrum, SAFe будут рассматриваются в других разделах.
3. МЕТОДОЛОГИЯ ГИБКОЙ РАЗРАБОТКИ ПРОГРАММНЫХ ПРОДУКТОВ AGILE
Agile — набор принципов и практик, обеспечивающих возможность быстрой разработки программных продуктов, максимально соответствующих изменяющимся требованиям заказчика.
Подход Agile заключается в итерационном создании продукта, результат каждой из которых позволяет создавать некоторую ценность для заказчика. Максимально короткие итерации позволяют раньше сталкиваться с проблемами, обнаруживать и разрешать недопонимания между заказчиком и разработчиком, постепенно приближаясь к поставленным целям и внося улучшения в существующий и используемый программный продукт. Особое значение при этом имеет работа по выявлению заинтересованных в продукте сторон и их интересов.
Подход базируется на манифесте, сформулированном 17-ю экспертами в области разработки программного обеспечения в 2001 году. Манифест провозглашает четыре базовые ценности:
–люди и взаимодействие важнее процессов и инструментов;
–работающий продукт важнее исчерпывающей документации;
–сотрудничество с заказчиком важнее согласования условий контракта;
–готовность к изменениям важнее следования первоначальному плану.
Также установлено 12 принципов Agile:
– наивысшим приоритетом для нас является удовлетворение потребностей заказчика благодаря регулярной и ранней поставке ценного программного обеспечения.
8
–изменение требований приветствуется даже на поздних стадиях разработки. Agile-процессы позволяют использовать изменения для обеспечения заказчику конкурентного преимущества.
–работающий продукт следует выпускать как можно чаще, с периодичностью от пары недель до пары месяцев.
–на протяжении всего проекта разработчики и представители бизнеса должны ежедневно работать вместе.
–над проектом должны работать мотивированные профессионалы. чтобы работа была сделана, создайте условия, обеспечьте поддержку и полностью доверьтесь им.
–непосредственное общение является наиболее практичным и эффективным способом обмена информацией как с самой командой, так и внутри команды.
–работающий продукт - основной показатель прогресса.
–инвесторы, разработчики и пользователи должны иметь возможность поддерживать постоянный ритм бесконечно. Аgile помогает наладить такой устойчивый процесс разработки.
–постоянное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.
–простота - искусство минимизации лишней работы – крайне необходима.
–самые лучшие требования, архитектурные и технические решения рождаются у самоорганизующихся команд.
–команда должна систематически анализировать возможные способы улучшения эффективности и, соответственно, корректировать стиль своей работы.
Развитие идей подхода Agile обосновало целый ряд методик и технологий, используемых в настоящее время в программном обеспечении. К числу наиболее важных и интересных из них, требующих самостоятельного изучения, относятся:
1.Scrum (рассматривается в следующем разделе).
2.Система визуализации и управления потоком работ Kanban.
3.Практики DevOps.
4.Методы оценки и планирования в Agile.
Основная информация по этим темам приведена в источниках [3.1–3.7].
9
4. ПРИНЦИПЫ БЕРЕЖЛИВОГО ПРОИЗВОДСТВА В ПРОГРАММНЫХ ПРОЕКТАХ
Бережливое производство (Lean) – концепция управления, направленная на непрерывное улучшение процессов за счет выявления, устранения потерь, оптимизации потока и стандартизации.
К основным элементам Lean относятся:
–определение создаваемой ценности продукта;
–анализ потока формирования ценности;
–визуализация процессов;
–стандартизация процессов;
–применение подхода «вытягивающих» (pull) систем;
–непрерывное совершенствование.
Анализ и визуализация потока формирования ценности выполняется с целью выявления и последующего устранения различных видов потерь:
–перепроизводство (избыточные функции и характеристики продукта);
–излишняя обработка (выполнение работ, которые не приносят ценности
ине являются необходимыми для организации процесса);
–лишние действия (сбор, перемещение, копирование, передача артефактов между исполнителями);
–переназначения (перераспределение работ между исполнителями, сопровождаемая необходимостью останавливать процесс, переключать внимание, изучать полученную информацию или артефакты);
–ожидания (простои из-за отсутствия необходимых данных или решений);
–брак (невыявленные в ходе тестирования ошибки и проблемы, требующие исправления, устранения последствий, восстановления состояния и данных);
–запасы (потери времени и других видов ресурсов из-за планирования их использования с избытком).
При анализе операций и действий их разделяют на три группы:
10