Programowanie ekstremalne (ang. eXtreme Programming, XP) – paradygmat i metodyka programowania mające na celu wydajne tworzenie małych i średnich „projektów wysokiego ryzyka”, czyli takich, w których nie wiadomo do końca, co się tak naprawdę robi i jak to prawidłowo zrobić. Przyświeca temu koncepcja prowadzenia projektu informatycznego, wywodząca się z obserwacji innych projektów, które odniosły sukces.

Podstawą ekstremalnego programowania jest synergia wynikająca ze stosowania rozmaitych praktyk, które same w sobie mają wiele zalet, lecz mogą być trudne w zastosowaniu. Łączne użycie tych praktyk ma zapewniać wyeliminowanie niedogodności każdej z nich.

Podstawowe założenia zostały sformułowane przez Kenta Becka. Stroną, która służyła do wymiany poglądów na temat programowania ekstremalnego, było pierwsze na świecie Wiki Portland Pattern Repository założone przez Becka i Cunninghama.

Zalecenia

edytuj

Iteracyjność

edytuj

Program tworzy się w iteracjach (krótkie, przyrostowe kroki programistyczne) – i co ważniejsze – planuje tylko następną iterację. Efektem każdej iteracji (kilka tygodni) powinna być wersja programu spełniającą założenia dla danej iteracji. Następnie planuje się co zrobić dalej.

Odpowiada to zasadzie Open Source: „release early, release often” (wczesne i częste wydania).

Nie projektować z góry

edytuj

Nie można z góry przewidzieć, jaka architektura będzie najlepsza dla danego problemu. Dlatego należy ją tworzyć w miarę rozszerzania programu.

Testy jednostkowe

edytuj

Testy jednostkowe pisze się, zanim w ogóle zacznie się pisać kod – najlepiej na początku iteracji. Potem pisze się kod, który potrafi je wszystkie przejść. Takie testy dają zapewnienie (o ile testy są dobrze napisane), że to, co ważne, zostanie zaprojektowane, na to zaś, co nie jest ważne, programiści nie będą tracić czasu.

Ciągłe modyfikacje architektury

edytuj

Architektura nie jest czymś, czego nie wolno ruszać. Jeśli modyfikacja architektury ułatwi przejście danej iteracji i nie zepsuje wyników testów uzyskanych na poprzednich, należy ją wykonać. Pod tę zasadę podlega także usuwanie wszystkich znanych błędów przed rozszerzeniem funkcjonalności.

Programiści piszą w parach: jedna osoba pracuje przy klawiaturze i jest głównym koderem, druga obserwuje pierwszą, zgłasza poprawki, zadaje pytania wyjaśniające. Programiści programujący w parze zamieniają się rolami co kilkadziesiąt minut. Ta technika umożliwia wyłapanie wielu błędów oraz wzajemną naukę. Kod, którym zajmuje się tylko jedna osoba, ma tendencje do stawania się całkowicie niezrozumiałym dla kogokolwiek innego niż autor, więc dodatkowy programista zwiększa jakość kodu.

Nie jest jasne, czy sumarycznie łączna wydajność pracy przy takiej metodzie jest wyższa, taka sama, czy niższa niż w tradycyjnym programowaniu indywidualnym.

Stały kontakt z klientem

edytuj

Specyfikacje są prawie zawsze wieloznaczne, dziurawe i sprzeczne ze sobą. Tak więc należy mieć stały kontakt z tym, dla kogo to oprogramowanie jest tworzone (klient zamawiający program, czy też użytkownicy końcowi). Jeśli kontakt jest dobry, można się nawet obyć bez specyfikacji.

Kwestie kontrowersyjne

edytuj
  • Brak dokładnej specyfikacji.
  • Konieczna stała dostępność przedstawiciela klienta.
  • Wspólna „własność” kodu – każdy może zmieniać dowolny fragment systemu.

Zobacz też

edytuj

Linki zewnętrzne

edytuj

📚 Artikel Terkait di Wikipedia

Programowanie neurolingwistyczne

(doświadczeń i stanów emocjonalnych) oraz przenieść je w przyszłość. Swish pattern – metoda tworzenia skojarzeń pomiędzy sytuacją odbieraną negatywnie a sytuacją

Krzysztof Krawiec

czasopismach jak m.in. „Computational Intelligence", „Genetic Programming and Evolvable Machines", „Pattern Recognition Letters" oraz „Artificial Intelligence in

Michał Władysław Sobolewski

Gdańskiej, w 1978 obronił pracę doktorską A class of languages and models for pattern recognition, 14 marca 2012 habilitował się na podstawie dorobku naukowego

Model-View-Controller

Buschmann, Kevlin Henney, Douglas C. Schmidt: Pattern-oriented software architecture: On patterns and pattern languages Volume 5. Wiley, 2007, s. 178–179

Informatyka

of the four main programming paradigms [online], people.cs.aau.dk [dostęp 2020-03-27] . KrishnamurthiShriram, Teaching programming languages in a post-linnaean

Kent Beck

Implementation Patterns. Addison-Wesley, 2007. ISBN 0-321-41309-1. Using Pattern Languages for Object-Oriented Programs. wraz z Wardem Cunninghamem. OOPSLA'87

Przekleństwo wymiarowości

Konstantinos (2008). Pattern Recognition – 4th Edition. Burlington. Retrieved 8 January2018. Hughes, G.F.. On the mean accuracy of statistical pattern recognizers

Jakub Nalepa

„Soft Computing, Pattern Recognition Letters”, „Journal of Intelligent and Fuzzy Systems” czy „International Journal of Parallel Programming” oraz prezentował