Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
трпп_2012.docx
Скачиваний:
63
Добавлен:
30.08.2019
Размер:
727.99 Кб
Скачать

Коллективная разработка

Одним из основных вопросов коллективной разработки является разделение труда - от равноправных соисполнителей до явного и безоговорочного лидера (например, в случае бригады и главного программиста).

Иерархическая модель

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

Матричная модель (равноправные соисполнители)

Бригада равноправных соисполнителей обычно состоит из специалистов, занимающихся примерно одинаковыми задачами в рамках одного проекта.

Существует два типа команд разработчиков.

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

  • инженеров-разработчиков (специалистов по инженерии программирования и программистов);

  • технических писателей;

  • инженеров тестирования;

  • инженеров качества;

  • специалистов по сопровождению продукта;

  • специалистов по продажам продукта.

Команда полностью проектирует и разрабатывает продукт. Обычно команда разработчиков продукта включает в себя несколько команд разработчиков компонентов.

  • Команда разработчиков компонента предназначена для создания и развития компонента или свойства. Команду возглавляет обычно менеджер проекта компонента, а входят в нее:

  • инженеры-разработчики;

  • инженеры тестирования;

  • технические писатели.

Команда начинает работу сразу после завершения проектирования продукта. Именно эта команда после начала продаж продукта занимается сопровождением, исправляя ошибки, обнаруженные пользователем.

Существуют также команды, ориентированные на выпуск версии.

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

  • Команда локализации решает проблемы локализации (адаптации) продукта для конкретной языковой и культурной среды. При этом осуществляется перевод сообщений программы и документации к ней на язык локализации продукта.

Бригада главного программиста

Метод главного программиста является самым распространенным на сегодняшний момент. Он заключается в том, что реализация проекта от начала до конца осуществляется под руководством одного главного программиста, который стоит во главе бригады, нацеленной на реализацию данного проекта.

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

Бригада должна включать от 3 до 7 человек. Число 10 является верхней границей численности бригады. Это обусловлено требованием максимальной управляемости коллектива. В бригаде в зависимости от квалификации выделяют следующих специалистов.

Руководитель бригады (например, главный программист) - это превосходно подготовленный, творчески мыслящий, наделенный организационными способностями специалист. Выполняет работу верхнего уровня, в том числе распределение работы внутри бригады. Лично выполняет анализ и проектирование, создание и отладку кода, написание документации.

Заместитель руководителя бригады (например, старший программист) - поддерживает тесную связь с руководителем бригады и дорабатывает более мелкие вопросы. Может выполнять любую работу главного программиста, но менее опытен. Подстраховывает главного программиста, может заниматься написанием кода, но не несет ответственности за проект.

Непосредственно исполнители (например, младшие программисты) - два или три «менее опытных», но не «менее способных» специалистов. Выполняют работу нижнего уровня, определенную руководителем бригады.

В большом проекте в состав каждой или нескольких бригад могут входить следующие специалисты.

Администратор (менеджер) отвечает за распределение времени, подбор кадров, размещение исполнителей, финансирование, поддержку связи с другими группами и высшим руководством.

Редактор - фактически, это технический писатель. Его задача - критически переработать черновики документации, созданные главным программистом, снабдить их ссылками и библиографией и обеспечить публикацию или помещение в Интернете.

Языковед - эксперт в тонкостях языков программирования. Может найти эффективные способы использования языка для решения сложных задач. Обычно работает с несколькими бригадами.

Инструментальщик - разработчик специализированных инструментов - утилит и сценариев. Поддерживает основной инструментарий и оказывает по нему консультации. При необходимости может осуществлять администрирование операционной системы.

Отладчик - разработчик тестов и организатор тестирования программного продукта.

Делопроизводитель отвечает за регистрацию всех технических данных бригады в библиотеке программного продукта. Благодаря делопроизводителю, активные программисты освобождаются от рутинной работы. Ведет системную библиотеку, например, библиотеку модулей, используемых в оперативном режиме. Все изменения в программные модули вносит только библиотекарь, он также ведет системную документацию - системный журнал.

Программирование в парах

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

Первый партнёр решает задачу непосредственной реализацией одного из методов наилучшим образом. Именно в его руках находится клавиатура и мышь.

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

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

Ядерная модель

Ядерная модель предполагает наличие первого исполнителя, олицетворяющего ядро команды и создающего прототип системы. На основе прототипа командой разработчиков создаётся программный продукт. Наиболее сложным действием в данной модели является передача работы от исполнителя прототипа к команде, которая будет доводить работу до состояния программного продукта.