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)

Programowanie zwinne (Agile software development) Manifest Agile, Scrum

Programowanie ekstremalne

Rational Unified Process - IBM, lekka wersja OpenUP/Basic, wchodzi w skład Eclipse Process Framework

programowanie odkrywcze

Model prototypowy

Model spiralny

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

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

Ilona Bluemke, Inżynieria oprogramowania

Software development methodology