Scrum - przegląd

Agile stał się jednym z największych modnych słów w branży tworzenia oprogramowania. Ale czym właściwie jest programowanie zwinne? Mówiąc prościej, zwinne tworzenie oprogramowania to inny sposób wykonywania zespołów i projektów programistycznych.

Aby zrozumieć, co nowego, podsumujmy tradycyjne metody. W konwencjonalnym rozwoju oprogramowania wymagania produktu są finalizowane przed przystąpieniem do rozwoju.

Model wodospadu

Najczęściej stosowanym modelem tworzenia oprogramowania o tej charakterystyce jest model wodospadu przedstawiony na poniższym schemacie. Jednak w większości przypadków dodawane są nowe funkcjonalności, a także wcześniejsze wymagania mogą ulec zmianie. Model Waterfall nie jest tak skonstruowany, aby uwzględniał takie ciągłe zmiany wymagań. Ponadto użytkownik nie będzie miał jasności co do funkcjonalności produktu, dopóki produkt nie stanie się w całości dostępny.

Iteracyjny model przyrostowy

W iteracyjnym modelu przyrostowym rozwój rozpoczyna się od ograniczonej liczby sfinalizowanych wymagań z ustalonymi priorytetami. Produkt dostarczany to roboczy przyrost produktu. Zestaw działań, od wymagań po programowanie kodu, nazywany jest iteracją. W oparciu o funkcjonalność przyrostu i dowolne lub wszystkie nowe, zmodyfikowane oczekujące wymagania, kolejna partia wymagań jest przekazywana do kolejnej iteracji. Wynikiem kolejnej iteracji jest ulepszony przyrost roboczy produktu. Jest to powtarzane, aż produkt osiągnie wymagane funkcje.

Użytkownik zwykle nie jest zaangażowany w prace programistyczne i może to powodować luki komunikacyjne skutkujące nieprawidłowymi funkcjonalnościami. Zaangażowanie jest pozytywne dla zespołu programistów, ale jest wymagające pod względem czasu zespołu i może powodować opóźnienia. Ponadto wszelkie nieformalne zmiany wymagań podczas iteracji mogą prowadzić do nieporozumień, a także mogą powodować skradanie się zakresu. Z tym założeniem powstał program Agile.

Zwinny rozwój

Programowanie zwinne opiera się na iteracyjnym, przyrostowym rozwoju, w którym wymagania i rozwiązania ewoluują poprzez współpracę zespołową. Zaleca iteracyjne podejście ograniczone czasowo i zachęca do szybkiego i elastycznego reagowania na zmiany. Jest to ramy teoretyczne i nie określa żadnej konkretnej praktyki, którą powinien przestrzegać zespół programistów. Scrum to specyficzna zwinna struktura procesu, która definiuje praktyki, których należy przestrzegać.

Wczesne wdrożenia metod zwinnych obejmują Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997) i Dynamic Systems Development Method (DSDM) (1995). Są one teraz łącznie określane jakoagile methodologies, po opublikowaniu Manifestu Agile w 2001 roku.

Manifest Agile

Manifest Agile został opublikowany przez zespół programistów w 2001 roku, podkreślając wagę, jaką należy przywiązywać do zespołu programistów, dostosowując się do zmieniających się wymagań, zaangażowania klientów.

Manifest Agile przedstawia się następująco:

„Odkrywamy lepsze sposoby tworzenia oprogramowania, robiąc to i pomagając innym. Dzięki tej pracy doceniliśmy:

  • Osoby i interakcje nad procesami i narzędziami
  • Działające oprogramowanie ponad obszerną dokumentację
  • Współpraca z klientem zamiast negocjacji umowy
  • Reagowanie na zmianę zgodnie z planem

Oznacza to, że chociaż pozycje po prawej mają wartość, bardziej cenimy te po lewej ”.

… Manifest zwinnego tworzenia oprogramowania, autorzy: Beck, Kent, et al. (2001)

Definicja elementów manifestu Agile

Elementy manifestu po lewej można opisać w następujący sposób:

Pozycja manifestu Opis
Jednostki i interakcje Należy zwrócić uwagę na:
  • samoorganizacja i motywacja członków zespołu
  • ciągła interakcja w pracy, wyjaśnienia, informacje między członkami zespołu
Działające oprogramowanie Dostarczanie działającego oprogramowania w krótkich odstępach czasu pomaga zdobyć zaufanie klientów i pewność zespołu.
Współpraca z klientami Stałe zaangażowanie klienta w zespół programistów zapewnia komunikację niezbędnych modyfikacji.
Reagowanie na zmiany Skoncentruj się na szybkiej reakcji na proponowane zmiany, co jest możliwe dzięki krótkotrwałym iteracjom.

Kluczowym elementem Manifestu Agile jest to, że musimy ufać ludziom i ich zdolności do współpracy. Z tego powodu opracowane specyficzne metodologie zwinne wykorzystują umiejętności członków zespołu, kładąc nacisk na pracę zespołową i współpracę przez cały cykl życia projektu.

Kluczowe zasady zwinności

Manifest Agile opiera się na następujących zasadach:

Zasada Opis
Satysfakcja i dostawa Zadowolenie klienta dzięki wczesnemu i ciągłemu działaniu oprogramowania.
Powitanie zmiany Witamy zmieniające się wymagania, nawet na późniejszych etapach rozwoju.
Dostarczaj często Dostarczaj działające oprogramowanie często (co tydzień, a nie co miesiąc).
Komunikacja jest kluczem Zapewnij codzienne bliskie kontakty programistów z ludźmi biznesu.
Środowisko i zaufanie Twórz projekty wokół zmotywowanych osób. Udziel im niezbędnego wsparcia i zaufaj im.
Komunikacja twarzą w twarz Zachęcaj do rozmów twarzą w twarz, aby zapewnić wydajną i skuteczną komunikację.
Oprogramowanie jako miara postępu Działające oprogramowanie jest podstawowym miernikiem postępu.
Zrównoważony rozwój Promuj zrównoważony rozwój z możliwością utrzymania stałego tempa przez cały okres rozwoju.
Dbałość o szczegóły Ciągła dbałość o doskonałość techniczną i dobry projekt.
Moc mniej Prostota to podstawa.
Zespoły samoorganizujące się Regularne zwracanie uwagi zespołu na skuteczność w zmieniających się okolicznościach.

Zwinne metodologie

Dynamiczna metodologia rozwoju systemu (DSDM)

Jest to zwinna platforma dla projektów oprogramowania. Został użyty do dopracowania tradycyjnych podejść. Najnowsza wersja DSDM nosi nazwę DSDM Atern. Nazwa Atern jest skrótem od rybitwy popielatej - ptaka morskiego, który może podróżować na duże odległości, co odzwierciedla wiele cech tej metody, które są naturalnymi sposobami pracy, takimi jak ustalanie priorytetów i współpraca.

Scrum

Jest to najpopularniejszy framework Agile, który koncentruje się szczególnie na zarządzaniu zadaniami w zespołowym środowisku programistycznym. Scrum wykorzystuje iteracyjny i przyrostowy model rozwoju, z krótszym czasem trwania iteracji. Scrum jest stosunkowo prosty do wdrożenia i koncentruje się na szybkich i częstych dostawach.

Programowanie ekstremalne (XP)

Jest to rodzaj zwinnego tworzenia oprogramowania. Zaleca częste publikacje w krótkich cyklach rozwoju, co ma na celu poprawę produktywności i wprowadzenie punktów kontrolnych, w których można przyjąć nowe wymagania klientów. Metodologia wzięła swoją nazwę od pomysłu, że korzystne elementy tradycyjnych praktyk inżynierii oprogramowania są przenoszone na skrajne poziomy. (Programowanie ekstremalne to dyscyplina tworzenia oprogramowania, która organizuje ludzi w celu bardziej produktywnego wytwarzania oprogramowania o wyższej jakości). XP rozwiązuje fazy analizy, rozwoju i testowania za pomocą nowatorskich podejść, które znacząco wpływają na jakość produktu końcowego.

Rozwój oparty na testach (TDD)

Jest to proces tworzenia oprogramowania, który polega na powtarzaniu bardzo krótkiego cyklu rozwojowego: najpierw programista pisze zautomatyzowany przypadek testowy, który definiuje pożądane ulepszenie lub nową funkcję, następnie tworzy najmniejszą ilość kodu, aby przejść ten test, i wreszcie doprowadza nowy kod do akceptowalnych standardów.

Pochylać się

Jest to praktyka produkcyjna, która traktuje wydatkowanie zasobów na dowolny cel inny niż tworzenie wartości dla klienta końcowego za marnotrawstwo, a zatem za cel do wyeliminowania. Patrząc z perspektywy klienta, który konsumuje produkt lub usługę, termin wartość definiuje się jako dowolne działanie lub proces, za które klient byłby skłonny zapłacić. Lean koncentruje się na zachowaniu wartości przy mniejszym nakładzie pracy.

Kanban

Jest to system usprawniający i utrzymujący wysoki poziom produkcji. Kanban jest jedną z metod, dzięki której osiąga się Just-In-Time (JIT), strategię stosowaną przez organizacje do kontrolowania wydatków na zapasy. Kanban stał się skutecznym narzędziem wspierającym prowadzenie systemu produkcyjnego jako całości i okazał się doskonałym sposobem promowania ulepszeń.

Wniosek

W ciągu ostatnich 10 lat stale rośnie liczba historii sukcesu, w których firmy radykalnie poprawiły sukces i wydajność swoich zespołów programistycznych i projektów IT dzięki zwinnym praktykom. To spowodowało, że zwinność stała się szeroko stosowana w różnych branżach, w tym w mediach i technologii, dużych korporacjach, a nawet w rządzie.

Agile Framework pomaga zespołom czerpać korzyści z:

  • Szybszy czas dostawy / sprzedaży
  • Zmniejsz niepewność i ryzyko
  • Zwiększ zwrot z inwestycji (ROI), koncentrując się na wartości klienta

Spośród tych różnych zwinnych metodologii, Scrum okazał się niezwykle skuteczny na całym świecie w ciągu ostatnich 20 lat.