~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 985CC8E52B292E3AFA0403A6ACC6457B__1713939420 ✰
Заголовок документа оригинал.:
✰ Pair programming - Wikipedia ✰
Заголовок документа перевод.:
✰ Парное программирование — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Pair_programming ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/98/7b/985cc8e52b292e3afa0403a6acc6457b.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/98/7b/985cc8e52b292e3afa0403a6acc6457b__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 09:24:48 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 24 April 2024, at 09:17 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Парное программирование — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии
Парное программирование

Парное программирование — это метод разработки программного обеспечения , при котором два программиста работают вместе на одной рабочей станции. Один, водитель , пишет код , а другой, наблюдатель или штурман , [1] просматривает каждую строку кода по мере ее ввода. Два программиста часто меняются ролями.

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

Экономика [ править ]

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

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

Качество дизайна [ править ]

Система с двумя программистами обладает большим потенциалом для создания более разнообразных решений проблем по трем причинам:

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

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

Удовлетворение [ править ]

В онлайн-опросе парных программистов, проведенном в 2000 году, 96% программистов заявили, что им больше нравится работать в парном программировании, чем программировать в одиночку. Более того, 95% заявили, что они были более уверены в своей работе, когда программировали в парах. Однако, поскольку опрос проводился среди парных программистов, выбранных самостоятельно, в нем не учитывались программисты, которых заставили программировать в паре. [5]

Обучение [ править ]

Знания постоянно передаются между парными программистами, будь то в отрасли или в классе. Многие источники предполагают, что учащиеся проявляют большую уверенность при программировании в парах. [5] и многие учатся, будь то советы по правилам языка программирования или общие навыки проектирования. [6] При «беспорядочном объединении» каждый программист общается и работает со всеми остальными программистами в команде, а не объединяется только с одним партнером, что приводит к распространению знаний о системе по всей команде. [3] Парное программирование позволяет программистам изучать код своего партнера и предоставлять обратную связь, что необходимо для расширения их собственных возможностей по разработке механизмов мониторинга для их собственной учебной деятельности. [6]

Формирование команды и общение [ править ]

Парное программирование двух коллег, 2007 г.

Парное программирование позволяет членам команды быстро обмениваться информацией, что снижает вероятность того, что их планы будут скрыты друг от друга. Это помогает парным программистам научиться легче общаться. «Это увеличивает пропускную способность и частоту коммуникаций в рамках проекта, увеличивая общий поток информации внутри команды». [3]

Исследования [ править ]

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

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

Хотя парные программисты могут выполнить задачу быстрее, чем одиночный программист, общее количество человеко-часов увеличивается. [2] Менеджеру придется сбалансировать более быстрое выполнение работы и сокращение времени тестирования и отладки с более высокой стоимостью кодирования. Относительный вес этих факторов может варьироваться в зависимости от проекта и задачи.

Преимущество объединения в пары наиболее эффективно при выполнении задач, которые программисты не до конца понимают перед началом работы: то есть сложных задач, требующих творческого подхода и изощренности, а также для новичков по сравнению с экспертами. [2] Парное программирование может быть полезно для достижения высокого качества и правильности решения сложных задач программирования, но оно также значительно увеличит усилия (стоимость) разработки. [7]

На простых задачах, которые пара уже полностью понимает, спаривание приводит к чистому падению производительности. [2] [8] Это может сократить время разработки кода, но также рискует снизить качество программы. [7] Продуктивность также может снизиться, когда пары новичок-новичок используются без достаточного количества наставника, который мог бы их тренировать. [9]

Исследование программистов, использующих инструменты помощи ИИ, такие как GitHub Copilot, показало, что, хотя некоторые программисты воспринимают помощь ИИ как нечто похожее на парное программирование, на практике использование таких инструментов сильно отличается с точки зрения опыта программиста: программисту-человеку приходится периодический переход между ролями водителя и штурмана. [10]

неэффективности Показатели

Есть индикаторы того, что пара работает не очень хорошо: [ мнение ]

  • Отстранение может проявляться, когда один из участников физически отстраняется от клавиатуры, получает доступ к электронной почте или даже засыпает.
  • Феномен «Наблюдай за мастером» может возникнуть, если один участник более опытен, чем другой. В этой ситуации младший участник пары может взять на себя роль наблюдателя, поручая старшему члену пары большую часть действий по кодированию. Это легко может привести к отстранению.

Варианты спаривания [ править ]

Эксперт-эксперт
Сотрудничество эксперт-эксперт может показаться очевидным выбором для достижения максимальной продуктивности и может дать отличные результаты, но оно часто дает мало информации о новых способах решения проблем, поскольку обе стороны вряд ли будут подвергать сомнению устоявшуюся практику. [2]
Эксперт-новичок
Сотрудничество эксперт-новичок создает для эксперта множество возможностей наставлять новичка. Эта пара также может привнести новые идеи, поскольку новичок с большей вероятностью будет подвергать сомнению устоявшиеся практики. Эксперт, который теперь обязан объяснять сложившуюся практику, также с большей вероятностью будет подвергать ее сомнению. Однако в этой паре запуганный новичок может пассивно «наблюдать за мастером» и не принимать осмысленного участия. Кроме того, некоторым экспертам может не хватить терпения, необходимого для конструктивного участия новичков. [11]
Новичок-новичок
Работа в паре новичок-новичок может дать значительно лучшие результаты, чем два новичка, работающие независимо, хотя такая практика обычно не рекомендуется, поскольку новичкам труднее выработать хорошие привычки без надлежащего образца для подражания. [3]

Удаленное парное программирование [ править ]

Удаленное парное программирование , также известное как виртуальное парное программирование или распределенное парное программирование , представляет собой парное программирование, при котором два программиста находятся в разных местах. [12] работа через совместный редактор в реальном времени , общий рабочий стол или плагин IDE для удаленного парного программирования . Удаленное соединение создает трудности, которых нет при личном соединении, например, дополнительные задержки для координации, в большей степени зависящие от «тяжелых» инструментов отслеживания задач, а не от «легких», таких как учетные карточки, и потеря вербального общения, приводящая к путанице и конфликты из-за таких вещей, как «у кого есть клавиатура». [13]

Инструментальную поддержку могут оказать:

  • Программное обеспечение для совместного использования всего экрана [14] [15] [ самостоятельно опубликованный источник? ]
  • Терминальные мультиплексоры
  • Специализированные распределенные инструменты редактирования
  • Программы аудиочата или программное обеспечение VoIP могут быть полезны, если программное обеспечение для совместного использования экрана не обеспечивает возможность двусторонней аудиосвязи. Использование гарнитуры освобождает руки программистов
  • Облачные среды разработки
  • Услуги совместного парного программирования

См. также [ править ]

Ссылки [ править ]

  1. ^ Уильямс, Лори (19–20 февраля 2001 г.). Интеграция парного программирования в процесс разработки программного обеспечения . 14-я конференция по образованию и обучению программной инженерии. Шарлотта. стр. 27–36. дои : 10.1109/CSEE.2001.913816 . ISBN  0-7695-1059-0 . Один из программистов, водитель, управляет клавиатурой/мышью и активно реализует программу. Другой программист — наблюдатель — постоянно наблюдает за работой водителя на предмет выявления тактических (синтаксических, орфографических и т. д.) дефектов, а также стратегически думает о направлении работы.
  2. ^ Перейти обратно: а б с д Это Луи, Ким Ман (сентябрь 2006 г.). «Продуктивность парного программирования: новичок-новичок против эксперта-эксперта» (PDF) . Международный журнал человеко-компьютерных исследований . 64 (9): 915–925. CiteSeerX   10.1.1.364.2159 . дои : 10.1016/j.ijhcs.2006.04.010 . Архивировано из оригинала (PDF) 20 июля 2011 г. Проверено 18 ноября 2012 г.
  3. ^ Перейти обратно: а б с д Это Кокберн, Алистер ; Уильямс, Лори (2000). «Затраты и выгоды парного программирования» (PDF) . Материалы Первой международной конференции по экстремальному программированию и гибким процессам в программной инженерии (XP2000) .
  4. ^ Флор, Ник В.; Хатчинс, Эдвин Л. (1991). «Анализ распределенного познания в командах разработчиков программного обеспечения: пример группового программирования во время безупречного обслуживания программного обеспечения» . В Кенеманн-Белливо, Юрген; Мохер, Томас Г.; Робертсон, Скотт П. (ред.). Эмпирические исследования программистов: Четвертый семинар . Алекс. стр. 36–64. ISBN  978-0-89391-856-9 .
  5. ^ Перейти обратно: а б Уильямс, Лори ; Кесслер, Роберт Р.; Каннингем, Уорд; Джеффрис, Рон (2000). «Укрепление аргументов в пользу парного программирования» (PDF) . Программное обеспечение IEEE . 17 (4): 19–25. CiteSeerX   10.1.1.33.5248 . дои : 10.1109/52.854064 .
  6. ^ Перейти обратно: а б Уильямс, Лори ; Апчерч, Ричард Л. (2001). «В поддержку студенческого парного программирования» . Бюллетень ACM SIGCSE . 33 (1): 327–31. дои : 10.1145/366413.364614 .
  7. ^ Перейти обратно: а б с Ханней, Джо Э.; Торе Дыбо; Эрик Аришольм; Даг И.К. Сьёберг (июль 2009 г.). «Эффективность парного программирования: метаанализ». Информационные и программные технологии . 51 (7): 1110–1122. дои : 10.1016/j.infsof.2009.02.001 .
  8. ^ Арисхольм, Эрик; Ганс Галлис; Торе Дыбо; Даг И.К. Сьёберг (февраль 2007 г.). «Оценка парного программирования с точки зрения сложности системы и опыта программиста» . Транзакции IEEE по разработке программного обеспечения . 33 (2): 65–86. дои : 10.1109/TSE.2007.17 . S2CID   9889035 . Архивировано из оригинала 29 октября 2010 г. Проверено 21 июля 2008 г.
  9. ^ Стивенс, Мэтт; Дуг Розенберг. «Действительно ли парное программирование улучшит ваш проект?» . Проверено 28 мая 2011 г.
  10. ^ Саркар, Адвайт; Гордон, Эндрю Д.; Негреану, Карина; Полиц, Кристиан; Рагаван, Шрути С.; Зорн, Бен (2022). «Что значит программировать с использованием искусственного интеллекта?» . Группа по интересам «Психология программирования» . Проверено 27 марта 2023 г.
  11. ^ Уильямс Л. и Кесслер Р. (2003). Парное программирование с подсветкой . Бостон: Аддисон-Уэсли Профессионал. ISBN  9780201745764 .
  12. ^ Флор, Ник В. (2006). «Глобально-распределенная разработка программного обеспечения и парное программирование». Коммуникации АКМ . 49 (10): 57–8. дои : 10.1145/1164394.1164421 . S2CID   8963421 .
  13. ^ Шюммер, Тилль; Стефан Лукош (сентябрь 2009 г.). «Понимание инструментов и методов распределенного парного программирования» (PDF) . Журнал универсальной информатики . 15 (16): 3101–3125 . Проверено 30 апреля 2010 г.
  14. ^ Agile Ajax: Парное программирование с VNC. Архивировано 2 апреля 2008 г. в Wayback Machine. [ самостоятельный источник ]
  15. ^ Парное программирование — окончательная настройка и другие варианты, которые мы опробовали. - Блог Джонатана Когли

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 985CC8E52B292E3AFA0403A6ACC6457B__1713939420
URL1:https://en.wikipedia.org/wiki/Pair_programming
Заголовок, (Title) документа по адресу, URL1:
Pair programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)