Development

Software-ontwikkeling
development

Goede software vergaat niet

Veel software kan als bouwsteen dienen voor nieuw systeem.

19 september 2022

Veel software kan als bouwsteen dienen voor nieuw systeem.

In de IT-industrie volgen de vele veranderingen elkaar in hoog tempo op. Maar zijn ze wel nodig? Een IT-systeem voert een taak over 100 jaar nog op exact dezelfde manier uit, omdat het niet veroudert. Toch wordt in de IT-industrie het wiel te vaak opnieuw uitgevonden. Cloud computing maakt het makkelijker om softwarebouwstenen voor de toekomst te bouwen die steeds opnieuw kunnen worden gebruikt. Dat vereist echter volgens Hugo Peters wel systemen voor het automatisch vinden en gebruiken van elkaars bouwstenen.

Stel we gaan terug naar het jaar 1973, zoeken een oude groene mainframe-terminal en beginnen erop te programmeren. We schrijven een functie voor een banksysteem dat geld van de ene naar de andere rekening overmaakt, op zo’n manier dat in 100% van de gevallen het geld op de ene rekening blijft staan of op de andere rekening wordt gestort. In 0% van de gevallen verdwijnt het geld of verdubbelt het bedrag. Is de transactiefunctie eenmaal op de juiste manier geschreven, dan kun je deze oneindig vaak gebruiken. Je creëert als het ware een softwareblok dat je als bouwsteen kunt gebruiken om IT-systemen mee te bouwen. Als de logica eenmaal geperfectioneerd is, kunnen toekomstige generaties het ook gebruiken.

IT-applicaties in de verre toekomst

Ongeveer 100 jaar geleden begon Alan Turing na te denken over de Universal Processing Machine (de Turing Machine). Deze machine was in het begin nog een abstract idee, maar groeide uit tot de software die tegenwoordig zoveel taken van ons overneemt. We staan er niet vaak bij stil, maar de IT-industrie staat eigenlijk nog in de kinderschoenen. Zeker vergeleken met andere industrieën. Maar we zien dat de snelheid waarmee werkwijzen in andere industrieën veranderen verbleekt bij de snelheid waarmee IT-systemen veranderen. Is het wel zo’n goed idee om de huidige snelheid van verandering te blijven behouden richting de toekomst? Zou het niet beter zijn als de IT-industrie wat minder snel verandert en beter gebruik maakt van inspanningen van vorige generaties?

IT-systemen verouderen niet

Door deze snelle veranderingen gaat het makkelijk aan ons voorbij dat IT-systemen in de basis niet verouderen. Denk maar eens terug aan de terminal met het groene CRT-scherm uit de jaren ‘70. Dat ziet er hopeloos verouderd uit, toch? Toch geldt dat niet voor de software en de logica die erin zitten. Als je er goed over nadenkt zie je dat de software van een IT-systeem zijn taken vandaag nog steeds op exact dezelfde wijze uitvoert als op de dag dat het op de markt kwam. De instructieset blijft exact hetzelfde.

IT-systemen, laten we ze IT-producten noemen, moesten allerlei eigenschappen hebben. Je moest een IT-product zelfstandig kunnen installeren, beheren, configureren, op-en-afschalen etc. Kortom: een IT-product was een afzonderlijk geheel dat zelfstandig moest werken. Het probleem is dat ieder IT-product die eigenschappen op zijn eigen manier hanteert, waardoor beheer complex en duur is. Cloud computing, met onderliggende technologieën zoals docker containers en kubernetes clusters, biedt uitkomst: alles kan op dezelfde manier worden beheerd.

Softwarebouwstenen

Maar cloud computing biedt nog een ander groot onderbelicht voordeel: IT-producten hoeven niet te opereren als afzonderlijk geheel, maar als individuele softwareblokken. Door integratiesoftware kunnen deze blokken als Lego op elkaar worden gestapeld om allerlei oplossingen en diensten te bouwen. Integratie is niets nieuws, maar in het verleden werden deze integratiepunten altijd gekozen op de functionele grenzen, aan de rand van IT-producten. Je wilde immers de gegevens van een bepaald systeem ontsluiten. Maar met de ontwikkelingen in cloud computing ga je als het ware meer denken in bouwstenen dan in afzonderlijke softwareproducten. Gartner denkt ook dat de toekomst van bedrijven hier ligt: “Composable business is het creëren van een organisatie op basis van uitwisselbare bouwstenen”. Maar hoe kun je deze capaciteiten vinden en makkelijk consumeren?

Het wiel opnieuw uitvinden

Het gevaar bestaat dat we deze bouwstenen niet hergebruiken maar ze zelf steeds opnieuw blijven bouwen, en zo het wiel opnieuw blijven uitvinden. Dit heeft 2 redenen:

  1. Bij het uitproberen van een bestaande bouwsteen blijkt dat hij toch net niet helemaal past.
  2. Er zijn zoveel softwarebouwstenen beschikbaar dat het vinden van de juiste meer tijd kost dan er zelf een bouwen.

Maar dit is zonde, zeker omdat bouwstenen tot in het einde der tijden bruikbaar kunnen zijn. Wat hierbij zou kunnen helpen is een IT-systeem dat ons assisteert bij het zoeken van de juiste bouwsteen voor je IT-applicatie. Op termijn kunnen we zelfs nog een stap verder gaan en dit proces van het inpassen van deze bouwstenen compleet automatiseren. Op deze manier kunnen we met meer zekerheid zeggen dat zo’n bouwsteen zal passen en zal het vinden van de juiste softwarebouwstenen veel minder tijd kosten. Daarbij is het wel van belang dat dit systeem de ontologie van bouwstenen kan begrijpen en deze kan samenvoegen tot nieuwe oplossingen. Het systeem begrijpt dan daadwerkelijk wat de softwarebouwstenen doen en weet hoe ze te gebruiken. Daar zijn we nog lang niet. Hiervoor hebben we krachtigere en slimmere systemen nodig. Wellicht kunnen de ontwikkelingen in kwantum computing voor die grotere rekenkracht zorgen. En kunnen ontwikkelingen in artificiële intelligentie zorgen voor slimmere systemen zodat zo’n systeem in de toekomst mogelijk is.

Hierbij is het jammer dat er veel meer geld wordt uitgegeven aan IT-budgetten maar dat er ook minder geld wordt vrijgemaakt voor softwareonderzoek. IT-budgetten gaan over het algemeen naar het bouwen en beheren van meer IT-systemen, maar op deze manier blijven we het wiel opnieuw uitvinden. We zouden meer tijd en aandacht moeten hebben voor oplossingen waarvan toekomstige generaties beter kunnen profiteren.

De Composable Enterprise

Het principe van het herkennen en vinden van de benodigde bouwstenen is tegenwoordig makkelijker dankzij de beschikbaarheid van data. Met behulp van een datacatalogus die verschillende databronnen beschrijft, kunnen deze bijvoorbeeld vanuit een analytisch systeem worden samengevoegd en geanalyseerd. Denk aan salesdata die uit meerdere systemen samen worden gevoegd en getoond in één rapportage. Hetzelfde principe zou meer moeten worden toegepast als het gaat over het vinden van composities van functionaliteit. Hier komt zeker meer aandacht voor. Rond 2023 zal 60% van alle mainstream bedrijven de composable enterprise als een strategisch doel hebben en ze zullen meer softwarebouwstenen gebruiken. Deze softwarebouwstenen zouden ontwikkeld moeten worden voor een extreem lange termijn.

Tot slot

Hoe men IT-systemen bouwt in de verre toekomst weet ik natuurlijk niet exact. Toch denk ik dat we beter gebruik kunnen maken van bestaande software van vorige generaties. Goede software vergaat namelijk niet. De IT-industrie hoeft niet zo snel te veranderen in de manier waarop we dingen bouwen. Maar het is belangrijk dat we beter worden in het gebruiken en delen van elkaars softwarebouwstenen en minder bezig zijn met steeds het wiel opnieuw uitvinden. Dit voorziet toekomstige generaties van softwarebouwstenen waarmee zij hun applicaties makkelijker, sneller en goedkoper kunnen bouwen.

Magazine AG Connect

Dit artikel is ook gepubliceerd in het magazine van AG Connect (september 2022). Wil je alle artikelen uit dit nummer lezen, zie dan de inhoudsopgave.

2
Reacties
JJ Koole 19 september 2022 18:55

Dat geldt voor artikelen in AG ook. Sommige van 10, 20 jaar geleden, of veel langer, zou je zó weer kunnen plaatsen. Met hier en daar wat aanpassinkjes. Maar ja, dat inhoudelijk beoordelen en aanpassen, in de tijd die dat kost kun je óók, of béter zelfs, een nieuwe schrijven. Toch?

Atilla Vigh 19 september 2022 13:23

Ik loop al een behoorlijke tijd mee in IT-land, en reusability is altijd al een natte droom geweest van een aantal mensen. Maar in een vakgebied waarbij je meer programmeertalen dan ontwikkelaars hebt en het vaste adagium "not invented here" nog steeds hoogtij dagen viert, zal er nog veel water door de Rijn moeten vloeien opdat we echt een gestandaardiseerde manier van software ontwikkelen krijgen, die echt zoden aan de dijk zet. Ik kijk met argusogen naar de Lowcode initiatieven (Mendix, Power Platform van MS, OuSystems, etc...). Daar kleven nog wel wat zaken aan, maar het begint te komen. Grootste probleem is ook hier niet technisch, je zit vast in het eco-systeem van de aanbieder....

Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.