Cykle życia oprogramowania
Software development methodology
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 czynności jak w modelu kaskadowym, ale pozwala się na powroty z pewnych faz do innych faz poprzedzających.
Przykłady:
- wytwarzanie odkrywcze (exploratory development)
- Model przyrostowy (incremental development)
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
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.
Model prototypowy (Software prototyping)
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 spiralny
„Ogólny” model iteracyjny.
Cechy:
- Można wykorzystać gotowe komponenty
- Faza oceny w każdym cyklu pozwala uniknąć błędów lub wcześniej je wykryć
- Cały czas istnieje możliwość rozwijania projektu.
Model komponentowy
Składanie systemu z gotowych komponentów.
określania wymagań → analizy możliwości wykorzystania istniejących, gotowych komponentów → ewentualna faza modyfikacji wymagań, w konsekwencji zastosowania komponentów → …
- wymagania narzucane przez gotowe komponenty mogą być niezgodne z wymaganiami klientów
- modyfikacje kodu mogą być utrudnione przez brak kontroli nad pochodzącymi z zewnątrz komponentami
- mały koszt, głównie łączenie gotowych klocków
Model przyrostowy (iteracyjny)
Określenie wymagań → podział na kolejne „przyrosty” (increments), 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ć
Żródła
- Wikipedia
- Ilona Bluemke, Inżynieria oprogramowania