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, ale pozwala się na powroty z pewnych faz do innych faz poprzedzających.

Przykłady:

wytwarzanie odkrywcze (exploratory development)

Model przyrostowy (incremental development)

Programowanie zwinne (Agile software development) Manifest Agile

Model spiralny

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

Wykład "Inżynieria oprogramowania" - Dawid Czerner

Ilona Bluemke, Inżynieria oprogramowania