Del tema de la revista a la pràctica del projecte
Pàgines de serveis i tècniques pertinents per a l'article
En moltes empreses, el programari empresarial més important no és el més recent, sinó aquell que funciona de manera fiable cada dia: aplicacions d’escriptori consolidades Delphi/VCL. Controlen processos, documenten lògica específica, s’integren amb bases de dades, sistemes de fitxers, impressores, escàners o interfícies ERP i DMS. Precisament per això, la substitució és arriscada — i precisament per això val la pena poder modernitzar aplicacions VCL antigues de forma gradual en lloc de reconstruir-ho tot d’un cop (Big-Bang).
La modernització gradual significa: mantenir l’estabilitat funcional, reduir de manera dirigida el deute tècnic, alinear-se amb els requisits de seguretat i operació i, al mateix temps, romandre lliurables i operables en qualsevol moment. Per a la direcció de TI, l’administració i els responsables tècnics de projecte compta menys la „més bonica“ tecnologia i més un pla que consideri de manera realista dades, interfícies, desplegament, permisos i manteniment.
El text condueix per un camí de modernització provat a la pràctica: des de l’anàlisi de l’estat i l’arquitectura objectiu, passant per l’accés a dades (p. ex. BDE-Ablösung), 32/64 bits i Unicode, fins a REST-APIs, integracions amb portals i conceptes d’operació. El focus està en decisions que tenen efecte en l’operativa quotidiana: capacitat d’actualització, tolerància a fallades, seguretat, observabilitat (logs/mètriques) i migració controlada.
Per què modernitzar sistemes VCL si «ja funcionen»?
Que una aplicació VCL funcioni no vol dir que sigui fàcil d’operar. Sovint els motius de modernització no apareixen en el disseny de la GUI, sinó en l’operació: canvi de sistema operatiu, noves polítiques de seguretat, actualitzacions de bases de dades, segmentació de la xarxa o nous requisits d’autenticació i registre. Molts riscos només es fan evidents quan cal aplicar una actualització — i aleshores sota pressió de temps.
Factors típics a les empreses:
- Pressió de plataforma: límits de 32 bits, Windows-enduriment, noves versions de Windows, virtualització o Windows 11 ARM64 en àrees concretes.
- Accés a dades i controladors: capes DB obsoletes (p. ex. BDE), cadenes ODBC no mantenides, transaccions mal gestionades, absència d’estratègies de pooling.
- Capacitat d’interfícies: necessitat d’API REST, integració d’esdeveniments, connexió a portals o sistemes de tercers.
- Seguretat i compliment: estàndards TLS, registres d’auditoria, models de rols, gestió de secrets, enduriment dels serveis.
- Esforç operatiu: instal·lacions manuals, actualitzadors fràgils, absència de telemetria, errors difícils de reproduir.
La modernització, per tant, no és un projecte cosmètic, sinó una decisió sobre riscos i costos operatius. L’habilitat consisteix a protegir la lògica de negoci central mentre la capa tècnica s’actualitza per etapes.
Modernització en lloc de desenvolupament des de zero: marc de decisió per a TI i l’àrea de negoci
„Construir de nou“ sovint sembla més clar, però en la pràctica acostuma a ser un programa pluriennal amb alt risc d’abast. Una modernització gradual s’ajusta millor quan l’aplicació és funcionalment sòlida però té colls d’ampolla tècnics. És clau disposar d’un marc de decisió net que argumenti de manera operativa, no ideològica.
Ha demostrat ser útil una ordenació al llarg de quatre eixos:
- Estabilitat funcional: Els processos i les regles són en gran mesura estables o estan en canvi permanent?
- Estat tècnic: Hi ha bloquejadors (BDE, 32-Bit-only, no Unicode, criptografia obsoleta, components que no es poden parchejar)?
- Pressió d’integració: Cal ampliar ràpidament APIs, portals, reporting, enllaços DMS/ERP?
- Risc operatiu: Quina criticitat té la disponibilitat, quin és el risc d’aturada amb les actualitzacions?
Si l’estabilitat funcional és alta i els principals riscos són tècnics, la modernització sol ser el camí més pragmàtic. Important: modernitzar no és un «seguir igual», sinó un programa controlat amb arquitectura objectiu, punts de mesura i criteris d’acceptació.
Inventari: Què cal comptar realment
La primera fase decideix el ritme i la qualitat. En lloc de només «veure el codi font» es tracta d’un inventari operatiu. L’objectiu és un mapa fiable: quins components existeixen, quines dependències són crítiques i quines modificacions tenen efectes secundaris?
Inventari tècnic en 10 punts
- Delphi-versió i toolchain: estat del compilador, procés de build, dependències, components de tercers.
- UI i estructura de mòduls: formularis monolítics, paquets dinàmics, mecanismes de plugins.
- Accés a dades: BDE/ADO/ODBC/BDE-Ablosung mit nativer Anbindung, límits de transacció, característiques SQL específiques de BD.
- Bases de dades: versions, finestres de manteniment, Backup/Restore, replicació, procediments emmagatzemats.
- Integracions: importacions de fitxers, SMTP, SOAP/REST, TCP/IP, impressió/etiquetes, escàners, automatització d’ofimàtica.
- Deployment: MSI, XCOPY, Updater, permisos, rutes, polítiques de grup.
- Security: autenticació, rols, xifrat, versions TLS, secrets, certificats.
- Explotació: logs, diagnosi, crash-dumps, monitoratge, processos de suport.
- Qualitat de dades: duplicats, restes heretades, codificació, segells temporals, capacitat multi-tenant.
- Testabilitat: casos de prova reproducibles, dades de prova, processos d’acceptació, regressions.
En paral·lel val la pena un breu conjunt d’entrevistes amb operacions i key users: On hi ha problemes en l’operativa diària? Quins processos són crítics? Quins quadres d’errors consumeixen temps? Això permet definir una priorització de modernització que no només tingui sentit tècnic, sinó també operatiu.
Arquitectura objectiu: Layer-3 com a guia per a la renovació gradual
La modernització pas a pas necessita una estructura objectiu; si no, només es parchegen problemes puntuals. En molts estocs Delphi-/VCL manca una separació clara entre GUI, lògica de negoci i accés a dades. Una Layer-3 arquitectura (presentació, domini/lògica de negoci, infraestructura/accés a dades) és una guia fàcil de comunicar, sense necessitat de refer tot el sistema d’una sola vegada.
És important la perspectiva d’IT i d’operacions: si la lògica de negoci està ben encapsulada, més endavant es poden atendre diversos frontends (escriptori, portal, servei), afegir interfícies i consolidar accessos a dades. Al mateix temps disminueix el risc que canvis a la UI alterin involuntàriament regles de dades.
Què millora l’explotació amb l’arquitectura en capes
- Capacitat de llançament: les modificacions menors es localitzen, disminueixen les regressions.
- Seguretat: punts centrals per a permisos, validació d’entrada i auditoria.
- Interfícies: REST-API oder Windows-/Linux-Services poden reutilitzar la lògica de negoci.
- Migració: el canvi de base de dades i el reemplaçament de controladors afecten principalment la capa d’infraestructura.
L’arquitectura objectiu no ha de ser «perfecta». Ha de ser prou concreta per guiar decisions: on ha d’anar la nova lògica? Com s’encapsula l’accés a dades? Quines API són estables?
Modernitzar progressivament aplicacions VCL antigues: un pla per etapes que funciona en el dia a dia
Un full de ruta de modernització viable treballa per etapes que cadascuna lliura un benefici mesurable i alhora prepara la següent fase. Això redueix el risc de projecte i d’operació, perquè després de cada etapa es pot desplegar un estat estable.
Etapa 1: estabilitzar el build, les dependències i el procés de llançament
Molts problemes legacy no són problemes de codi, sinó de procés: els builds depenen d’equips individuals, els instal·ladors són manuals, les dependències no estan versionades. El primer palanca és, doncs, un build reproducible i un empaquetat consistent.
- Automatització del build i versions definides de compilador/biblioteques
- Versionat de components de tercers i de configuracions
- Passos de rollout estandarditzats (incl. idea de rollback)
Resultat: les actualitzacions es poden planificar millor, el suport pot identificar versions de manera inequívoca i el deute tècnic queda visible en comptes d’estar amagat.
Etapa 2: modernitzar l’accés a dades (típic: substitució de BDE)
La BDE (Borland Database Engine) és en molts entorns un bloquejador central: cadenes de controladors antigues, una configuració fràgil, suport limitat per a bases de dades modernes i estàndards de seguretat. Una substitució no apunta només a un „altre controlador“, sinó a una capa d’accés a dades clara.
En projectes Delphi és comú utilitzar BDE-Ablosung mit nativer Anbindung com a capa d’accés a dades, perquè dóna suport netament als backends DB (p. ex. PostgreSQL, SQL Server, MariaDB), permet controlar lligams de paràmetres i transaccions i simplifica la gestió de controladors. Per a l’IT és decisiu: menys instal·lacions especials als clients, una configuració més clara i millor capacitat de diagnosi en problemes de connexió.
Aspectes importants de migració en aquesta etapa:
- Fer explícits els límits de transacció (on comença/acaba una acció funcional?).
- Identificar variants SQL (funcions específiques de la BD, lògica de dates, bloquejos).
- Estandarditzar el maneig de connexions (timeouts, estratègia de pooling, reintents només de manera selectiva).
- Higiene de configuració: no incrustar (hardcode) strings de connexió, certificats ni secrets.
Etapa 3: planificar la capacitat Unicode i de 64 bit
La migració a Unicode i el pas a 64 bit no són només „marcar una opció al compilador“, sinó una qüestió de qualitat. Unicode afecta cadenes de caràcters, noms de fitxer, interfícies i bases de dades (collation/encoding). El 64 bit afecta la mida dels pointers, DLLs externes, controladors d’impressora/escaner i dependències COM.
Als responsables de projecte els resulta efectiu no posposar aquests temes per a un sprint final, sinó tractar-los com una etapa pròpia amb casos de prova clars. Trampes típiques són formats d’exportació (CSV/fixed width), fluxos de treball de PDF i reporting, així com l’intercanvi amb sistemes antics que encara esperen codificació de 8 bit.
Etapa 4: incorporar interfícies — sense desestabilitzar l’escriptori
Moltes empreses volen exposar des d’una aplicació VCL dades per a portals, BI o sistemes de tercers. La via segura sol ser una façana d’API: una REST-API clarament versionada (interfície basada en HTTP) que exposa la lògica de negoci de manera controlada. Això evita que s’opere el client a distància; en canvi, es posen a disposició operacions de negoci com a serveis.
Això desacobla els canvis: l’escriptori es manté estable per als usuaris existents, mentre que les noves integracions creixen a través de l’API. Important per a l’operació i la seguretat:
- Autenticació/Autorització: p. ex. basada en tokens, integració opcional en SSO (sovint SAML 2.0 en entorns empresarials).
- Rate limits i timeouts: protecció contra càrregues involuntàries causades per integracions per lots.
- Versionat: les versions de l’API eviten canvis incompatibles per als sistemes connectats.
- Auditoria: qui va canviar què i quan (a nivell de negoci), no només «la petició ha arribat».
Etapa 5: Complementar components de portal o de servei (C# o Delphi – arquitectònicament sòlid)
En moltes modernitzacions, al costat de l’escriptori apareix un portal de clients o una àrea web interna. Que aquesta part s’implementi en C# o en Delphi és menys determinant que l’arquitectura comuna: un model de dades coherent, responsabilitats clares i interfícies estables. Per a l’equip de TI és essencial que l’operació, el logging, els permisos i el deployment s’integrin en el paisatge existent (p. ex. Microsoft IIS per a les parts web o serveis Linux per al processament en segon pla).
Pràcticament, convé una separació per funcions:
- Escriptori (VCL): interfície d’usuari propera al procés, funcions per a ús offline o en entorns LAN, interfícies amb dispositius.
- Serveis: tasques en segon pla, validacions, imports/exports, processament de cues, execucions temporitzades.
- Portal: autoservei, consultes d’estat, documents, fluxos de treball via navegador.
Això crea un sistema que pot créixer sense posar en risc el nucli existent.
Modernització de la base de dades: de „funciona“ a „mantenible“
Moles aplicacions VCL estan estretament lligades a una història de bases de dades: llegats Paradox, Firebird, versions antigues de SQL Server o formes mixtes. Una migració de base de dades té èxit si s’entén com un projecte de dades i d’operacions, no com una simple còpia d’esquema.
Què ha d’aclarir l’equip de TI abans d’una migració
- Còpia de seguretat/Restauració i RPO/RTO: Amb quina rapidesa cal tornar a estar en línia, quina pèrdua de dades és tolerable?
- Finestra de manteniment i estratègia de temps d’inactivitat: Big-Bang, funcionament en paral·lel o migració incremental.
- Jocs de caràcters i col·lacions: important per a Unicode i la lògica d’ordenació i cerca.
- Aïllament de transaccions i bloquejos: rellevant amb alta concurrència i treballs per lots.
- Reporting: accessos directes a la base de dades des d’eines de tercers (BI, Excel, ETL) han d’estar previstos.
Per a moltes empreses, PostgreSQL és una opció perquè com a plataforma és fàcil d’operar i ofereix eines clares per a còpies de seguretat, monitorització i gestió de permisos. El que continua sent determinant, però, és: l’aplicació ha d’abstraure netament les diferències de SQL i de tipus; si no, cada consulta esdevé un cas especial. Precisament aquí es demostra l’avantatge d’una capa consolidada d’accés a dades (p. ex. FireDAC).
Seguretat i permisos: modernització sense nova superfície d’atac
Les aplicacions d’escriptori legacy sovint es van dissenyar en una època en què «a la LAN» significava automàticament «de confiança». Avui això rarament és acceptable: la segmentació, els enfocaments Zero-Trust, el treball remot i els requisits d’auditoria augmenten la pressió. Per tant, la modernització ha d’incorporar la seguretat sense paralitzar l’explotació.
Mesures concretes que es poden implantar de manera gradual:
- Mecanisme d’autenticació central: separació clara d’identitat (login) i rols (permisos).
- Xifrat del transport: mantenir TLS actualitzat; planificar la gestió de certificats.
- Gestió de secrets: cap contrasenya en fitxers INI; utilitzar magatzems protegits o secrets gestionats de manera centralitzada.
- Registre d’auditoria: registrar els canvis funcionals (qui/què/quan), no només logs tècnics.
- Validació d’entrada: estricta i centralitzada, sobretot per a noves APIs.
Important per als decisors: la seguretat no és un „extra“ que s’enganxa al final. Quan es creen APIs, serveis o portals, l’arquitectura de seguretat ha de ser part de l’arquitectura objectiu des del principi.
Operació i administració: què millora perceptiblement amb la modernització
El major benefici d’una modernització gradual sovint es troba en àmbits que anteriorment apareixien poc al plec de condicions: supervisió, recerca d’errors, desplegament i capacitat d’emergència. Especialment en aplicacions VCL que han crescut orgànicament durant anys, un paquet reduït de millores operacionals pot reduir significativament la càrrega de suport — sense que els usuaris finals vegin immediatament una nova interfície d’usuari.
Llista de comprovació per a components „operatius“
- Estàndard de configuració: documentat de manera central, específic per entorn (Dev/Test/Prod), valors per defecte traçables.
- Registres estructurats: esdeveniments amb correlació (p. ex. ID d’operació), nivells de log clars, sense dades sensibles en text pla.
- Monitoratge: health-checks per als serveis, estat de connexió a la base de dades, temps d’execució de jobs, longituds de cues.
- Instal·lador/actualitzador: possibilitat d’instal·lació silenciosa, estratègia de rollback, permisos nets.
- Diagnòstic d’errors: informació de crash reproduïble, dades de suport clares (versió, estat dels mòduls, configuració).
Particularment rellevant per als admins: si la lògica de fons es trasllada de l’escriptori a serveis Windows o Linux, es poden controlar millor els temps d’execució, el comportament de reinici i el consum de recursos. Al mateix temps disminueix el risc que „un client obert“ bloquegi un procés batch.
Estratègia de proves i migració: operació paral·lela en lloc d’aturada
La modernització gradual es manté o cau en funció de les proves de regressió. No es tracta només de tests unitari (que sovint falten en el legacy), sinó sobretot d’escenaris funcionals end-to-end: processos típics, excepcions crítiques, dades massives, processos d’impressió, imports/exports. Per a les empreses és important que aquestes proves siguin planificables i repetibles.
Enfocaments pragmàtics quan no existeix una base de proves
- Golden Master: per a entrades definides es registren sortides/reports/estats de dades i es comparen amb els nous estats.
- Conjunt de dades de prova: bases de dades anonimitzades o dades sintètiques amb casos especials representatius.
- Proves d’interfícies per fases: contractes d’API i formats d’importació com a especificació verificable.
En migracions (base de dades, Unicode, 64-Bit) compensa un funcionament en paral·lel on sigui possible: els components nous s’executen inicialment al costat de l’existent i lliuren resultats o informes sense que l’existent s’apagui immediatament. Així s’obtenen comparacions fiables i la transició es converteix en una decisió controlada en lloc d’un salt a l’incert.
Trampes típiques – i com evitar-les
Moltes modernitzacions no fracassen per la tecnologia, sinó per una seqüència incorrecta o per la manca de baranes de protecció. Tres patrons es repeteixen amb especial freqüència:
- UI en primer lloc: Un nou frontend sense capes clarament definides de lògica de negoci i d’accés a dades només trasllada problemes i encareix les fases posteriors.
- „Només canviar controladors“: Bei BDE-substitució oder DB-Wechsel ohne Transaktions- und SQL-Review entstehen schwer auffindbare Fachfehler.
- Integració sense seguretat: Una API afegida ràpidament sense model de rols, auditoria i límits de taxa es converteix en una superfície d’atac permanent.
El remei és un pla per etapes amb criteris de qualitat clars: cada fase ha de ser desplegable, incloure monitorització i superar proves funcionals definides. Així la modernització es converteix en un procés de millora seqüencial, no en un projecte permanent.
Conclusió: la modernització és un programa – no un esdeveniment
Les aplicacions VCL antigues sovint són l’estructura central de processos consolidats. Qui les substitueix substitueix no només codi, sinó coneixement operatiu. Qui les modernitza pas a pas pot combinar estabilitat i evolució: consolidar l’accés a dades (inclosa la BDE-substitució), fer planificable Unicode/64-Bit, complementar APIs i serveis de manera ordenada i alleugerir clarament l’operació amb registre (logging), monitorització i versions reproduïbles.
El punt decisiu és l’arquitectura com a guia: la lògica de negoci i l’accés a dades es separen de manera que es puguin implantar de forma controlada els nous requisits (portal, interfícies, reporting, nova base de dades). Això genera una solució empresarial digital que no només funciona, sinó que també es manté operable de manera fiable davant actualitzacions, requisits de seguretat i pressió d’integració.
Si voleu establir un camí de modernització sòlid per a la vostra aplicació VCL-/Delphi-existent, estructurem la situació inicial, els riscos i les etapes en una reunió tècnica inicial:
En l’àmbit funcional també tenen un paper important la Delphi modernització i l’aplicació VCL heredada quan cal que integracions, fluxos de dades i evolució treballin conjuntament de manera neta.
Parlar del projecte o de la iniciativa de modernització amb Net-Base.
Pas següent
Quan un tema esdevé un projecte real, l'arquitectura, l'entorn existent i les operacions s'haurien de considerar conjuntament des de bon començament.
No només donem suport en qüestions puntuals, sinó també quan, a partir de fragments de codi font, temes de sistemes heredats o idees de portal, ha de sorgir un projecte empresarial sòlid.
- L'estat actual, la visió objectiu i els riscos tècnics s'avaluen conjuntament.
- REST, l'accés a les dades, els portals i el desplegament no es releguen a fases posteriors.
- Vostè veurà aviat quin camí és econòmicament i operativament viable.