Net-Base Lehti

09.04.2026

Delphi-modernisointi menettämättä liiketoimintalogiikkaa

Monilla yrityksillä on vakaita Delphi-sovelluksia, joissa on arvokasta logiikkaa ja syvällistä käyttöosaamista. Kyse on harvoin pelkästään korvaamisesta tai säilyttämisestä.

09.04.2026

Lehden aiheesta projektikäytäntöön

Artikkeliin liittyvät palvelu- ja tekniikkasivut

Delphi-sovellukset toimivat monissa yrityksissä vakaasti vuosikausia – ja kuvaavat juuri sitä toimialalogiikkaa, joka turvaa liikevaihdon, palvelun laadun ja vaatimustenmukaisuuden. Modernisoinnissa kyse ei siksi useinkaan ole „uudesta käyttöliittymästä“, vaan kontrolloidusta jatkokehityksestä, jossa säännöt, poikkeustapaukset ja historiallinen prosessitieto säilytetään.

Tässä artikkelissa esittelemme käytännössä testatun lähestymistavan Delphi:n vaiheittaiseen modernisointiin: inventoinnista käyttöliittymän ja datan käyttökerroksen irrottamiseen sekä tekniseen modernisointiin (Unicode/64‑Bit, BDE-korvaaminen, API/Services) – sisältäen varmistuksen testeillä, monitoroinnilla ja rinnakkaisajolla. Tavoitteena on modernisoitava arkkitehtuuri ilman Big-Bang-uudelleenkirjoitusta ja ilman logiikan menetystä.

Modernisoinnit epäonnistuvat käytännössä harvoin kääntäjän tai jonkin kehyskirjaston takia; epäonnistumisen syynä ovat yleensä virheelliset oletukset järjestelmän käyttäytymisestä. Vuosien saatossa syntyneet Delphi-sovellukset sisältävät tyypillisesti toimialasääntöjä GUI-tapahtumissa, SQL:ää lomakelogiikassa, asiakkaiden/mandanttien mukaan vaihtelevia variantteja, historiallisista syistä johtuvia poikkeustapauksia sekä integraatioita, jotka on dokumentoitu vain „käytössä“.

Big-Bang-uudelleenkirjoitus pakottaa rekonstruoimaan tämän tiedon alusta alkaen – mukaan lukien virheet, joita vanha järjestelmä ei enää tee. Parempi lähestymistapa on käsitellä toimialalogiikkaa omaisuuseränä: eristäminen, varmentaminen ja sitten vaiheittainen modernisointi.

Kestävä tavoitenäkemys prosessikriittisille B2B-järjestelmille ei ole „kaiken uusiminen“, vaan arkkitehtuuri, joka mahdollistaa muutokset – ilman, että käynnissä olevaa toimintaa vaarannetaan:

  • selkeä erottelu UI:n, domäänilogiikan, tietokantakäytön ja integraatioiden välillä
  • testattavuus ja mitattavuus (regressio, lokitus, monitorointi, toistettavat buildit)
  • vaiheittainen vaihdettavuus (UI:n modernisointi ilman välitöntä DB-migraatiota – tai päinvastoin)
  • API-kyvykkyys (esim. REST), jotta portaalit, mobiiliratkaisut tai järjestelmäintegraatiot voidaan liittää
  • toimintakuntoiset deploymentit rollback-vaihtoehdolla

Delphi soveltuu tähän hyvin, koska olemassa olevia unitteja ja domääniluokkia voidaan edelleen käyttää, samalla kun ympärillä modernisoidaan.

Ennen kuin koodia muutetaan, tarvitaan luotettava päätöspohja – ei täydellinen dokumentaatio. Seuraavat kolme tulosta ovat osoittautuneet toimiviksi:

  • Toimialalogiikan kartta: kriittiset käyttötapaukset, säännöt/laskelmat, variantit (mandantit/maat/asiakkaat), rajapinnat, jobit/batch-ajot.
  • Riskiprofiili: erityisen virheherkät alueet, datalaatu, sääntelyvaatimukset, toiminnan pullonkaulat (suorituskyky, vakaus, ylläpidettävyys).
  • Modernisointibacklog: priorisoidut paketit liiketoiminta-arvon ja riskin mukaan (mitä on pidettävä vakaana, mitä saa muuttaa, mitä myöhemmin).

Tämän avulla modernisointi voidaan tehdä suunnitelmalliseksi: selkeillä inkrementeillä yhden „kaikki tai ei mitään“ -projektin sijaan.

Jotta toimialalogiikka ei muuttuisi „vahingossa“, tarvitaan varmistus, joka toimii riippumatta käyttöliittymän refaktoroinnista. Tyypillisiä osia ovat:

  • Characterization/Golden-Master-testaus: olemassa oleva käyttäytyminen jäädytetään edustavien syötteiden/tulosteiden avulla (raportit, laskelmat, prosessivaiheet).
  • Regressiotestit käyttötapaustasolla: liiketoimintakriittiset prosessit jäljennetään automaattisesti tai puoliksi automaattisesti.
  • Telemetria: lokitus, mittarit ja virheraportit tehdään vertailukelpoisiksi ennen ja jälkeen muutoksen.
  • Rinnakkaisajo & kontrolloitu siirtymä: uudet moduulit toimivat rinnakkain vanhan kanssa (feature togglet, pilottiryhmät), selkeällä rollback-strategialla.

Vasta kun nämä turvaverkot ovat paikoillaan, varsinainen tekninen modernisointi kannattaa – koska riski ja jälkitöiden määrä laskevat drastisesti.

Yleisin syy logiikan katoamiseen on käyttöliittymän, tietokantayhteyden ja liiketoimintasääntöjen sekoittuminen. Modernisointi alkaa siksi eriyttämisestä – ei UI-kehyksen vaihtamisesta.

Pragmaattinen tavoite on 3‑kerroksinen rakenne:

  • Presentation: VCL/FMX, Presenter/ViewModel, vain käyttöliittymään liittyvä validointi (muoto, pakolliset kentät)
  • Business: domaanimallit, palvelut, säännöt, tilalogiikka, laskelmat
  • Data/Integration: Repositories, tietokantayhteys, adapterit ERP/DMS/CRM-järjestelmiin, REST-Clients, viestinvälitys

Käytännön sääntö: liiketoimintasäännöt siirretään OnClick/OnExit-käsittelijöistä domaanipalveluihin. SQL siirtyy Formsista Repositoriesiin. Näin logiikasta tulee testattavaa ja myöhemmin uudelleenkäytettävää UI:n, palveluiden ja töiden kautta.

Beim Strangulation Pattern syntyy uutta tarkoituksellisesti „vieressä“ olemassa olevan rinnalla: uudet toiminnot toteutetaan jo irrotetussa rakenteessa samalla kun vanha järjestelmä jatkaa toimintaansa. Askelseltaan uusi kerros ottaa enemmän vastuuta, kunnes vanhat osat poistuvat.

Esimerkki (tyypillinen B2B):

  • Erotatte tilauslogiikan domaanipalveluksi.
  • Nykyinen VCL-UI käyttää aluksi samaa palvelua (ei prosessikatkosta).
  • Samaan aikaan syntyy REST-päätepiste asiakasportaalia tai integraatiota varten.
  • Vakaannuttuaan yksittäiset vanhat Forms korvataan – ilman että ydinlogiikkaa tarvitsee rakentaa uudelleen.

Näin vähennätte projektiriskiä, säilytätte käyttökyvyn ja saavutatte nopeasti mitattavia hyötyjä (esim. API, suorituskyky, ylläpidettävyys).

Tilanteesta riippuen nämä rakennuspalikat ovat usein relevantteja – ratkaisevaa on priorisointi riskin ja liiketoiminta-arvon mukaan:

  • BDE/Legacy-DB-Zugriff ablösen: modernit ajurit/providerit, selkeät transaktiorajat, toistettavat käyttöönotot.
  • Unicode: merkkijonojen käsittely, tietokanta/rajapinnat, kolmannen osapuolen komponentit.
  • 64‑Bit: riippuvuudet, muisti/suorituskyky, ulkoiset kirjastot.
  • API- ja palvelukerros: REST, Windows-/Linux-palvelut, integraatiot.
  • Build & Release: CI/CD, artefaktien hallinta, allekirjoitetut asennuspaketit, palautus.

Tärkeää: Nämä kohdat on ihanteellista toteuttaa eriyttämisen ja suojaamisen jälkeen – silloin muutokset voidaan verifioida turvallisesti.

Täysimittainen uudelleenkirjoitus on joissain tapauksissa perusteltu – usein se on kuitenkin kallein tapa saada „moderni tekniikka“. Nämä kysymykset auttavat luokittelussa:

  • Onko liiketoimintalogiikka täysin ymmärretty ja testattavissa – vai onko paljon tietoa implisiittisesti ylläpidossa?
  • Onko olemassa tiukkoja määräaikoja (esim. alustan loppuminen, vaatimustenmukaisuus), jotka sulkevat pois rinnakkaiskäytön?
  • Kuinka suuri on variaatioiden kirjo (asiakas-/vuokralaiskohtainen logiikka)?
  • Kuinka kriittinen on saatavuus, ja kuinka suuri on toleranssi prosessimuutoksille?
  • Mitkä osat ovat todellisuudessa „syyllisiä“ (UI, tietokantayhteys, integraatiot, käyttöönotto) – ja mitkä ovat vakaita?

Monissa B2B-skenaarioissa vaiheittainen lähestymistapa johtaa nopeammin mitattaviin tuloksiin, koska se kontrolloi riskejä ja suojaa liiketoimintalogiikkaa.

Delphi-Modernisierungs-Audit (prosessikriittisille sovelluksille): Analysoimme arkkitehtuurin, riippuvuudet, riskialueet ja toimitamme priorisoidun tiekartan siitä, miten modernisoida ilman että liiketoimintalogiikka menetetään.

  • Input: Koodipohja (read-only), Build-Setup, 2–3 ydinkäyttötapausta, järjestelmäympäristö (DB, integraatiot).
  • Tulos: toimintalogiikan-/moduulikartta, riski- ja riippuvuusanalyysi, suositeltu kohdearkkitehtuuri, toteutussuunnitelma inkrementeissä, sisältäen varmistuksen (testit/rinnakkaiskäyttö).
  • Valinnainen: Proof of Concept eriyttämiselle + ensimmäinen Golden-Master-testi.

Näin saatte luotettavan päätöksenteon perustan, ennen kuin budjetti ja aika sijoitetaan riskialttiiseen uudelleenkirjoitukseen.

Voidaanko Delphi modernisoida ilman sovelluksen uudelleenkirjoittamista?
Kyllä. Monissa tapauksissa toimintalogiikka ja datan käyttö erotetaan ensin, minkä jälkeen suoritetaan tekninen modernisointi. Tämä vähentää riskejä ja pitää tuotantoympäristön vakaana.

Miten estetään, että toimintalogiikka muuttuu ‚hiljaisesti‘?
Golden-Master- ja regressiotestien, telemetrian sekä kontrolloidun rinnakkaiskäytön ja selkeän palautusstrategian avulla.

Mitkä toimet tuottavat usein nopeimman hyödyn?
Läpinäkyvyys (Assessment), käyttöliittymän/SQL:n erottelu, BDE-korvaaminen ja API-/palvelukerros integraatioille – kukin testein varmistettuna.

Kuinka kauan modernisointi kestää?
Se riippuu kriittisistä käyttötapauksista, variaatiomäärästä ja riippuvuuksista. Auditointi tuottaa tyypillisesti lyhyessä ajassa luotettavan tiekartan ja priorisoidut inkrementit.

Nächster Schritt

Wenn aus dem Thema ein reales Projekt wird, sollten Architektur, Bestand und Betrieb früh zusammen betrachtet werden.

Emme tue pelkästään yksittäiskysymyksissä, vaan myös silloin, kun lähdekoodipalasista, legacy-aiheista tai portaali-ideoista halutaan muodostaa luotettava yrityshanke.

  • Nykytila, tavoitetila ja tekniset riskit arvioidaan yhdessä.
  • REST, Datenzugriff, Portale und Rollout werden nicht als Spätfolgen verschoben.
  • Sie sehen früh, welcher Weg wirtschaftlich und betrieblich tragfähig ist.

Jaa artikkeli

Jaa tämä viesti suoraan

LinkedIn, X, XING, Facebook, WhatsApp und E-Mail sind sofort verfügbar. Für Instagram bereiten wir Link und Kurztext direkt vor.

Sähköposti

Instagram avautuu uuteen välilehteen. Linkki ja lyhyt teksti kopioidaan ensin leikepöydälle.