Ribinis programavimas

Ribinis programavimas, dar vadinamas ekstremaliu programavimu (, sutrumpintai XP) – populiariausias lanksčiojo programavimo metodas, suformuluotas Kent Beck, Ward Cunningham ir Ron Jeffries.

Bazinės praktikos 
Bazinės praktikos skirstomos į keturias grupes:

 Pastovus grįžtamasis ryšys (feedback)
 Testais paremtas programavimas
 Planavimo žaidimas
 Vientisa komanda (įtraukiant užsakovą)
 Programavimas poromis
 Nenutrūkstamas procesas
 Nuolatinis integravimas
 Pertvarkymas (refactoring)
 Smulkios laidos (releases)
 Bendras supratimas
 Paprastas projektas
 Sistemos metafora
 Bendra kodo nuosavybė
 Kodavimo standartai
 Programuotojo gerovė
 Pastovus tempas (jokių viršvalandžių)

Visos šios praktikos išvestos iš pripažįstamų geriausių praktikų, naudojant jas ribiniu atveju:
 Bendravimas tarp programuotojo ir kliento yra gerai. Todėl į ribinio programavimo komandą įtraukiamas užsakovas, detalizuojantis ir prioritizuojantis darbus, taip pat galintis iškart atsakyti į iškilusius klausimus.
 Mokymasis gerai. Todėl programavimo laikas (ciklas) sutrumpinamas iki mažiausio galimo, o testuojama programavimo metu.
 Kuo paprastesnis kodas, tuo didesnė tikimybė, kad jis gerai veiks. Taigi, programuojama tik tai, ko reikia, prireikus, eliminuojamas kompleksiškumas ir kodo dubliavimas. Per sudėtingas kodas perrašomas.
 Kodo peržiūros yra naudingos. Todėl XP programuotojai dirba poromis, prie vieno monitoriaus ir klaviatūros, todėl visas kodas peržiūrimas rašymo metu.
 Kodo testavimas yra gerai. Todėl automatiniai testai rašomi prieš pradedant rašyti kodą. Užduotis laikoma baigta tik tada, kai visi testai baigiami sėkmingai. Periodiškai paleidžiami visi anksčiau rašyti automatiniai testai, užtikrinant kad nesugadintas ankstesnis kodas. Radus klaidą, jai taip pat sukuriamas automatinis testas.

Dažniausiai teigiama, kad ribinis programavimas gali veikti tik mažose komandose iki 12 žmonių, tačiau kartais jis sėkminga veikia ir komandose su daugiau nei 100 programuotojų.

Ribinio programavimo metodikas naudojantys programuotojai dažnai renkasi dinamiškas, greičiau įgalinančias pasiekti reikiamų rezultatų programavimo kalbas.

Kritika 

Ribinio programavimo disciplinos esminė kritika -- kad šis procesas sukurtas iš programuotojo perspektyvos, jo tikslas yra suteikti programuotojui komfortiškas darbo sąlygas, tuo aukojant vadovybės ir užsakovų komfortą. Vadovybė negauna aiškaus projekto plano, negali įvertinti projekto trukmės. Užsakovas taip pat neturi fiksuoto projekto biudžeto ir kontraktinių garantijų, kad jo norima programa bus sukurta, bei turi paaukoti projektui vieno savo vertingiausių ir daugiausiai išmanančių darbuotojų ženklią laiko dalį. Užtat programuotojai turi privilegiją dirbti prie kodo, kuris yra norimai aukštos kokybės, kurti programą, kuri atitinka vartotojų poreikius, ir ne tik tuos, kurie buvo aiškūs projekto pradžioje, visada tilpti į terminus ir turėti laisvo laiko po darbo.

Visgi, dažniausiai ribinis programavimas kritikuojamas dėl paviršutiniškų aspektų:
 Programos kūrimo metu nesukuriama detali dokumentacija.
 Programuotojai dirba poromis.
 Prieš pradedant darbą nėra atliekami rimti planavimai.

Privalumai 
•Sukuria ir pristato programinę įranga klientui 2 savaičių iteracijomis.

•Pašalina klaidas ar keičia programinės įrangos funkcijas anksti, sutaupant kliento kaštus.

•Vietoj rašymo labai daug dokumentacijos, ko klientas nori, ši disciplina labiau fokusuojasi į grįžtamajį ryšį klientui.

•Rašomas kodas yra aiškus ir suprantamas

Trūkumai 
•Kodo kokybė nėra užtikrinama, kadangi ribinis programavimas fokusuojasi į paprastumą ir kodo aiškumą.

•Prasta dokumentacija. Labiau yra propaguojamas bendravimas su klientu ir teikiami pasiūlymai jam, arba koduojama negu dokumentuojamas kodas. Dėl prastos dokumentacijos būsimi pakeitimai gali sukelt bėdų produkto atnaujinime.

•Užsakovas turi dalyvauti produkto kūrime.
Programavimas
Programavimo metodologijos