niedziela, 18 marca 2012

Programowanie ekstremalne jako jedna z agailowych metod realizacji wymagań

Programowanie ekstremalne (ang. extreme programming) to metodyka realizacji projektów dla której podwaliny stworzył Ken Beck. Podstawowym założeniem metodyki jest iteracyjne tworzenie działających kawałków większej całości, planujemy tylko najbliższą iterację. Każda iteracja kończy się spełnieniem założeń pokładanych w ramach tej iteracji, przyświeca temu zasada wczesnych i szybkich wydań działającego kodu.

extreme programing
2 programistów pracujących w parze
Stosujemy ją do nowatorskich projektów gdzie na początku trwania projektu nie wiemy do końca jak ma wyglądać wynik końcowy lub nie wiemy jaką najlepiej metodą dojść do wyniku finalnego. W miarę rozwoju produktu klient sam doprecyzowuje to co sobie życzył. Zadaniem zespołu może być stworzenie czegoś od nowa, wykonanie zmiany do projektu już istniejącego lub poprawki usprawniające działanie.

Metodyka nie stawia na dokumentację, która często ze względu na zmieniające się szybko założenia szybko traci na aktualności. Dlatego metodyka stawia bardzo mocno na komunikację z klientem, to właśnie klient doprecyzowuje szczegóły produktu który ma od nas dostać.  

Technikami które wspierają proces programowania ekstremalnego są: 

  • programowanie w parach, gdzie jeden programista tworzy kod a drugi nadzoruje pisanie, zadaje pytania kontrolne, dokonuje przeglądów, co około 1h programiści zamieniają się rolami. Technika z powodzeniem  pozwala na wyłapanie błędów na wczesnym etapie oraz wzajemną naukę. Dodatkowym zyskiem jest fakt iż kod pisany przez dwóch programistów będzie czytelniejszy (należy strosować wzorce programowania)
  • testy jednostkowe, drugą techniką są unit testy, pisane zanim programiści usiądą i zaczną pisać właściwy kod, testy jednostkowe wytwarza się na początku iteracji tak aby później pisząc kod można go było przez owe testy przepuszczać. Te testy są doskonałym sitem dla powstających na wczesnym etapie pisana kodu błędów i pozwala dokładnie testować kod (code coverage).

Każdy w zespole odgrywa istotną rolę, ponieważ programowanie może się również odbywać w ramach większej grupy bądź kilku dwu osobowych zespołów. Zazwyczaj w skład zespołu wchodzą programiści, testerzy, analitycy, trenerzy oraz manager. Rolą testera i analityka biznesowego jest współpraca z klientem, powterdzająca że zespół idzie w właściwym kierunku oraz wewnętrzny proces idzie po właściwym torze. Trener trzyma zespół we właściwej koncentracji na celu, a manager ma po swojej stronie zapewnienie właściwego przepływu informacji, organizację pracy i likwidowanie przeszkód przed zespołem.