Model spiralny

Z Wikipedii, wolnej encyklopedii

Model spiralny (tworzenie spiralne) – jeden z modeli procesów tworzenia oprogramowania.

Proces tworzenia ma postać spirali, której każda pętla reprezentuje jedną fazę procesu. Najbardziej wewnętrzna pętla przedstawia początkowe etapy projektowania, np. studium wykonalności, kolejna definicji wymagań systemowych itd.

Historia[edytuj | edytuj kod]

Model spiralny został po raz pierwszy opisany w roku 1986 przez Barry’ego Boehma w artykule pod tytułem A spiral model of software development and enhancement[1]. W roku 1988 Boehm opublikował podobny artykuł[2], tym razem dla szerszej publiczności.

Wczesne artykuły Boehma odnoszą się do modelu spiralnego, kaskadowego, przyrostowego, prototypowego i innych jako „modelu procesowego”. Już w nich widoczne są jednak cechy, które później stały się charakterystyczne dla modelu spiralnego.

W późniejszych publikacjach[3] Boehm określa model spiralny mianem „generatora modeli procesowych”, w którym wybory podjęte w oparciu o ryzyko projektowe generują odpowiedni model procesowy dla projektu. Modele kaskadowy, przyrostowy i prototypowy i inne są zatem specjalnymi przypadkami modelu spiralnego, dostosowanymi do wzorców ryzyka określonych projektów.

Boehm zidentyfikował także szereg nieporozumień, biorących się z uproszczeń w oryginalnym diagramie modelu spiralnego. Za najbardziej niebezpieczne uważał:

  • uznawanie modelu spiralnego za sekwencję iteracji modelu kaskadowego,
  • przekonanie, że wszystkie aktywności projektowe podążają jedną sekwencją spirali,
  • przekonanie, że wszystkie aktywności przedstawione na diagramie muszą zostać wykonane i musi się to stać w zaprezentowanej kolejności.

Model[edytuj | edytuj kod]

Każda pętla spirali podzielona jest na cztery sektory:

  • Ustalanie celów – definiowanie konkretnych celów wymaganych w tej fazie przedsięwzięcia. Identyfikacja ograniczeń i zagrożeń. Ustalanie planów realizacji.
  • Rozpoznanie i redukcja zagrożeń – przeprowadzenie szczegółowej analizy rozpoznanych zagrożeń, ich źródeł i sposobów zapobiegania. Podejmuje się odpowiednie kroki zapobiegawcze.
  • Tworzenie i zatwierdzanie – tworzenie oprogramowania w oparciu o najbardziej odpowiedni model, wybrany na podstawie oceny zagrożeń.
  • Ocena i planowanie – recenzja postępu prac i planowanie kolejnej fazy przedsięwzięcia bądź zakończenie procesu produkcyjnego.

Cechy[edytuj | edytuj kod]

Widoczną cechą modelu spiralnego jest szczegółowe potraktowanie zagrożeń realizacji procesu produkcyjnego. Dobrze rozpoznane zagrożenia i przedsięwzięte kroki im zapobiegania lub redukcji skutkują m.in. wysoką niezawodnością (dependability) powstającego oprogramowania, bądź pewnością, że proces ma szanse dalszej realizacji.

W modelu spiralnym nie ma takich faz jak specyfikowanie albo projektowanie. Jeden cykl spirali może przebiegać w oparciu o model kaskadowy procesu tworzenia oprogramowania, w innym można użyć prototypowania lub przekształceń formalnych, w zależności od aktualnego etapu przedsięwzięcia programistycznego / realizowanej części systemu (np. inny dla tworzenia interfejsu użytkownika, inny dla krytycznych funkcji bezpieczeństwa)

Każdy cykl wymaga formalnej decyzji o kontynuacji projektu.

Zalety[edytuj | edytuj kod]

  • 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 oprogramowania
  • Częste kontrole jakości w kolejnych cyklach spirali
  • Nastawienie na wykrywanie błędów i działania kontrolne, a nie na zapobieganie
  • Orientacja na zarządzanie, czas i budżet.

Wady[edytuj | edytuj kod]

  • Model nie do końca dopracowany. Każdy program jest inny i powstaje w innych warunkach. Trudno określić, jakie warunki brać pod uwagę.
  • Tworzenie w oparciu o model spiralny wymaga doświadczenia w zarządzaniu tego typu procesami oraz często wiedzy ekonomicznej w zarządzaniu
  • Wysoki koszt usuwania błędów wykrytych w finalnych etapach procesu tworzenia oprogramowania

Zastosowanie[edytuj | edytuj kod]

Model spiralny z racji ogólnego charakteru stosuje się przy dużych przedsięwzięciach programistycznych.

Przypisy[edytuj | edytuj kod]

  1. Boehm, B. (1986). A spiral model of software development and enhancement. ACM SIGSOFT Software engineering notes, 11(4), 14-24.
  2. Boehm, B. W. (1988). A spiral model of software development and enhancement. Computer, (5), 61-72.
  3. Boehm, B., & Hansen, W. J. (2000). Spiral development: Experience, principles, and refinements (No. CMU/SEI-2000-SR-008). CARNEGIE-MELLON UNIV PITTSBURGH PA SOFTWARE ENGINEERING INST.