Etapy wytwarzania oprogramowania - okiem programisty > Blog Intellect
Wciśnij enter, aby wyszukać
Blog Intellect / Technologie  / Etapy wytwarzania oprogramowania – okiem programisty
Tworzenie oprogramowania

Etapy wytwarzania oprogramowania – okiem programisty

Wytwarzanie oprogramowania to złożony proces, który na celu ma dostarczenie produktu w pełni zgodnego z oczekiwaniami klienta w zamierzonym czasie i budżecie. Złożoność procesu determinuje wypracowanie konkretnych, następujących po sobie czynności, które zespół projektowy wykonuje. Kaskadowe podejście do wytwarzania oprogramowania powoli odchodzi do lamusa, ustępując miejsca bardziej zwinnym metodom. Podstawowe wyzwanie, jakie stoi przed zespołem projektowym to zrozumienie potrzeb klienta, jego celów biznesowych, a następnie w oparciu o tę wiedzę stworzenie systemu dostosowanego do oczekiwań zlecającego. Proces tworzenia oprogramowania można podzielić na kilka etapów.

Tworzenie oprogramowania

Zapytanie ofertowe

Jest to pierwszy etap w procesie realizacji projektu. To właśnie w tym miejscu spotykają się: klient i jego  pomysł oraz developerskie możliwości firmy. Krok ten wymaga przekazania założeń projektu, jego celów, potrzeb zamawiającego i wyzwań w sposób zrozumiały przez obie zainteresowane strony.

Zdarza się, że wizja klienta jest nieprecyzyjna, przez co finalny projekt może nie odpowiadać w pełni na jego potrzeby. Im lepiej zespół pozna złożoność i zakres prac tym dokładniej jest w stanie wyestymować czas i trudność wykonania projektu. Wizja produktu bywa kompletna i spójna, ale bywa też, że zewnętrzny odbiorca zaznajamiając się z pomysłem dostrzega potrzebę wyjaśnienia nieścisłości. Zdarza się, że wystarczy krótka rozmowa bądź wymiana e-mail, lecz czasem nieścisłości dotyczą głównych funkcji, których ostateczny wygląd wymaga wypracowania na warsztatach koncepcyjnych. Zespół developerski już na tym etapie stara się wstępnie oszacować przybliżony koszt i czasochłonność wykonania projektu.

Warsztaty koncepcyjne

Omówić założenia projektu, dopracować pomysł i rozwiać wątpliwości klienta można na spotkaniu warsztatowym, gdzie projekt zostanie “rozebrany na czynniki pierwsze”. W spotkaniu bierze udział zespół profesjonalistów składający się z analityków, account managerów, UX’owców oraz deweloperów, którzy poprzez chłodne spojrzenie i burzę mózgów mogą pomóc wypracować wizje bardziej dostosowaną do rynku bądź targetu odbiorcy. Pomaga także wyodrębnić główne cele biznesowe a także sprecyzować poboczne, gdyż celem pracy jest dostarczenie narzędzia, które te cele będzie realizowało.

Część programistyczna zespołu już na tym etapie czuwa nad definiowaniem funkcji zgodnie z możliwościami technologicznymi. Wynikiem pracy warsztatowej jest jasna, zrozumiała i sprecyzowana wizja produktu z zalążkiem listy zadań do wykonania, która będzie realizowana. Mając pełny pogląd produktu, wyodrębnioną i omówioną każdą funkcjonalność systemu, zespół specjalistów może dokonać precyzyjnej wyceny oraz określić czas potrzebny na wytworzenie oprogramowania.  

Więcej o warsztatach można przeczytać w tekście: Jak dobrze zacząć projekt czyli czym są warsztaty koncepcyjne? 

Dobór technologii 

Posiadając pełny zbiór założeń, procesów i funkcji można dokonać wyboru technologii. To właśnie ta wiedza determinuje, jaką technologię i narzędzia będzie najoptymalniej wykorzystać do osiągnięcia założonych celów biznesowych. Podczas wyboru technologii należy zwrócić uwagę aby była ona w możliwie najwyższej stabilnej wersji. Następnie można wybrać zespół programistyczny, który będzie posiadał kompetencje w zakresie wybranych technologii i narzędzi. Na tym etapie zespół programistyczny dokonuje także analitycznego projektowania core systemu.

Proces wytwarzania

W kolejnym kroku ruszają prace programistyczne mające na celu wytworzenie pierwszych przyrostów. Proces ten jest podzielony na cykle wydawnicze (tzw. sprinty), np. dwutygodniowe, po których zamawiającemu demonstrowana jest wytworzona część oprogramowania. Klient obcując z zespołem developerskim ma ciągły wgląd na postępujące prace. Tutaj także potrzebna jest jego dyspozycyjność czasowa w celu zaplanowania prac, które będą realizowane w kolejnym cyklu wydawniczym, a następnie ich odbiór podczas demonstracji. Często zdarza się, że dotychczas wytworzony fragment systemu ukazuje możliwości udoskonalenia produktu, które poprzez zwinną metodologię pracy są możliwe do wdrożenia. Przez ciągłą obecność klienta i synergię między nim a zespołem zmiana nie jest problemem, a wartością, która wprost przekłada się na jeszcze doskonalszą finalną wersję wytwarzanego produktu.

Cykliczne wydawanie przyrostów można porównać do układanki z klocków. Dokładamy kolejne elementy, które z czasem tworzą kompletne oprogramowanie. Po każdym cyklu wydawniczym możemy dokonać wspólnej refleksji w celu zoptymalizowania samego procesu developmentu. Zwinne reagowanie jest codziennością i to dzięki temu jesteśmy w stanie możliwie szybko reagować na zachodzące zmiany. Załóżmy sytuację że zewnętrzny system, z którym miała być zintegrowana wytwarzana aplikacja, wprowadza opłaty. Dzięki możliwości zareagowania na taką sytuację jesteśmy w stanie znaleźć inne rozwiązanie, które pomoże uniknąć dodatkowych wydatków i spełni wszystkie założenia biznesowe nie zwiększając kosztów wdrożenia. 

Asysta powdrożeniowa

Po zakończonym procesie developmentu przychodzi czas na produkcyjne wdrożenie wytworzonej aplikacji. Ale na samej instalacji ten etap się nie kończy, zespół developerski pomaga klientowi uruchomić system i zacząć z niego korzystać. W tym kroku często wprowadzane są ostatnie szlify i drobne zmiany, które zdeterminowane są finalnym użytkowaniem systemu. Pewne przyzwyczajenia odbiorców są na tyle silne, że dostosowanie ich do nowego systemu jest bardziej kosztowne niż zaadaptowanie nowego systemu pod ich przyzwyczajenia. 

Rozwój

Przygotowany system został zaprojektowany w oparciu o skalowalność, na chwilę obecną biznes klienta ma zapotrzebowanie na dotychczasowy wygląd projektu. W przyszłości może zrodzić się potrzeba rozwinięcia go o nowe funkcje. Poprzez dedykowane rozwiązanie dostosowanie produktu do nowych wyzwań stanowi mniejszy koszt niż adaptacja gotowych systemów.

Wytwarzanie oprogramowania to wyzwanie nie tylko dla zespołu developerskiego ale także dla klienta. Jednak w oparciu o profesjonalizm i doświadczenie zespołu projektowego wszystkie trudności i problemy można przekuć w wyzwania. Bliska współpraca, szczerość oraz ciągły kontakt pozwala dążyć do osiągnięcia celów klienta, dając mu finalny produkt, który go w pełni satysfakcjonuje.

Sławomir Król

Senior Full Stack Developer

Damian Marszałek

Senior PHP Developer


Brak komentarzy

Napisz komentarz