Од теме часописа до пројектне праксе
Одговарајуће странице услуга и техничке странице за чланак
Delphi-апликације у многим предузећима раде стабилно већ годинама – и приказују управо ону пословну логику која обезбеђује приход, квалитет услуге и усаглашеност. При модернизацији је због тога ретко реч о „новом корисничком интерфејсу“, већ о контролисаном даљем развоју при којем се правила, изузеци и историјско процесно знање очувају.
У овом тексту показујемо проверени приступ за постепену модернизацију Delphi: од инвентара преко одвајања UI/приступа подацима до техничке модернизације (Unicode/64‑Bit, BDE-Ablösung, API/Services) – укључујући осигурање кроз тестове, мониторинг и паралелни рад. Циљ је архитектура погодна за модернизацију, без Big-Bang-Rewrite и без губитка логике.
Модернизације у пракси ретко не успевају због компајлера или оквира, већ због погрешних претпоставка о понашању система. Током година развијане Delphi-апликације обично садрже пословна правила у GUI-догађајима, SQL у логици формулара, варијанте по купцу/мандантy, историјски условљене изузетке и интеграције које су документоване само „у раду“.
Big-Bang-Rewrite приморава на реконструисање тог знања – укључујући и грешке које старо решење одавно више не прави. Бољи приступ је третирати пословну логику као имовину: изоловати, осигурати, па затим корак по корак модернизовати.
Одржива циљна слика за процесно-критичне B2B-системе није „све ново“, већ архитектура која омогућава промене – без угрожавања текућег рада:
- јасна подела UI, домен-логике, приступа подацима и интеграција
- тестабилност и мерљивост (регресија, логовање, мониторинг, репродуцибилни builds)
- постепена заменљивост (модернизовати UI без непосредне DB-migracije – или обрнуто)
- API-способност (нпр. REST), за повезивање портала, мобилних решења или системских интеграција
- deployments спремни за рад у производњи са опцијом rollback-а
Delphi је за то погодан, јер постојеће Units и доменске класе могу да се поново користе док се споља модернизује околина.
Пре него што се код прилагоди, потребна је поуздана основа за одлучивање – не потпуна документација. Показала су се корисним ова три резултата:
- Mapa poslovne logike: критични use-case-ови, правила/рачунања, варијанте (манданти/земље/клијенти), интерфејси, job-ови/batch-извршавања.
- Profil rizika: посебно критичне области за грешке, квалитет података, регулаторни захтеви, уски грла у раду (перформансе, стабилност, одрживост).
- Backlog modernizacije: приоритизовани пакети по пословној вредности и ризику (шта мора остати стабилно, шта сме да се промени, шта може касније).
То омогућава да се модернизација планира: јасним инкрементима уместо једног „све-или-ништа“ пројекта.
Да пословна логика не би била „случајно“ измењена, потребно је осигурање које функционише независно од UI-рефакторинга. Типични грађевни блокови:
- Characterization/Golden-Master-testovi: постојеће понашање се преко репрезентативних улаза/излаза замрзава (извештаји, израчунавања, процесни кораци).
- Regresioni testovi na nivou use-case-a: пословно-критични токови се аутоматски или полу-аутоматски репродукују.
- Telemetrija: логовање, метрике и обрасци грешака чине се упоредивим пре и после промене.
- Paralelni rad & kontrolisana промена: нови модули раде уз постојеће (Feature Toggles, пилот-групе), са јасном rollback-стратегијом.
Тек када су ти сигурносни механизми успостављени, стварна техничка модернизација има смисла – јер се ризик и накнадни рад драстично смањују.
Најчешћи разлог за губитак логике је мешање UI, приступа подацима и пословних правила. Због тога модернизација почиње раздвајањем – не заменом UI-оквира.
Прагматичан циљ је структура са 3 слоја:
- Presentation: VCL/FMX, Presenter/ViewModel, само валидација блиска UI-ју (формат, обавезна поља)
- Business: модели домена, сервиси, правила, логика стања, израчунавања
- Data/Integration: Repositories, приступ бази података, адаптери за ERP/DMS/CRM, REST-Clients, Messaging
Практично правило: пословна правила се премештају из OnClick/OnExit у доменске сервисе. SQL се премешта из Forms у Repositories. Тако логика постаје тестабилна и касније поново употребљива преко UI-ја, сервиса и Jobs.
При Strangulation Pattern настаје ново намерно „поред“ постојећег: нове функције се већ имплементирају у одвојену структуру, док стар систем наставља да ради. Корак по корак нови слој преузима све већу одговорност, док стари делови нестану.
Пример (типично B2B):
- Екстрахујете логику поруџбине у доменски сервис.
- Постојећи VCL-UI у почетку користи исти сервис (без прекида процеса).
- Паралелно настаје REST-Endpunkt за портал клијената или интеграцију.
- Након стабилизације појединачне старе Forms се замењују – без потребе да се језгрена логика изнова гради.
Тако смањујете ризик пројекта, одржавате оперативност и брзо остварујете мерљиву корист (нпр. API, перформансе, одржавање).
У зависности од почетног стања ови елементи су често релевантни – пресудно је приоритизација по ризику и пословној вредности:
- BDE/Legacy-DB-Zugriff zameniti: модерни drajveri/provideri, чисте границе трансакција, репродуцибилни Deployments.
- Unicode: руковање стринговима, база података/интерфејси, компоненте трећих страна.
- 64‑Bit: зависности, меморија/перформансе, екстерне библиотеке.
- API- und Service-Schicht: REST, Windows-/Linux-Services, интеграције.
- Build & Release: CI/CD, управљање артефактима, потписани инсталери, rollback.
Важно: ове тачке се идеално имплементирају након раздвајања и осигурања – тада се измене могу сигурно верификовати.
Потпуни Rewrite је у појединим случајевима сврсисходан – често је, међутим, најскупљи пут да се добије „модерна техника“. Ова питања помажу при процени:
- Да ли је пословна логика у потпуности схваћена и тестабилна – или је много знања имплицитно у раду?
- Постоје ли чврсти рокови (нпр. крај платформе, Compliance) који искључују паралелни рад?
- Колика је разноликост варијанти (Kunden-/Mandantenlogik)?
- Колико је критична доступност и колика је толеранција на промене процеса?
- Који делови су заиста „криви“ (UI, приступ подацима, интеграције, deployment) – и који су стабилни?
У многим B2B сценаријима постепени приступ брже води до мерљивих резултата, јер контролише ризике и штити пословну логику.
Delphi-Modernisierungs-Audit (за процесно критичне апликације): Анализирамо архитектуру, зависности, области ризика и испоручујемо приоритизовану Roadmap како да модернизујете, без губитка пословне логике.
- Input: codebase (read-only), build-setup, 2–3 кључна случаја употребе, системско окружење (DB, интеграције).
- Резултат: мапа пословне логике/модула, анализа ризика и зависности, препоручена циљна архитектура, план имплементације у инкрементима укључујући обезбеђење (тестови/паралелни рад).
- Опционо: Proof of Concept за одвајање + први Golden-Master тест.
Так добијате поуздану основу за одлуку пре него што буџет и време буду уложени у ризичан Rewrite.
Може ли се Delphi модернизовати без поновног писања апликације?
Да. У многим случајевима се прво одваја пословна логика од приступа подацима, а потом се врши техничка модернизација. То смањује ризик и одржава стабилност рада.
Како спречити да се пословна логика „тихо“ мења?
Путем Golden-Master/регресионог тестирања, телеметрије као и контролисаног паралелног рада са јасном стратегијом повратка (rollback).
Који кораци често доносе најбржу корист?
Транспарентност (Assessment), одвајање UI/SQL, BDE-замена и API-/Service-слој за интеграције – сваки од њих обезбеђен тестовима.
Колико дуго траје модернизација?
То зависи од критичних случајева употребе, разноврсности варијанти и зависности. Процена обично у кратком времену пружа поуздану роадмапу и приоритетне инкременте.
Следећи корак
Када тема прерасте у реалан пројекат, архитектуру, постојеће системе и операције треба рано разматрати заједно.
Подржавамо не само у појединачним питањима, већ и када из исечака изворног кода, застарелих тема или идеја за портале треба да настане поуздан корпоративни пројекат.
- Постојеће стање, циљано стање и технички ризици оцењују се заједно.
- REST, приступ подацима, портали и роллаут се неће одлагати као накнадне последице.
- Ви рано видите који пут је економски и оперативно одржив.