45 jaar software ontwikkeling

In 1978 heb ik voor het eerst kennis gemaakt met computers. Binnen mijn studie biologie maakten we gebruik van software voor het verwerken van de grote hoeveelheid data. En we gebruikten de rekenkracht voor het simuleren van modellen. In het begin werkten we nog met nog met ponskaarten, later waren we via terminals met het mainframe verbonden. Mijn afstuderen in 1984 viel samen met de introductie van eerste (IBM) personal computer. De professionele computerwereld zag de PC als niet meer dan een veredelde typemachine. Ik nam de mogelijkheden wel serieus en stortte mij op het maken van professionele software voor de PC.

Het begin

Met dBase III maakte ik programma’s die gegevens ook op konden slaan. En waar de gebruiker op overzichtelijke schermen gegevens in kon voeren. De computer werd interactief. Dankzij Clipper waren programma’s te maken die makkelijk te verspreiden waren. Dankzij lokale netwerken konden meerdere gebruikers samenwerken.
De makers van dBase waren niet zo goed in de achtergrond van databases. Dubbele klantnummers, facturen zonder klant, gegevens niet meer terug kunnen vinden zonder er eerst een expert bij te halen; het waren de gewoonste zaken. Indertijd heb ik voor Clipper de applicatie ontwikkelomgeving Meta gemaakt om het maken van kwalitatief betere software te ondersteunen.

Als programmeertaal kon dBase zich niet meten met talen als Simula, Pascal of Fortran, die ik kende uit mijn mainframe tijd. Turbo Pascal bleek een waardige opvolger op de PC. Daarmee maakte ik alles wat niet goed met dBase kon. Zoals intensief complex rekenwerk of grafische toepassingen. Helaas ontbrak het Turbo Pascal aan een algemeen geaccepteerde dataopslag en aan een goede bibliotheek voor de UI.

De PC wordt volwassen

In 1990 werd het gebruik van Windows, toen versie 3, algemeen. Turbo Pascal werd Delphi en zo een prachtige tool om windows applicaties mee te bouwen. De door Delphi gebruikte database beviel niet meteen. Als ontwikkelaar snakte ik naar een op SQL gebaseerde database, maar een Oracle of andere database server was niet altijd beschikbaar. Microsoft Access, toen al onderdeel van Office, bood een lokale SQL database aan. Ik heb hier applicaties mee gebouwd, maar het was behelpen. Toen er een koppeling mogelijk werd tussen een Delphi applicatie en een JET (Access) database had ik de, voor toen, ideale toolset.

Een Delphi applicatie is middels COM te koppelen naar Office applicaties om zo de meeste complexe documenten en spreadsheets te genereren. Met COM is ook functionaliteit beschikbaar te maken aan COM clients. Ik ben hier heel intensief mee bezig geweest, met als grootste project Perfectview 8. De PV-script taal kende een rijk scala aan bouwstenen waarmee de gebruiker rijke toepassingen kon bouwen. PV-script was de COM client, de bouwstenen waren gebouwd als COM objecten.

De opkomst van .NET

De maker van Delphi, Anders Hejlsberg, presenteerde zo tegen de eeuwwisseling de taal C# en het .NET framework. Beiden een mooie verdere stap in de ontwikkeling van software tools. Voor deze richting heb ik vanaf het allereerste releases gekozen. De eerste applicaties waren klassieke Windows applicaties. De .NET bibliotheek was vanaf de grond opnieuw opgebouwd. Voor de eindgebruiker was er niet zoveel nieuws te zien aan de applicaties maar als ontwikkelaar had ik een veel overzichtelijker en flexibelere gereedschapskist.

Deze jaren waren ook de opkomst van het internet. Het maken van software veranderde wezenlijk. De applicaties werden nu uitgerold op een webserver, het enige wat de gebruikers nodig hadden was een webbrowser en een adres op het inter- of intra-net voor de applicatie.

De implementatie van web software heeft in de loop van de jaren vele gedaantes gehad. In de allereerste incarnaties moesten mijn gebruikers per sé werken met Microsoft internet explorer en was er een zeer intensief dataverkeer tussen gebruiker en server. Inmiddels werken mijn web-applicaties in elke browser (behalve IE, niet elke MS product is een succes) en is het dataverkeer gereduceerd tot een, ook mobiel aanvaardbaar, minimum.

Software architectuur krijgt vorm

De applicaties werden steeds complexer en de vragen naar aanpassingen en uitbreidingen werden steeds frequenter. Er ontstond in de beginjaren van deze eeuw een grote behoefte om software te structureren op een wijze die voor alle partijen duidelijk was. En ook om het proces van doorlopende verandering te gaan kanaliseren. Hier kreeg mijn ervaring met modelleren in de biologie zijn plaats. Ik omarmde Domain Driven Design. Centraal in elk project staat nu het domeinmodel. In dit model herkent de gebruiker van de software de entiteiten en bijbehorende functionaliteit van het toepassingsgebied. Voor mij is het domeinmodel de centrale spil van alle code. De verschillende partijen gebruiken een gedeelde taal om over het model te overleggen. Dit levert eenduidige software op die overzichtelijk is en daardoor ook goed te onderhouden.

Software ontwikkeling is een continu proces waarin zeer regelmatig (delen van de) software uitgerold worden. Dit houdt alle partijen betrokken, geeft ruimte voor directe feedback en geeft inzicht in het tijdstraject van de voltooiing van een project. Hedendaagse gebruiker software draait altijd in een webbrowser, ook als het een interne applicatie is. De tegenwoordige browsers bieden een minstens zo goede UI en functionaliteit als de klassiek Windows / Mac applicaties. Een groot voordeel is het uitrollen van de software. Dit kan zo direct naar de webserver(s), het is niet meer nodig om alle client computers langs te lopen.

De cloud

Hoe software gehost wordt is ook veranderd. De plaats van de fysieke server computer in de bezemkast, waarop een complex systeem van software draaide, is ingenomen door virtuele servers “ergens op het internet”. Deze cloud omgeving maakt het ook mogelijk om de verschillende onderdelen van een software systeem te verdelen over meerdere diensten op het web. Waarbij elke dienst toegespitst is op één simpele taak. Dit bevordert ook de schaalbaarheid van software-applicaties. Bij een toename van het gebruik en/of de hoeveelheid beheerde data volstaat het meer cloud-diensten in te schakelen. Een grote stap vooruit. Vroeger was het een uitgebreide planning van te bestellen hardware en te installeren software, nu is het een kwestie van configureren van diensten.

Deze verdeel en heers strategie past heel goed bij modulaire software waarin elk deel zijn eigen implementatie kent. Zo is deze site gebouwd met WordPress, een tool die door vrijwel elke provider aangeboden wordt. The game of Life is een Html5 / Javascript gedeelte dat draait in de browser van de bezoeker. Achter de scherm gebruikt Life een aantal services. In de oorspronkelijke implementatie waren dit microsoft Azure services, deze zijn inmiddels vervangen door een php/Mysql implementatie. De duidelijke scheiding tussen de delen, met een simpele interface voor de communicatie, maakte deze overstap bijzonder makkelijk.