cykl_zycia_oprogramowania [mgr Wiki]

[[cykl_zycia_oprogramowania]]
mgr Wiki

# Cykl życia oprogramowania

Produkcja i eksploatacja oprogramowania jest pewnym procesem, który powinien być realizowany w systematyczny sposób. Proces ten obrazują modele cyklu życia oprogramowania, określające fazy życia oprogramowania, czynności wykonywane w poszczególnych fazach, oraz ustalają kolejność ich realizacji. Pozwalają one uporządkować przebieg pracy, ułatwiają planowanie zadań oraz monitorowanie ich realizacji.

## Model kaskadowy

Model kaskadowy jest klasycznym modelem cyklu życia oprogramowania. Został zaproponowany poprzez analogię do innych dziedzin inżynierii (np. budownictwa). Prezentuje on spojrzenie na cykl życia oprogramowania jako na proces liniowy, w którym fazy występują sekwencyjnie - jedna po drugiej.

Model ten wprowadza następujące fazy:

- Faza określenia wymagań – określenie celów i szczegółowych wymagań wobec tworzonego systemu

- Faza projektowania – szczegółowy projekt systemu, spełniający ustalone wcześniej wymagania

- Faza implementacji oraz testowania modułów – projekt implementowany jest w konkretnym środowisku, oraz testy poszczególnych modułów

- Faza testowania – integracja poszczególnych modułów, testowanie podsystemów oraz całego oprogramowania.

- Faza konserwacji – oprogramowanie jest wykozystywane przez użytkownika, producent dokonuje konserwacji oprogramowania – usuwanie bugów, zmiany i rozszerzenia funkcji systemu.

W modelu tym wyróżnia się również dodatkowe fazy, częściowo nakładające się na fazy zaprezentowane powyżej:

- Faza strategiczna – przed formalnym podjęciem decyzji o realizacji przedsię wzięcia, podejmowane są pewne

strategiczne decyzje dotyczące dalszych etapów prac (ogólne określenie wymagań)

- Faza analizy – budowa logicznego modelu systemu

- Faza dokumentacji – przebiega równolegle z produkcją oprogramowania, zaczyna się już przy określaniu wymagań

- Faza instalacji – przekazanie systemu użytkownikowi

### Zalety:

- Łatwość zarządzania przedsięwzięciem
- Ułatwia planowanie, harmonogramowanie i monitorowanie przedsięwzięcia.

### Wady:

- Narzuca ścisłą kolejność wykonywania prac
- Wysoki koszt błędów popełnionych we wstępnych fazach
- Długa przerwa w kontaktach z klientami

## Realizacja kierowana dokumentami

Model pierwotnie zaproponowany przez armię amerykańską, jest ścisłą realizacją modelu kaskadowego – szereg następujących po sobie faz. Dodatkowo zakłada, że każda faza kończy się opracowaniem szeregu dokumentów, w pełni opisujących wyniki tej fazy i powinny być wystarczające do realizacji dalszych faz. Dokumenty te udostępniane są klientowi, i dopiero po jego akceptacji rozpoczynana jest kolejna faza.

### Zalety:

Tak jak w modelu kaskadowym, dodatkowo:

- Teoretyczna możliwość przerwania realizacji przedsięwzięcia w jednej firmie, i wznowienia w innej, po przekazaniu jej kompletu dokumentów.

### Wady:

Tak jak w modelu kaskadowym, dodatkowo:

- Duży nakład pracy na opracowanie dokumentów (ok. 50% nakładów)

- Przerwy w realizacji przedsięwzięcia, niezbędne dla weryfikacji dokumentów przez klienta.

## Prototypowanie

Prototypowanie jest modelem, którego celem jest minimalizacja ryzyka związanego z niewłaściwym określeniem wymagań. Można go traktować jako specyficzny sposób realizacji fazy określenia wymagań tradycyjnego modelu kaskadowego.

Model ten składa się z nasępujących faz:

- Ogólne określenie wymagań

- Budowa prototypu

- Weryfikacja prototypu przez klienta

- Pełne określenie wymagań

- Realizacja pełnego systemu zgodnie z modelem kaskadowym

Prototyp nie jest częścią przyszłego pełnego systemu – po dokonaniu weryfikacji przez klienta prototyp jest porzucany, a budowa pełnego systemu zaczyna się od nowa, co nie wyklucza wykożystanie pewnych fragmentów prototypu w dalszych etapach prac. Dąży się do szybkiej realizacji prototypu, kosztem jego niezawodności i efektywności.

Metody budowy prototypu:

- Niepełna realizacja – w ramach prototypu ujmuje się tylko tą częśćwymagań, która jest trudna do zrealizowania.

- Języki wysokiego posiomu

- Wykorzystanie gotowych komponentów

- Generatory interfejsu użytkownika

- Szybkie programowanie (quick and dirty)

- Papier

- Programowanie odkrywcze

### Zalety:

- Wykrycie nieporozumień między klientem a twórcami systemu

- Wykrycie brakujących funkcji

- Wykrycie trudnych usług

- Wykrycie braków w specyfikacji wymagań

- Możliwość szybkiej demonstracji pracującej wersji systemu

- Możliwość szkoleń, zanim zbudowany zostanie pełny system

### Wady

- Dodatkowy koszt budowy prototypu.

- Nieporozumienie z klientem, związane z długim okresem oczekiwania na końcowy system, który według jego oceny “prawie gotowy” został mu zaprezentowany w bardzo krótkim okresie czasu.

## Programowanie odkrywcze

Programowanie odkrywcze zalecanie jest w przypadkach, kiedy określenie wymagań jest tak trudne, że nawet budowa pojedynczego prototypu nie rozwiązuje wszelkich wątpliwości. Model ten prezentuje amatorski sposób tworzenia oprogramowania. Profesjonalnym producentom zalecana jest ona wyłącznie jako sposób budowy prototypu.

Sklada się z następujących faz:

- Wstępne, bardzo ogólne określenie wymagań

- Szybka realizacja systemu – wykonanie ogólnego projektu

- Weryfikacja systemu przez kilenta

- Jeżeli zostanie uznany za nieodpowiedni, budowana jest kolejna wersja systemu- modyfikacja poprzedniej wersji.

- Jeżeli jedna z kolejnych wersji zadowala klienta, lub nie można osiągnąć zadowalającego efektu, cykl dobiega końca.

### Zalety:

- Możliwość stosowania w wypadkach dużych trudności z określeniem wymagań klienta.

### Wady:

- Brak możliwości zachowania sensownej struktury systemu – brak możliwości wykonywania większych systemów o dużej niezawodności.

- Testowanie może odbywać się prawie wyłącznie przy bezpośrednim udziale klienta.

## Realizacja przyrostowa

Realizacja przyrostowa składa się z następujących faz:

- Określenie wymagań

- Wykonanie wstępnego, ogólnego projektu całości systemu

- Wybór pewnego podzbioru funkcji systemu

- Szczegółowy projekt i implementacja części systemu realizującego te funkcje, zgodnie z przebiegiem modelu kaskadowego

- Testowanie, dostarczenie zrealizowanej części systemu.

### Zalety:

- Skrócenie przerw w kontaktach z klientem

- Możliwość wczesnego wykorzystania przez klienta dostarczonych fragmentów systemu.

- Możliwość elastycznego reagowania na powstałe opóźnienia.

### Wady:

- Dodatkowy koszt związany z niezależną realizacją fragmentów systemu.

## Montaż z gotowych elementów

Model ten kładzie nacisk na możliwość redukcji nakladów przez maksymalne wykorzystanie podobieństw tworzonego oprogramowania do wcześniej tworzonych systemów. Najczęściej gotowe elementy są wykorzystywane na etapie implementacji (biblioteki, języki czwartej generacji, pełne aplikacje). Często można mówić także o wykorzystaniu gotowych elementów na etapie analizy i projektowania (narzędzia CASE, które ułatwiają wykorzystanie modeli i projektów opracowanych w poprzednich przedsięwzięciach)

Istnieją dwie metody pozyskiwania gotowych elementów:

- Zakup od zewnętrznych dostawców.

- Opracowanie wyników aktualnie realizowanych przedsięwzięć tak, by mogły być wykorzystane w kolejnych przewsięwzięciach.

### Zalety:

- Wysoka niezawodność

- Zmniejszenie ryzyka

- Efektywne wykorzystanie specjalistów

- Narzucenie standardów

- Potencjalna redukcja kosztów

### Wady:

- Dodatkowy koszt przygotowania elementów do ponownego wykorzystania

- Ryzyko uzależnienia się od dostawców elementów

- Niedostatki narzędzi, wspomagających ten rodzaj pracy

## Model spiralny

Najbardziej ogólny model cyklu życia oprogramowania. Dobrze opisuje pracę firmy, wytwarzającej kolejne rynkowe wersje oprogramowania. Składa się on z 4 faz wykonywanych cyklicznie:

- Analiza ryzyka – ogólne opcje budowy nowej wersji systemu, może obejmować także budowę prototypu.

- Konstrukcja – kostruowanie kolejnej wersji systemu zgodnie z modelem kaskadowym.

- Atestowanie – kolejna wersja systemu jest oceniana przez klienta, jeżeli ocena nie jest w pełni pozytywna, rozpoczynany jest kolejny cykl.

- Planowanie – generalne cele kolejnej wersji systemu.

## Formalne transformacje

Postulowany w ramach formalnego nurtu inżynierii oprogramowania. Model ten jest propozycją teoretyczną, daleką od zastosowań w profesjonalnej produkcji oprogramowania.

- Wymagania wobec systemu specyfikowane są w pewnym formalnym języku.

- Wymagania te są następnie transformowane w sposób automatyczny do postaci bliższej kodowi w pewnym języku programowania.

- Postać ta podlega dalszym automatycznym transformacjom do kolejnych form coraz bliższych kodowi.

- Jedna z kolejnych postaci formalnych jest już na tyle bliska kodowi, że może być w automatyczny sposób przełożona na kod w konkretnym języku programowania.

- Wszystkie transformacje wykonywane są bez udziału ludzi.

### Zalety:

- Wysoka niezawodność tak stworzonego oprogramowania

### Wady:

- Trudność formalnego wyspecyfikowania wymagań

- Mala efektywność kodu uzyskanego w ten sposób

- Brak dobrze rozwiniętych uniwersalnych języków formalnej specyfikacji wymagań.

cykl_zycia_oprogramowania.txt · Last modified: 2006/05/23 10:34 by 213.134.172.237