en

Jednym z naszch zadań realizowanych w ramach współpracy z DHL International jest utrzymanie i rozwój aplikacji spedycyjnej. W 2016 roku zauważyliśmy, iż w aplikacji pojawia się coraz więcej błędów/problemów przy komunikacji z innymi narzędziami/aplikacjami. Analiza wskazała nam jednoznaczne źródło problemu – aplikacja była napisana w technologii Delphi v. 2006. Ten dług technologiczny powodował problemy (niekompatybilne biblioteki, stary i niekoniecznie dobrze napisany kod, rewizja logiki aplikacji itp.). Po przedstawieniu wyników analizy została podjęta decyzja o przepisaniu aplikacji na najnowszą wersję Delphi 10 Seattle.

Proces aktualizacji był bardzo złożony. Różnice pomiędzy wersjami Delphi wykluczały użycie komponentów dostarczanych bez kodu źródłowego, czy też takich które nie są już rozwijanie i nie posiadają wersji dla najnowszego Delphi. Przy okazji aktualizacji kodu natknęliśmy się też na nieprawidłowości w istniejących bibliotekach dll. Poprawienie ich stanowiło dodatkową nieprzewidzianą trudność. Podczas podnoszenia wersji kompilatora zetknęliśmy się więc z następującymi problemami:

  • Wykorzystywane komponenty, z podziałem na: wbudowane w Delphi (część z nich została porzucona, część ma odmienny sposób działania, listę właściwości i metod) oraz obce – uległy znacznym zmianom. Niezbędne była skrupulatna rewizja wykorzystywanych przez nie właściwości i metod oraz dopasowanie ich do nowej wersji kompilatora. Z kolei w przypadku obcych komponentów należało sprawdzić, czy są dalej rozwijane lub czy na rynku są ich odpowiedniki. Cały ten etap wiązał się z koniecznością przebudowy części logiki aplikacji.
  • Niektóre nazwy modułów (ang. Units) uległy zmianie, przeniesiono niektóre funkcje, klasy czy definicje stałych i zmiennych.
  • Programy napisane dla wersji kompilatora starszej niż D2009 wymagały przejrzenia sposobu traktowania stringów – do tego czasu standardem było ANSI, gdzie jeden znak odpowiadał jednemu bajtowi, potem zaczęło obowiązywać Unicode (2 bajty na znak). Całościowa analiza przed implementacją wykazała, że mogło to być źródłem wielu niełatwych do rozwiązania na późniejszym etapie problemów (na przykład jeśli funkcja zwraca numer znaku w buforze jako numer bajtu – po przejściu na Unicode będzie dwukrotnie zawyżać wynik.)
  • Spotkaliśmy się również z przypadkami niepoprawnego kodu, w którym zamiast stosowania array of byte stosowano array of char czy też oparto sposób działania funkcji o założenie, że typ char = byte pod względem wielkości. Poprawienie tak napisanych metod było niezwykle pracochłonne i wymagało wielu drobiazgowych testów.
  • W najnowszych wersjach Delphi praktycznie przestało funkcjonować BDE co wiązało się z koniecznością przeniesienie kodu na inne komponenty.
  • Konieczny był także zakup nowych wersji bibliotek oraz ich odpowiedników, przebudowanie części logiki aplikacji oraz interfejsu użytkownika.

Proces podnoszenia wersji kompilatora był ogromnie praco- i czasochłonny, lecz dzięki szczegółowej analizie przeprowadzonej na wczesnym etapie prac, udało się uniknąć większych błędów/problemów na etapie implementacji i testów. Projekt trwał 4 miesiące wraz z testami, które pochłonęły 1/4 tego czasu. Położenie dodatkowego nacisku na testy wynikało z rangi i znaczenia aplikacji dla biznesu Klienta, a także ze skali jej dziennego wykorzystania przez użytkowników liczonych w setkach na dobę.

Cała praca zakończyła się sukcesem i wdrożeniem nowego rozwiązania na środowisko produkcyjne. Od czasu wdrożenia, aplikacja działa stabilnie i nie notujemy istotnych problemów w jej działaniu.

RODO

Wyrażam zgodę, aby 3e sp. jawna zbierała, katalogowała, analizowała i podejmowała automatyczne decyzje o adresach internetowych połaczonych z urządzeniem, którego używam a także informacji o samym urządzeniu, w tym jego typie, wersji zainstalowanego oprogramowania w celu obserwacji moich aktywności w internecie (stworzenia profilu użytkownika). Automatyczne podejmowanie decyzji nie dotyczy danych wrażliwych. Zgoda pozostaje w mocy tak długo, jak długo istotne pozostają dane, dla których została wyrażona, lub do czasu, gdy któraś ze Stron zgodę wycofa. Cofnięcie zgody będzie skutkować usunięciem danych.