Migracja/Modernizacja Delphi 5 do ... czegoś współczesnego

0

Witajcie,

trafił do mnie zmęczony klient, który ma kilka sporych aplikacji w Delphi 5 (w sumie >1M linii kodu, > 250k linii per aplikacja). Chciałby coś z tym kodem zrobić, żeby było łatwiej z rozwojem bo nie ma ludzi do Delphi na jego rynku i odejść od aplikacji desktopowych. Przy takiej skali przepisanie tego środowiska to zadanie na lata (szczególnie, że mało kto/nikt nie wie jak dokładnie całość działa). Zastanawiam się nad możliwością zmigrowania (pół)automatycznego do czegoś nowszego (C# / .NET / nowe Delphi) i dopiero potem przystąpienie do dalszej modernizacji ze współczesnymi narzędziami do refaktoringu. Czy może ktoś na forum spotkał się z podobnymi wyzwaniami i mógłby się podzielić wnioskami albo zna kogoś, kto takie rzeczy robił?

Pozdrawiam,

PS. Przeszukałem forum i nie znalazłem nic bliskiego, jeśli to duplikat to bardzo przepraszam.

--jw

3

Odpowiem Ci możliwie najdokłądniej jak się da.

Mam w firmie identyczną sytuację mamy apkę w Delphi5 napisaną grubo ponad 20 lat temu grubo ponad 200 modułów (każdy moduł to oddzielny BPL). Firma kupiła licencje na nowe delphi aby się licencyjnie zgadzało i poprosili o wycenę mnie i drugiego developera ile by kosztowało/trwało zmigrowanie na nowe delphi. Policzyliśmy, że sam rdzeń aplikacji czyli obsługa bazy, komponenty, zarządzanie userami, moduł administracyjnyc itd to pół roku roboty dla nas 2 bez żadnej innej roboty. Następnie tydzień po tygodniu miesiąc po miesiącu migracja poszczególnych BPL po BPL z wyłączaniem starych modułów i zmuszeniem biznesu do rzetelnych testów. Firma się na taki koszt nie zgodziła. W międzyczasie firmę kupili amerykanie i wymyślili, że przepiszemy to całe delphi na inną aplikację webową, która rozwijana jest w angularze. Zatrudnili blisko 20 osób (developerów, testerów, analityków, a nawet SCRUM MASTERA!) i od killku miesięcy próbują coś robić. Niestety na każdą ich jedną funkcjonalność wpada kilka innych funkcjonalności w obecnym delphi bo biznes dalej chce to rozwijać i zrobienie nowej formatki/funkcjonalności w delphi robimy w godzinach, chłopaki w angularze przepisują obecne funkcjonalności w tygodniach. W ten sposób nie ma opcji aby kiedykolwiek nas dogonili z developmentem

Wszystko zależy od tego co i jak jest w tym delphi 5 napisane. Jeśli nie masz jakichś niestandardowych komponentów (tak jak w moim przypadku do bazy danych jest framework firmy commarch) to przy zakupie nowego delphi z BSC Polska mogą Ci nawet zaproponować support przy przepisywaniu. Znam osobiście kilku ludzi z tego bsc i projekty, przy których pomagali także da się z nimi dogadać. Pytanie czy rzeczywiście klient chce takie koszty ponieść.

0

@woolfik Bardzo dziękuję. Dokładnie takiego scenariusza się obawiam w przypadku przepisywania od zera do nowego stosu. Wydaje mi się (widziałem kilka takich propozycji w sieci), że możliwa jest częściowa automatyzacja migracji do innej technologii. W szczególności znalazłem potwierdzone przypadki migracji z Delphi do C# z użyciem narzędzi do migracji i remigracji (czyli można na bieżąco doganiać dewelopment w starym stosie). Tak zmigrowany system można dalej modernizować już z użyciem współczesnych technik i dostosowywać go sukcesywnie do współczesnej architektury. Jest kilka wad takiego podejścia ale też sporo zalet. Czy spotkałeś może takie podejście?

4

Pracuję przy aplikacji, która pierwotnie była napisana w TP (pierwsze wersje były pod DOSa), potem w Delphi. Aktualnie wygląda to tak, że CORE GUI oraz wiele modułów jest nadal w Delphi 10.3 natomiast od paru lat (ponad 8 na pewno) następuje przepisywanie po kawałku do C#. Komunikacja pomiędzy modułami odbywa się po COM.

Co do automatyzowania to największy ból pewnie będzie z delphiowym TList, który trzyma pointery. Jak dla mnie to jedyna opcja to wprowadzenie modułowości i migrować po kawałku bo migracja całej aplikacji jest raczej niewykonalna. Ale wtedy odpada migracja z desktopu na web

1
jarwyp napisał(a):

@woolfik Bardzo dziękuję. Dokładnie takiego scenariusza się obawiam w przypadku przepisywania od zera do nowego stosu. Wydaje mi się (widziałem kilka takich propozycji w sieci), że możliwa jest częściowa automatyzacja migracji do innej technologii. W szczególności znalazłem potwierdzone przypadki migracji z Delphi do C# z użyciem narzędzi do migracji i remigracji (czyli można na bieżąco doganiać dewelopment w starym stosie). Tak zmigrowany system można dalej modernizować już z użyciem współczesnych technik i dostosowywać go sukcesywnie do współczesnej architektury. Jest kilka wad takiego podejścia ale też sporo zalet. Czy spotkałeś może takie podejście?

Tak I nie serio wszystko zależy od komponentów w tym delphi5. Pamiętaj ze delphi 5 to czasy przed Unicode pchar jest 1 bytowy od wersji Unicode bodajże 2007 masz już pchar 2bytowy wiec alokacja pamięci juz sie zmienia. Jak używasz tylko tdataset + dbgrid to luz ale jak vos bardziej złożonego to nie będzie prosty temat. Oczywiście są migratory technologii ale to działa dla prostych aplikacji i raczej do migrowania kobyl się nie nadają

1 użytkowników online, w tym zalogowanych: 0, gości: 1