# Programazio talde

Programazio talde bat softwarea garatzen edo mantentzen duen pertsonen taldea da. Modu askotara antolatuta egon daitezke, egitura nagusiak bi dira: ego gabeko programazio taldea (egoless programming team) eta nagusidun programazio taldea (chief programmer team).

## Programazio egiturak

Programazio egitura bat aukeratzeko orduan determinatzaile nagusiak gehienetan hurrengoak dira: zailtasuna, luzera, iraupena, modularitatea, erlatibitatea, denbora eta soziabilitatea.

### Egoless programing

Ego gabeko programazioa hamar edo gutxiago taldekidentzako pentsatutako egitura da. Kodea partekatzen da eta helburuak taldekideen artean erabakitzen dira. Lidergoa aldatzen doa taldekideen artean proiektuaren beharrizanen eta taldekideen gaitasunen arabera. Proiektu egitura hauen hierarkia eza ahultasun bat izan daiteke eskala handiko proiektuetan efizientzia, eraginkortasun eta errore detekzioan. Ego gabeko programazioa oso konplexuak diren atazetarako eraginkorra da.

### Chief programmer team

Nagusidun programazio taldeak normalean hiru pertsonaz osatuta egoten dira: programatzaile nagusia, senior mailako programatzailea eta programa liburuzaina. Programatzaileak eta analistak sartu egiten dira beharrezkoak direnean. Egitura honen ahuleziak hurregoak dira: taldekideen arteko komunikazio falta, zereginen lankidetza eta ataza konplexuen ebazpena. Talde mota honek sinpleak eta luzeak diren proiektuetarako balio du taldearen informazio fluxua mugatua delako. Egitura mota honetan lan egiten duten banakoek normalean lan moral txikia salatzen dute.

### Lanpostu partekatuko taldeak
#### Pair programmig

Garapen teknika bat da non bi programatzaileek batera lan egiten duten lanpostu berean.

#### Mob programming

Software garapen teknika bat da non talde osoa batera lan egiten duen ataza berean, momentu berean, leku berean eta ordenagailu berean.

## Programazio ereduak

Softwarea garatzeko taldeak programazio ereduez baliatzen dira proiektuak garatu, hedatu eta probatzeko metodologia ezberdin hauek erabiliz.

### Ur-jauzi eredua

Ur-jauzi eredua metodologia tradizionalena da eta programazio linealeko eredua da. Metodologia horren gertaerak honelako sekuentzia jarraitzen dute:
* Informazio bilketa eta dokumentazio eskakizunak
* Diseinua
* Kodeketa eta test unitarioak
* Sistema probatu
* Erabiltzailearen onarpen probak (UAT)
* Arazoen konponketa
* Produktu finala entregatu
Egoera bakoitza software garapen fase desberdin bat da eta egoera bat bukatzen denean hurrengoa hasten da.
Ur-jauzi eredua erabiltzen duten programazio taldeek, proiektua, garapenaren hasieran diseinatzeko gai dira eta kodeketan eta testetan lan gehiago egin dezakete. Diseinua aurretik egitean, talde osoak ulertzen du proiektua, eta ez da diseinua aldatzen kodetzen den bitartean.

### Eredu arina

Garapen eredu arina aurreko ur-jauzi ereduaren talde lanari bideratutako bertsio bat da. Taldeek proiektua sprint deituriko fasetan zatitzen dute eta oso arin lan egiten dute. Fase hauek bi aste inguru irauten duten lanak dira non taldekide/talde bakoitzari ataza bat egokitzen zaio.
Sprint bakoitzaren ondoren lana lehengoratzen da eta aurreko sprint-etan lortutako jakintza hurrengo planifikaziorako erabiltzen da. Sprint-a bukatzerakoan berrikusi egiten da eta beharrezkoa bada berregiten da edo itxi egiten da lana amaitu bada.
Agile Manifesto-aren printzipio nagusiak hauek dira:
* Bezeroa asetu eta softwarea etengabe garatu.
* Bezeroaren lehiakortasun abantaila lortzeko aldatzen diren eskakizunak jasotzen dira.
* Erabilgarria den softwarea maiz entregatzean arreta jarri. Entregatzeko lehentasuna ahalik eta denbora laburrenean ezarriko da.
* Garatzaileek eta enpresariek elkarrekin lan egin behar dute proiektu osoan zehar.
* Proiektuek motibatuta dauden pertsonetan oinarrituta egon behar dute. Ingurune egokia eta behar duten laguntza eman. Konfiantza izan beharko lukete lanak egiteko.
* Face-to-face komunikazioa talde batera eta bertatik transferitzeko modurik onena da.
* Funtzionatzen duen softwarea da aurrerapenaren neurketa nagusia.
* Prozesu arinek garapen jasangarria sustatuko dute. Babesleek, garatzaileek eta erabiltzaileek erritmo mugagabea eta etengabea izan beharko lukete.
* Bikaintasun teknikoari eta diseinu onari arreta jarriz arintasuna hobetuko da.
* Autoantolatutako taldeek diseinu onenak sortu ohi dituzte.
* Aldian-aldian, taldeak eraginkorrago bihurtzeko moduari buruz hausnartuko du, eta portaera egokituko du.

## Erreferentziak

* 1 2 Belzer, Jack. (2020-02-03). Encyclopedia of Computer Science and Technology. doi:10.1201/9780367810818. (Noiz kontsultatua: 2020-11-19).
* 1 2 3 Mantei, Marilyn. (1981-03). «The effect of programming team structures on programming tasks» Communications of the ACM 24 (3): 106–113. doi:10.1145/358568.358571. ISSN 0001-0782. (Noiz kontsultatua: 2020-11-19).
* 1 2 Ajam, Mounir A.. (2018-01-02). «Development Phase – Strategy Stage» Project Management beyond Waterfall and Agile (Auerbach Publications): 131–142. ISBN 978-1-315-20207-5. (Noiz kontsultatua: 2020-11-19).
* ↑ Parnell-Klabo, E.. «Introducing Lean Principles with Agile Practices at a Fortune 500 Company» AGILE 2006 (AGILE'06) (IEEE) doi:10.1109/agile.2006.35. ISBN 0-7695-2562-8. (Noiz kontsultatua: 2020-11-19).
* ↑ Linchpin SEO Team (March 26, 2019), A Beginners Guide To The Agile Method & Scrums

## Kanpo estekak

* Datuak: Q7248509