W jednym z naszych poprzednich artykułów poświęconym zagadnieniu modernizacji oprogramowania legacy w firmach, skupiliśmy się na przedstawieniu skali strat ponoszonych przez firmy korzystające z przestarzałego oprogramowania oraz korzyści, jakie przynosi dostosowanie systemów do aktualnych standardów.
Podkreślaliśmy również kluczowe znaczenie, jakie ma wybór odpowiedniej strategii modernizacji oprogramowania legacy dla powodzenia całej inicjatywy i osiągnięcia zakładanych celów biznesowych.
W tym artykule szerzej scharakteryzujemy każdą z dostępnych opcji modernizacji, przeanalizujemy ich koszty, łatwość zastosowania oraz skalę potencjalnych korzyści.
Zapraszamy do lektury.
Jakie są dostępne strategie modernizacji systemów w firmie?
Gdy podjęta zostanie decyzja o rozpoczęciu dostosowywania oprogramowania, z którego korzystacie w firmie, do aktualnych standardów, kluczowe znaczenie będzie miał dobór najlepszej strategii modernizacji dla każdego z objętych nią systemów.
Aktualnie wyróżnia się 7 głównych podejść do modernizacji oprogramowania, różniących się pod względem stopnia złożoności oraz wpływu, jaki każde z nich ma na końcową funkcjonalność, bezpieczeństwo oraz architekturę systemu:
- enkapsulacja (określana również jako hermetyzacja/kapsułkowanie),
- re-hosting,
- replatforming,
- refaktoryzacja kodu,
- optymalizacja architektury (rearchitecting),
- przebudowa systemu,
- wymiana systemu.
Wybór najbardziej optymalnej strategii powinien odbywać się w ramach usystematyzowanego procesu modernizacji oprogramowania, w oparciu o zebrane i przeanalizowane informacje o aktualnym stanie działających systemów.
Jak powinien wyglądać proces modernizacji systemów legacy w firmie?
Proces modernizacji oprogramowania legacy w firmie składa się z następujących etapów:
1. Kompleksowa analiza wykorzystywanych w przedsiębiorstwie systemów i przypisanie ich do poszczególnych grup – systemów legacy, systemów pośrednich oraz nowoczesnego oprogramowania. Każda z grup wymaga podjęcia innych działań:
a. systemy legacy – wymagają jak najszybszej modernizacji niezależnie od ich wieku,
b. systemy pośrednie – to narzędzia, które powinny zostać zmodernizowane, ale nie jest to priorytetem,
c. nowoczesne systemy – nie muszą być aktualnie modernizowane, ale powinny być monitorowane i objęte planem rozwoju i utrzymania oprogramowania.
2. Ocena każdego systemu wymagającego modernizacji pod kątem możliwych opcji jej przeprowadzenia, uwzględniająca aspekt biznesowy oraz perspektywę działu IT. Duże znaczenie ma na tym etapie również określenie konkretnych, mierzalnych celów, które chcemy osiągnąć poprzez modernizację systemów legacy.
3. Wybór najbardziej optymalnych metod modernizacji poszczególnych systemów.
4. Opracowanie roadmapy modernizacji wszystkich systemów, obejmującej kluczowe kroki, niezbędne do osiągnięcia zakładanych rezultatów.
5. Zaplanowanie i cykliczne przeprowadzanie ponownej analizy aktualności systemów, aby odpowiednio wcześnie reagować w sytuacji, gdy oprogramowanie nie wymagające wcześniej modyfikacji przestaje spełniać aktualne standardy.
Jak widać, zanim zdecydujemy się na wybór konkretnej strategii, kluczowe znaczenie będzie mieć identyfikacja problemów oraz określenie celów, które chcemy osiągnąć poprzez modernizację systemów.
Analiza aktualnego stanu systemów jako punkt wyjścia do modernizacji
Zanim rozpoczniesz modernizację systemów w swojej firmie, powinieneś przeanalizować, czym właściwie dysponujesz, które oprogramowanie wymaga poprawy i w jakim zakresie. Dzięki temu będziesz w stanie właściwie zaplanować cały proces i wybrać dla każdego systemu strategię modernizacji, która przyniesie najlepsze efekty.
Analizę warto zacząć od zadania sobie kilku ogólnych pytań.
1. Jaka jest wartość obecnego systemu dla firmy?
2. Czego mu brakuje?
3. Jak użytkownicy wchodzą w interakcję z obecnym systemem? Które funkcje są używane najczęściej/najrzadziej?
4. Jakie problemy są zgłaszane? Czy są one związane z niską wydajnością, błędami, problemami z dostępem do danych, utrudnioną nawigacją po systemie lub jego dużą złożonością?
5. Które funkcje systemu są kluczowe dla codziennego funkcjonowania przedsiębiorstwa, a które są mniej ważne?
6. Co tak naprawdę działa dobrze i nie powinno być zmieniane?
Szczegółowe zdefiniowanie bieżących problemów, zarówno technologicznych, jak i biznesowych, pozwala jasno określić, gdzie jest miejsce na poprawę.
W przypadku każdego z systemów będą pewne obszary, na których należy się skupić – na przykład wydajność systemu, problemy z doświadczeniem użytkownika, języki i używane narzędzia (gdzie częstym problemem jest brak dostępnego wsparcia).
Znając rodzaj i skalę problemów, możliwe będzie przejście do kolejnego etapu, czyli określenie celów, które mają być osiągnięte dzięki modernizacji każdego z systemów legacy w Twojej firmie.
Wyznaczenie mierzalnych celów modernizacji systemów
Sukces we wdrażaniu zmian, zarówno małych, jak i dużych, wymaga jasnego zdefiniowania obecnego stanu rzeczy i wyznaczenia realistycznych, precyzyjnych celów.
Ocena, czy wybrana strategia modernizacji przynosi efekty, powinna opierać się na mierzalnych KPI pozwalających na ocenę działań i wprowadzenie ewentualnych usprawnień.
Warto pamiętać, iż proces modernizacji systemów legacy odbywa się w etapach, dlatego powinno się z wyprzedzeniem zaplanować, co chcemy osiągnąć w poszczególnych fazach, biorąc pod uwagę wymagania techniczne i potrzeby biznesowe.
Wyznaczanie realistycznych i mierzalnych celów może koncentrować się na różnych obszarach, takich jak:
- niezawodność procesów,
- zarządzanie bezpieczeństwem w celu uniknięcia zagrożeń zewnętrznych,
- wydajność,
- satysfakcja konsumenta,
- liczba Klientów korzystających z produktu,
- nawigacja i intuicyjność.
Wiedząc, jaki problem próbujemy rozwiązać, gdzie leży jego źródło (technologia, architektura czy określone funkcjonalności systemu) oraz znając cele, które chcemy osiągnąć, możemy przystąpić do wyboru najlepszej strategii modernizacji systemów legacy w firmie.
Która strategia modernizacji systemów legacy będzie odpowiednia dla Twojej firmy?
Każde z dostępnych podejść do modernizacji systemów legacy wiąże się z innymi kosztami, nakładami pracy, wymaganiami technicznymi i wpływem na działalność firmy.
Przeprowadzona wcześniej szczegółowa analiza potrzeb oraz określenie celów są punktem wyjścia do wyboru tej strategii modernizacji, która pozwoli Ci osiągnąć zaplanowane rezultaty przy zachowaniu optymalnego poziomu kosztów.
1. Enkapsulacja (określana również jako hermetyzacja/kapsułkowanie) systemów legacy
Jest to podejście minimum, polegające na wyizolowaniu określonych danych lub funkcji systemu legacy i udostępnieniu ich użytkownikom w innym narzędziu, np. poprzez interfejs API.
Codzienna praca odbywa się wtedy bez logowania do przestarzałego oprogramowania, z wykorzystaniem nowoczesnego interfejsu, co wpływa na komfort użytkowników.
Enkapsulacja może być krótkoterminowym rozwiązaniem, poprawiającym User Experience poprzez umożliwienie szybkiego i efektywnego wykorzystania danych i funkcji systemu legacy.
Wśród zalet enkapsulacji wymienia się najczęściej stosunkowo niski koszt zastosowania tego rozwiązania oraz niewielkie ryzyko, jakie ze sobą niesie.
Główną wadą tego podejścia jest fakt, iż ponoszone do tej pory koszty związane z konserwacją starego systemu nie zmieniają się, gdyż w samym oprogramowaniu nie zostały wprowadzone żadne modyfikacje i konieczna jest dalsza dbałość o jego stabilność, tak jak miało to miejsce do tej pory.
Podejście to jest czasem stosowane w sytuacji, gdy firma planuje wdrożenie nowego oprogramowania, które wykorzystywać będzie częściowo dane bądź funkcje systemu legacy, ale nie są planowane nakłady na modernizację starego systemu, aby zintegrować go z nowym.
2. Re-hosting systemu
W sytuacji, kiedy problemem, z którym musisz sobie poradzić, są koszty utrzymania własnej infrastruktury serwerowej oraz zapewnienie bezpieczeństwa danych, a sam system nie wymaga znaczącej modernizacji, rozwiązaniem może być re-hosting oprogramowania.
Jest to przeniesienie systemu na inny serwer, przy pełnej dowolności wyboru, czy będzie to infrastruktura fizyczna, wirtualna lub chmura.
Takie podejście pozwala na dalsze korzystanie z funkcjonalności systemu i dostęp do wszystkich danych, przy jednoczesnym wzroście wydajności i poprawie bezpieczeństwa.
Re-hosting, określany również jako podejście do migracji typu „lift and shift”, umożliwia wydłużenie żywotności starszego kodu, przenosząc istniejącą logikę biznesową i dane na nowoczesne platformy. W efekcie procesy biznesowe są realizowane bez zakłóceń, a koszty utrzymania systemu legacy spadają, dzięki przeniesieniu go ze starego sprzętu na nowoczesne rozwiązania hostingowe.
Trzeba jednak wziąć pod uwagę, iż re-hosting nie zapewnia tak znaczącego wzrostu wydajności i ograniczenia kosztów, jak rzeczywista modernizacja systemu.
3. Replatforming
To podejście oznacza migrację systemu ze starego środowiska na nowoczesną platformę przy minimalnych zmianach w kodzie źródłowym oprogramowania.
Ogólnie rzecz biorąc, kod systemu jest modyfikowany tak, aby można było go łatwo zintegrować z nowym środowiskiem, często chmurowym.
Skutkuje to zwiększeniem stabilności i niezawodności oprogramowania oraz poprawą komfortu jego użytkowania, jednak struktura kodu, a co za tym idzie funkcje systemu, w dużej mierze pozostają niezmienione.
Rozwiązanie to jest możliwe do zastosowania jedynie w przypadku systemów, których architektura pozwala na stosunkowo bezproblemowe przeniesienie na nową platformę.
W innych przypadkach konieczne może okazać się zastosowanie innego podejścia, często oznaczających konieczność dokonania o wiele poważniejszych modyfikacji.
4. Refaktoryzacja kodu
W przypadku tego podejścia modernizacja oprogramowania odbywa się poprzez przebudowę i optymalizację kodu źródłowego, ale bez ingerowania w zewnętrzne zachowanie systemu.
Cechą charakterystyczną refaktoryzacji kodu systemów legacy jest dokonywanie modyfikacji metodą małych kroków, poprzez wprowadzanie niewielkich, łatwych w kontroli i testowaniu zmian, które następnie można bardzo szybko zintegrować z pierwotnym kodem.
To podejście jest tańsze w zastosowaniu niż kompleksowa przebudowa systemu, gdyż pozwala na zastosowanie refaktoryzacji kodu jedynie wybranych segmentów oprogramowania, w przypadku, kiedy problem występuje jedynie w nich, a nie w całym narzędziu.
Zmniejszają się również koszty utrzymania systemu, gdyż w trakcie prac nie trzeba tworzyć dwóch oddzielnych baz kodu.
Warto jednak pamiętać, iż refaktoryzacja wymaga innych umiejętności niż tworzenie oprogramowania od podstaw, co może zwiększyć koszt budowy odpowiedniego zespołu programistów. Należy liczyć się również z dodatkowymi wydatkami, związanymi z koniecznością przeprowadzenia większej ilości testów, aby zapewnić stabilne działanie przebudowanych fragmentów kodu w ramach całości systemu.
5. Optymalizacja architektury systemu (rearchitecting)
Ta strategia koncentruje się na optymalizacji architektury systemu z przepisywaniem kodu, w celu zwiększenia wydajności i ułatwieniu wprowadzania nowych funkcji.
Najczęściej modernizacja oprogramowania w tym podejściu polega na rozbiciu funkcjonującego wcześniej złożonego monolitu na mikroserwisy. Rozwiązania oparte na mikrousługach oferują większą elastyczność i mniejsze ryzyko, ponieważ programiści mogą wdrażać nowe funkcje, przeprowadzać aktualizacje lub wprowadzać zmiany bez wpływu na cały system.
Zmiana architektury może być optymalnym rozwiązaniem w wielu przypadkach, zapewniając dobry zwrot z inwestycji oraz długoterminowe oszczędności.
Jest to jednak proces czasochłonny, wymagający znacznej rozbudowy wewnętrznego zespołu programistów bądź zatrudnienia doświadczonego software house’u, który będzie w stanie kompleksowo zrealizować całość prac dla Twojej firmy. Często zaangażowanie partnera zewnętrznego jest najlepszym rozwiązaniem, gdyż rearchitecting wymaga wielu zróżnicowanych umiejętności, trudnych do zgromadzenia w wewnętrznym zespole ze względu na koszty.
6. Przebudowa systemu
Jeśli zdecydowałeś się na dalsze korzystanie z systemu, a inne strategie modernizacji nie są w przypadku Twojej firmy optymalne, możesz również zdecydować się na gruntowną przebudowę oprogramowania.
Ta strategia przewiduje stopniowe przeprojektowywanie bądź przepisywanie kodu od podstaw, począwszy od najbardziej newralgicznych funkcji oprogramowania. Biorąc pod uwagę zasoby potrzebne do zbudowania wielu elementów systemu praktycznie od podstaw, jest to najdroższa i najbardziej czasochłonna droga modernizacji.
W przypadki tego podejścia przebudowujemy cały system bądź aplikację, w przeciwieństwie do strategii optymalizacji architektury systemu, gdzie modyfikujesz tylko części oprogramowania.
W pewnych okolicznościach przebudowa systemu od podstaw może być jednak uzasadniona, gdyż pozwala na zachowanie pierwotnych funkcjonalności oraz zgromadzonych danych, przy jednoczesnym wprowadzeniu znacznych ulepszeń i wszystkich korzyści wynikających z tworzenia dedykowanego oprogramowania.
Może się również zdarzyć, że część komponentów systemu będzie nadal użyteczna bez konieczności całkowitej przebudowy, co pozwoli na ograniczenie kosztów związanych z projektem.
7. Wymiana systemu
W przypadku, gdy żadna ze strategii modernizacji systemu legacy w Twojej firmie nie jest opłacalna, ostatecznym rozwiązaniem może być stopniowe wycofanie przestarzałego oprogramowania z eksploatacji i zastąpienie go nowoczesnym i wydajnym systemem.
Podsumowanie
Wybór odpowiedniego podejścia do modernizacji oprogramowania w Twojej firmie wymaga dużego doświadczenia. To nie tylko określenie, ile czasu potrwa wprowadzenie zmian w zależności od wybranej strategii, ale przede wszystkim umiejętność doboru takiego rozwiązania, które pozwoli na osiągnięcie zakładanych celów i zapewni dalsze sprawne funkcjonowanie systemu.
Modernizacja systemu legacy lub nawet wdrożenie zupełnie nowego oprogramowania nie zwalnia Cię z konieczności zaplanowania jego dalszej konserwacji, naprawiania pojawiających się błędów oraz świadomego rozwoju.
Aby uniknąć sytuacji z jaką firma boryka się obecnie, trzeba również zadbać o dokładną dokumentację. Oprócz opracowania dokumentacji dla przyszłych programistów może być również wymagane stworzenie przewodników i/lub programów szkoleniowych dla nowych użytkowników. Wreszcie, aby upewnić się, że rutynowa modernizacja systemu nie zmarnuje pieniędzy, należy pamiętać, że ciągłe aktualizacje są niezbędne.
Aby to osiągnąć, najlepszym rozwiązaniem jest zaangażowanie doświadczonego partnera, software house’u, który tak jak SOFTIQ, przeprowadził wiele zakończonych sukcesem projektów modernizacji systemów legacy w firmach o różnej wielkości i specyfice.
Jeśli zastanawiasz się, jak możemy wesprzeć Cię w Twoim projekcie modernizacji oprogramowania, zachęcamy do kontaktu z jednym z naszych konsultantów, który pomoże Ci to ocenić.
Zapraszamy do lektury naszych artykułów
oraz pobrania przydatnych materiałów!
Najlepsze praktyki i Case Studies SOFTIQ zebrane w
e-booku! Pobierz już teraz.
Poznaj zalety i wady staff augmentation i dowiedz się, ile możesz zaoszczędzić dzięki outsourcingowi specjalistów.
Dowiedz się, jakie są główne różnice między dostępnymi w sprzedaży systemami a oprogramowaniem dedykowanym.
This post is also available in: English (Angielski)