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.