Blog
Iteracyjne i przyrostowe tworzenie oprogramowania

Iteracyjne i przyrostowe tworzenie oprogramowania

Połączenie tych dwóch podejść: iteracyjnego i przyrostowego, jest stosowane od dawna. Stosuje się je najczęściej w przypadku złożonych projektów/produktów. Dzięki powtarzającym się cyklom (iteracyjnym) oraz mniejszym i prostszym fragmentom oprogramowania, które opracowuje się jednorazowo (przyrostowo), programiści mogą wykorzystać to, czego nauczyli się podczas tworzenia wcześniejszych części lub wersji systemu. Nauka pochodzi zarówno z rozwoju, jak i użytkowania systemu. Kluczowe etapy procesu rozpoczynają się od prostej implementacji podzbioru wymagań systemowych. Ulepsza się je aby uzyskać większe (bardziej złożone) wersje, aż do wdrożenia całego systemu. W każdej iteracji Modyfikuje się projekt i dodaje nowe możliwości funkcjonalne.

Czym jest proces przyrostowego tworzenia produktu?

Proces rozwoju przyrostowego działa w oparciu o podział pracy na kawałki (przyrosty). Każdy przyrost opiera się na tym, co było wcześniej. Tak więc z czasem buduje się w pełni funkcjonalne moduły, z których każdy dodaje się do tego, co wcześniej zostało wyprodukowane. Rozwój iteracyjny to powtarzanie i udoskonalanie cyklu/sposobu pracy (iteracja).

Czym jest proces iteracyjnego tworzenia produktu?

Iteracja obejmuje przeprojektowanie i wdrożenie, aby była ona prosta, bezpośrednia i modułowa, np. jako lista zadań dodana do bieżącej realizacji. Poziom szczegółowości projektu nie jest podyktowany samym podejściem iteracyjnym. W lekkim projekcie iteracyjnym kod może reprezentować podstawowe źródło dokumentacji systemu; jednak w złożonym projekcie iteracyjnym warto użyć formalnej dokumentacji projektowej. Analiza iteracji opiera się na informacjach zwrotnych od użytkowników i dostępnych funkcjonalnościach programu. Wreszcie obejmuje badanie struktury. Ostatecznie konieczna jest modyfikacja rejestru produktu w odpowiedzi na wyniki powyższej analizy.

Dlaczego podejście zwinne jest zarówno iteracyjne, jak i przyrostowe?

Podejście zwinne obejmuje filozofię iteracyjnego i przyrostowego tworzenia oprogramowania. Jest onamodelowana wokół stopniowego zwiększania liczby dodanych funkcji oraz cyklicznego wzorca wydawania i aktualizacji. Wynikiem kolejnej iteracji jest ulepszony działający przyrost produktu. Powtarza się to, dopóki produkt nie otrzyma kompletu wymaganych funkcji.

Programowanie zwinne, takie jak Scrum, obejmuje serię krótkich iteracyjnych cykli programistycznych (1-4 tygodnie), ciągłe demonstracje oprogramowania, zbieranie opinii użytkowników, przeglądy i stopniowe dodawanie funkcji  w kolejnych iteracjach.

Wdrażanie przyrostowego tworzenia produktu

Rozwój przyrostowy polega na podzieleniu planu rozwoju na mniejsze, działające części. Następnie rozwija się je, wdraża i testuje kawałek po kawałku. Informacje zwrotne zbiera się po każdym wydaniu. Powoduje to, że ​​zespoły mogą wykorzystywać informacje zwrotne do wprowadzania zmian wcześnie i często.

Zespoły lubią proces przyrostowy z kilku powodów. Na dłuższą metę oszczędza im to dużo czasu. Mogą one bowiem częściej testować i poprawiać swoją pracę, zanim zainwestują w kodowanie czegoś, co ostatecznie nie zadziała.

W ten sposób członkowie zespołu mogą czuć się bardziej produktywni we właściwy sposób. Na przykład szybciej realizują zadania do wykonania i mogą sprawniej i efektywniej rozwiązywać problemy.

Po drugie, tak częste testowanie pozwala zespołom na większą elastyczność, gdy pojawiają się nowe okoliczności. Na przykład: zespoły mogą korzystać z informacji zwrotnych, aby regularnie dostosowywać swoje plany. Pozwala to uniknąć dużej zmiany, która postawi na głowie cały projekt.

Minus: cena projektu wykorzystującego programowanie przyrostowe często może być wyższa niż w przypadku podejścia klasycznego (Waterfall). Jednak ta różnica w cenie może zostać zniwelowana, jeśli weźmie się pod uwagę długoterminowe koszty wprowadzania zmian w projekcie kaskadowym po  testowaniu całości konieczności wprowadzenia zmian na podstawie uzyskanych na koniec informacji zwrotnych.

Implementacja iteracyjnego tworzenia produktu

Iteracja to proces udoskonalania tego, co budujesz. Budowanie w przyrostach straciłoby wiele na wartości, gdybyś nie myślał iteracyjnie o każdym kawałku. Model iteracyjny składa się z następujących etapów:

  • Planowanie
  • Projektowanie
  • Realizowanie
  • Testowanie
  • Ewaluacja

W modelu iteracyjnym Twój zespół robi postępy poprzez powtarzanie cyklu pracy, który pomaga udoskonalać oprogramowanie, aż do osiągnięcia celu. Celem nie jest tworzenie za każdym razem nowego elementu funkcjonalnego, ale za każdym razem ulepszanie całości produktu.

Zespoły korzystają z modelu iteracyjnego, dzięki któremu tworzenie wersji jest jeszcze łatwiejsze. Przejście do kolejnej iteracji jest szybkie i łatwe. Ponadto metody iteracyjne wykorzystują zwykle krótsze cykle pracy, co pozwala dodatkowo oszczędzić czas. 

Jednym z negatywnych aspektów modelu iteracyjnego jest tendencja metody do dokonywania dość kosztownych dostosowań na późniejszym etapie. Każda zmiana wymaga bowiem nowej rundy iteracji. 

Wszystkie procesy zwinne są w swoich podejściach iteracyjne i przyrostowe. 

Jeśli chodzi o złożone oprogramowanie, każde z podejść wypełnia luki, które tworzy drugie. Tak więc, używając obu podejść jednocześnie, możesz uzupełniać oprogramowanie w przyrostach, jednocześnie dostarczając ukończoną pracę w całym projekcie.

Podsumowanie

Koncepcja iteracyjnego, przyrostowego dostarczania ma kluczowe znaczenie dla sukcesu zespołu Agile i jest jedną z najtrudniejszych do wdrożenia. Proste przykłady są często pomocne w wyjaśnianiu złożonych pomysłów.

Dodaj komentarz