Justyna Łowicka

Transkrypt

Justyna Łowicka
Waterfall Model
Iteracyjny model Kaskadowy
Proces programowy jest zestawem metod, przekształceo i czynności które są
stosowane przez ludzi w celu opracowania i konserwowania oprogramowania
oraz innych pokrewnych produktów z nim związanych. Przykładem mogą byd
plany realizacji przedsięwzięcia, projekty czy zestawy testów.
Aby lepiej pojąd ten proces, korzystne jest ustalenie jego modelu.
Podstawowymi fazami cyklu życiowego programu są:
1) Faza strategiczna
2) Faza specyfikacji i analizy wymagao
3) Faza projektowania
4) Faza konstrukcji- implementacji
5) Faza testowania
6) Faza konserwacji
W pierwszej fazie, czyli strategicznej, podejmowane są czynności poprzedzające
decyzję o realizacji przedsięwzięcia. Między innymi, decyzje o sposobie
organizacji i harmonogramowania.
Decyzje strategiczne:
1) Wybór modelu, zgodnie z którym będzie realizowane przedsięwzięcie
2) Wybór technik stosowanych w fazach analizy i projektowania
3) Wybór środowiska (środowisk) implementacji
4) Wybór narzędzia CASE
5) Określenie stopnia wykorzystania gotowych komponentów
6) Podjęcie decyzji o współpracy z innymi producentami
Modelami cyklu życia oprogramowania są:
1)
2)
3)
4)
5)
6)
7)
8)
9)
Naturalny model – „Buduj i poprawiaj”
Model kaskadowy – wodospadowy
Model kaskadowy z iteracjami (z nawrotami)
Model spiralny
Model „realizacji przyrostowej”
Model szybkiego prototypu
Model RAD
Montaż z gotowych komponentów
Model formalnych transformacji
Jak wybrad model?
1) Kiedy na własny użytek chcemy rozwiązad pewien niewielki problem i nie
wiemy, jak się za niego zabrad → model buduj i poprawiaj.
2) Kiedy wymagania są dobrze zdefiniowane, produkt jest podobny do
realizowanych przez nas do tej pory, mamy doświadczenie w realizacji
podobnych przedsięwzięd → model kaskadowy albo montażu z gotowych
elementów.
3) Kiedy klient ma problemy ze wyartykułowaniem swych wymagao →
model szybkiego prototypu.
4) Kiedy istnieje duża niepewnośd związana z wytwarzaniem produktu i
duże ryzyko → podejście ewolucyjne (modele przyrostowy, spiralny).
5) Kiedy wymagania są dośd dobrze zdefiniowane, ale występuje dośd duża
złożonośd problemu (np. bardzo duży system – dużo kodu do napisania) →
podejście przyrostowe.
6) Kiedy są krótkie terminy, a system jest dośd duży zastosowad podejście
→ RAD, gdy dysponujemy dużym zespołem produkcyjnym
→ przyrostowe, jeżeli mamy niewielki zespół, a klientowi zależy głównie na
najważniejszych funkcjach.
7) Kiedy są krótkie terminy, system jest niewielki, a klientowi bardzo na nim
zależy → model programowania ekstremalnego.
8) Kiedy klient ma chwilowo małe fundusze, ale jest szansa, że w trakcie
realizacji budżet się zwiększy → model spiralny.
9) Kiedy system jest typu krytycznego → model formalnych transformacji.
10) W każdym możliwym przypadku budowad z gotowych elementów.
11) W przypadku wyboru dowolnego modelu, jeśli wymagania są źle
określone → zrobid prototyp.
Model Kaskadowy
W modelu kaskadowym kolejne etapy procesu rozwoju oprogramowania
następują po sobie w ściśle określonym porządku:
1)
2)
3)
4)
5)
Określenie wymagao (requirements)
Projektowanie systemu (system design)
Implementacja i testowanie modułów (podsystemów)
Testowanie połączeo modułów i całości systemu
Użytkowanie i pielęgnacja (konserwacja, maintenance)
Każda następna faza rozpoczyna się dopiero po (często formalnym)
zakooczeniu fazy poprzedzającej.
Iteracyjny model kaskadowy
Jest to odmiana modelu kaskadowego. Powstał z połączenia iteracyjnych
metod rozwiązywania zadao i modelu przyrostowego. Istotą modelu jest
wykorzystywanie stałych i krótkich iteracji o określonym czasie trwania, w
trakcie których produkty są wytwarzane przyrostowo.
Jego nazwa wprowadzona została przez Winstona W. Royce w roku 1970, w
artykule "Managing the Development of Large Software Systems" (zarządzanie
tworzeniem dużych systemów informatycznych).
Polega on na wykonywaniu podstawowych czynności jako odrębnych faz
projektowych, w porządku jeden po drugim. Każda czynnośd to kolejny
schodek (kaskada):
1)
2)
3)
4)
5)
Planowanie systemu (w tym specyfikacja wymagao)
Analiza systemu (w tym Analiza wymagao i studium wykonalności)
Projekt systemu (poszczególnych struktur itp.)
Implementacja (wytworzenie kodu)
Testowanie (poszczególnych elementów systemu oraz elementów
połączonych w całośd)
6) Wdrożenie i pielęgnacja powstałego systemu.
W modelu iteracyjnym wymagania są porządkowane i dzielone na mniejsze
podzbiory. Każdy taki podzbiór funkcjonalności wymaga przejścia przez etapy, o
których była mowa w modelu kaskadowym.
Po zakooczeniu każdej iteracji wybierany jest kolejny podzbiór wymagao do
realizacji i ponownie przechodzimy przez wszystkie etapy wytwarzania
oprogramowania.
Takie podejście pozwala na szybką implementację przynajmniej części
wymaganej funkcjonalności (tej o najwyższym priorytecie, lub też stanowiącej
najwyższe ryzyko niepowodzenia realizacji). Model iteracyjny pozwala więc na
bardzo szybką weryfikację realizowalności wytwarzanego systemu i informację
zwrotną od klienta, czy to, czego potrzebuje, jest tym, co otrzyma jako produkt
procesu wytwórczego.
Praktyka stosowania procesu iteracyjnego zaleca przed rozpoczęciem
rzeczywistych iteracji przeprowadzenie swego rodzaju rozpoznania wymagao,
w celu uzyskania ogólnego obrazu i zakresu projektu. Celem, jaki przyświeca
tym działaniom, jest podział wymagao na właściwe iteracje. Takie wstępne
działania polegają najczęściej na stworzeniu ogólnej architektury systemu, a
niekiedy nawet jego prototypu.
W czystym modelu kaskadowym: W iteracyjnym modelu kaskadowym:
zaplanowane fazy pracy
powinny byd w zasadzie
realizowane po kolei;
koniecznośd powrotu do
wcześniejszej fazy traktuje
się jako nieprawidłowośd,
czyli sytuację awaryjną.
Takie powroty z góry się przewiduje,
daje to większą elastycznośd, ale
wydłuża czas przedsięwzięcia
Każda faza kooczy się sporządzeniem
szeregu dokumentów, w których
opisuje się wyniki danej fazy.
Łatwe planowanie,
harmonogramowanie oraz
monitorowanie przedsięwzięcia.
Dodatkowa zaleta: (teoretyczna)
możliwośd realizacji dalszych faz
przez inną firmę.
Zaletą procesu iteracyjnego jest możliwośd przekazania systemu do wdrożenia,
gdy tylko jakiś rozsądny podzbiór wymagao zostanie zaimplementowany i
przetestowany. Jest to korzystne, co najmniej z dwóch powodów: wcześniej
można uzyskad pewne zyski (nie ma co ukrywad, że chodzi tu o korzyści
finansowe) z wdrożenia systemu, ale również, co w dłuższej perspektywie jest
ważniejsze, można uzyskad w pełni obiektywne opinie na temat jego działania
w rzeczywistych warunkach. W takich sytuacjach system można wypuszczad w
kolejnych wydaniach, z których każde podzielone jest na pewną liczbę iteracji.
Wady:
1)
2)
3)
Nie można przejśd do następnej fazy przed zakooczeniem poprzedniej
Model ten posiada bardzo nieelastyczny podział na kolejne fazy
Iteracje są bardzo kosztowne - powtarzamy wiele czynności
Tego typu modelu należy używad wyłącznie w przypadku gdy wymagania są
zrozumiałe i przejrzyste, ponieważ każda iteracja jest czasochłonna i wymaga
dużych wydatków na ulepszanie.