JKODEZ_
// uudistaminen

Vanhan ohjelman uudistaminen: näin se tehdään turvallisesti

Miten selvitän ohjelman, jota kukaan ei enää tunne, miten siirto etenee ja miten varmistetaan, että uusi tekee samat asiat kuin vanha.

Sisältö01 Kenelle02 Miksi nyt03 Neljä lopputulosta04 Työ vaihe vaiheelta05 Selvitys ilman dokumentaatiota06 Tulosten tarkistus07 Millaisia ohjelmia08 Tekoäly ja aineisto09 Yhden hengen toimittaja10 Usein kysyttyä
YRITTÄJÄLLE

Yksi tärkeä ohjelma, yksi vanha kone

Ohjelma on tehnyt työnsä 15–25 vuotta. Kaikki tietävät, että jonain päivänä se ei käynnisty. Et joudu määrittelemään mitään uudelleen, ensimmäinen askel on kiinteähintainen, eikä kaikkea aina tarvitse tehdä uusiksi.

TEKNOLOGIAJOHTAJALLE

Kymmenkunta ohjelmaa, ei kokonaiskuvaa

Räätälöidyt työkalut 2000-luvun alusta estävät palvelinuudistuksen tai ERP-vaihdon. Aloitetaan kartoituksella, joka laittaa ne järjestykseen riskin ja kustannuksen mukaan.

Miksi vanhaa ohjelmaa ei kannata vain pitää hengissä

"Toimii vielä" pitää paikkansa siihen päivään asti, kun ei toimi. Tyypillisiä tilanteita, joiden jälkeen aikaa on vähän:

  • Kone hajoaa, tai Windows-versio, jolla ohjelma pyörii, ei enää saa tietoturvapäivityksiä. Windows 10:n tuki loppui lokakuussa 2025 ja Windows Server 2016:n loppuu tammikuussa 2027.
  • Tietokantapalvelin, tulostin tai integraation toinen pää vaihtuu, eikä vanha ohjelma osaa enää puhua sen kanssa.
  • Ainoa henkilö, joka osasi ohjelman kiertotiet, lähtee talosta.
  • Tilintarkastaja, asiakas tai vakuutusyhtiö kysyy, miten laskenta on varmistettu.
  • ERP-vaihto tai palvelinuudistus pysähtyy, koska yksi ohjelma ei siirry mukana.

Kiireessä tehty uusiminen on kallein mahdollinen. Ajoissa aloitettu on halvin.

Neljä mahdollista lopputulosta. Uusi ohjelma on vain yksi niistä.

Käyttöiän jatkaminen
Ohjelma tekee työnsä, kone on ainoa ongelma.
Siirto hallittuun ympäristöön, riippuvuudet selvitetään. Usein nopea työ.
Osittainen siirto
Pari toimintoa on kriittisiä, loppuja käytetään harvoin.
Kriittiset työnkulut uudelle alustalle, loput jäävät tai lopetetaan.
Koko ohjelman uusiminen
Ohjelma on keskeinen ja sitä pitää kehittää.
Kaikki toteutetaan uudelleen sopivalle alustalle, esimerkiksi .NET/React, data siirretään ja tulokset tarkistetaan vanhaa vasten.
Valmisohjelma
Tehtävään on vakiintunut tuote.
Autan valinnassa ja datan siirrossa. Ei omaa tuotetta, suositus on riippumaton.

Työ vaihe vaiheelta

VAIHE 0
Alkukeskustelu
SINUN OSUUTESIKuvaus siitä, mitä ohjelmalla tehdään ja mikä huolestuttaa.
MITÄ SAATArvio, kannattaako edetä, ja selvityksen kiinteä hinta.
HINTA
0 €
1–2 h
VAIHE 1
Käynnistysselvitys
SINUN OSUUTESIPääsy ohjelmaan, koodiin ja kantaan. Yksi käyttäjä lyhyeksi aikaa. Aineiston käsittelystä sovitaan kirjallisesti.
MITÄ SAATOhjelma käynnissä, riippuvuudet selvillä, löydetyt säännöt vahvistettaviksi, suositus ja hinta-arviot.
HINTA
kiinteä
muutama viikko · hyvitetään jatkosta
Tulokset ovat sinun, ja voit viedä ne toiselle toimittajalle. Jos ohjelmaa ei saa millään keinolla käyntiin, kerron sen suoraan. Silloin tuloksia ei voi verrata rinnakkaisajoilla, ja se vaikuttaa jatkon hintaan ja riskiin. Tiedät sen ennen seuraavaa päätöstä.
VAIHE 2
Koesiirto
SINUN OSUUTESITärkein työnkulku, esimerkkiaineisto, hyväksymisehdot.
MITÄ SAATTyönkulku uudella alustalla ja rinnakkaisajon tulokset eroineen.
HINTA
kiinteä
selvityksen perusteella
VAIHE 3
Loput osa kerrallaan
SINUN OSUUTESIHyväksyntä jokaisesta kokonaisuudesta.
MITÄ SAATKäyttökelpoisia kokonaisuuksia sovitussa järjestyksessä. Uudet toiveet hinnoitellaan erikseen.
HINTA
kokonaisuuksittain
voit lopettaa milloin vain
VAIHE 4
Käyttöönotto ja luovutus
SINUN OSUUTESIKäyttöönottopäätös ja aikaa perehdytykseen.
MITÄ SAATDatan siirto, rinnakkaiskäyttö, paluusuunnitelma. Lähdekoodi sinulle. Tästä eteenpäin ohjelmaa voi kehittää normaalisti.
HINTA
viimeinen erä
hyväksynnän jälkeen

Miten ohjelma selvitetään, kun dokumentaatiota ei ole

Vanhan ohjelman määrittely on ohjelma itse. En pyydä sinua kirjoittamaan sitä uudelleen. Yhdistän neljä lähdettä:

01

Käyttäjä näyttää työn

Käyttäjä tekee tilauksen, laskee tarjouksen tai ajaa raportin niin kuin aina. Tallennan sen.

02

Lähdekoodi, jos sitä on

Käyn läpi, mitä koodi tekee, myös ne haarat, joita esittelyssä ei nähty. Tekoäly nopeuttaa tätä paljon, mutta jokainen löydös tarkistetaan.

03

Tietokanta ja tiedostot

Rakenne, triggerit, proseduurit ja vanha data kertovat, mitä ohjelma on oikeasti tehnyt vuosien varrella, poikkeukset mukaan lukien.

04

Käynnissä oleva ohjelma

Kun ohjelma on saatu käyntiin, sitä voi kokeilla: mitä tapahtuu, kun syöte on tällainen.

Lopputuloksena tuon sinulle konkreettisia väitteitä tarkistettavaksi:

"Asiakasryhmälle X lasketaan alennus eri kaavalla kuin muille."
"Tämä raportti jättää pois tapahtumat, joiden tila on Y."
"Tämä toiminto kirjoittaa tiedoston verkkolevylle, jota toinen järjestelmä lukee."
"Tästä säännöstä ei ole vielä varmaa näyttöä. Pitää kysyä."

Sinun on helpompi sanoa "kyllä, näin se on" tai "ei, se muutettiin 2015" kuin kirjoittaa vaatimusmäärittely tyhjästä. Harvinaiset tilanteet, kuten vuodenvaihteen ajot, virhetilanteet ja erikoisasiakkaat, etsitään erikseen, koska ne eivät näy yhdessä esittelyssä.

Miten varmistetaan, että uusi laskee samat tulokset kuin vanha

Ajan saman aineiston molempiin ohjelmiin eristetyissä ympäristöissä ja vertaan tulokset: lasketut arvot, pyöristykset, raportit ja tietokantaan syntyvät muutokset. Saat listan: nämä täsmäävät, näissä on ero, tästä syystä.

Kolme asiaa, jotka sanon suoraan:

  • Vertailu todistaa vastaavuuden vain tutkituissa tapauksissa. Siksi aineisto kannattaa ottaa usealta vuodelta ja ottaa mukaan tunnetut erikoistapaukset.
  • Vanhan ohjelman virheitä ei kopioida automaattisesti. Kun ero johtuu vanhan ohjelman virheestä, sinä päätät, kumpi on oikein.
  • Uusi ohjelma tarvitsee lisäksi omat tietoturva-, suorituskyky- ja ympäristötarkistuksensa. Ne eivät sisälly vertailuun vaan tehdään erikseen.

Vertailussa käytetty aineisto jää sinulle. Sillä voi tarkistaa myös seuraavan version, toisen toimittajan tai toisen tekoälytoteutuksen.

Millaisia ohjelmia otan työn alle

LÄHTÖKOHTA
TYYPILLISIÄ TAPAUKSIA
HUOMIOITA
Delphi, C++ Builder
Tarjouslaskenta, tuotannonohjaus, rekisterit
Kehitysympäristön saa usein palautettua, vaikka sitä ei enää myydä. Lähdekoodi ratkaisee.
Visual Basic 6, VBA
Laskentatyökalut, raportointi, Excel-pohjaiset ohjelmat
Excel/VBA-ohjelmissa logiikka on usein hajallaan kaavoissa ja makroissa. Molemmat käydään läpi.
Microsoft Access
Rekisterit, tilaustenkäsittely, varasto, laskutus
Lomakkeet, kyselyt ja VBA erotetaan datasta. Data siirtyy SQL Serveriin tai PostgreSQL:ään.
Vanha .NET Framework, WinForms, Web Forms
Sisäiset työkalut 2003–2015
Usein edullisin tapaus: osan koodista voi säilyttää.
Clipper, FoxPro, Paradox, dBase
1990-luvun rekisteri- ja laskutusohjelmat
Tiedostopohjainen data vaatii huolellisen siirron, mutta se onnistuu.
Classic ASP, PHP 4/5, vanhat Java-sovellukset
Intranetit, tilausportaalit, integraatiot
Palvelinympäristö on usein se, mikä pettää ensimmäisenä.
Tietokantaproseduurit ja tiedostointegraatiot
Logiikka SQL-proseduureissa, ajastetut tiedostosiirrot
Näkymättömin ja usein kriittisin osa. Kartoitan aina.
UUSI TOTEUTUS

Tekniikka valitaan tilanteen mukaan, esimerkiksi .NET ja React, tietokantana SQL Server tai PostgreSQL. Valinnan peruste on aina sama: laajasti osattua ja pitkään tuettua, jotta työtä voi jatkaa lähes mikä tahansa suomalainen ohjelmistotalo. Jos sinulla on oma toive tai talossa on jo jokin tekniikka, mennään sillä. Tarvittaessa ehdotan sopivaa vaihtoehtoa. Työpöytäohjelma voidaan tehdä työpöytäohjelmana, jos selain ei sovi käyttötilanteeseen.

MILLOIN EN SUOSITTELE UUSIMISTA

Jos ohjelman voi korvata valmistuotteella halvemmalla, jos sen käyttö loppuu lähivuosina tai jos lähdekoodia ei ole eikä ohjelmaa saa käyntiin. Viimeisessä tapauksessa kyse on uuden ohjelman tekemisestä, ja sanon sen suoraan.

Tekoälyn rooli ja aineistosi käsittely

Mitä tekoäly tekee

Lukee ja selittää vanhaa koodia, ehdottaa sääntöjä, kirjoittaa uutta toteutusta. Se tekee työstä murto-osan siitä, mitä käsityönä menisi. Siksi pystyn tarjoamaan kiinteitä hintoja pienillekin ohjelmille.

Mitä tekoäly ei tee

Se ei päätä, mikä on oikein. Vaarallisin virhe tässä työssä on se, että tekoäly tulkitsee vanhan säännön väärin ja kirjoittaa samalla tulkinnalla sekä uuden toteutuksen että sen testit. Testit menevät läpi ja tulos on silti väärä. Siksi vertailun mittari on aina vanhan ohjelman todellinen tulos ja sinun vahvistuksesi, ei tekoälyn tulkinta.

Missä koodisi ja datasi käsitellään

  • Sovitaan kirjallisesti ennen aloitusta, mitä aineistoa saa käsitellä tekoälypalveluissa.
  • Tuotantodataa, henkilötietoja tai hintatietoja en lähetä malleille. Testaus tehdään anonymisoidulla tai keinotekoisella aineistolla, ellei toisin sovita.
  • Käytän Anthropicin Claudea (Claude Code) ja OpenAI:n ChatGPT:tä asetuksilla, joissa aineistoa ei käytetä mallien kouluttamiseen. Palvelut käsittelevät aineistoa omilla palvelimillaan, jotka voivat sijaita EU:n ulkopuolella. Jos se ei sovi, aineistoa ei viedä ulkopuolisiin palveluihin lainkaan.
  • Lähdekoodi ja tietokannat säilytetään työn ajan omassa, muista asiakkaista erotetussa ja salatussa ympäristössä. Ne poistetaan luovutuksen jälkeen, ellei ylläpidosta sovita erikseen.
  • Jos lähdekoodia ei saa käsitellä ulkopuolisissa palveluissa lainkaan, sekin onnistuu. Hitaammin ja kalliimmin, mutta onnistuu.

Yhden hengen toimittaja. Mitä jos en ole käytettävissä?

Kysymys on aiheellinen, ja siihen kannattaa vaatia vastaus jokaiselta pieneltä toimittajalta. Minun vastaukseni:

Luovutus joka vaiheessa

Lähdekoodi on sinulla jokaisen vaiheen päätteeksi, ei vasta lopussa. Keskeneräistäkin työtä voi jatkaa.

Yleinen tekniikka

Valitut tekniikat pyritään pitämään yleisinä, esimerkiksi .NET ja React, joten ohjelmaa voi jatkokehittää kuka tahansa niiden osaaja. Et ole minusta riippuvainen.

Ei omaa alustaa, ei omaa tuotetta

Mitään ei ole lukittu minun järjestelmiini.

Jos sinulla on jo IT-kumppani, joka hoitaa infran, teen mielelläni töitä sen kanssa: he hoitavat ympäristön ja jatkuvan tuen, minä ohjelman selvityksen ja siirron.

Usein kysyttyä

YRITTÄJÄ KYSYY

En tiedä, millä kielellä ohjelma on tehty. Haittaako se?

Ei. Se selviää nopeasti ohjelman tiedostoista. Riittää, että kerrot, mitä ohjelmalla tehdään.

Pitääkö kaikki tehdä uusiksi?

Ei välttämättä. Ensimmäinen kysymys on, riittääkö ohjelman saaminen turvallisesti uuteen ympäristöön. Se on usein nopea työ ja voi ostaa vuosia lisäaikaa. Uusi tehdään vain, jos se on halvin turvallinen vaihtoehto.

Menetetäänkö vanhat tiedot?

Ei. Data siirretään ja siirto tarkistetaan. Vanha ohjelma pidetään käytettävissä sovitun ajan rinnalla.

Mitä tämä maksaa?

Alkukeskustelu ei mitään. Selvitys on kiinteähintainen ja hinta kerrotaan ennen sitoutumista. Jatko hinnoitellaan, kun tiedetään, mitä ohjelma sisältää. Arvaamalla annettu hinta olisi joko liian korkea tai valehtelua.

Kuinka paljon minun tai työntekijöideni aikaa tämä vie?

Selvityksessä tarvitaan yksi käyttäjä lyhyeksi aikaa sekä nimetty vastuuhenkilö, jolta voin kysyä, kun jokin sääntö tai poikkeus vaatii vahvistuksen. Koesiirrossa aikaa menee hyväksymisehtojen sopimiseen ja tulosten katsomiseen. Kerron tarvittavan ajan etukäteen.

Ohjelmassa on toimintoja, joita ei enää käytetä. Pitääkö nekin siirtää?

Ei. Selvitys näyttää, mitä käytetään ja mitä ei. Usein tietokannasta näkee, milloin toimintoa on viimeksi käytetty. Tarpeeton jätetään pois, ja se laskee hintaa.
TEKNOLOGIAJOHTAJA KYSYY

Meillä on useita ohjelmia. Miten laitat ne järjestykseen?

Aloitan kartoituksella, jossa jokaisesta ohjelmasta selvitetään tehtävä, käyttäjät, riippuvuudet, lähdekoodin ja ympäristön tila sekä seuraava pakottava muutos. Tuloksena on järjestys riskin ja kustannuksen mukaan. Kartoitus hinnoitellaan ohjelmakohtaisesti, ja voit tilata sen ilman sitoutumista jatkoon.

Miten tulokset tarkistetaan mitattavasti?

Rinnakkaisajoilla sovitulla aineistolla ja etukäteen sovituilla hyväksymisehdoilla. Saat tapauskohtaisen listan täsmäävistä ja poikkeavista tuloksista. Ehdot ja aineisto sovitaan ennen toteutusta, ei sen jälkeen.

Voimmeko jatkaa toisen toimittajan kanssa kesken kaiken?

Kyllä, minkä tahansa vaiheen jälkeen. Kaikki tuotettu aineisto on teidän ja yleisellä tekniikalla tehty.

Miten toimit nykyisen IT-kumppanimme kanssa?

Kumppani hoitaa ympäristön, tunnukset ja jatkuvan tuen, minä ohjelman. Työnjako sovitaan kirjallisesti. Moni IT-kumppani ohjaa asiakkaan minulle juuri siksi, että ohjelma on jäänyt heidän palveluidensa ulkopuolelle.

Käsitelläänkö lähdekoodimme tekoälypalveluissa?

Vain sovitusti ja kirjallisesti. Tuotantodataa ei lähetetä malleille. Täysin suljettu käsittely on mahdollista.

Voiko uutta ohjelmaa kehittää eteenpäin?

Kyllä, ja se on yksi tärkeimmistä syistä uusimiseen. Vanhaan ohjelmaan ei uskalleta koskea, uuteen voi lisätä ominaisuuksia, integraatioita ja käyttöliittymän parannuksia tavallisena ohjelmistotyönä. Tekijänä voin olla minä tai kuka tahansa valitun tekniikan osaaja.

Tarjoatko jatkuvaa ylläpitoa?

Ylläpito on erillinen sopimus, ja sen laajuus sovitaan käyttöönoton yhteydessä. Pienten ohjelmien jatkuva tuki on usein järkevintä hoitaa nykyisen IT-kumppanin kautta, ja luovutan lähdekoodin niin, että kuka tahansa osaaja pääsee kiinni.

Seuraava askel

Ensimmäisessä keskustelussa osaan yleensä sanoa, kannattaako edetä ja mitä selvitys maksaa. Lähdekoodia ei tarvita vielä.

040 721 3761info@jkodez.com