Co to jest rozwój oprogramowania Agile? Manifest Agile i metody wyjaśnione

Agile to termin używany do opisania podejścia do rozwoju oprogramowania, które podkreśla stopniowe dostarczanie, współpracę zespołu, ciągłe planowanie i ciągłe uczenie się, zamiast próbę dostarczenia wszystkiego naraz na końcu.

Agile skupia się na utrzymaniu procesu w sposób zredukowany i tworzeniu Minimalnego Produktywnego Produktu (MVP), przechodząc przez wiele iteracji, zanim pojawi się ostateczny wynik. Zbierane i wdrażane są ciągłe opinie. Krótko mówiąc, jest to bardziej dynamiczny proces, w którym wszyscy pracują nad wspólnym celem.
Agile Software Development
Rozwój oprogramowania Agile

Scrum i inne wiodące metody Agile

Agile to mentalność — zbiór wartości i zasad. To sposób myślenia i działania. Agile oznacza krótkie cykle, iteracyjne i stopniowe dostarczanie, szybkie porażki, zbieranie opinii, szybkie dostarczanie wartości biznesowej oraz skupienie się na ludziach, współpracy i interakcji. Agile to mentalność przejrzystości, inspekcji i adaptacji. Jednak Agile nie obejmuje żadnych rol, wydarzeń lub artefaktów. To mentalność. Na przykład, Scrum to jedna z szeroko używanych struktur pod zadaszeniem Agile, pomagając Ci stać się bardziej agilnym. Jednak ruch Agile obejmuje wiele innych struktur, takich jak Kanban, XP, Crystal i inne, jak pokazano poniżej:
Scrum Agile Umbrella
Scrum pod zadaszeniem Agile

Scrum

Scrum to struktura, którą ludzie wykorzystują do rozwiązywania złożonych problemów adaptacyjnych, jednocześnie efektywnie i kreatywnie dostarczając produkty o wysokiej wartości. Służy do zarządzania projektami oprogramowania oraz rozwoju produktów lub aplikacji. Skupia się na strategiach adaptacyjnego rozwoju produktów, w których zespoły wieloosobowe pracują razem nad wspólnym celem w ciągu 2–4 tygodni (Sprint). Składa się z serii wartości, artefaktów, ról, ceremonii, zasad i najlepszych praktyk.

Lean

Lean pochodzi z systemu produkcji Toyoty (TPS), który przełomowo zmienił produkcję dóbr fizycznych w latach 50., 60. i dalej. Choć Lean utrzymuje swoje miejsce w produkcji, znalazł również nowe zastosowania w pracy intelektualnej, pomagając firmom we wszystkich gałęziach przemysłu **usuwać straty, poprawiać procesy i promować innowacje**. Rozwój oprogramowania to naturalne dopasowanie do metod Lean, ponieważ podobnie jak produkcja, często podlega ustalonym procesom, ma zdefiniowane kryteria akceptacji i prowadzi do dostarczania wartości tangiblnych. Kluczowe koncepcje kierujące wszystkimi praktykami Lean nazywane są belkami Lean. Są to:
  • Ciągła poprawa
  • Szacunek dla ludzi
  • Lekka liderowość

Kanban

Kanban to bardzo wizualna metoda zarządzania przepływem pracy szeroko stosowana w zespołach Lean. W rzeczywistości 83% zespołów produkcyjnych Lean wykorzystuje Kanban do wizualizacji i aktywnego zarządzania tworzeniem produktu, skupiając się na ciągłym dostarczaniu bez przeciążania zespołu programistów. Podobnie jak Scrum, Kanban to proces zaprojektowany, aby pomóc zespołom skuteczniej współpracować.
Kanban opiera się na trzech podstawowych zasadach:
  • Wizualizuj swoją pracę dzisiaj (przepływ pracy): Przeglądanie wszystkich elementów w kontekście wzajemnym może dostarczyć bogatych, wartościowych informacji.
  • Ograniczona liczba zadań w toku (WIP): Pomaga zrównoważyć podejścia oparte na przepływie, dzięki czemu zespoły nie zaczynają i nie zobowiązuje się do zbyt dużej ilości pracy od razu.
  • Ulepsz proces: Gdy zadanie zostanie ukończone, aktywuje się następny element o najwyższym priorytecie w kolejce zadań.
Kanban promuje ciągłą współpracę poprzez zdefiniowanie optymalnego przepływu pracy zespołu i zachęca do aktywnego, ciągłego uczenia się i poprawy.

Metoda dynamicznego rozwoju systemów (DSDM)

DSDM to framework złożony z ośmiu zasad, obejmujących cykl życia i produkt, role i odpowiedzialności oraz kilka najlepszych praktyk. Te zasady wspierają i umożliwiają wczesne dostarczanie strategicznie istotnych korzyści biznesowych, co zapewnia najlepszy zwrot z inwestycji (ROI) dla organizacji.
DSDM to metoda, która kładzie nacisk na planowanie i jakość zamiast funkcjonalności. Ustala koszt, jakość i czas od samego początku i wykorzystuje technikę priorytetyzacji MoSCoW do podziału wymagań projektu na cztery typy:
  • Mmuszą mieć
  • Spowinny mieć
  • Cmogłyby mieć
  • Wnie mają mieć
Osiem wspierających zasad DSDM Atern [13] prowadzi zespoły w kierunku postaw i nastawień, które muszą przyjąć, aby stale dostarczać wartość.
  1. Skup się na potrzebach biznesowych
  2. Dostarcz na czas
  3. Współpracuj
  4. Nigdy nie kompromituj jakości
  5. Buduj krok po kroku od solidnej podstawy
  6. Rozwój iteracyjny
  7. Ciągła jasna komunikacja
  8. Pokaż kontrolę

Ekstremalne programowanie (XP)

Pierwotnie opisane przez Kenta Becka,Ekstremalne programowanie (XP) stało się jedną z najpopularniejszych i najbardziej kontrowersyjnych metod Agile. XP to dyscyplinowane podejście do szybkiego i ciągłego dostarczania oprogramowania wysokiej jakości. Ma na celu poprawę jakości oprogramowania i reaktywność na zmieniające się potrzeby klientów. Promuje wysokie zaangażowanie klienta, szybkie cykle zwrotu, ciągłe testowanie, ciągłe planowanie i bliską współpracę zespołu, dostarczając działające oprogramowanie w bardzo częstych odstępach czasu (zazwyczaj co 1–3 tygodnie).
Nazwa metody pochodzi z idei pobierania korzystnych elementów z tradycyjnych praktyk inżynierii oprogramowania i prowadzenia ich do „ekstremalnego” poziomu. Na przykład, przeglądy kodu są uznawane za korzystną praktykę. W ekstremalnej formie kod jest ciągle inspektywowany poprzez praktykę programowania w parach.
Pierwotny framework XP opiera się na czterech podstawowych wartościach — prostoty, komunikacji, zwrotu informacji i odwagi.
Zawiera również dwanaście wspierających praktyk:
  • Gra planowania
  • Małe wersje
  • Testy akceptacji przez klienta
  • Prosty projekt
  • Programowanie w parach
  • Rozwój oparty na testach
  • Refaktoryzacja
  • Integracja ciągła
  • Wspólna własność kodu
  • Standardy kodowania
  • Metafora
  • Zrównoważony rozwój
Extreme Programming
Ekstremalne Programowanie

Rozwój oparty na funkcjach (FDD)

Rozwój oparty na funkcjach (FDD) został wprowadzony przez Jeffa De Luca w 1997 roku podczas projektu rozwoju oprogramowania w dużej banku singapurskim. Jest to iteracyjny i inkrementalny proces rozwoju oprogramowania oraz podejście Agile do budowania oprogramowania. FDD integruje wiele powszechnie uznawanych najlepszych praktyk branżowych w jednolity system. Te praktyki są kierowane z perspektywy wartości klienta — funkcji. Jej głównym celem jest dostarczanie rzeczywistego, działającego oprogramowania w sposób powtarzalny i na czas. Kluczową zaletą stosowania FDD jest możliwość skalowania na duże zespoły dzięki koncepcji „Wystarczająco dobrego projektowania” (JEDI). Dzięki swojemu procesowi skupionemu na funkcjach, FDD jest doskonałym rozwiązaniem do utrzymania kontroli nad projektami Agile, inkrementalnymi i z natury skomplikowanymi. Składa się z pięciu podstawowych działań:
  1. Opracowanie modelu ogólnego
  2. Stworzenie listy funkcji
  3. Planowanie według funkcji
  4. Projektowanie według funkcji
  5. Budowanie według funkcji
Feature-Driven Development (FDD)
Rozwój oparty na funkcjach (FDD)
Każdy projekt ma własny unikalny model, który generuje listę funkcji. Ostatnie trzy działania to krótkie iteracje, każda trwająca nie dłużej niż dwa tygodnie. Jeśli zadanie trwa dłużej niż dwa tygodnie, jest dzielone na mniejsze funkcje.

Crystal

Metody Crystal zostały opracowane przez Alistaira Cockburna w połowie lat 90. jako seria podejść (rodzina Crystal). Te metody pochodzą z lat nauki i rozmów z zespołami przeprowadzonych przez Cockburna. Badania Cockburna wykazały, że zespoły, które przeprowadził, nie stosowały formalnych metodologii, a mimo to realizowały pomyślne projekty. Rodzina Crystal to sposób Cockburna na katalogowanie tego, co te skuteczne zespoły robiły. Metody Crystal skupiają się przede wszystkim na:
  • Ludzie
  • Interakcja
  • Społeczność
  • Umiejętność
  • Talent
  • Komunikacja

Manifest Agile

Termin „Agile” został wprowadzony w Manifeste Agile z 2001 roku. Manifest ma na celu ustanowienie zasad kierujących lepszymi praktykami tworzenia oprogramowania. Manifest Agile składa się z czterech podstawowych wartości. Przeczytanie Manifestu Agile nie oznacza, że elementy po prawej stronie są bezwartościowe — wręcz przeciwnie, Agile ceni elementy po lewej stronie bardziej.
Agile Manifesto
Manifest Agile
Spójrzmy teraz na pierwszy wiersz Manifestu Agile. Ten wiersz mówi, że czerpiemy większą wartość z ludzi, ich interakcji, komunikacji i współpracy niż z różnorodnych szerokich procesów i narzędzi. Oczywiście procesy i narzędzia są wartościowe, ale stają się jeszcze bardziej wartościowe, gdy rzeczywiście wspierają ludzi pracujących razem nad dostarczaniem produktów o wysokiej jakości. Często w wielu organizacjach obserwujemy, że procesy i narzędzia stają się celami na siebie. Z perspektywy Agile patrzymy na to inaczej. Procesy i narzędzia powinny wspierać ludzi pracujących razem, aby tworzyć wartość dla klientów.

Zasady Agile

Jako uzupełnienie Manifestu Agile, Agile Alliance również zdefiniowała zestaw 12 zasad, które zapewniają przewodnik i bardziej szczegółowe wyjaśnienia poza samym manifestem:
Agile Manifesto Principles
Zasady Manifestu Agile
  1. Najwyższym priorytetem jest zadowolenie klienta poprzez wczesne i ciągłe dostarczanie wartościowego oprogramowania.
  2. Witamy zmieniające się wymagania, nawet na późnym etapie rozwoju. Procesy Agile wykorzystują zmiany na rzecz przewagi konkurencyjnej klienta.
  3. Dostarczaj gotowe oprogramowanie często — od kilku tygodni do kilku miesięcy, z preferencją dla krótszych okresów.
  4. Ludzie biznesu i programiści muszą wspólnie pracować codziennie przez cały projekt.
  5. Twórz projekty wokół motywowanych osób. Daj im środowisko i wsparcie, które potrzebują, i ufasz im, by wykonały zadanie.
  6. Najefektywniejszą metodą przekazywania informacji do i wewnątrz zespołu rozwojowego jest rozmowa twarzą w twarz.
  7. Gotowe oprogramowanie jest podstawowym miarodajnikiem postępu.
  8. Procesy Agile promują zrównoważony rozwój. Sponsory, programiści i użytkownicy powinni móc utrzymywać stały temp o nieograniczoną długość czasu.
  9. Nieustanna uwaga na doskonałość techniczną i dobre projektowanie zwiększa elastyczność.
  10. Prostota — sztuka maksymalizacji ilości niezrobionej pracy — jest istotna.
  11. Najlepsze architektury, wymagania i projekty powstają w zespołach samodzielnie organizujących się. Zespoły regularnie analizują, jak mogą stać się bardziej efektywne, a następnie dostosowują swoje zachowanie odpowiednio.

Podsumowanie

Rozwój Agile to popularny termin w branży tworzenia oprogramowania — alternatywny sposób zarządzania projektami tworzenia oprogramowania. Nie jest to konkretna metodyka tworzenia oprogramowania, lecz raczej zbiór metod i praktyk opartych na wartościach i zasadach wyrażonych w Manifeste Agile. Rozwiązania ewoluują dzięki współpracy między zespołami samodzielnie organizującymi się i wielostronnymi, wykorzystując praktyki dostosowane do ich kontekstu.

Leave a Reply