Kaskadowe i iteracyjne modele rozwoju oprogramowania i aplikacji
22.10.2021 | admin
Iteracyjny rozwój aplikacji
Iteracyjne wytwarzanie aplikacji jest procesem tworzenia oprogramowania, który odbywa się w małych krokach, podczas których analizuje się otrzymane wyniki pośrednie, stawia nowe wymagania i koryguje poprzednie kroki.
Cykl życia projektu podczas rozwoju iteracyjnego jest podzielony na sekwencję iteracji, z których każda jest w istocie miniaturowym projektem, tzn. obejmuje wszystkie procesy wytwarzania oprogramowania (zbieranie i analizę wymagań, opracowanie specyfikacji wymagań, bezpośrednią implementacja, testowanie i uruchomienie), ale w ramach jednej iteracji nie jest rozwijany cały projekt, a jedynie jego wersja lub wydzielona część.
Z reguły celem każdej iteracji jest uzyskanie wersji aplikacji, która zawiera zarówno nowe lub poprawione cechy zaimplementowane podczas bieżącej iteracji, jak i funkcjonalność wszystkich poprzednich iteracji. Wynik końcowej iteracji zawiera natomiast całą wymaganą funkcjonalność produktu.
Budżet i ramy czasowe wymagane do wdrożenia ostatecznej wersji zwykle nie są wstępnie ustalone, ponieważ całkowity zakres prac nie jest zdefiniowany, a wymagania są generowane w trakcie realizacji.
Rozwój iteracyjny, iteracyjny, inkrementalny i ewolucyjny są w rzeczywistości synonimami.
Iteracyjny (iteracja, "powtarzanie") w tym przypadku oznacza podejście oparte na realizacji zadań w ramach "mini-projektów", inkrementalny (increment "zwiększanie") oznacza sekwencyjne dodawanie funkcjonalności do tworzonego produktu, a ewolucyjny (evolutio, "rozwijanie") oznacza proces rozwoju produktu przypominający naturalny rozwój gatunków biologicznych.
Kaskadowy i iteracyjny model rozwoju aplikacji
Metaforycznie, porównanie kaskadowych i iteracyjnych modeli rozwoju jest często opisywane na przykładzie rozwoju pojazdów.
W przypadku modelu kaskadowego najpierw opisuje się wymagane cechy pojazdu, a następnie na podstawie tych wymagań opracowuje się dokumentację projektową. Po opracowaniu dokumentacji konstrukcyjnej następuje montaż poszczególnych elementów pojazdu i ich wzajemna integracja. Powstały w ten sposób zespół jest następnie testowany zgodnie z dokumentacją projektową, zanim gotowy pojazd zostanie przekazany klientowi. Wszystkie te etapy trwają dość długo, a klient dopiero na samym końcu otrzymuje produkt nadający się do użytku.
Podejście iteracyjne jest nieco inne. Na początku stawia się zadanie skonstruowania pojazdu. A efektem pierwszej iteracji może być wariant takiego pojazdu - na przykład hulajnoga. Nie potrzebuje ona silnika spalinowego i może być montowana dziesiątki razy szybciej niż samochód. Tak, hulajnoga traci do samochodu w wielu aspektach, ale wciąż jest bardziej wydajna w poruszaniu się niż chodzenie. Druga iteracja może zaowocować powstaniem hulajnogi z silnikiem elektrycznym. W trzeciej iteracji, hulajnoga może mieć większe koła i stać się e-rowerem. W czwartej iteracji, rower elektryczny może zostać wyposażony w silnik spalinowy i stać się motocyklem.
W istocie, z każdą iteracją funkcjonalność wzrasta. I podczas gdy zwolennicy wodospadu czekają, aż pojazd będzie gotowy, ci, którzy uwielbiają podejście iteracyjne, już go używają. I może się okazać, że powstały w ten sposób motocykl jest lepszym wynikiem biznesowym.
Kluczowe korzyści płynące z iteracyjnego modelu rozwoju aplikacji to ograniczanie ryzyka - wczesne wykrywanie konfliktów pomiędzy wymaganiami, modelami i realizacją projektu; większa koncentracja na kluczowych zadaniach; dynamiczne generowanie i zarządzanie wymaganiami.
Organizacja efektywnej informacji zwrotnej od zespołu projektowego do klienta, dzięki czemu powstaje produkt, który rzeczywiście spełnia jego potrzeby.
Szybkie wydanie produktu o minimalnej wartości (MVP) oraz możliwość wprowadzenia produktu na rynek i rozpoczęcia jego użytkowania znacznie wcześniej.
Główne wady iteracyjnego modelu rozwoju aplikacji to problemy z architekturą i koszty ogólne - gdy mamy do czynienia z chaotycznymi wymaganiami i bez spójnego globalnego planu, architektura aplikacji może ucierpieć i mogą być potrzebne dodatkowe zasoby, aby doprowadzić ją do odpowiedniej formy. W rzeczywistości, możliwość zmiany wymagań podczas tworzenia produktu ma swoją cenę, taką czy inną.
Nie ma ustalonego budżetu i terminu realizacji oraz wymagane jest duże zaangażowanie klienta w proces - dla niektórych klientów są to nieakceptowalne warunki współpracy z deweloperem, lepiej sprawdzają się w modelu kaskadowym.
Kaskadowy model rozwoju aplikacji
Kaskadowy model wytwarzania oprogramowania (waterfall) jest procesem wytwarzania, w którym fazy zbierania i analizy wymagań, projektowania i prototypowania, implementacji, testowania, integracji i wsparcia przebiegają sekwencyjnie.
Zgodnie z modelem kaskadowym, programiści przechodzą ściśle sekwencyjnie od jednego procesu do następnego. Najpierw w pełni zakończona jest faza zbierania wymagań - tworzona jest lista zidentyfikowanych wymagań na oprogramowanie. Dopiero po zebraniu i przechwyceniu wymagań następuje przejście do procesu projektowania, w trakcie którego generowana jest specyfikacja programistyczna, opisująca zadania, jakie mają wykonać programiści, a także sposoby realizacji i związane z nimi ograniczenia. Gdy projekt jest już w pełni gotowy, programiści realizują projekt zgodnie z zakresem wymagań - w przykładzie tworzenia strony internetowej, rysowany jest projekt, wykonywany jest layout i kodowanie strony. Po zakończeniu fazy projektowania, opracowany produkt jest testowany. Na tym etapie, wszystkie defekty są identyfikowane i eliminowane zgodnie z zakresem wymagań. Następnie projekt jest uruchamiany i udzielane jest wsparcie - zapewnienie operacyjności i usuwanie błędów.
Model kaskadowy zakłada, że przejście z jednej fazy rozwoju produktu do następnej następuje dopiero po zakończeniu fazy poprzedniej i że nie ma żadnych powrotów i nakładania się faz.
Tworzenie oprogramowania czy aplikacji w tym modelu pozwala na ścisłe ustalenie budżetów i terminów. Praca w tym modelu może być jednak efektywna tylko wtedy, gdy klient bardzo szczegółowo rozumie cele i założenia tworzonego produktu i potrafi je sformułować. Wynika to z faktu, że zakres prac jest również ustalony - jeśli czegoś nie ma w SIWZ, to najprawdopodobniej nie zostanie to zrealizowane w ustalonym budżecie i terminie. Wprowadzanie zmian w projektach typu waterfall jest również dość problematyczne. Tak więc w przypadku naprawdę dużych projektów i tworzenia czegokolwiek innowacyjnego, ten model nie jest odpowiedni.
Alternatywą dla wodospadu jest iteracyjny model rozwoju (na przykład różne metodologie "agile").
Rozwój iteracyjny jest świetny dla dużych projektów, dla projektów z niepewnymi wymaganiami i dla produktów programistycznych, które są innowacyjne i oparte na hipotezach biznesowych, które muszą być testowane.
Chcesz nawiązać współpracę z Python Software House, który tworzy dedykowane aplikacje webowe, dedykowane aplikacje mobilne i strony internetowe na zamówienie?
Poszukujesz Software House, który ma w swojej ofercie tworzenie dedykowanych aplikacji internetowych z wykorzystaniem Python, Django i Flask?
Jesteśmy Python Software House, który istnieje na rynku 20 lat i ma w swoim portfolio wykonane dedykowane aplikacje webowe i desktopowe i oprogramowanie na zamówienie, jak również zaawansowane systemy informatyczne. Tworzymy narzędzia cyfrowe i rozwiązania, które nie tylko pozwalają wizualizować dane, ale także integrujemy je z regularnymi procesami biznesowymi, tworzymy oparte na danych pełnoprawne dedykowane aplikacje mobilne i webowe, które sprawiają, że dane stają się bardziej dostępne dla całej organizacji.
Może chcesz wykorzystać rozwiązania oparte na algorytmach sztucznej inteligencji, machine learning lub deep learning?
Technologie informacyjne z usługi dla biznesu zamieniły się w jego podstawę. Budujemy cyfrowe kompetencje w obszarze zainteresowań Klienta i pomagamy znaleźć nowe modele dla biznesu.
To nasza misja.
Porozmawiaj z nami o swoim projekcie, a my weźmiemy pod uwagę specyfikę Twojej działalności, przewidziany czas i budżet i wybierzemy najlepszą z dostępnych opcji jego realizacji.