SOFTWARE

Software jest zestawem instrukcji przekazywanych jednostce centralnej (procesorowi) komputera, w celu realizacji przez niego określonych zadań. Jest to jedna z możliwych definicji. Posługując się bardziej obrazowym językiem, software jest duszą maszyny.
 


W filozofii dusza jest pierwiastkiem życia, decydującym o tym, że osoba ludzka, zwierzę i roślina są bytami żywymi. Maszyny, które my ożywiamy, niewyobrażalnie szybko przetwarzają słowa, obrazy oraz dźwięki na ciągi zer i jedynek, te na minimalne wariancje w promieniowaniu elektromagnetycznym… i odwrotnie – tak, aby na drugim końcu świata, niemal natychmiast, słowa, obrazy i dźwięki zostały wiernie, bezbłędnie odtworzone. Maszyny te również w milionowych częściach sekundy decydują, które fragmenty spektrum dostępnej częstotliwości będą optymalne w danym momencie, dla danego odbiorcy – w zależności od tego, gdzie ten się znajduje i jakim urządzeniem dysponuje. Robią to równocześnie dla milionów użytkowników. Właśnie, dlatego pisanie softwaru jest naszą pasją, a do jego tworzenia używamy najbardziej zaawansowanych narzędzi, technik i metodologii.

W Centrum Technologicznym Nokii w Krakowie pracujemy nad oprogramowaniem urządzeń infrastruktury sieci komórkowych 3G, 4G oraz 5G (stacje bazowe, elementy zarządzające sieciami). Są to urządzenia wielozadaniowe, pracujące w czasie rzeczywistym. Aby spełnić współczesne oczekiwania klientów, ich dostępność powinna być co najmniej na poziomie „five nines”, ponieważ ich czas wdrożenia („time to market”) musi być krótki. Wykorzystywane technologie, jak i organizacja pracy muszą umożliwiać spełnianie powyższych kryteriów.

Większość oprogramowania tworzona jest w języku C++, z wykorzystaniem najnowszych, dostępnych mechanizmów (wprowadzanych w wersjach C++ 11, C++ 14), jak i bibliotek (boost, STL). Narzędzia wspomagające tworzenie oprogramowania, z których korzystamy, to między innymi: svn (git), ClearCase, Jira, Jenkins, RedMine, Wireshark, Gcov, Valgrind, Klockwork. Do tworzenia wewnętrznych narzędzi oraz automatycznego testowania naszych produktów używamy Javy, Pythona, Perla, TTCN-3, a to jedynie te najczęściej wykorzystywane. Zespoły projektowe w zdecydowanej większości pracują w metodologii Agile (w tym SCRUM, SCRUM LeSS, LeSS Huge)