Spis treści

10 lipca 20249 min.
Bartek Jarosik
Bartek Jarosik
Aktualizacja wpisu: 28 sierpnia 2024

Model kaskadowy – co to jest i jakie ma zastosowania?

Model kaskadowy – co to jest i jakie ma zastosowania?

Model kaskadowy to jedno z najbardziej klasycznych podejść do zarządzania projektami. Jak jego struktur i sekwencyjny przebieg zapewniają dokładność planowania i jak skutecznie wykorzystywać go w odpowiednich projektach?

Z tego artykułu dowiesz się m.in.:

Model kaskadowy – definicja i historia

Model kaskadowy (ang. waterfall model) to sposób zarządzania projektem i tradycyjny model cyklu życia oprogramowania, który zakłada sekwencyjne przechodzenie przez poszczególne etapy rozwoju projektu. Rozpoczyna się od analizy wymagań, przechodzi do projektowania systemu i jego implementacji, a po zakończeniu programowania następuje faza testowania i wdrożenia[1] [2] [3].

Model kaskadowy to sekwencyjny proces zarządzania projektem, w którym każdy etap musi być zakończony przed rozpoczęciem następnego.

Definicja modelu kaskadowego

Początków modelu kaskadowego należy szukać w wystąpieniu Herberta D. Beningtona, które miało miejsce 29 czerwca 1956 roku na sympozjum poświęconemu zaawansowanym metodom programowania dla komputerów cyfrowych[4], ale we współczesnym kształcie został zaprezentowany w 1970 roku przez Winstona W. Royce’a w artykule „Managing the Development of Large Software Systems”[5]. Royce opisał liniowy i sekwencyjny model rozwoju oprogramowania, który składał się z pięciu głównych faz: analiza wymagań, projektowanie, implementacja, testowanie i konserwacja. Każdą z faz należy zakończyć przed rozpoczęciem następnej, co przypomina spadający wodospad, stąd angielska nazwa modelu.

Chociaż Royce nie zamierzał, aby jego model był stosowany bez modyfikacji, w praktyce jego pracę przyjęto jako standard i wyznacznik, szczególnie w kontekście dużych projektów inżynieryjnych. Model kaskadowy doceniono ze względu na prostotę i łatwość zarządzania, ale z biegiem lat napotkał on krytykę z powodu swojej sztywności. Doprowadziło to do opracowania zmodyfikowanych wersji modelu kaskadowego, takich jak model Sashimi[6] (z nakładającymi się fazami) oraz modele inkrementalne, które pozwalają na pewien stopień iteracyjności[7].

Pomimo ograniczeń model kaskadowy wciąż znajduje zastosowanie w projektach, gdzie wymagania są dobrze zdefiniowane i stabilne, a także doprowadził do powstania podejść, takich jak metodologia Agile i metodyka Scrum, które powstały w odpowiedzi na jego ograniczenia.

Elementy modelu kaskadowego

Model kaskadowy składa się z kilku elementów, które realizuje się w sekwencji – każda faza musi zostać zakończona przed rozpoczęciem następnej. Oto poszczególne etapy:

Analiza wymagań

Analiza wymagań polega na zebraniu i zdefiniowaniu wszystkich wymogów projektu. Wymagania muszą być jasno sformułowane, mierzalne, osiągalne, realistyczne i terminowe, czyli stworzone według metody SMART. Rezultatem tego etapu jest dokumentacja, która określa cele projektu oraz oczekiwane funkcje i ograniczenia systemu. Jest to też fundament dla dalszych części projektu.

W trakcie analizy wymagań zbiera się wszystkie niezbędne informacje od interesariuszy – w tym celu organizuje się warsztaty i spotkania, przeprowadza indywidualne wywiady oraz rozsyła ankiety, aby zebrać dane od większej liczby użytkowników. Dane pozyskane od interesariuszy są podstawą analizy potrzeb biznesowych, które określa się też przez analizę obecnych procesów biznesowych, identyfikację istniejących problemów i wyzwań oraz określenie celów biznesowych.

Po zakończeniu analizy biznesowej można przejść do sporządzenia specyfikacji systemu (ang. SRS – software requirements specification). Opracowana dokumentacja powinna być dokładna i jednoznaczna, a także musi zawierać:

  • Opis funkcjonalny, czyli szczegółowe opisy funkcji, które system ma spełniać.
  • Opis niefunkcjonalny, czyli wymagania dotyczące wydajności, bezpieczeństwa, użyteczności, skalowalności i niezawodności.
  • Diagramy i modele do wizualizacji wymagań i ich zależności.
  • Opis interfejsów użytkownika oraz interfejsów między różnymi systemami lub komponentami.
  • Kryteria akceptacji, czyli wymagania, które muszą być spełnione, aby system został zaakceptowany przez klienta.

Projektowanie systemu

Na tym etapie opracowuje się specyfikacje techniczne i architekturę systemu, które stanowią podstawę implementacji. Projektowanie może być podzielone na dwa podetapy:

  • projektowanie logiczne koncentruje się na tworzeniu wysokopoziomowej struktury systemu;
  • projektowanie fizyczne na szczegółowych specyfikacjach technicznych i implementacyjnych.

W trakcie projektowania systemu tworzy się szczegółowe plant struktury danych, które będą przechowywane i zarządzane przez system. Obejmuje to definiowanie schematów baz danych, relacji między tabelami, typów danych oraz ograniczeń. Oprócz tego identyfikuje się i modeluje najważniejsze encje i atrybuty, definiuje relacje między encjami, tworzy diagramy ERD, które wizualizują strukturę danych oraz określa indeksy i klucze dla optymalizacji wydajności.

Kolejnym krokiem jest stworzenie diagramów architektury systemu, które przedstawiają jego strukturę i komponenty oraz ich wzajemne interakcje. Pozwalają one zrozumieć, jak poszczególne części będą ze sobą współpracować. W tym celu tworzy się m.in.

  • diagramy klas, które opisują klasy, ich atrybuty, metody oraz relacje między nimi;
  • diagramy komponentów, które przedstawiają moduły systemu i ich zależności;
  • diagramy sekwencji, które ilustrują interakcje między obiektami w czasie, opisując przepływ informacji;
  • diagramy przepływu danych, które pokazują przepływ informacji między procesami i magazynami danych.

Następnie można przejść do zdefiniowania szczegółowych specyfikacji technicznych dla interfejsów użytkownika oraz interfejsów pomiędzy różnymi modułami i komponentami systemu. W tym celu określa się wymagania dotyczące interfejsów użytkownika (w tym layoutów, nawigacji i elementów interaktywnych) oraz definiuje API, które umożliwiają komunikację między różnymi częściami systemu i zewnętrznymi usługami. Ważnymi elementami są także specyfikacja protokołów komunikacyjnych oraz formatów danych wymienianych między komponentami. Całość kończy się stworzeniem dokumentacji interfejsów zawierającej opisy funkcji, metod, parametrów wejściowych i wyjściowych oraz przykłady użycia.

Implementacja

W tej fazie projekt systemu przekształca się w kod źródłowy – programiści zaczynają prace od implementacji poszczególnych modułów zgodnie z dokumentacją projektową, gdzie każdy moduł zazwyczaj odpowiada za konkretną funkcję lub zestaw funkcji systemu. Kodowanie powinno być zgodne z ustalonymi standardami i najlepszymi praktykami, a programiści powinni także wykonać testy jednostkowe dla każdego modułu, aby upewnić się, że działa on poprawnie i spełnia wymagania funkcjonalne.

Po zakończeniu kodowania poszczególnych modułów przechodzi się do integracji, w której wszystkie komponenty są łączone w jeden spójny system. Proces ten może wymagać modyfikacji kodu w celu zapewnienia kompatybilności między modułami, a także przeprowadzania testów integracyjnych, żeby zweryfikować, czy wszystkie moduły współpracują ze sobą poprawnie, a cały system spełnia wymagania funkcjonalne i niefunkcjonalne.

Ważnym elementem implementacji jest też rozwiązywanie konfliktów, które mogą pojawić się podczas integracji (mowa np. o problemy z zależnościami między modułami). Równie ważne jest uaktualnianie dokumentacji technicznej, aby odzwierciedlała rzeczywisty stan systemu po integracji.

Testowanie

Testowanie polega na weryfikacji i walidacji, czy system działa zgodnie z wymaganiami. Pozwala to wykryć i naprawić błędy oraz zapewnia, że system spełnia wszystkie zdefiniowane wcześniej wymagania. Obejmuje zarówno testy jednostkowe, jak i integracyjne oraz systemowe.

W trakcie testowania sprawdza się poszczególne moduły i funkcje systemu w izolacji, co pozwala upewnić się, że każda część systemu działa poprawnie. Programiści opracowują przypadki testowe dla każdej funkcji i modułu, które definiują konkretne scenariusze do przetestowania, a następnie przeprowadzają testy jednostkowe, które weryfikują, czy poszczególne moduły działają zgodnie z oczekiwaniami.

Wyniki testów oraz wykryte błędy dokumentuje się, żeby, po pierwsze, przeanalizować przyczyny ich wystąpienia, a po drugie, żeby je usunąć, a następnie ponownie przetestować zmienione moduły, żeby upewnić się, że naprawy były skuteczne. Zaleca się także wykonywanie testów regresyjnych, aby sprawdzić, czy wprowadzone poprawki nie spowodowały nowych błędów w innych częściach systemu.

Ostatnim etapem testowania są testy akceptacyjne – służą one weryfikacji, czy cały system spełnia wymagania użytkowników końcowych i jest gotowy do wdrożenia w środowisku produkcyjnym. W tym celu programiści opracowują scenariusze testowe, które odzwierciedlają rzeczywiste przypadki użycia systemu przez użytkowników końcowych, a następnie przeprowadzają je z udziałem użytkowników końcowych, którzy testują system pod kątem spełnienia ich potrzeb i wymagań. Po zakończeniu testów programiści zbierają opinie i uwagi od użytkowników końcowych, żeby na tej podstawie wprowadzić niezbędne poprawki i ulepszenia.

Wdrożenie

Po zakończeniu testowania system wdraża się w środowisku produkcyjnym. Pierwszym krokiem jest instalacja oprogramowania, czyli przeniesienie wszystkich komponentów systemu do środowiska produkcyjnego. W tym celu przygotowuje się środowisko, czyli konfiguruje serwery, bazy danych i inne zasoby techniczne, aby spełniały wymagania systemu. Kolejnym krokiem jest przeniesienie kodu źródłowego, baz danych i innych komponentów systemu ze środowiska testowego do produkcyjnego. Dopiero po tym można przejść do dostosowania ustawień konfiguracyjnych – ścieżek dostępu, parametrów systemowych i konfiguracji sieciowych – oraz do weryfikacji, że system działa poprawnie w nowym środowisku.

Kolejnym etapem jest szkolenie użytkowników końcowych. Powinno ono obejmować zarówno instrukcje dotyczące podstawowego użytkowania, jak i zaawansowanych funkcji systemu. W tym celu trzeba stworzyć podręczniki użytkownika, instrukcje obsługi, prezentacje i materiały wideo wyjaśniające, jak korzystać z systemu, a także zorganizować warsztaty i szkoleń, które pozwolą użytkownikom praktycznie zapoznać się z systemem. Ważną częścią szkolenia jest zapewnienie pomocy technicznej i wsparcia dla użytkowników w pierwszych tygodniach po wdrożeniu.

Jeśli jest to konieczne, wdrożenie może obejmować też migrację danych, tj. przeniesienie danych ze starych systemów lub baz danych do nowego systemu. W tym celu należy opracować planu, w którym określi się, jakie dane będą przenoszone, jak będą przekształcane i w jakiej kolejności będą przenoszone. Dopiero po tym można przejść do pobierania danych ze starych systemów i przekształcania ich do formatu zgodnego z nowym systemem. Tak opracowane dane importuje się do nowego systemu oraz przeprowadza testy, aby upewnić się, że zostały prawidłowo przeniesione.

Konserwacja

Faza konserwacji obejmuje bieżące utrzymanie systemu, naprawę wykrytych błędów oraz wprowadzanie niezbędnych aktualizacji i ulepszeń. Jest to ciągły proces, który zapewnia, że system pozostaje funkcjonalny, bezpieczny i zgodny z aktualnymi wymaganiami biznesowymi oraz technologicznymi. Rozpoczyna się po wdrożeniu systemu i trwa przez cały jego cykl życia.

Regularne monitorowanie systemu polega np. na wykorzystaniu narzędzi monitorujących do zbierania danych o wydajności systemu, takich jak czas odpowiedzi, obciążenie serwera czy przepustowość sieci. Oprócz tego zebrane dane analizuje się w celu identyfikacji trendów i potencjalnych problemów. Ważnym elementem jest też tworzenie regularnych raportów dotyczących wydajności systemu.

Clou konserwacji jest naprawa błędów zgłaszanych przez użytkowników – szybka reakcja na zgłoszenia pozwala utrzymać wysoką jakość i niezawodność systemu. W tym celu należy opracować system rejestrowania zgłoszeń, np. wdrażając helpdesk czy systemy biletowe, a także na bieżąco analizować przyczyny błędów i oceniać ich wpływ na system i użytkowników. Oprócz naprawy usterek trzeba też dbać o regularne i jasne informowanie użytkowników o postępach.

Konserwacja obejmuje też aktualizacje i ulepszenia – regularne aktualizowanie systemu pozwala wprowadzać nowe funkcje, poprawiać istniejące oraz zapewniać zgodność z najnowszymi standardami i wymaganiami. W tym celu warto stworzyć harmonogram aktualizacji uwzględniający priorytety biznesowe, zasoby techniczne i minimalizujący przestoje dla użytkowników. Dobrze jest też tworzyć nowe funkcje na bazie testów i zgłoszeń od użytkowników.

Zastosowania modelu kaskadowego

Model kaskadowy stosuje się szczególnie tam, gdzie projekt wymaga jasno określonych etapów i przewidywalności. Jednym z głównych zastosowań jest rozwój systemów informatycznych z dobrze zdefiniowanymi wymaganiami i małym prawdopodobieństwem zmian w trakcie realizacji projektu. Przykłady obejmują systemy dla administracji publicznej, aplikacje bankowe czy systemy ERP.

Oprócz tego model kaskadowy stosuje się w m.in.:

  • W inżynierii oprogramowania używa się modelu Waterfall w projektach, które muszą przejść przez formalne procedury zatwierdzenia i audytu.
  • Przemysł lotniczy i obronny często korzysta z tego modelu ze względu na wymagania dotyczące zgodności z regulacjami oraz potrzeby dokładnej dokumentacji i kontroli jakości.
  • W projektach budowlanych i inżynierii lądowej, gdzie etapy projektowania, konstrukcji i testowania muszą być precyzyjnie zaplanowane i zrealizowane.
  • W edukacji wykorzystuje się go jako przykład w nauczaniu podstaw zarządzania projektami i inżynierii oprogramowania, ponieważ jest łatwy do zrozumienia i prezentuje logiczny sposób podejścia do zarządzania projektami. W kursach inżynierii oprogramowania studenci często uczą się tego modelu jako pierwszego, zanim przejdą do bardziej zaawansowanych i elastycznych metod, takich jak Agile.

Ograniczenia modelu kaskadowego

Model kaskadowy, mimo swojej popularności w przeszłości, jest bardzo sztywny i liniowy, co powoduje problemy, gdy wymagania projektu zmieniają się w trakcie jego realizacji. Brak elastyczności utrudnia wprowadzanie zmian po zakończeniu fazy analizy i projektowania, a to może prowadzić do problemów, gdy odkryte zostaną nowe potrzeby lub błędy w późniejszych etapach.

Model kaskadowy zakłada, że wszystkie wymagania mogą być dokładnie zebrane na początku projektu. W praktyce często okazuje się, że klienci nie są w stanie w pełni określić potrzeb bez interakcji z działającym systemem, co może prowadzić do sytuacji, w której końcowy produkt nie spełnia ich oczekiwań, mimo że jest zgodny z pierwotną specyfikacją. Nie jest on też dobrze przystosowany do zarządzania ryzykiem i niepewnością.

Ograniczeniem jest też długi czas realizacji – wszystkie fazy muszą być zakończone sekwencyjnie, więc projekty realizowane według modelu Waterfall mogą trwać bardzo długo, zanim użytkownicy końcowi zobaczą jakiekolwiek rezultaty. Może on też nie sprzyjać współpracy i komunikacji między zespołami – każdą fazę realizuje inny zespół (np. analityków, projektantów, programistów), co może prowadzić do problemów z przekazywaniem informacji i brakiem spójności w realizacji projektu.

Zalety modelu kaskadowego

Model kaskadowy, przede wszystkim, jest bardzo prosty i zrozumiały, a to ułatwia jego wdrożenie. Dzięki liniowej strukturze każdy etap projektu jest jasno określony i można go dokładnie zaplanować, a to sprawia, że łatwiej jest przewidzieć zasoby potrzebne na poszczególnych etapach oraz czas potrzebny na ich realizację.

Model kaskadowy charakteryzuje się wysokim poziomem dokumentacji – każda faza kończy się przygotowaniem dokumentów, które muszą zostać zatwierdzone przed przejściem do kolejnej. Jest to niezwykle cenne w dużych projektach, a także w kontekście audytów i formalnych przeglądów. Ułatwia to też monitorowanie postępów, w czym pomaga również logiczny podział projektu na jasno określone fazy. Daje to też większą kontrolę nad budżetem i harmonogramem.

Model kaskadowy sprzyja stabilności i uporządkowaniu, co jest ważne w środowiskach, gdzie zmiany są rzadkie i niepożądane. Ponieważ wszystkie wymagania muszą być określone na początku, ryzyko nieprzewidzianych zmian jest minimalne, a to pozwala zrealizować projekt zgodnie z pierwotnymi założeniami, co może być korzystne w projektach o wysokim stopniu regulacji.

FAQ

Przypisy

  1. https://www.techtarget.com/searchsoftwarequality/definition/waterfall-model
  2. https://www.sciencedirect.com/topics/computer-science/waterfall-model
  3. https://www.atlassian.com/agile/project-management/waterfall-methodology
  4. https://books.google.pl/books?id=tLo6AQAAMAAJ&hl=pl&pg=PP7#v=onepage&q&f=false
  5. https://www.praxisframework.org/files/royce1970.pdf
  6. https://dev.to/aatmaj/sashimi-waterfall-model-of-development-574o
  7. https://www.sciencedirect.com/topics/computer-science/incremental-model

Formularz kontaktowy

Rozwijaj swoją firmę

we współpracy z Cyrek Digital
Wyślij zapytanie
Pola wymagane
Bartek Jarosik
Bartek Jarosik

Specjalizuję się w zarządzaniu zmianą i zarządzaniu portfelem projektów. Z wykształcenia jestem inżynierem przemysłowym i uwielbiam usprawniać otoczenie. W mojej codziennej pracy koncentruję się na poszerzaniu świadomości, zaangażowaniu i wsparciu zespołu. Moje drzwi są zawsze otwarte.

zobacz artykuły
Oceń tekst
Średnia ocena: artykuł nieoceniony. 0

Być może zainteresują Cię:

Mapa strony