Jak stworzyć aplikację – model kaskadowy (ang. waterfall model)

16 maja 2020

We współczesnym świecie wiele osób dostrzega możliwości w zarabianiu na produktach cyfrowych. Powodzenie tzw. “dowiezienia projektu” (wykonania go w całości) zależy od wielu czynników. Jednym z nich jest odpowiedni wybór metody wytwarzania oprogramowania.

Metod mamy oczywiście wiele. W branży IT sławą okryty jest Agile Scrum, o którym opowiem w kolejnych wpisach. Dziś chciałbym jednak zwrócić uwagę na to, że nie jest to jedyna metoda wytwarzania oprogramowania.

Czym jest waterfall model

Tak jak wspomniałem we wstępie waterfall, to metoda wytwarzania oprogramowania. Polega ona na tworzeniu projektu na podstawie ściśle określonych założeń. Proces, jakim posługujemy się podczas pracy z Waterfall wygląda następująco:

https://pl.wikipedia.org/wiki/Model_kaskadowy#/media/Plik:POL_model_kaskadowy.svg

Mamy więć etap planowania i analizy, na bazie której tworzony jest projekt. Projekt w znaczeniu np. dokumentacji technicznej. Następnie programiści mogą na bazie dokumentacji wykonać implementacje. Kolejnym etapem są testy oraz refaktoryzacja, czyli pielęgnacja projektu.

Kiedy to się nie uda?

Jak widzisz tworzenie projektu właśnie z użyciem waterfalla jest bardzo trudne. Wcale nie chodzi mi o wykonywanie implementacji. Problem pojawia się zazwyczaj dwa kroki wcześniej. Czyli na etapie analizy. Pełna analiza projektu jest w pewnych momentach niemożliwa. Głównie chodzi o sytuacje, gdy właściciel projektu (np. zleceniodawca) nie jest w stanie przewidzieć wszystkich skrajnych przypadków użycia danej funkcjonalności.

Uwielbiam przykłady, wiec i w tym momencie wykorzystajmy jakiś 🙂 Wyobraź sobie, że stoimy przed zadaniem stworzenia funkcjonalności dodawania nowego artyku blogowego na stronie. Wykonaj proszę ćwiczenie. Spisz wszystkie informacje, jakie według Ciebie powinien móc edytować Administrator w ramach tworzenia wpisu na blogu.

  • Tytuł
  • Treść
  • Kategoria
  • Tagi
  • Obrazek wyróżniający

Zespół programistów otrzymuje powyższe założenia i przystępuje do implementacji. Mija kilka dni, implementacja jest gotowa. Zespół wykonuje pozostałą listę zadań w projekcie. Projekt zakończony sukcesem! Ależ ten watterfall jest super!

Przychodzi ten dzień, gdy klient otrzymuje swój wymarzony projekt i nie czekając tworzy pierwsze artykuły na blogu. Po paru dniach, tygodniach okazuje się, że nikt nie czyta tego artykułu. Klient zwraca się więc do specjalistów od pozycjonowania stron www. Specjaliści patrzą i mówią jest super. Jednak do zwiększenia efektywności naszych działań SEO potrzebujemy mieć możliwość edycji meta tagów oraz adresów URL do artykułów.

Zonk | Free Vectors, Stock Photos & PSD

Adresy URL generowane są automatycznie. System nie zakłada możliwości ręcznej edycji. Wówczas należy zgłosić tzw. Change Requesta (chęć zmiany w funkcjonalności). Zespół programistów znów zapoznaje się z wymaganiami, musi wdrożyć się ponownie w projekt (minęło wszak parę tygodni), a co najważniejże zespół musi znaleźć czas na ich wykonanie.

Najgorsze co może się stać, to scenariusz, w którym nasz Change Request (CR) wpływa na inne elementy systemu. Co za tym idzie? Chcesz wprowadzić zmianę polegającą na edycji adresów URL do artykułów, a w efekcie musisz wprowadzić zmianę w 10 innych miejscach w systemie.

W skrajnych przypadkach może się okazać, że wpływ wprowadzanej zmiany powoduje, że inna funkcjonalność nie może działać prawidłowo. Możemy mieć też sytuacje, że okazuje się to zbyt kosztowne (czasowo i finansowo).

Kiedy to się uda

Waterfall idealnie sprawdza się, gdy analiza jest przeprowadzona na naprawdę wysokim poziomie, a ryzyko wprowadzania modyfikacji w trakcie trwania projektu jest bliskie zeru.

Żeby zmniejszyć ryzyko przeoczenia rzeczy, które mogą wpływać na ilość CR, warto poza opisem funkcjonalnym tworzyć również makiety projektu. Tutaj również posłużę się przykładem.

Załóżmy, że naszym zadaniem jest stworzenie formularza dodawania produktu na stronie. Z rozmowy wynika nam taki opis:

W formularzu mamy mieć następujące pola: nazwa produktu, opis produktu, zdjęcia produktu, kategoria, cena netto, stawka VAT (%), wybór produktów podobnych

Z opisu możemy sobie wyobrazić jeden wielki formularz. Dodatkowo rodzą nam się pytania np.:

Kolejne pytania mogłyby się pojawić w momencie otrzymania makiety.

Co się zmieniło w stosunku do tego co opisaliśmy powyżej? Mamy formularz podzielony na kroki. Powoduje to, że pojawia się kolejne pytanie:

Tak więc, jak widzisz ustalanie całego projektu w przypadku, gdy będzie on bardzo rozbudowaną aplikacją może być trudne. Oczywiście jest to możliwe. Wymaga jednak wprawy, wiedzy i przede wszystkim doświadczenia.

Jeśli więc jesteś w stanie stworzyć dokładną dokumentację techniczną z opisem wszystkich funkcjonalności twojego projektu, to waterfall może okazać się dobrym wyjściem.

O mnie

Cześć, z tej strony Wojtek Dasiukiewicz. Jestem programistą, trenerem, wykładowcą w CodersLab i współtwórcą EliteCode – nowej szkoły programowania.

Więcej o mnie

Na koniec skrzynia skarbów – newsletter. Znajdziesz w nim link do zapisu na darmowe 45-minutowe konsultacje online. Nie ma go w innym miejscu, tylko w wiadomościach ode mnie. A razem z nim dostaniesz w mailach czyste złoto, czyli wiedzę. Zero spamu.

Zapisz się na newsletter

.

Tu też znajdziesz wiedzę za darmo

Po rozwiązania zajrzyj również na octocode’owy kanał na YouTube’ie. Będzie Twoją latarnią morską w programowaniu.

Lubisz słuchać rozmów z ciekawymi ludźmi z branży? Zapraszam na Prograduchy – podcast na luzie, a jednocześnie merytoryczny. Nie odpłyniesz.

X