Cykle życia oprogramowania
Źródło: wikipedia.org
Sekwencyjne
Kolejne etapy następują po sobie bezpośrednio, przykłady:
- Model kaskadowy (waterfall), wodospadowy, liniowy
Cechy
- nie można przejść do następnej fazy przed zakończeniem poprzedniej
- błąd popełniony w początkowej fazie ma wpływ na całość
- model ten posiada bardzo nieelastyczny podział na kolejne fazy
- łatwy nadzór, dużo dokumentacji
Ewolucyjne
Aktywności się przeplatają. Te same (zazwyczaj) czynności jak w modelu kaskadowym, ale pozwala się na powroty z pewnych faz do innych faz poprzedzających.
Cechy
- adaptowanie systemu do zmian w wymaganiach i korygowanie popełnionych błędów
- trudne w nadzorowaniu, wymaga dodatkowych strategii dla uporządkowania procesu wytwarzania oprogramowania
Metody ewolucyjne i odmiany
- Model przyrostowy, iteracyjny (incremental development)
- Rational Unified Process - IBM, lekka wersja OpenUP/Basic, wchodzi w skład Eclipse Process Framework
- programowanie odkrywcze
- inne…
Model prototypowy (prototypowanie)
Prototyp - niepełny system, spełniający cześć wymagań, przeznaczonym do przetestowania rozwiązań wykorzystanych do jego wytworzenia. Produkt finalny może być (z zasady jest) różny od prototypu.
Z założenia prototyp nie wchodzi w skład ostatecznego systemu.
Ostateczny system budowany jest od podstaw po zaakceptowaniu rozwiązań zastosowanych w prototypie.
Cechy:
- Prototyp jest łatwy do zmiany
- Zwiększa zrozumienie programistów co do potrzeb klienta
- Pozwala klientowi zobaczyć jak mniej więcej system będzie wyglądał
- Wysoki koszt budowy systemu
Model prototypowy (Software prototyping)
Model spiralny
- „Ogólny” model iteracyjny.
- Fazy: 1) ustalanie celów, 2) rozpoznawanie zagrożeń, 3) tworzenie, 4) ocena i planowanie
- Faza oceny w każdym cyklu pozwala uniknąć błędów lub wcześniej je wykryć
- szczegółowe potraktowanie zagrożeń realizacji projektu (duże projekty)
Model przyrostowy (iteracyjny)
Określenie wymagań → podział na kolejne „przyrosty” (iteracje), funkcje systemu dające się zaimplementować i testować
Pierwsze wersje zazwyczaj ujmują podstawowe funkcjonalności systemu.
Problemem podstawowym wytwarzania przyrostowego jest określenie „przyrostów”, tak aby były one istotnymi fragmentami oprogramowania, a mimo to każdą z wersji dawało się niezależnie testować i oceniać
Metodyki zwinne - Agile
- podejście przyrostowe
- zakłada, że wymagania odbiorcy (klienta) często ewoluują podczas trwania projektu → regularna adaptacja do zmieniających się wymagań
- późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania,
- szybkie wytwarzanie oprogramowania wysokiej jakości, działające oprogramowanie jest dostarczane okresowo (tygodniowo), każda iteracja dostarcza działające, przetestowane funkcje
- bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim (zazwyczaj małe zespoły)
- samozarządzalność zespołów
- końcowy produkt może znaczeie odbiegać od pierwotnych zalożeń
Żródła
- Wikipedia
- Ilona Bluemke, Inżynieria oprogramowania