3 mar 202211 min czytania
Robert Krajewski
Współzałożyciel i CEO Ideamotive. Przedsiębiorca, mentor i doradca startupów.
Za wszystkimi udogodnieniami, z których korzystamy na co dzień, stoi złożone oprogramowanie. Weźmy choćby samochody autonomiczne, inteligentne domy czy funkcje rzeczywistości rozszerzonej wbudowane w okulary. Wszystkim tym zarządza skomplikowane oprogramowanie działające w tle.
Jednak niezależnie od tego, jak złożone jest oprogramowanie, musi być elastyczne, łatwe w utrzymaniu i rozszerzalne. Jak programiści to osiągają? Odpowiedź leży w starannym zaplanowaniu każdego kroku cyklu życia produktu programistycznego.
Zarys procesu wytwarzania oprogramowania to doskonały punkt wyjścia przy budowie produktu. W tym artykule omówimy pojęcie cyklu życia produktu programistycznego, jego fazy i stosowane w nim ogólne metodyki.
Cykl życia wytwarzania oprogramowania (SDLC) to seria kroków, które zespół programistyczny musi wykonać, by stworzyć i utrzymywać oprogramowanie.
Cykl życia produktu programistycznego zaczyna się od decyzji o stworzeniu oprogramowania, a kończy jego wycofaniem. Proces wytwarzania obejmuje 6 kluczowych kroków. Każdy z nich składa się z kilku etapów. W istocie SDLC to mapa drogowa tworzenia produktów cyfrowych.
SDLC zaczął się w latach 60. jako „cykl życia rozwoju systemów”. Jak wyjaśnia Jeffrey Elliott w swojej książce Global Information Technology for Business. Stratedzy biznesowi z dużych korporacji opracowali ten model, by pomóc zarządzać złożonymi systemami biznesowymi wymagającymi przetwarzania i analizy dużych ilości danych.
Z czasem warianty tego podejścia zaczęto stosować do tworzenia produktów sprzętowych i programowych oraz innych złożonych projektów.
Od przekroczonych terminów po pochopne decyzje i daremne próby opanowania projektu - źle zaplanowane projekty programistyczne mają skłonność do wymykania się spod kontroli. Z drugiej strony, mając zamierzony cykl dostarczania oprogramowania, firmy mogą liczyć na przewidywalne wytwarzanie produktu. Dla programistów oznacza to rozumienie, co robią teraz i co wydarzy się dalej.
Oto najważniejsze korzyści z cyklu życia produktu w oprogramowaniu:
Dlatego każdy projekt musi mieć zaplanowany cykl życia produktu programistycznego - tylko tak można zapewnić, że powstałe oprogramowanie spełni wymagania zarówno właścicieli biznesu, jak i użytkowników końcowych.
SDLC obniża koszt wytwarzania oprogramowania, jednocześnie podnosząc jakość i skracając czas produkcji. Osiąga te pozornie rozbieżne cele, trzymając się planu, który eliminuje typowe pułapki projektów programistycznych. Plan ten zaczyna się od oceny istniejących systemów pod kątem braków.
Następnie określa wymagania nowego systemu. Potem buduje oprogramowanie przez fazy analizy, planowania, projektowania, wytwarzania, testowania i wdrożenia. Przewidując kosztowne błędy, takie jak brak informacji zwrotnej od użytkownika końcowego lub klienta, SLDC pozwala uniknąć zbędnych przeróbek i poprawek po fakcie.
Warto też wiedzieć, że dużo uwagi poświęca się fazie testów. Ponieważ SDLC jest metodyką iteracyjną, w każdym cyklu trzeba zadbać o jakość kodu. Wiele organizacji wkłada w testy niewiele wysiłku, choć mocniejszy nacisk na testy potrafi oszczędzić im mnóstwo przeróbek, czasu i pieniędzy. Bądź sprytny i pisz właściwe rodzaje testów.
Założyciele produktu powinni upewnić się, że ich kadra C-level ma świadomość tych elementów. Jeśli nie, zadbaj o to, jak znaleźć i zatrudnić najlepszego CTO dla swojego startupu.
Powstało kilka wersji cyklu życia wytwarzania oprogramowania. Guru99 na przykład stosuje siedmioetapową strukturę SDLC , która rozdziela zbieranie wymagań i studium wykonalności na dwa osobne etapy. Inne organizacje, jak Software Testing Help, łączą te dwa kroki w jedną fazę: „zbieranie i analiza wymagań”.
Przeanalizowaliśmy wiele wariantów modeli cyklu życia wytwarzania oprogramowania. Poniższa sześcioetapowa struktura wydaje się najbardziej płynna i efektywna.
Cel: zebranie i udokumentowanie wymagań biznesowych
Na tym etapie zbierane są od klienta wszystkie niezbędne informacje, by rozwijać produkt zgodnie z jego oczekiwaniami. Wszelkie niejasności powinny zostać rozstrzygnięte właśnie tutaj.
Analitycy biznesowi i kierownik projektu umawiają spotkanie z założycielem, by zebrać wszystkie informacje: co klient chce zbudować, kto będzie użytkownikiem końcowym, jaki jest cel produktu. Zanim powstanie produkt, bardzo ważne jest zdobycie podstawowego zrozumienia lub wiedzy o nim.
Na przykład założyciel chce mieć aplikację obsługującą transakcje pieniężne. W takim przypadku wymagania powinny być jasne: jakie transakcje będą realizowane, w jaki sposób, w jakiej walucie itd.
Po zebraniu wymagań przeprowadza się analizę, która weryfikuje wykonalność produktu. W razie niejasności umawiana jest rozmowa w celu dalszej dyskusji.
Inne kwestie, które warto omówić, to:
Gdy wymagania są jasno zrozumiane, powstaje dokument SRS (specyfikacja wymagań oprogramowania). Musi być w pełni zrozumiały dla programistów, a także przejrzany przez założyciela lub kadrę C-level do dalszego wykorzystania.
Zajrzyj do naszego artykułu Digital Product Development: Step-By-Step Guide , jeśli chcesz dowiedzieć się więcej.
Cel: projektanci UX-UI przekładają wymagania na projekt
Faza projektowania jest niezbędnym wstępem do głównej fazy wytwarzania.
Programiści najpierw szkicują szczegóły całej aplikacji, a także konkretne elementy, takie jak:
Zwykle przekształcają tworzony dokument SRS w bardziej logiczną strukturę, którą można następnie zaimplementować w języku programowania. Powstają plany utrzymania, szkoleń i eksploatacji, by programiści wiedzieli, co mają robić na każdym kolejnym etapie cyklu.
Po zakończeniu menedżerowie przygotowują dokument projektowy, do którego będzie się sięgać w kolejnych fazach SDLC.
Dzięki prototypowi lub minimalnemu produktowi (MVP) możesz przełożyć wstępne badania na praktykę i sprawdzić, czy Twoje pomysły działają w realnym świecie. Obie opcje służą testowaniu, dzięki czemu możesz elastycznie dostosowywać projekt i oszczędnie gospodarować zasobami.
Cel: stworzenie właściwego oprogramowania
Wytwarzanie oprogramowania to najbardziej czasochłonna faza cyklu życia produktu, ale jest bardziej przewidywalna niż faza projektowania.
Korzystając z dokumentacji projektowej, programiści piszą kod komponentów. Zadania rozdziela się między członków zespołu zgodnie z ich obszarem specjalizacji. Programiści oprogramowania klienckiego odpowiadają za interfejs i jego komunikację z serwerem. Administratorzy baz danych dodają do bazy potrzebne dane.
Teoretycznie całe wcześniejsze planowanie i szkicowanie powinno sprawić, że sama faza wytwarzania będzie stosunkowo łatwa.
Programiści trzymają się wytycznych kodowania przyjętych w organizacji i korzystają z różnych narzędzi, takich jak kompilatory, debuggery i interpretery.
W zależności od wybranego języka programowania Twoi Ruby on Rails/
React Native/programiści React dobierają właściwy kod na podstawie specyfikacji i wymagań projektu.
Efektem tego etapu jest działający produkt i dokumentacja kodu źródłowego.
Cel: upewnienie się, że oprogramowanie spełnia wymagania
Gdy zespół programistyczny skończy pisać oprogramowanie, do gry wchodzi zespół zapewnienia jakości (QA). Testuje on oprogramowanie, by zmierzyć jego jakość. Na tym etapie produkt przechodzi różne rodzaje testów:
Programiści naprawiają błędy wykryte w tej fazie, a zespół QA ponownie testuje oprogramowanie lub jego komponenty. Zapewnienie jakości to proces ciągły, który trwa, aż oprogramowanie będzie całkowicie wolne od błędów i spełni wymagania.
Cel: dostarczenie gotowego oprogramowania użytkownikom
Gdy testy wstępne pokażą, że oprogramowanie jest gotowe do dalszej pracy, trafia na produkcję. Ten krok obejmuje koordynację wydania produktu, by dostarczyć rozwiązanie użytkownikom końcowym w uporządkowany sposób.
Zobacz, co obejmuje orkiestracja wydania:
Pierwsze, co trzeba zrobić, by oprogramowanie zadziałało, to przygotować miejsce, w którym będzie hostowane. Czy wybierzesz serwery lokalne, czy platformę chmurową - decyzję zostawiasz swojemu zespołowi.
Cokolwiek tworzysz, warto podłączyć oprogramowanie do pipeline’u ciągłej integracji (CI) i ciągłego dostarczania (CD). Po wdrożeniu przyspiesza on wydawanie kolejnych buildów i ułatwia przyjmowanie zmian po starcie. Dodatkowo dobre praktyki CI/CD poprawiają utrzymywalność produktu, zamykając go w jednym pakiecie.
Żadne oprogramowanie nie jest wolne od ryzyka. Integracje zewnętrzne - a nawet Twój dostawca chmury - mogą czasem mieć kłopoty, wystawiając system na awarie. Dlatego zespół powinien skonfigurować kopie zapasowe serwera już na etapie wdrożenia.
Orkiestracja wydania kręci się także wokół planu wdrożenia. Powstaje on na końcu procesu wytwórczego i określa, jak oprogramowanie ma być uruchamiane, kto odpowiada za jego wydanie i jak ma być później utrzymywane.
Twój produkt został wydany. To początek eksploatacji i rutynowego utrzymania.
Choć następuje na końcu, utrzymanie jest jedną z najważniejszych faz wytwarzania oprogramowania. Musisz utrzymywać - albo zatrudnić kogoś do utrzymywania - swój produkt, by go ulepszać, aktualizować i utrzymywać w ruchu bez przestojów.
To zwykle moment, w którym podpisujesz umowę utrzymaniową ze swoim zespołem lub firmą zewnętrzną. Określasz w niej, które części produktu mają być wspierane, jakie są czynności utrzymaniowe, obowiązki i tak dalej.
Zgodnie ze standardem IEEE/ISO/IEC 14764-2006 wyróżnia się cztery rodzaje prac utrzymaniowych:
Model cyklu życia produktu programistycznego to opisowe przedstawienie cyklu wytwarzania oprogramowania.
Uwaga! Modele SDLC mogą stosować różne podejścia, ale podstawowe kroki i czynności pozostają takie same we wszystkich.
Model kaskadowy jest najstarszą z metodyk SDLC. Jest liniowy i prosty, a od zespołów wymaga pełnego zakończenia jednej fazy projektu przed przejściem do kolejnej.
Każdy etap ma osobny plan i korzysta z informacji z etapu poprzedniego, by uniknąć podobnych problemów (jeśli się pojawią). Model jest jednak wrażliwy na wczesne opóźnienia i może później sprawiać zespołom duże kłopoty.

Model V (od Verification and Validation) jest bardzo podobny do kaskadowego. Faza testów jest tu wpleciona w każdy etap wytwarzania, by wychwycić potencjalne błędy i wady.
Jest niezwykle zdyscyplinowany i wymaga ścisłych ram czasowych. W teorii jednak łata słabości podstawowego modelu kaskadowego, nie pozwalając większym błędom wymknąć się spod kontroli.

Model prototypowy to taki, w którym prototyp powstaje przed właściwym oprogramowaniem.
Prototypy mają ograniczoną funkcjonalność i słabszą wydajność niż prawdziwe oprogramowanie. Do ich budowy używa się funkcji zastępczych. To cenny mechanizm rozumienia potrzeb klienta.
Prototypy powstają przed właściwym oprogramowaniem, by uzyskać wartościową informację zwrotną od klienta. Uwagi są wdrażane, a klient ponownie sprawdza prototyp pod kątem zmian. Proces trwa, aż klient zaakceptuje model.
Po zebraniu wymagań powstaje szybki projekt i prototyp, który przedstawia się klientowi do oceny.
Uwagi klienta i zmienione wymagania służą do modyfikacji prototypu, który znów trafia do klienta do oceny. Gdy klient zaakceptuje prototyp, staje się on wymaganiem do zbudowania właściwego oprogramowania. Właściwe oprogramowanie powstaje w podejściu kaskadowym.

Model spiralny łączy podejście iteracyjne z prototypowaniem.
W iteracjach przechodzi się przez fazy modelu spiralnego. Cykle w modelu odpowiadają krokom procesu SDLC: najbardziej wewnętrzny to zbieranie i analiza wymagań, potem planowanie, analiza ryzyka, wytwarzanie i ocena. Kolejny cykl to projektowanie, następnie implementacja i testy.
Model spiralny składa się z czterech faz:

Model iteracyjny dzieli produkt na małe części.
Na przykład funkcja, która ma powstać w danej iteracji, zostaje rozwiązana i wdrożona. Każda iteracja przechodzi przez fazy: analizę wymagań, projektowanie, kodowanie i testy. Szczegółowe planowanie w iteracjach nie jest wymagane.
Po zakończeniu iteracji produkt jest testowany i przekazywany klientowi do oceny i uwag. Uwagi klienta trafiają do kolejnej iteracji razem z nowo dodaną funkcją.
Dzięki temu produkt rośnie o kolejne funkcje, a po zakończeniu iteracji finalna wersja zawiera je wszystkie.
Fazy modelu iteracyjnego:

Model Big Bang nie ma zdefiniowanego procesu. Pieniądze i wysiłek spotykają się w jednym miejscu, a wejściem i wyjściem są zaprojektowane produkty, które mogą - ale nie muszą - odpowiadać temu, czego potrzebuje klient.
Model Big Bang nie wymaga wiele planowania. Programista sam przeprowadza analizę wymagań i kodowanie, a produkt rozwija zgodnie z własnym rozumieniem. Model stosuje się wyłącznie w małych projektach. Nie ma zespołu testowego ani formalnych testów, co może doprowadzić projekt do porażki.

Model Agile skupia się bardziej na elastyczności wytwarzania produktu niż na wymaganiach.
W Agile produkt dzieli się na małe, przyrostowe buildy. Nie powstaje jako gotowy produkt za jednym razem. Każdy build zyskuje kolejne funkcje i opiera się na funkcjonalności poprzedniego.
Iteracje nazywa się tu sprintami. Każdy sprint trwa 2-4 tygodnie. Na jego końcu product owner przegląda produkt, a po akceptacji trafia on do klienta.
Uwagi klienta służą doskonaleniu produktu. Sugestie i usprawnienia trafiają do kolejnego sprintu. Testy prowadzi się w każdym sprincie, by ograniczyć ryzyko awarii.

Cykl życia produktu programistycznego to rozległy, wieloetapowy proces, który zaczyna się w chwili narodzin pomysłu i trwa, aż dojrzeje on do kompletnego rozwiązania. Przejście wszystkich tych kroków wymaga sporo wysiłku. Jest jednak łatwiejsze, gdy są wyryte w kamieniu - tak jak w tym przewodniku.
Sześć etapów wytwarzania oprogramowania prowadzi Twój produkt od wstępnych badań po wdrożenie i utrzymanie. Trzymaj się ich, żeby nie zabłądzić - niezależnie od tego, czy budujesz aplikację webową, czy mobilną.
W Ideamotive zapewniamy uporządkowany proces wytwarzania produktu, który upraszcza zarówno wdrożenie, jak i migrację.
Skorzystaj z najwyższej jakości nearshore’owego wytwarzania oprogramowania.
Robert jest współzałożycielem Ideamotive. Przedsiębiorca, który z pasją szerzy cyfrową rewolucję w całym internecie. Mentor i doradca w akceleratorach startupów. Uwielbia się uczyć i odkrywać nowe modele biznesowe.
Zobacz wszystkie wpisy autoraPopularne artykuły
21 inspirujących projektów UI aplikacji mobilnych na 2023 rok
Michał Pruciak 7 min czytania
MedTech vs HealthTech vs BioTech: jakie są różnice?
Michał Pruciak 7 min czytania
10 biznesowych zastosowań sieci neuronowych (z przykładami!)
Michał Pruciak 4 min czytania
10 przykładów dobrych praktyk w web designie na 2023 rok
Adam Kozłowski 7 min czytania
28 znanych aplikacji webowych napisanych w PHP
Dawid Karczewski 14 min czytania
Białoruś • Polska • Rumunia • Ukraina
Czytaj terazW naszej sieci czekają sprawdzeni programiści, projektanci, menedżerowie i konsultanci biznesowi.
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści
Ocena 4,8 / 5,0 od klientów z różnych branż i lokalizacji.