Páros programozás

A Wikipédiából, a szabad enciklopédiából
Ugrás a navigációhoz Ugrás a kereséshez
Két munkatárs páros programozása. A kép 2007-ben készült.

A páros programozás egy agilis szoftverfejlesztési technika, amelyben két programozó dolgozik egy munkaállomásnál. Az egyikük a kódot írja, míg a másik pedig ellenőrzi az elkészült munkát. A páros programozás során a kódot író személyt sofőrnek, az ellenőrzést végzős megfigyelőnek vagy navigátornak nevezik.[1] A két programozó gyakran felcseréli a szerepeket.

A megfigyelő a kódellenőrzés során figyelembe veszi a munka stratégiai irányát, és javaslatokat dolgoz ki a tökéletesítésre és a jövőbeli problémák megoldására. Ennek az a célja, hogy a sofőrnek ne kelljen fókuszálnia az éppen végrehajtott feladat taktikai szempontjaira. A sofőr számára a megfigyelő biztonsági hálót és vezetőt jelent.

Gazdaságosság[szerkesztés]

A páros programozás több munkaórát igényel, hogy leszállítson egy adott feladatot, mint a függetlenül dolgozó programozók esetén.[2] A létrejött kód azonban sokkal kevesebb hibát tartalmaz. A páros programozás elméletileg ellensúlyozhatja a fejlesztési időt, minőségellenőrzést és egyéb kiadási faktorokat, hiszen csökkenti a programhibák számát.[3]

A hibák csökkentése mellett egyéb előnyök is lehetségesek. Például a sofőrnek nem kell telefonhívásokkal és egyéb zavaró tényezőkkel foglalkoznia, mert ezeket elintézi helyette a megfigyelő. Amíg ketten együtt dolgoznak, kevesebb rendkívüli szünetet kell tartani, pontosabban lehet tartani a munkaidő-beosztást. A megfigyelő kiszúrhatja a sofőr által elkövetett programhibákat, emellett segíthet neki fókuszálni a munkára. A programozó pár egyik tagjának lehet magasabb tudása bizonyos témákban vagy technikákban. Emiatt könnyebb lehet megtalálni a megoldást bizonyos problémákra, és a kisebb tudású programozók készségei fejlődhetnek. Ezeket az előnyöket nehéz pontos számadatokkal mérni, de egyértelműen hozzájárulnak a hatékonyabb munkaidő kihasználáshoz.

A tervezés minősége[szerkesztés]

A páros programozás az alábbi okok miatt nagy potenciállal rendelkezik a problémák változatosabb megoldására:

  1. a feladatban részt vevő programozók különböző korábbi tapasztalatokkal rendelkeznek;
  2. különböző módokon értékelik a feladathoz releváns információt;
  3. a funkcionális szerepeik miatt különböző kapcsolatban vannak a megoldandó problémával;

A programozó párnak közösen kell megbeszélnie a teendőket, hogy eredményesen tudjanak dolgozni. Közös célokkal és tervekkel kell rendelkezzenek, és egyetértésben kell kidolgozniuk a megoldásukat. Sokféle lehetséges megoldást kell fontolóra venniük. Többet, mint egy egyedül dolgozó programozónak. Ez a metódus nagymértékben növeli a kód dizájn minőségét, mivel csökkenti az alacsony minőségű megoldási lehetőségek kiválasztásának esélyét.[4]

Elégedettség[szerkesztés]

Egy páros programozókról 2000-ben készített online kutatás szerint a programozók 96 százaléka azt állította, hogy jobban élvezte a munkát párban, mint egyedül. 95 százalékuk azt nyilatkozta, hogy magabiztosabb volt munka közben, amikor párban programozott.[5]

Tanulás[szerkesztés]

A párban dolgozó programozók folyamatosan megosztják egymással a tudásukat. Főként programozási nyelvi fortélyokat és átfogó tervezési elveket tanulnak egymástól.[5] [6] A vegyes párosítású módszer szerint a programozók nem egy meghatározott párral dolgoznak együtt, hanem a folyamatosan cserélgetik a párosításokat a munkahelyen dolgozó programozók között. Ez a változatos beosztás azt eredményezi, hogy a programozók átlagos tudása folyamatosan emelkedik a csapatban.[3] A páros programozás során a programozók megvizsgálják a partnerük kódját, és elmondják a véleményüket. Ez ahhoz szükséges, hogy fejlesszék saját képességeiket, valamint hogy tanuljanak és tanítsanak is egy időben.

Csapatépítés és kommunikáció[szerkesztés]

A páros programozás megengedi a csapattagoknak, hogy gyorsan megosszák egymással tudásukat és véleményüket. Ez segít a programozóknak, hogy könnyebben kommunikáljanak. A páros programozás során növekszik a csapaton belüli információáramlás.[3]

Tanulmányok[szerkesztés]

Empirikus tanulmányok és metaelemzések is készültek a páros programozás témakörében. Az empirikus tanulmányok inkább a termékenység szintjét és a kód minőségét vizsgálják, míg a meta-elemzések a tesztelés és publikálás által létrejött elfogultságokra fókuszálnak.

A meta-elemzések szerint a programozó párok több tervezési lehetőséget vesznek fontolóra, mint az egyedülálló programozók. A páros programozók által készített kód karbantartása egyszerűbb és a tervezési hibákat hamarabb észreveszik a kód írása közben. A meta-elemzések eredményeinek értékelésekor elfogultságot állapítottak meg. Ennek folyományaként nem lehet megállapítani, hogy a páros programozás egységesen előnyös vagy hatékony lenne.[7]

Annak ellenére, hogy páros programozás alkalmazásával a feladat hamarabb elkészülhet, mintha egyedülálló programozó dolgozna rajta, a munkaórák száma párok esetén magasabb.[2] Az egyes feladatok között egyensúlyozni kell a gyorsabb kivitelezést és a csökkentett tesztelési időt a kódolás magasabb óradíjával. Az előbbi faktorok súlyozása projektenként és feladatonként vizsgálva eltérhet.

A páros programozás azon feladatoknál a legelőnyösebb, amelyeket a programozók nem tudnak teljes mértékben megérteni a munka elkezdésekor. Ezen feladatok nagy kihívást jelentenek, és magasszintű kreativitást és kifinomultságot követelnek.[2] Az egyes feladatok között egyensúlyozni kell a gyorsabb kivitelezést és a csökkentett tesztelési időt a kódolás magasabb óradíjával. Az előbbi faktorok súlyozása projektenként és feladatonként vizsgálva eltérhet.[7]

A programozók által teljes mértékben megértett, egyszerűbb feladatok esetén a páros programozás termelékenysége jóval alacsonyabb az egyke programozóhoz képest.[2][8] Lehetséges, hogy csökkenti a kódfejlesztés idejét, de fennáll a kód minőség csökkenésének kockázata.[7] A termelékenység ugyancsak csökken, ha két kezdő programozót állítanak rá egy feladatra megfelelő mentor segítsége nélkül.[9]

A teljesítménycsökkenés jelei[szerkesztés]

Az alábbi jelek mutatják, hogyha egy programozó pár nem teljesít megfelelően:

  • Elszakadásról beszélünk, amikor a pár egyike fizikailag otthagyja a fejlesztőkörnyezetet, megnézi az e-mail fiókját, vagy elalszik.
  • A „Figyeld a mestert” jelenség következhet be akkor, amikor a pár egyik tagja sokkal tapasztaltabb, mint a másik. Ebben a helyzetben a tapasztalatlanabb tag megfigyelő szerepbe kényszerülhet, a kódolás többségi része pedig a tapasztaltabb tagra marad. Ez a jelenség könnyen elszakadáshoz vezethet.

Párok létrehozásának lehetőségei[szerkesztés]

Szakértő – Szakértő
Egy ilyen páros nyilvánvaló választás lehet a legmagasabb termelékenység eléréséhez. Egy ilyen páros nagyszerű eredmények elérésére képes, de sokszor nem vesződnek új megoldások keresésével, mert nem kérdőjelezik meg a régi jól bevált gyakorlatokat.[2]
Szakértő – Kezdő
Ez a párosítás sok lehetőséget jelent a kezdőnek, hogy tanuljon a szakértőtől. Ez a párosítás új ötleteket létrehozására is alkalmas, mivel egy kezdő nagyobb eséllyel kérdőjelezi meg a bevált gyakorlatokat. A szakértőnek meg kell magyaráznia ezeket a módszereket, és eközben átgondolja ezeket, és lehetnek ötletei hogyan lehetséges ezeket tökéletesíteni. Ebben a párosításban a kezdő passzívvá válhat, és hezitálhat abban, hogy kifejtse a konstruktív ötleteit. Néhány szakértőnek valószínűleg nincs ahhoz türelme, hogy támogassa a kezdőt a konstruktív ötletelésben.[10]
Kezdő – Kezdő
Ez a párosítás jelentősen jobb eredményt biztosít, mintha ezek a kezdők külön-külön dolgoznának. Szakértői mentorálás nélkül nehezebb a kezdőknek fejlődni, ezért ezt a párosítást nem javasolják.[3]

Távoli páros programozás[szerkesztés]

A távoli páros programozás, másnéven virtuális vagy elosztott páros programozás során a két programozó földrajzi értelemben két különböző helyen tartózkodik,[11] és közös munkát lehetővé tevő valós-idejű szerkesztő, megosztott asztal vagy IDE kiegészítő alkalmazás használatával dolgoznak. A személyes kapcsolat és a verbális kommunikáció hiánya miatt konfliktusok és zűrzavarok alakulhatnak ki.[12]

Támogató eszközök

  • Képernyőmegosztó szoftverek
  • Terminál multiplexerek
  • Speciális elosztott szerkesztő eszközök
  • Audio chat programok vagy VoIP szoftverek nagy segítséget nyújthatnak, ha a képernyőmegosztó program nem támogatja a hang alapú kommunikációt. Headsetek használatával a programozók keze szabad marad.
  • Felhőalapú fejlesztő környezetek
  • Együttműködést támogató páros programozás szolgáltatások

Hivatkozások[szerkesztés]

  1. Williams (2001. február 19.). „Integrating pair programming into a software development process”.: 27–36. doi:10.1109/CSEE.2001.913816. 
  2. a b c d e Lui (2006. szeptember 1.). „Pair programming productivity: Novice–novice vs. expert–expert”. International Journal of Human–Computer Studies 64 (9), 915–925. o. [2011. július 20-i dátummal az eredetiből archiválva]. DOI:10.1016/j.ijhcs.2006.04.010. (Hozzáférés ideje: 2012. november 18.)  
  3. a b c d Cockburn (2000). „The Costs and Benefits of Pair Programming”. Proceedings of the First International Conference on Extreme Programming and Flexible Processes in Software Engineering (XP2000).  
  4. Flor, Nick V..szerk.: Koenemann-Belliveau: Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance, Empirical Studies of Programmers: Fourth Workshop. Ablex, 36–64. o. (1991). ISBN 978-0-89391-856-9 
  5. a b Williams (2000). „Strengthening the case for pair programming”. IEEE Software 17 (4), 19–25. o. DOI:10.1109/52.854064.  
  6. Williams (2001). „In support of student pair programming”. ACM SIGCSE Bulletin 33 (1), 327–31. o. DOI:10.1145/366413.364614.  
  7. a b c Hannay (2009. július 1.). „The Effectiveness of Pair Programming: A Meta-Analysis”. Information and Software Technology 51 (7), 1110–1122. o. DOI:10.1016/j.infsof.2009.02.001.  
  8. Arisholm (2007. február 1.). „Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise”. IEEE Transactions on Software Engineering 33 (2), 65–86. o. [2010. október 29-i dátummal az eredetiből archiválva]. DOI:10.1109/TSE.2007.17. (Hozzáférés ideje: 2008. július 21.)  
  9. Stephens: Will Pair Programming Really Improve Your Project?. (Hozzáférés: 2011. május 28.)
  10. Williams, L.. Pair Programming Illuminated. Boston: Addison-Wesley Professional (2003. október 22.). ISBN 9780201745764 
  11. Flor (2006). „Globally distributed software development and pair programming”. Communications of the ACM 49 (10), 57–8. o. DOI:10.1145/1164394.1164421.  
  12. Schümmer (2009. szeptember 1.). „Understanding Tools and Practices for Distributed Pair Programming”. Journal of Universal Computer Science 15 (16), 3101–3125. o. (Hozzáférés ideje: 2010. április 30.)  

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Pair programming című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.