Alfred Joensen var hårdt presset.
Han havde anbefalet det færøske skattevæsen, Taks, og hostingselskabet Elektron at flytte det eksisterende mainframebaserede skattesystem over til en Windows-platform ved hjælp af Raincode, der kompilerede PL/1-kode til .NET-bytecode.
Efter knap to år blev migreringsprojektet stoppet. Der var for mange forhindringer og ingen udsigt til, at migreringen kunne blive færdig.
Der var stor politisk bevågenhed på projektet, som også var kommet på den færøske finanslov.
Situationen var kritisk. Elektron var strandet på en mainframe, hvor licenspriserne steg betragteligt, og den færøske samfundsøkonomi var stadig dybt afhængig af syv-otte mainframeudviklere, hvoraf hovedparten var over 60 år og nærmede sig pensionsalderen med hastige skridt.
Hos Taks undrede medarbejderne sig over, at deres systemer efter et it-projekt af næsten to års varighed stadig var uforandrede.
Hands-on CEO
Som CEO for softwarehuset NES Tech skulle Alfred Joensen egentlig koncentrere sig om udviklingen af pensionssystemer, men hans samvittighed, ære og færøske nationalfølelse bød ham at finde en vej ud af en situation, som han følte sig ansvarlig for.
Derfor kom han på den idé selv at udvikle de nødvendige værktøjer, så PL/1-koden kunne køre på Windows. Han gik grundigt til værks, da han ikke ville stå med endnu et strandet projekt som følge af sine anbefalinger.
»Det skulle ikke være en hovsa-løsning, så vi undersøgte det grundigt,« siger Alfred Joensen, da Version2 møder ham i NES Techs kontorlokaler på Sankt Annæ Plads i København.
Alfred Joensen er en meget hands-on CEO, selvom han underspiller sin rolle i projektet, som trods kriser blev en succes.
»Jeg lavede ikke så meget af koden, men var med til at føde ideerne.«
En lille kernegruppe
Alfred Joensen sammensatte et lille team af udviklere som han vidste var teknisk kompetente. Kernegruppen var kun på fire personer, hvilket er i overensstemmelse med Alfred Joensens syn på softwareudvikling.
»Vores filosofi er, at du finder de rigtige folk til et projekt. Jeg har arbejdet som konsulent hos virksomheder, hvor der er masser af konsulenter fra systemleverandøren, nogle fra udlandet plus alle mulige freelance-konsulenter og dertil virksomhedens egen organisation. Der løber måske 100 mand rundt og træder hinanden over tæerne,« siger Alfred Joensen, der betegner Fred Brooks' bog 'The Mythical Man Month' som en bibel.
Foruden Alfred Joensen selv bestod teamet af Tórur Strøm, der har en ph.d. i optimering af mikroprocessorer, C#-udvikleren Torbjørn Lisberg og en nu pensioneret PL/1-udvikler Torsten Krogsgaard, der også havde programmeret i Java og C#.
Projektet kunne ikke være fuldført uden en lang række andre personer, som vi støder ind i senere i fortællingen, men for at få udviklet de grundlæggende værktøjer var det essentielt med en lille agil udviklergruppe.
PL/1 til C
Det var ikke kun kildekoden, som skulle transformeres fra PL/1 til C# for at få det færøske skattesystem til at køre på Windows. Der skete også en konvertering af DB2 til SQL Server. Det omliggende runtime-miljø og services som CICS og JCL til batchkørsler skulle også flyttes over på Windows. Det er ikke en fuldstændig CICS-version, der kører på Windows, men kun de CICS-services, som PL/1-programmerne anvendte. BaseELK er PL/1-datatyper og strukturer implementeret i C#. ELKSecurity er en erstatning for CA's Top Secret mainframe-sikkerhedssystem, som minder lidt om RACF. NeoBatch og JAMS er to standardprodukter, der håndterer batchjobs på Windows, som JCL og CA Scheduler gjorde på mainframen.Systemdiagram
Første forsøg på at migrere væk fra mainframen var strandet, fordi det gav problemer at kompilere PL/1 direkte til .NET-bytecode. Det lille team valgte at transformere PL/1 til C#-kildekode i stedet for.
Det gjorde det nemmere at håndtere eksempelvis de mange CICS-kald, som PL/1-programmerne gjorde brug af.
Det betød også, at systemernes videreudvikling var fremtidssikret, da udviklingen fremover ville foregå i C# og ikke i PL/1, som Raincode-løsningen krævede.
Torbjørn Lisberg fik hovedansvaret for udviklingen af en PL/1 til C#-transformer, som blev navngivet P2C, Tórur Strøm fik ansvaret for udviklingen af CTS (CICS Transaction Server) på Windows og Torsten Krogsgaard fik ansvaret for Base, som implementerer PL/1-datatyper og strukturer i C#.
»Vi arbejdede godt sammen som et team, vi havde et hovedansvar, men vi hjalp hinanden meget,« siger Torbjørn Lisberg.
Teamet var også agilt i den oprindelige betydning, at det tilpassede sig omstændighederne for at få noget velfungerende kode.
»Da vi startede helt oprindeligt, havde vi regnet med, at vi ville lave optimal C#-kode, men vi fandt ud af, at vi blev nødt til emulere noget af det, som kørte på mainframe,« forklarer Torbjørn Lisberg.
Det betød blandt andet, at PL/1 datastrukturer og datatyper blev implementeret i C# ved hjælp af Torsten Krogsgaards Base.
»C#-koden minder lidt om PL/1, da datastrukturerne er de samme. Vi kalder det P#. Det er C#, men det er skrevet ud fra en bestemt arkitektur, hvilket har gjort det nemmere for PL/1-programmørerne at flytte over til C#,« forklarer Torbjørn Lisberg, og han fremhæver Torsten Krogsgaard som en væsentlig årsag til, at projektet lykkedes.
»Torsten var meget involveret i udviklingen af datastrukturer og stod for mapningen af mainframe memory-modellen til en objektorienteret memory-model. Han skrev et softwarelag, så memory kunne behandles ligesom memory på mainframe. Det er ikke for nybegyndere, men han havde også arbejdet med mainframe i 20 år og .NET i 20 år.«
CICS til Windows
Tórur Strøm tog sig som nævnt af at udvikle CICS til Windows. Det kan lyde voldsomt, men han implementerede kun de CICS-features, som blev anvendt af PL/1-programmerne.
»Vi kiggede på, hvad var der brug for, og vi har ikke anvendt alle CICS-features. Vi lavede et automatisk gennemløb af de 40-50.000 filer og fandt frem til, hvilke CICS-features vi skulle implementere,« siger Tórur Strøm.
Der var blandt andet behov for at skrive til 3270-terminalerne, som er brugergrænsefladen til Taks-systemerne. For at undgå at introducere for mange ubekendte faktorer i projektet var det besluttet at beholde den eksisterende brugergrænseflade.
Her stod Tórur Strøm for at udvikle den nødvendige kode, der kunne håndtere eksempelvis en EXEC CICS SEND, der sender data til 3270-terminalerne.
Proof-of-concept til bestyrelsen
Den lille gruppe arbejdede koncentreret og målrettet – og længe. Torbjørn Lisberg ved ikke præcist, hvor mange timer han lagde i projektet, men der var en del nætter, hvor klokken blev 3 om natten, inden han kom i seng.
Version2's udsendte journalist antager derfor fejlagtigt, at han ikke havde nogen familiemæssige forpligtigelser som kone eller børn.
»Jo, på det tidspunkt havde jeg små tvillinger.«
I løbet af tre-fire måneder får det lille team udviklet de nødvendige komponenter og et lille proof-of-concept, der giver dem nok tro på, at det store projekt kan blive gennemført.
De demonstrerede, hvordan et transformeret PL/1-program kunne køre som et C#-program på en Windows-server og generere et 3270-skærmbillede, modtage brugerinput, lave en forespørgsel mod en SQL Server og sende de fundne data tilbage til 3270-terminalen.
»Vi havde en simpel version af en komponent, der kunne kommunikere med 3270 og en simpel version af transformeren. Vi viste, at det var muligt at slå en person op i systemet,« siger Torbjørn Lisberg.
Han suppleres af Tórur Strøm:
»Jeg havde fået lavet kommunikationen med terminalen. Når man er tekniker og ved, hvad der sker underliggende, så tror man på, at det kan lade sig gøre. Jeg lavede selv nogle små PL/1 til C#-konverteringer og nogle få CICS-kald, og jeg kunne se, at det kunne lade sig gøre, hvis man vidste, hvad man lavede. Det kan være, at vi undervurderede scopet, men vi var overbeviste om, at projektet kunne lykkes.«
Efter præsentationen af proof-of-concept giver Elektrons bestyrelse grønt lys til at gå i gang med migreringsprojektet igen. Denne gang med de egenudviklede komponenter.
Følelsen af at have fuld kontrol over softwaren er afgørende for teamet. Udfordringerne var dog langtfra overstået. De var først lige startet for migreringsprojektet, som blev omdøbt til 'migræneprojektet' undervejs.
Som Torbjørn Lisberg formulerer det:
»Hvis vi havde vidst alt, hvad vi ved i dag, da vi gik i gang, så ville vi nok ikke være gået i gang.«
Fortællingen om den færøske mainframe-migrering fortsætter i en kommende artikel, hvor du blandt andet kan læse om timestamp-problemer og nyfødte, der ødelægger data ved en prøvemigrering.

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.