Командное программирование - Team programming

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

Традиционные методы управления командой

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

Методологии бумажно-ориентированных систем, первоначально разработанные для выполнения государственных проектов, таких как Структурный системный анализ и метод проектирования (SSADM), назначил отдельных людей для выполнения отдельных задач и определил роль дизайнеров как четко отделенную от роли программистов в водопадная модель разработки программного обеспечения. Эта методология также четко разделяла каждую из отдельных стадий «жизненного цикла», через которые продвигается проект разработки системы. Получающийся в результате «бумажный след» для проекта разработки систем может занять так много времени, что часто части документации по анализу - а иногда и вся документация - устаревают к моменту фактической разработки, что делает их еще хуже, чем бесполезными.

Современные тенденции: несколько программистов выполняют одну подзадачу

С этими старыми методами возникли трудности, такие как расходы, выходящие из-под контроля по мере роста систем, а также не соблюдение расписаний по срокам выхода на рынок. Эти проблемы привели к появлению таких методов, как парное программирование, наряду с новыми структурами жизненного цикла систем, такими как Спираль Бема. Спецификация этих новых подходов началась в середине 1980-х годов и продолжается сегодня. Многие из этих стратегий предполагают совместную работу нескольких программистов над одно и тоже кусок исходный код в отличие от индивидуально отвечает за индивидуальные задачи. Например, в «парном программировании» ответственность за полученный продукт поровну распределяется между двумя программистами, которые вместе работают над поставленной подзадачей. Преимущества этого подхода включают способность компенсировать недостаток знаний и умений в определенных областях другим программистом; Кроме того, считается, что совместная ответственность увеличивает стимулы для соблюдения сроков проекта и целевых показателей качества.

Этот метод часто используется в новых методологиях программирования, ориентированных на объектно-ориентированный методы программирования, такие как рациональный унифицированный процесс и Экстремальное программирование (аббревиатура «XP»), часто в сочетании с методами конструкторской документации, такими как Единый язык моделирования (UML). В объектно-ориентированных языках программирования функциональные возможности программного обеспечения образуют модульные дискретные единицы (называемые классы для функциональных элементов и пакеты для созвездий взаимосвязанных классов, выполняющих определенную функцию); два самых известных из них C ++ и Ява. Это хорошо подходит для разделения программных проектов на подгруппы, хотя все еще часто возникают проблемы при интеграции конечного продукта после завершения каждой подзадачи.

Рекомендации