
W poprzednim wpisie poruszyliśmy temat systemów legacy (zastanych) i ich wpływu na przedsiębiorstwa produkcyjne. Pisaliśmy także o ścieżkach modernizacji które są możliwe oraz o potencjalnych problemach które może napotkać zarówno dostawca oprogramowania jak i firma z sektora wytwórczego. Dzisiaj poruszymy temat jak AI może pomóc – nie zastąpi ludzi, ale może przyspieszyć wiele żmudnych i problematycznych etapów pracy.
Przykłady wsparcia generatywnej AI w pracy z systemami legacy
Automatyzacja testów – koniec z testowaniem „na żywym organizmie”
Jednym z największych problemów w systemach legacy jest brak testów, co prowadzi do sytuacji, gdzie każda zmiana to loteria – czy nowa funkcjonalność przypadkiem nie rozwali czegoś innego? W firmie produkcyjnej ryzyko jest jeszcze większe, bo jeśli system sterujący np. planowaniem produkcji lub logistyką przestanie działać, linie mogą stanąć, a straty liczone są w tysiącach złotych za godzinę przestoju.
Zamiast zatrudniać programistów do ręcznego pisania testów (co byłoby drogie, czasochłonne i mało ekscytujące dla nich), możemy wykorzystać generatywną AI do automatycznego generowania testów jednostkowych i integracyjnych. Oczywiście, nie będzie to działało idealnie od razu – trzeba umiejętnie dostosować prompty i zastosować techniki prompt engineeringu, ale z odpowiednim podejściem możemy znacząco podnieść poziom bezpieczeństwa wprowadzanych zmian.
Refaktoryzacja kodu – lepsza czytelność, mniej błędów
Kod w systemach legacy często przypomina poplątane spaghetti, w którym każda zmiana może spowodować awarię w najmniej oczekiwanym miejscu. AI może pomóc w porządkowaniu takiego kodu, usuwając boskie klasy, eliminując metody z dziesiątkami argumentów, czy upraszczając zagnieżdżone warunki i pętle.
W praktyce oznacza to, że zamiast przepisywać cały system od zera, co w przypadku firm produkcyjnych jest olbrzymim i kosztownym ryzykiem, możemy stopniowo poprawiać i upraszczać kod, sprawiając, że łatwiej będzie go utrzymywać i rozwijać. Dobre podejście to zastosowanie analizy kodu w Sonarze, a następnie poproszenie AI o optymalizację na podstawie wykrytych problemów. AI może też generować pull requesty w systemie VCS, które następnie są weryfikowane przez programistów, co pozwala na kontrolowany i bezpieczny proces ulepszania kodu.
AI nie zastąpi ludzi, ale może ich odciążyć
Nie ma co się oszukiwać – AI popełnia błędy i generuje tzw. halucynacje, czyli kod, który na pierwszy rzut oka wygląda poprawnie, ale w rzeczywistości nie działa. Dlatego nie można jej ufać w 100% – każda zmiana wymaga weryfikacji przez człowieka. Najlepsza strategia to praca w małych krokach, sprawdzanie każdej poprawki i uruchamianie testów przed wdrożeniem.
Jak sprawdzić, czy AI wygenerowała poprawny kod?
W firmie produkcyjnej nie możemy sobie pozwolić na błędy, które mogłyby wpłynąć na działanie systemu. Dlatego każda zmiana wprowadzona przez AI powinna przechodzić przez kilka warstw weryfikacji:
- Czy kod się kompiluje? Jeśli nie, to wiadomo, że AI coś namieszała.
- Czy przechodzą testy jednostkowe i integracyjne? Jeśli tak, mamy większą pewność, że kod działa poprawnie.
- Czy spełnia standardy jakości (np. Sonar, Checkstyle)? Jeśli tak, to kod jest bardziej czytelny i lepiej napisany.
- Czy code coverage w projekcie się poprawił? Im więcej pokrycia testami, tym mniejsze ryzyko ukrytych błędów.
Podsumowując – AI może znacznie przyspieszyć i ułatwić pracę z systemami legacy w firmach produkcyjnych, ale musi być używana świadomie i pod kontrolą ludzi. W odpowiednich rękach może być potężnym wsparciem, pozwalającym firmom stopniowo modernizować swoje systemy bez ryzyka nagłego paraliżu operacyjnego.
Bezpieczeństwo w pracy z AI
Czy AI może „wyciekać” kod legacy?
Druga istotna kwestia to prywatność i poufność kodu. Żeby AI mogła pomóc w refaktoryzacji czy analizie kodu legacy, musi najpierw ten kod zobaczyć. Jeśli korzystamy z chmurowych narzędzi generatywnych (np. OpenAI, GitHub Copilot), to kod naszej firmy może trafić na zewnętrzne serwery. W firmach produkcyjnych, gdzie często istnieją rygorystyczne polityki bezpieczeństwa, wysyłanie kodu do chmury jest niedopuszczalne.
Rozwiązanie: lokalny model AI
Jednym ze sposobów na zachowanie bezpieczeństwa jest postawienie własnego lokalnego modelu AI (LLM – Large Language Model), który będzie działał wewnątrz infrastruktury firmy i nigdy nie wyśle kodu na zewnątrz. Problem? Takie rozwiązanie wymaga potężnych zasobów obliczeniowych, zwłaszcza wydajnych kart graficznych (GPU), które są kluczowe do obsługi AI.
Czy to zawsze oznacza inwestycję w drogie serwery? Niekoniecznie. Czasami można użyć gamingowych komputerów, które mają mocne karty graficzne – nie są idealne do zastosowań enterprise, ale w mniejszych firmach mogą być budżetowym rozwiązaniem. Przykładowo, modele LLaMA od Mety mogą działać lokalnie, oferując wsparcie AI bez ryzyka wycieku danych.
Jak AI pomaga w zrozumieniu systemów legacy w firmach produkcyjnych?
Jednym z największych problemów przy modernizacji systemów legacy jest uboga lub wręcz brakująca dokumentacja techniczna. W firmach produkcyjnych wiele systemów było budowanych przez lata – często przez osoby, które już dawno opuściły organizację. Efekt? Zespoły IT muszą przeprowadzać kosztowny i czasochłonny reverse engineering, żeby w ogóle zrozumieć, jak działa zastane oprogramowanie.
AI jako narzędzie do analizy i dokumentowania systemu legacy
Generatywna sztuczna inteligencja może automatycznie analizować kod i generować zrozumiałą dokumentację, tłumacząc skomplikowane zależności na język bardziej przystępny dla analityków biznesowych i zespołów IT. To nie jest teoria – ThoughtWorks, globalna firma doradcza specjalizująca się w transformacji cyfrowej i modernizacji systemów IT, pracowała z dużą firmą produkcyjną z Europy, która miała 9 miesięcy opóźnienia w modernizacji swojego systemu, ponieważ ich analitycy nie byli w stanie poprawnie zrozumieć logiki starego oprogramowania. Wykorzystanie AI do analizy kodu i dokumentacji pozwoliło im skrócić czas reverse engineeringu o 2/3, co realnie przyspieszyło cały projekt.
AI jako wsparcie w projektowaniu nowej architektury
AI nie tylko pomaga w analizie starego kodu, ale może również wspierać zespoły projektowe w tworzeniu nowej architektury systemu. Nie wykona całej pracy, ale może podsuwać optymalne rozwiązania na podstawie najlepszych praktyk i wzorców architektonicznych. W praktyce oznacza to, że spotkania zespołów IT i architektów mogą być bardziej efektywne, ponieważ AI może automatycznie sugerować sposoby rozwiązania problemów występujących w systemach legacy.
Podsumowanie
Modernizacja systemów legacy w firmach produkcyjnych to ogromne wyzwanie, ale AI może znacząco ułatwić ten proces. Dzięki automatyzacji testów ryzyko awarii zostaje zminimalizowane, a refaktoryzacja kodu pozwala na stopniowe porządkowanie i upraszczanie zastanych rozwiązań. AI pomaga również w analizie i dokumentacji systemów, skracając czas potrzebny na ich zrozumienie.
Nie oznacza to jednak, że AI może całkowicie zastąpić ludzi – jej wsparcie musi być odpowiednio nadzorowane, a każda zmiana weryfikowana. Odpowiednio wykorzystana sztuczna inteligencja staje się jednak potężnym narzędziem, które pozwala firmom produkcyjnym bezpiecznie modernizować swoje systemy, ograniczając ryzyko i koszty.