Přepis programu z Delphi/PASCAL na jinou platofrmu

Sheldonizátor

Přepis programu z Delphi/PASCAL na jinou platofrmu
« kdy: 20. 09. 2015, 09:34:46 »
Ahoj, rád bych se zeptal místních odborníků, do jaké platformy by bylo vhodné přepsat 15+ starý projekt napsaný celý v Delphi (6,7,XE..). Jakožto mladík bych měl mít myslím že dost energie a hlavně koule na to abych to nějak zvládl  8).

Program sestává z několika modulů které se spolu baví skrze DCOM či UDP, data jsou posílána binárně a komprimovaná pomozí LZW takže to dovede jet i přes dráty a lá ISDN. Nejvíce viditelný je uživatelský modul kde probíhá většina práce odborné obsluhy zařízení a kontroly stavu. Další modul slouží k realtime načítání a ukládání provozních dat do DBF (dBase) souborů (takový lepší CSV...) a zvládne zhruba 1000 požadavků (i zápisů) za vteřinu. K tomu existuje ještě jakýsí mezimodul pro přeposílání dat z externích měřících systémů. Další modul umožňuje editaci systému včetně kreslení provozu a jeho uložení do vlastního vektorového formátu z doby DOSu (vše binárně, "serializace" Object Pascalového stromu) no a nakonec existuje ještě "manažerský" zobrazovací modul udělaný pomocí ActiveX (Delphi) který umožňuje kontrolovat stav systému bez práva změn, ActiveX je ale pouštěn pomocí EXE které se stáhne z webové stránky, protože v internet exploreru často není povolen a navíc v nových verzích za IE6 ani nefunguje.

Systém/program je funkční, byť je znát že je už hodně starý. Vyvstávají proto různé problémy:
  • distribuce exe souboru k zákazníkovi naráží na pravidla bezpečnostní politiky
  • firemní sítě mají často velmi restriktivní politiku ohledně nastavení firewallu
  • kromě technických pracovníků mají o data zájem i manažeři, ti se často nedostanou jinak než přes port 80
  • technickým pracovníkům systém tak jak je jakž takž vyhovuje (chlapík v montérkách...)
  • pokud se systém posere, někdo může umřít (podpora "clusteru" na dvou serverech s WinXP+)
  • systém byl programován 2 lidmi a má jednoho pracovníka uživatelské podpory
  • zhruba 300 tisíc řádků kódu včetně různých pomocných knihoven a utilit co za těch 15 let vznikly

Mojim cílem je najít vhodnou platformu (do který to budu celý po zkušebce přepisovat...) která umožní řešit výše uvedené problémy. Řešení by mělo splňovat co nejvíce následujících požadavků

  • Snadná nasaditelnost u zákazníka bez nutnosti instalovat cokoliv na klientské stanice (nebo jen něco standartního co sysadmini pustí...).
  • Responzivita, když se něco změní v databázi mělo by se to do 2s projevit i v uživateském řídícím systému, pro manažery je limit 1 minuta.
  • Sdílení vykreslovacího kódu mezi grafickým rozhraním a editorem, "canvas" by měl být aktivní, tedy je možné klikat na věci a vypínat a zapínat a měnit a tak.
  • Ideálně by komponenta měla být nějak generovaná ať se nemusí ručně patlat s JS a HTML.
  • Mělo by být možné udělat i verzi pro tablet, kód pro GUI by měl být sdílený s hlavním systémem protože to budou udržovat max. 2 lidé.
  • Vhledem k bezpečnosti nejspíše silně (staticky?) typovaný jazyk.
  • Použitá platforma/jazyk by měly být dostatečně rozšířené, aby nebyl v budoucnu problém s náborem nových programátorů. Delphi už dnes tolik (hlavně mladších) programátorů neumí a nebo v něm nechtějí dělat z karierních důvodů, "aby si nekazili životopis" (mladík co prý původně nastoupil týden předemnou ještě tentýž den odešel když TO viděl...).

Zatím mi to vychází na souboj mezi Java a C#/.NETem, možná by se dalo i C++/Qt ale tam je problém že to nemá web server. Je možné uvažovat i o Delphi 10 které nedávno vyšlo, ale to je tak drahé že je otázkou jestli to stojí za to pro tak malý tým, navíc je to stále Delphi Pascal který se dnes už netěší přílišné oblibě.



Kit

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #2 kdy: 20. 09. 2015, 09:56:13 »
Myslím si, že je vcelku jedno, jaký jazyk použiješ. Osobně bych to udělal jako webovou aplikaci, místo dBase nejspíš PostgreSQL (ale jistě to zvládne i MySQL). Z původních 300k řádek by se to mohlo smrsknout na 3-5k řádek v PHP. Silná typovost nemá s bezpečností mnoho společného, ale pokud ji vyžaduješ, můžeš použít třeba Python.

Určitě bych to rozdělil na více komponent. Například sběr dat má s jejich prezentací společnou pouze databázi. Mohou tedy běžet zcela nezávisle na sobě. Pro pull aktualizace můžeš využít Ajax. Pokud potřebuješ push aktualizaci, použij WebSocket.


Pavel Tisnovsky

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #4 kdy: 20. 09. 2015, 10:39:42 »
Budu dneska trošku negativistický, ale možná by bylo dobré Tě upozornit na to, aby sis ověřil, že přepsání toho projektu má skutečně *dlouhodobou* podporu ve vedení té firmy. Ono totiž právě přepisování aplikací má tu strašnou nevýhodu, že trvá docela dlouho, než se dostaneš minimálně na úroveň té původní aplikace:

1) uživatelé dlouho čekají na něco funkčního, první verze jsou jen dema a oni stejně paralelně musí pracovat s původní verzí
2) očekávají chování staré aplikace. sice někdy nadávají, na druhou stranu už jsou zvyklí na ovládání, chování atd.
3) přepis sice vypadá jako krásná příležitost zbavit se hovnokódu, ale ten výsledek může být klidně stejný :-) [ostatně už proto vzniklo toto vlákno...]
4) ten starý SW nezrezavěl, naopak, byl pořád opravován, upravován, přibývaly utilitky (o nichž mnohdy manažerstvo neví...)

Aby sis ušetřil případné zklamání, možná by bylo dobré si ověřit, jestli jen nestačí, aby se přibastlil (v čemkoli) nějaký modul pro manažery, ideálně takový, co jim pojede na smartphonech.

Jestli to zní moc negativisticky: mám s tímto dost špatné zkušenosti (například přepis appky z Foxky/DOS na webovou appku s Oracle DB), ale samozřejmě záleží na situaci v konkrétní firmě.


Daniel Kozak

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #5 kdy: 20. 09. 2015, 10:41:36 »
Jak uz psal Kit, nejlepsi bude to udelat jako webovku, proste rozdelit to na frontend a backend. Vyhodou je ze pro frontend nebude problem najit vyvojare (HTML,CSS,JS...) dnes umi spoustu lidi. No a backend napsat vcem ti to bude vyhovvovat. Ja napriklad zrovna resil neco podobneho a jako UDP server pouzivam http://vibed.org

Daniel Kozak

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #6 kdy: 20. 09. 2015, 10:45:31 »
Budu dneska trošku negativistický, ale možná by bylo dobré Tě upozornit na to, aby sis ověřil, že přepsání toho projektu má skutečně *dlouhodobou* podporu ve vedení té firmy. Ono totiž právě přepisování aplikací má tu strašnou nevýhodu, že trvá docela dlouho, než se dostaneš minimálně na úroveň té původní aplikace:

1) uživatelé dlouho čekají na něco funkčního, první verze jsou jen dema a oni stejně paralelně musí pracovat s původní verzí
2) očekávají chování staré aplikace. sice někdy nadávají, na druhou stranu už jsou zvyklí na ovládání, chování atd.
3) přepis sice vypadá jako krásná příležitost zbavit se hovnokódu, ale ten výsledek může být klidně stejný :-) [ostatně už proto vzniklo toto vlákno...]
4) ten starý SW nezrezavěl, naopak, byl pořád opravován, upravován, přibývaly utilitky (o nichž mnohdy manažerstvo neví...)

Aby sis ušetřil případné zklamání, možná by bylo dobré si ověřit, jestli jen nestačí, aby se přibastlil (v čemkoli) nějaký modul pro manažery, ideálně takový, co jim pojede na smartphonech.

Jestli to zní moc negativisticky: mám s tímto dost špatné zkušenosti (například přepis appky z Foxky/DOS na webovou appku s Oracle DB), ale samozřejmě záleží na situaci v konkrétní firmě.

JJ presne, na druhou stranu mi jsme pred podobnym rozhodnutim stali nekdy v roce 2009-2010. Tenkrat jsme dosli k zaveru ze to holt postupne zrefaktorujeme. Dneska po peti letech prace si obcas rikame jestli to bylo dobre rozhodnuti. Sice jsme to za tu dobu hodne vylepsili, ale stale je tam citi vune sdedeneho kodu. Otazkou je zda by pri psani projektu od zacatku clovek po peti letech nekoukal na stejny legacy kod jako dnes :D.

Pavel Tisnovsky

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #7 kdy: 20. 09. 2015, 10:49:47 »
Budu dneska trošku negativistický, ale možná by bylo dobré Tě upozornit na to, aby sis ověřil, že přepsání toho projektu má skutečně *dlouhodobou* podporu ve vedení té firmy. Ono totiž právě přepisování aplikací má tu strašnou nevýhodu, že trvá docela dlouho, než se dostaneš minimálně na úroveň té původní aplikace:

1) uživatelé dlouho čekají na něco funkčního, první verze jsou jen dema a oni stejně paralelně musí pracovat s původní verzí
2) očekávají chování staré aplikace. sice někdy nadávají, na druhou stranu už jsou zvyklí na ovládání, chování atd.
3) přepis sice vypadá jako krásná příležitost zbavit se hovnokódu, ale ten výsledek může být klidně stejný :-) [ostatně už proto vzniklo toto vlákno...]
4) ten starý SW nezrezavěl, naopak, byl pořád opravován, upravován, přibývaly utilitky (o nichž mnohdy manažerstvo neví...)

Aby sis ušetřil případné zklamání, možná by bylo dobré si ověřit, jestli jen nestačí, aby se přibastlil (v čemkoli) nějaký modul pro manažery, ideálně takový, co jim pojede na smartphonech.

Jestli to zní moc negativisticky: mám s tímto dost špatné zkušenosti (například přepis appky z Foxky/DOS na webovou appku s Oracle DB), ale samozřejmě záleží na situaci v konkrétní firmě.

JJ presne, na druhou stranu mi jsme pred podobnym rozhodnutim stali nekdy v roce 2009-2010. Tenkrat jsme dosli k zaveru ze to holt postupne zrefaktorujeme. Dneska po peti letech prace si obcas rikame jestli to bylo dobre rozhodnuti. Sice jsme to za tu dobu hodne vylepsili, ale stale je tam citi vune sdedeneho kodu. Otazkou je zda by pri psani projektu od zacatku clovek po peti letech nekoukal na stejny legacy kod jako dnes :D.

Ono to tak bohužel mnohdy je (což je škoda - který vývojář se chce hrabat v h...ec po předchůdcích nebo po sobě samém žejo -:) a důvodů je víc:
http://www.joelonsoftware.com/articles/fog0000000069.html

Asi nejlepší je odstavec: "The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they've been fixed. There's nothing wrong with it. It doesn't acquire bugs just by sitting around on your hard drive. Au contraire, baby! Is software supposed to be like an old Dodge Dart, that rusts just sitting in the garage? Is software like a teddy bear that's kind of gross if it's not made out of all new material?"

Jak říkám, není to nic moc pozitivního z pohledu vývojáře, ale co nadělat...

Daniel Kozak

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #8 kdy: 20. 09. 2015, 11:02:46 »

Ono to tak bohužel mnohdy je (což je škoda - který vývojář se chce hrabat v h...ec po předchůdcích nebo po sobě samém žejo -:)...:

Musim souhlasit, sam vim jak vypada nektery muj "starsi" kod, a nikdy jsem se nedokopal to po sobe predelat, misto toho jsem to nechal na svem bratrovi (jak ten nadaval :D), no nastesti mam jeste jednoho mladsiho bratra ten to pak prepise po tom druhem, ale kdo to prepise potom uz fakt nevim :D.

M.

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #9 kdy: 20. 09. 2015, 11:15:57 »
Myslím, že tento bod je hodně podstatný:

  • pokud se systém posere, někdo může umřít (podpora "clusteru" na dvou serverech s WinXP+)

nadšení je jenda věc. Druhá je, jsi připraven nést důsledky toho, pokud tvůj nový kód selže a někdo zemře? A jaké garance vůči tobě bude chtít firma po tobě a za co a jak budeš ručit?

Jinak máme zkušenost s přenosem starého projektu hodně špatnou. Kód byl původně Turbo Pascal a grafická aplikace v DOSu, pak Turbo Pascal for Windows, následně byl přenos na Delphi 1.0 (16 bit Windows 3.x program) a tam to skončilo. Bylo několik pokusů o přenost do 32-bit prostředí a nepovedlo se. Původní kód a ty tři první konverze dělal jeden člověk v průběhu cca 10 let, dva další k tomu pak dělali k tomu matematiku.
Apliakce přitom "nic složitého nedělá", načte soubor dat, zobrazuje, dělá nad tím specifickou matematiku. Nadšení všech, že to předělají, a bude jednoduché, použijí se nové vlastnosti, bla bla bla... A výsledek 4 pokusů je, že pokud se to dostalo po letech do použitelného stavu, tak to bylo pomalejší, počítalo nepřesně (matematika v původním kódu je tvrdě optimalizovaný assembler počítajíc vše v pevné plovoucí čárce s korekcemi výsledků na žádanou přesnost po každé operaci, který je přesně napsán na daný problém) a umělo jen část toho, co původní kód. Pokusy skončily po tom, co poslední snažinec vývoj ukončil infarktem. Utopilo se v tom hodně let a MKč. :-(

Tak pozor na pdobný vývoj kariéry.

Sheldonizátor

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #10 kdy: 20. 09. 2015, 11:27:48 »
Tak mojím úkolem je ve zkušebce vytvořit několik prototypů v několika moderních platformách které navrhnu na základě samostudia, jen nějaký výpis nějakých záznamů z "běžícího" systému, to pak bude předloženo vedení k posouzení a následně bude celý tým hlasovat o tom, kterou technologii použít a jestli se to bude vůbec přepisovat. V ideálním případě by mělo být nějak možné postupně nahrazovat staré moduly za nové při zachování části funkčního systému, ne celý přepis najednou. Oddělená webová appka pro "manažery" je taky možnost, ale jenom pokud bude dostatečně jednoduchá. Přepis celého systému najednou by byl větší oříšek, protože tam je asi tak 30 různých oken/obrazovek a s nimi související logika 8).

perceptron

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #11 kdy: 20. 09. 2015, 11:37:44 »
z psychologickeho hladiska je tento projekt samovrazda resp cesta do xanaxu. ste sam (!) na 15 rocny projekt, mate tam samy legacy kod, predpokladam ze casto ani mrtvy Jobs netusi, co sa tam deje.

ako dlho to planujete rewritovat? tresnem po stole, ze rok.

popri tom budete paralelne asi udrziavat staru verziu a na konci mate vec, ktora robi presne to co stara a mozno horsie (vid ten joel on software)

----

ak by to mala byt desktop aplikacia, tak jedine .NET (C#). koncepcia je identicka s Delphi. akurat na druhej strane musite instalovat nove verzie aj aplikacie, aj .NET frameworku (nieco z toho vyriesi sam windows).

java na windows desktope nema zmysel, hlavne instalujete a aktualizujete java virtual machine, a celkovo ten vyvoj v segmente je mrtvy.

alternativne to urobit ako intranet (mozete komunikovat cez http na 80), ale musite mat webserver, to je uz potom jedno, v com to spravite.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #12 kdy: 20. 09. 2015, 12:14:27 »
Tak jo, takze by se na to jako mel radsi vykaslat. Ale co za par let, az bude treba vyhazet stary HW a OS a na novem to nebude chrochat?

Sheldonizátor

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #13 kdy: 20. 09. 2015, 12:28:08 »
Ono už někdy mohou nastávat problémy nyní, komponenty které jsou napsány a kompilovány ještě v Delphi 6 mají třeba ve Windows 8 (+odpovídající Server) výkonostní potíže protože instrukce generované tím kompilátorem jsou z hlediska Windows 8 nestandartní a tak ty exáče automaticky pouští v režimu kompatibility, stejně tak samotné vývojové prostředí Delphi 6. Funguje to, ale do budoucna hrozí že na Windows nastanou problémy a bude nutná nějaká portace na lepší delphi a rekompilace (+ problémy s .dcu komponentami které pro danou verzi Delphi nemusí být dostupné, všechny komponenty třetích stran se musí kompilovat pro každou verzi Delphi samostatně dodavatelem a nebo pokud jsou dodány i se zdrojákem tak ručně).

Pavel Tisnovsky

Re:Přepis programu z Delphi/PASCAL na jinou platofrmu
« Odpověď #14 kdy: 20. 09. 2015, 12:30:33 »
Tak to není, jen bych se být na místě autora té otázky ujistil, jestli je vedení smířeno s tím, že třeba po roce práce bude mít první verzi, která pravděpodobně ještě nebude umět to, co ta stará verze a bude (logicky) daleko míň odladěná. Taky jestli jsou nějaké akceptační testy, nebo je to jen hubní zadání ve stylu "no tak ať to pracuje tak nějak stejně jako ten starej SW, ale ať je to barevnější a můžu vidět grafy na smartphonu".

Na druhou stranu - běhat to může napořád díky virtualizaci a popř. emulaci starého HW.