Od pomysłu do aplikacji – cykl wytwarzania oprogramowania i jego fazy

wpis w: Zmiana zawodowa | 0

Seria “Jak powstaje oprogramowanie?” 1/3

Tworzenie strony internetowej lub aplikacji mobilnej niektórym kojarzy się z dzielnym, samotnym programistą, który niczym wiedźmin przemierza samotnie świat (i rynek IT) przyjmując zlecenia, projektując aplikacje, kodując je i wypuszczając w świat, od A do Z. Choć taki model istnieje, bywa on raczej realizowany w przypadku mniejszych zleceń i projektów albo w przypadku aplikacji utworzonych z użyciem specyficznych narzędzi, które ułatwiają pracę dostarczając gotowych prefabrykatów (narzędzia no code i low code). W większych, komercyjnych projektach w wytwarzanie i dostarczanie na rynek oprogramowania zaangażowane jest więcej osób, a cały proces można pogrupować w konkretne fazy, układające się w cały cykl życia danej aplikacji (w skrócie SDLC, czyli Software Development Life Cycle). Jeśli zastanawiasz się nad przebranżowieniem do IT, ale nie wiesz jeszcze do końca jaka specjalizacja pasowałby do Ciebie najbardziej – poznanie cyklu wytwarzania oprogramowania być może rzuci nieco więcej światła na to, co mógłbyś/mogłabyś robić w swojej przyszłej pracy w zależności od stanowiska, jakie wybierzesz.

Warto w tym miejscu nadmienić, że poniżej prezentowane jest kilka kluczowych i najczęściej obecnych w przeciętnym SDLC faz, natomiast wytwarzanie oprogramowania może odbywać się zgodnie z różnymi modelami, a całe cykle mogą się zaś różnić szczegółami w zależności od modelu… Jednak jest to temat na oddzielny artykuł, a jeśli jesteś osobą początkującą lub dopiero interesującą się wejściem do branży, w zupełności powinna na początek wystarczyć Ci wiedza ogólna.

Planowanie

Zanim rozpoczną się jakiekolwiek dalsze prace, należy zastanowić się nad celami (jakie w ogóle oprogramowanie chcemy zbudować, jeszcze bez wchodzenia w detale dotyczące jego wyglądu czy dokładnych funkcjonalności), potrzebnym budżetem, zakresem czasowym całego projektu, potrzebnymi zasobami, w tym zespołem… Na tym etapie mogą zapadać przykładowo decyzje czy w firmie zatrudniona jest odpowiednia liczba osób, by skomponować nowy zespół, a może należałoby zatrudnić nowe? A może przenieść projekt do kraju, w którym jego realizacja będzie tańsza? Czy zrealizować całość wewnątrz firmy, czy też może zlecić przeprowadzenie którejś z faz zewnętrznej firmie (outsourcing), która ma do tego celu odpowiednio wykwalifikowany zespół?

Analiza

W tej fazie zbiera się dokładniejsze wymagania dotyczące budowanego systemu i tworzy się jego specyfikację (precyzyjny opis tego, jak system powinien wyglądać i zachowywać się). Za opracowywanie wymagań biznesowych, czyli dotyczących potrzeb użytkowników, zwykle odpowiadają analitycy biznesowi, ale w analizę mogą być zaangażowani wszyscy członkowie zespołu (przykładowo testerzy oraz specjaliści QA mogą testować wymagania i proponować ulepszenia).

Projektowanie

Opierając się na wymaganiach, zespół tworzy projekty różnych elementów systemu: zarówno jego architektury (istnieje osobna specjalizacja – architekci oprogramowania), jak i interfejsu użytkownika oraz przewidywanych interakcji użytkownika z aplikacją (UI i UX designerzy).

Implementacja (development)

Jest to prawdopodobnie najbardziej znana i popularna faza, pierwsze skojarzenie wielu osób z branżą IT: programiści garbiący się nad ekranami, przez kilka godzin piszący w skupieniu kod i przelewający na komputer projekty oraz wymagania sporządzone podczas poprzedzających faz.

W praktyce faza ta nie przebiega zwykle w oderwaniu od pozostałych, kod przeważnie jest testowany na bieżąco, a wymagania wychodzące ze strony analityków biznesowych są dyskutowane na forum całego zespołu i odpowiednio dostosowywane m.in. do technicznych ograniczeń projektu – taki tryb pracy charakteryzuje obecnie najpopularniejsze metodyki zwinne.

Testowanie

Testowanie polega między innymi na weryfikacji spójności działania kodu stworzonego przez deweloperów z oczekiwaniami spisanymi w wymaganiach biznesowych, ale nie tylko. Obecność testowania w projekcie pomaga budować zaufanie do tworzonego systemu, a często także ulepszać procesy związane z całym projektem – testerzy, których kompetencje wykraczają poza prostą weryfikację działania aplikacji zwani są specjalistami zapewniania jakości (Quality Assurance, QA). Testy mogą być wykonywane na różnych etapach rozwoju aplikacji (jeszcze przed rozpoczęciem developmentu testom może podlegać choćby sama dokumentacja), a wręcz zaleca się, żeby rozpoczynały się one możliwie jak najwcześniej (tzw. podejście shift-left). Testy mogą być wykonywane przez testerów, ale też przez analityków biznesowych lub nawet użytkowników (testy akceptacyjne, w przypadku użytkowników zwane beta testami).

Wdrożenie

Pewnego dnia aplikacja jest gotowa do przekazania użytkownikom, albo jako ukończona całość (w przypadku modelu wytwarzania oprogramowania Waterfall), albo jako tzw. MVP (z ang. Minimum Viable Product), czyli okrojona wersja zawierająca minimalny zestaw funkcjonalności potrzebny do jej wypuszczenia na rynek, która następnie jest sukcesywnie rozbudowywana (w przypadku zwinnych modeli wytwarzania oprogramowania). Oprogramowanie jest wdrażane na środowisko produkcyjne, czyli po prostu udostępniane użytkownikom (albo, używając żargonu IT, deployowane na produkcję).

Utrzymanie

Nawet w momencie, kiedy już wdrożyliśmy aplikację i kiedy mamy do czynienia z pełną, dojrzałą jej wersją – nie jest to koniec pracy zespołu deweloperskiego. Oprogramowanie wymaga różnorodnych działań związanych z utrzymaniem poprawnego jego działania i aktualizacji związanych z różnymi aspektami: naprawianiem defektów (mogących się pojawiać także po zakończeniu fazy testowania), dodawaniem nowych funkcjonalności (z czasem mogą pojawiać się nowe potrzeby biznesowe), łataniem luk związanych z cyberbezpieczeństwem czy też koniecznością dostosowania się do nowych wymagań technologicznych i biznesowych (przykładowo zapewnienie możliwości migracji na inny system operacyjny albo zapewnienie responsywności, czyli wyświetlania strony lub aplikacji webowej na różnych urządzeniach, w tym mobilnych).

Podsumowanie

Jak widać, wytwarzanie oprogramowania to złożony proces, który wymaga starannego planowania, uczestnictwa specjalistów z różnych dziedzin i pracy zespołowej. Do zostania skutecznym profesjonalistą nie wystarczy jedynie umiejętność programowania, tworzenia przypadków testowych czy opracowywania precyzyjnych wymagań jako analityk biznesowy. Ważne są również umiejętności związane ze skutecznym planowaniem, szacowaniem (estymowaniem) czasu potrzebnego na wykonanie zadań, pracą grupową i komunikacją.

Z kolejnych tekstów dowiesz się więcej na temat różnych metodyk wytwarzania oprogramowania