Меню
Главная
Случайная статья
Настройки
|
Парное программирование (англ. pair programming) — это методика разработки программного обеспечения, при котором два программиста работают вместе над одной задачей: один пишет код, проговаривая вслух свои идеи и действия, а другой смотрит и комментирует, параллельно продумывая следующие шаги. Один из программистов, называемый «ведущим», управляет компьютером и фокусируется на деталях программирования. Второй программист, известный как «штурман»[1], сосредоточен на общей картине и непрерывно следит за кодом, разрабатываемым первым программистом. В течение сессии они периодически меняются ролями, обычно каждые полчаса, чтобы обеспечить равное распределение ответственности и вовлечнности каждого члена команды.
Содержание
Преимущества парного программирования
Парное программирование обеспечивает взаимный контроль качества кода и способствует поддержанию темпа разработки за счёт снижения временных затрат на исправление ошибок. [2] Совместная работа позволяет выявлять и устранять ошибки в коде на самых ранних стадиях разработки.[3] Дополнительным преимуществом является совместное владение кодовой базой, что упрощает замену разработчиков в случае их отсутствия. В рамках проекта возможно перераспределение ролей с учётом общих знаний. Например, один специалист может заниматься документацией, пока другой реализует функциональность. Для менее опытных разработчиков этот метод представляет собой эффективный способ обучения и профессионального развития.[4]
Разновидности
Пинг-понг программирование
Пинг-понг программирование — разновидность парного программирования, адаптированная для методологии разработки через тестирование.
В каждый момент времени клавиатурой пользуется только один участник.
При пинг-понг программировании код всегда находится в одном из двух состояний: успешно проходит все тесты или есть хотя бы один тест, который не выполняется.
В первом состоянии разработчики должны сделать выбор, что они будут делать (писать новый тест, корректировать существующий тест или проводить рефакторинг кода) и кто это будет делать.
По завершении рефакторинга код всегда должен оказываться в исходном состоянии — должен проходить все тесты.
Написание теста или изменение может привести их код как к первому, так и ко второму состоянию:
- Первая ситуация означает, что был написан (или улучшен) тест на уже существующую функциональность (тем самым могла увеличиться степень покрытия кода тестами).
- Во втором случае, когда появился хотя бы один тест, который код не проходит, клавиатура обязательно передаётся от того, кто писал тест, другому участнику.
Цель второго участника — привести код в исходное состояние, то есть исправить код так, чтобы он проходил все тесты.
При данном подходе сокращается число ситуаций, в которых требуется принять решение о передаче клавиатуры, снижается вероятность возникновения разногласий.
Процесс написания кода становится похожим на игру в пинг-понг:
- первый участник — пишет тест;
- второй участник — изменяет код для успешного прохождения теста, пишет ответный тест и отдаёт клавиатуру обратно.
Удалённое (дистанционное) парное программирование
Удалённое (дистанционное) парное программирование, также известное как виртуальное парное программирование или распределённое парное программирование, — это разновидность парного программирования, в котором два программиста находятся на расстоянии друг от друга[5], работая через средство совместного редактирования кода, удалённый рабочий стол, или посредством плагина для интегрированной системы разработки. Удалённое парное программирование добавляет дополнительные трудности, отсутствующие в обычном парном программировании, такие как дополнительные задержки координации, зависимость от более тяжеловесных инструментов управления задачами вместо таких упрощённых вариантов, как карточки с индексами[прояснить], и отсутствие невербальных средств общения, приводящее к непониманию и конфликтам в таких вопросах, как «чья сейчас клавиатура». Для этого предназначено большое количество ПО: GNU Screen, Zeditor
См. также
Примечания
- Касьянова, Любовь. Парное программирование: эффективная работа или мучение? (рус.) CNews Аналитика (07.09.12). Дата обращения: 24 февраля 2013. Архивировано из оригинала 24 февраля 2013 года.
- Laurie Williams, Robert Kessler. "All I Really Need to Know about Pair Programming I Learned in Kindergarten." Communications of the ACM, Vol. 43, No. 5, May 2000, pp. 108–114. doi:10.1145/332833.332848.
- Hannay, Jo Erskine; Dyb, Tore; Arisholm, Erik; Sjberg, Dag I.K. "The effectiveness of pair programming: A meta-analysis." Information and Software Technology, Vol. 51, No. 7, 2009, pp. 1110–1122. doi:10.1016/j.infsof.2009.02.001.
- Williams, Laurie; Upchurch, Richard L. "In Support of Student Pair-Programming." ACM SIGCSE Bulletin, Vol. 33, No. 1, 2001, pp. 327–331. doi:10.1145/366413.364614.
- Nick V. Flor. Globally distributed software development and pair programming (англ.) // Communications of the ACM. — 2006. — Vol. 49, no. 10. — P. 57—58. — doi:10.1145/1164394.1164421. Архивировано 9 сентября 2016 года.
Литература- Omar S. Gmez, Jos L. Batn, Ral A. Aguilar. Pair versus Solo Programming -- An Experience Report from a Course on Design of Experiments in Software Engineering (англ.) // International Journal of Computer Science Issues. — 18 июня 2013. — arXiv:1306.4245.
|
|