Команда проекта и ее роль
в процессе разработки крупных приложений


Харитонова И.А., к.т.н. Астро Софт


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

Два последних вопроса мы кратко описали в предыдущей статье. Сейчас мы попробуем рассказать о принципах организации команды проекта. При этом Астро Софт в своей практике, как уже говорилось ранее, использует те принципы и модели, которые предлагает фирма Microsoft своим партнерам в Microsoft Solution Framework (MSF).


Роли в команде
В соответствии с рекомендациями MSF в команде проекта выделяются 6 ролевых функций, которые представлены на рис.1.

Для каждой роли четко определены задачи, обязанности и требуемые профессиональные навыки.

Управление продуктом √ это, как правило, бизнес-аналитики или представители заказчика. Во всяком случае, это должны быть люди, хорошо знакомые с бизнес-процессами в организации-заказчике, т.к. их основная задача - определить место разрабатываемого программного обеспечения в бизнес-процессах организации, цели и задачи проекта, приоритеты внедрения, сформулировать требования и ожидания пользователей. Руководитель этой группы ≈ Менеджер продукта ≈ обеспечивает взаимодействие с руководством заказчика, несет ответственность за то, что цели и задачи проекта, а также требования и ожидания пользователей однозначно понимаются всеми ролями и что функциональные спецификации проекта отвечают требованиям пользователей и приоритетам бизнеса. Чтобы справиться со своей ролью этот человек должен быть знаком с современными информационными технологиями, хорошо ориентироваться в бизнесе и иметь хорошие организаторские способности.

Управление программой √ это постановщики задачи. Их основная цель √ разработать функциональные спецификации проекта. Руководитель этой группы ≈ Менеджер программы ≈ является одновременно руководителем проекта, поскольку это ключевая организационная и координирующая роль. Он выполняет общее планирование проекта и координирует действия всех ролей в ходе выполнения проекта. Он отвечает за содержание функциональных спецификаций и отслеживает их изменения в течение всего периода работы над проектом. Он несет ответственность за выполнение проекта в запланированные сроки, следит за применением рекомендаций MSF и стандартов. Очевидно, что основное, что требуется от этого человека - это организаторские способности, глубокое знание методологии выполнения проектов.

Разработчики √ это программисты, которые создают необходимые программные модули. Руководитель группы ≈ Менеджер разработки ≈ руководит процессами создания архитектуры проекта, детального проектирования и созданием программных модулей. Поскольку создание приложений в архитектуре клиент-сервер требует знаний во многих областях: языки программирования, сети, коммуникации, управление базами данных, это должна быть группа высококвалифицированных специалистов по каждой из описанных областей.

Группа тестирования должна обеспечить независимую проверку проекта на соответствие функциональным спецификациям. Менеджер по тестированию разрабатывает стратегию и план тестирования и обеспечивает выполнение всех необходимых тестов. От менеджера по тестированию требуется знание технологий и средств тестирования программных продуктов, методики создания тестовых примеров. Как правило, это профессиональные программисты. Члены группы, выполняющие непосредственную прогонку тестов и регистрирующие результаты, могут не иметь профессиональных знаний в области создания программного обеспечения. От них требуется четкость и аккуратность в регистрации проблем.

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

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


Принципы формирования команды проекта
Очевидно, что количество людей в команде определяется объемом работ, предусмотренным проектом. Лидеры (менеджеры) групп составляют команду управления проектом. Лидеры групп - это руководители, координаторы усилий всех членов группы, члены группы - непосредственные исполнители, которые имеют возможность концентрироваться на конкретной работе. При необходимости некоторые роли могут совмещаться, но, как видно из табл.1, не все комбинации возможны.

Роль Менеджер продукта Менеджер программы Разработчик Тестер Инструктор Логистик
Менеджер
продукта
+ +
Менеджер
программы
+ +
Разработчик
Тестер
Инструктор
(тренер)
+ +
Логистик + +

В таблице знаком (+) помечены возможные комбинации ролей, а знаком (≈) нежелательные комбинации.

Описанную модель команды отличает:

Это очень важно, т.к. роли продуманы таким образом, что все главные сферы проекта оказываются в зоне внимания на протяжении всего процесса. Каждый член команды представляет интересы своей роли на всех стадиях при любых согласованиях проекта. Известно, что изменения в приоритетах разработки могут сильно повлиять на тестирование, обучение или внедрение. С другой стороны, очень часто проблемы тестирования, обучения пользователей и внедрения не поднимаются до самой последней стадии проекта, и усилия по их разрешению в этом случае много больше, чем если бы они были подняты раньше.

Для эффективной работы команды требуется соблюдение следующих условий:

Формирование команды начинается, как только принято решение о выполнении проекта или предпроектных исследований и заканчивается тогда, когда созданы функциональные спецификации проекта и становится возможным оценить сроки его выполнения и профессиональные требования к специалистам. Cм. табл. 2.

Шаг Описание Вход Выход Ответственный
1. Анализ требуемых
ресурсов
Определить набор требований
к квалификации и профессиональным
качествам персонала, необходимым
для выполнения проекта.
Общее описание проекта Список необходимых
ресурсов
Менеджер проекта
2. Анализ имеющихся
ресурсов (исполнителей)
Отобразить требования,
полученные на предыдущем
шаге, к текущему состоянию персонала.
Анализ необходимых
ресурсов
Таблица загрузки
персонала
Менеджер проекта совместно
с администрацией
3. Выработка решений
для заполнения вакантных
ролей
Заключение необходимых
контрактов или
перераспределение ресурсов.
Анализ необходимых
ресурсов и занятости
персонала
Решения по заполнению
вакантных ролей
Менеджер проекта совместно
с администрацией
4. Планирование работы
команды
Познакомить членов команды
с планом внедрения,
определить задачи и
ответственность каждого и согласовать сроки выполнения работ.
Общее описание проекта Согласованное решение
команды
Менеджер проекта
5. Подготовка
и координация
мероприятий по обучению
Спроектировать материалы
для технического тренинга
Анализ необходимых
ресурсов
Материалы и план для
технического тренинга
Инструкторы
6. Обучение сотрудников Технический тренинг должен
быть проведен на основе
результатов шага 2
Материалы для технического
тренинга
Обладающие
необходимыми знаниями и
профессиональными качествами сотрудники
Инструкторы


Модель команды и качество проекта
Основная цель команды проекта - создать качественный программный продукт. Но какой продукт можно считать качественным?

Качество √ это степень соответствия системы требованиям, спецификациям и ожиданиям пользователей. Традиционные определения качества включают также и критерий своевременности, который можно рассматривать как разновидность спецификации. Качество продукта обеспечивается качеством процесса проектирования, которое, в свою очередь, складывается из качества функционирования каждой роли. Тогда качественным, в широком смысле слова, может считаться продукт, который обладает следующими характеристиками:

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


КОМПЬЮТЕР-ИНФОРМ