Роли и ответственности участников типового проекта разработки ПО
Каждый проект разработки ПО имеет свою организационную структуру, которая определяет распределение ответственности и полномочий среди участников проекта, а также обязанностей и отношений отчетности. Чем меньше проект, тем больше ролей приходится совмещать одному исполнителю.
Роли и ответственности участников типового проекта разработки ПО можно условно разделить на пять групп:
1. Анализ. Извлечение, документирование и сопровождение требований к продукту.
2. Управление. Определение и управление производственными процессами.
3. Производство. Проектирование и разработка ПО.
4. Тестирование. Тестирование ПО.
5. Обеспечение. Производство дополнительных продуктов и услуг.
Группа анализа включает в себя следующие роли:
- бизнес-аналитик. Построение модели предметной области (онтологии);
- бизнес-архитектор. Разрабатывает бизнес-концепцию системы. Определяет общее видение продукта, его интерфейсы, поведение и ограничения;
- системный аналитик. Отвечает за перевод требований к продукту в функциональные требования к ПО;
- специалист по требованиям. Документирование и сопровождение требований к продукту;
- менеджер продукта (функциональный заказчик). Представляет в проекте интересы пользователей продукта.
Группа управления состоит из следующих ролей:
- руководитель проекта. Отвечает за достижение целей проекта при заданных ограничениях (по срокам, бюджету и содержанию), осуществляет операционное управление проектом и выделенными ресурсами;
- куратор проекта. Оценка планов и исполнения проекта. Выделение ресурсов;
- системный архитектор. Разработка технической концепции системы. Принятие ключевых проектных решений относительно внутреннего устройства программной системы и её технических интерфейсов;
- руководитель группы тестирования. Определение целей и стратегии тестирования, управление тестированием;
- ответственный за управление изменениями, конфигурациями, за сборку и поставку программного продукта.
В производственную группу входят:
- проектировщик. Проектирование компонентов и подсистем в соответствие с общей архитектурой, разработка архитектурно значимых модулей;
- проектировщик базы данных;
- проектировщик интерфейса пользователя;
- разработчик. Проектирование, реализация и отладка отдельных модулей системы.
В большом проекте может быть несколько производственных групп, ответственных за отдельные подсистемы. Как правило, проектировщик выполняет роль лидера группы и управляет своим подпроектом или пакетом работ. Стоит не забывать, что руководитель проекта делегирует полномочия, но не ответственность.
Группа тестирования в проекте состоит из следующих ролей:
- проектировщик тестов. Разработка тестовых сценариев;
- разработчик автоматизированных тестов;
- тестировщик. Тестирование продукта. Анализ и документирование результатов.
Участники группы обеспечения, как правило, не входят в команду проекта. Они выполняют работы в рамках своей процессной деятельности. К группе обеспечения можно отнести следующие проектные роли:
- технический писатель;
- переводчик;
- дизайнер графического интерфейса;
- разработчик учебных курсов, тренер;
- участник рецензирования;
- продажи и маркетинг;
- системный администратор;
- технолог;
- специалист по инструментальным средствам;
- другие.
В зависимости от масштаба проекта одну роль могут исполнять несколько человек. Например, разработчики, тестировщики, технические писатели. Некоторые роли всегда должен исполнять только один человек. Например, Руководитель проекта, Системный архитектор. Один человек может исполнять несколько ролей. Возможны следующие совмещения ролей:
- Руководитель проекта + системный аналитик (+ системный архитектор);
- Системный архитектор + разработчик;
- Системный аналитик + проектировщик тестов (+ технический писатель);
- Системный аналитик + проектировщик интерфейса пользователя;
- Ответственный за управление конфигурациями + ответственный за сборку и поставку (+ разработчик).
Крайне нежелательно совмещать следующие роли:
- Разработчик + руководитель проекта;
- Разработчик + системный аналитик;
- Разработчик + проектировщик интерфейсов пользователя;
- Разработчик + тестировщик.
Не раз приходилось наблюдать, как в критические периоды проекта его менеджер-разработчик с увлечением правит очередные баги, а проектная команда в полном составе стоит у него за спиной и наблюдает за этим процессом. Это плохой пример руководства проектом.
Программисты любят и умеют программировать. Пусть они этим и занимаются. Не стоит загружать программистов несвойственной для них работой. В каждом проекте разработки программного продукта много других работ: бизнес-анализ, проектирование эргономики, графический дизайн, разработка пользовательской документации. Эти работы с программированием не имеют ничего общего. Для них требуются совершенно другая квалификация и другой склад мышления.
При кустарном производстве программ эти задачи, как правило, поручаются программистам, которые это делать не умеют и не любят. Получается обычно плохо, да еще и дорого. В силу своей интроверсии, граничащей с аутизмом, программист просто не в состоянии увидеть свою программу чужими глазами – глазами пользователей. Никто уже не хочет работать с программами с технологической парадигмой навороченного пользовательского интерфейса – кустарным творением программистов – когда для того чтобы работать с системой, надо обязательно знать, как она устроена. Это типичное творение программиста, которому гораздо важнее видеть, как работает его программа, чем разбираться в том, что она делает для пользователя. Поэтому, необходимо привлекать в проектную команду бизнес-аналитиков, эргономистов, художников-дизайнеров, документалистов. Разделение труда и специализация – залог перехода от кустарного производства к более эффективному промышленному производству.
Из профессиональных программистов получаются отличные тестировщики. Однако, совмещать одновременно роли программиста и тестировщика – плохая практика. Хороший программист убежден, что он пишет программы правильно и ему психологически тяжело допустить, что где-то в его коде может быть ошибка. А ошибки есть всегда!
Организационная структура проекта обязательно должна включать в себя эффективную систему отчетности, оценки хода выполнения проекта и систему принятия решений. Можно рекомендовать еженедельные собрания по статусу проекта, на которых анализируются риски, оцениваются результаты, достигнутые на предыдущей неделе, и уточняются задачи на новый период.
Важно помнить, что организационная структура проекта – «живой» организм. Она начинает складываться на стадии планирования и может меняться в ходе проекта. Нестабильность организационной структуры (частые замены исполнителей) – серьезная проблема в управлении сложными программными проектами, поскольку существует время вхождения в контекст проекта, которое может измеряться месяцами.
Ресурсы проекта
Ресурсы (Resources) – исполнители, оборудование и материалы,используемые для выполнения задач в проекте.
Кроме сотрудников-исполнителей, занятых в проекте, называемых обычно людскими ресурсами (human resources, HR), задачи проекта используют также оборудование и материалы – материальные ресурсы (material resources). К последним относятся, например, компьютеры, сетевое оборудование, бумага для принтеров, программы и т.п.
Следует отметить, что проекты в области информационных технологий и тем болеепроекты по разработке программного обеспечения в гораздо большеймере зависят от людских ресурсов, чем от материальных. Их успехопределяется, как правило, командой исполнителей, а необорудованием, на котором она работает. И львиная доля затрат в такихпроектах – это затраты на заработную плату сотрудников, а не наприобретение оборудования и расходных материалов. Учитывая этуособенность IT-проектов, при их планировании (в особенностипредварительном, не детальном) часто для простоты материальныересурсы просто игнорируют, считая их данностью. Так удобно считать,если проект не предусматривает закупки специализированногооборудования, а выполняется, например, на стандартном оборудованиикомпании (рабочих станциях, серверах, сетевом оборудовании и т.п.), накотором выполняются и все другие проекты. Тогда деятельность потехнологическому обслуживанию, ремонтам, закупке новогооборудования и расходных материалов удобно вывести «за рамки» конкретного проекта, считая ее просто «обеспечивающей»деятельностью компании. При этом менеджер проекта можетсосредоточиться на планировании использования и управлении тольколишь людскими ресурсами – командой исполнителей. Исключениями впроектах в области информационных технологий являются:
- ситуации, в которых проект потребляет необычно (посравнению со сходными проектами, ведущимися в компании)много какого-либо материального ресурса (например, проект попереводу с английского языка и адаптации документации ксуществующему программному комплексу может потребоватьнеобычно большое количество бумаги, что стоит отметить вплане проекта);
- ситуациями, когда проект требует закупки специальногосложного и/или дорогостоящего оборудования.
Распределение трудозатрат по основным производственным процессам при современном процессе разработки ПО выглядит в среднем следующим образом (рисунок 8.1).
Следовательно, необходимо понимать, что помимо непосредственно программирования в проекте разработки ПО есть много других процессов, которые требуют ресурсы соответствующей квалификации, а само программирование составляет лишь четверть всех затрат.
Рисунок 8.1.Распределение трудозатрат по основным производственным процессам при разработке ПО.