[[File:Pair programming 1.jpg|thumb|ProgrammazioneDue dicolleghi che programmano in coppia (2007)]]▼
{{F|ingegneria del software|febbraio 2013}}
▲[[File:Pair programming 1.jpg|thumb|Programmazione di coppia]]
IlLa '''pairprogrammazione programmingin coppia''', (letteralmentemeglio "programmazionenota income coppia")'''''pair programming''''', è una tecnica [[metodologia agile|agiledi sviluppo del software]] di tipologia [[sviluppometodologia del softwareagile|agile]] nella quale due programmatori lavorano insieme asulla unastessa postazione di lavoro.<ref name=":1">{{Cita Unopubblicazione|nome=L.|cognome=Williams|data=2001|titolo=Integrating pair programming into a software development process|rivista=Proceedings 14th Conference on Software Engineering Education and Training. 'In search of a software engineering profession' (Cat. No.PR01059)|editore=IEEE Comput. Soc|pp=27-36|accesso=2023-01-23|doi=10.1109/CSEE.2001.913816|url=http://ieeexplore.ieee.org/document/913816/}}</ref><ref name=":0">{{Cita web|url=https://www.codecademy.com/resources/blog/what-is-pair-programming/|titolo=What Is Pair Programming?|data=2021-09-24|lingua=en|accesso=2023-01-23}}</ref> deiI due,indicatosolitamente comehanno due ruoli distinti che possono scambiarsi: uno, detto "conducente" ("''driver"''), scriveha il compito di scrivere il codice;, mentre l'altro, detto "osservatore" ("''observer"'') o "navigatore" ("''navigator"''), svolge unè ruoloincaricato di supervisionesupervisionare e dicorreggere revisioneil simultaneacodice delman codicemano che viene scritto.<ref name=":1" /><ref name=":0" /> Il conducente ha l'obiettivo principale di portare a termine una soluzione funzionante del problema in considerazione, mentre al navigatore è lasciato il compito di segnalare errori del conducente o proporre strategie alternative di soluzione.<ref name=":1" />
Il pair programming è in genere applicato insieme ad altri concetti tipici delle metodologie agili e dell'''[[extreme programming]]''. Per esempio, l'attività di sviluppo viene in genere suddivisa in brevi cicli di sviluppo vincolati temporalmente (''[[timeboxing]]''), e ciascun ciclo si conclude con un rilascio del codice sviluppato ([[integrazione continua]]). In molti casi, i due programmatori si scambiano di ruolo al termine di ciascun ciclo di sviluppo.
==VocicorrelateNote ==
<references />
== Voci correlate ==
* [[Metodologia di sviluppo del software]]
* [[Metodologia agile]]
* [[Extreme programming]]
== Altri progetti ==
{{interprogetto|preposizione=sulla}}
{{portale|informatica}}
[[Categoria:MetodologieMetodi di sviluppo software]]