Шаг 63.
Структура коллектива разработчиков

    На этом шаге мы рассмотрим состав коллектива разработчиков.

    Как показывают эксперименты, объектно-ориентированная разработка требует несколько иного разделения труда по сравнению с традиционными методами. Г.Буч выделяет три важнейшие роли разработчиков в объектно-ориентированном подходе [1]:

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

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

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

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

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

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

    Инженер по повторному использованию - управляет хранилищем материалов проекта; активно ищет общее и добивается его использования; находит, разрабатывает или приспосабливает компоненты для общего использования.

    Контролер качества - анализирует результаты процесса разработки; задает общее направление тестирования.

    Менеджер интеграции - отвечает за сборку подсистем в единое приложение; следит за конфигурированием подсистем.

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

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

    Системный администратор - управляет физическими компьютерными ресурсами в проекте.

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

   

    В заключение три цитаты.




   


(1) Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++, 2-е изд. - М.: Бином, 1998. - 560 с.




Предыдущий шаг Содержание