<< >>

2011/04/22

Column

Bits & Chips

Luchtkastelen?

Modelleren is het nieuwe programmeren. Het voegt abstractie toe en laat de computer de saaie details berekenen. Dat geeft lucht aan projecten, ruimte voor echt belangrijke zaken. De benodigde tools, zo wordt beloofd, zijn er bijna – maar we allemaal weten wat bijna betekent in een softwareproject. Dat is overigens niet negatief bedoeld. Ik denk echt dat modelleren een belangrijke stap voorwaarts is. Maar ik heb ook geleerd dat de werkelijkheid ietsje complexer is dan de mooiste folders ons doen geloven.

Want hoe zit het bijvoorbeeld met systeemsoftware? Of met andere complexe hightechsoftware? Is het mogelijk om Linux-drivers te modelleren? Immers, Linux heeft de vervelende eigenschap dat de interface tussen driver en kernel regelmatig wordt geüpdatet. Dat geeft veel saaie detailveranderingen. Bovendien zijn er heel veel drivers die sterk op elkaar lijken. Daarmee hebben drivers veel weg van een productlijn: diverse producten die net anders zijn, maar vooral veel overeenkomsten hebben. Met ‘ouderwets’ programmeren is dit altijd veel ontwikkel- en testwerk.

Modelleren belooft dit efficiënter te doen door eenmalig één model te maken, waaruit de code automatisch wordt gegenereerd. Het maken van zo’n model lijkt mogelijk: zaken als hardware-eigenschappen (registers, interrupts, DMA en dergelijke), controle-informatie voor de dev-, proc- en sys-pseudobestandssystemen en gewenst gedrag zijn eenvoudig te beschrijven. Weliswaar moeten we de codegeneratie soms aanpassen voor een nieuwe kernelversie, maar dat is eenvoudig, beloven de folders. Zelfs als het meer werk is dan beloofd, zijn er veel meer drivers dan interfaceveranderingen. Het voordeel staat als een huis, nee, als een kasteel.

Toch zijn er geen drivers gemodelleerd. Wellicht nog niet. Of zou het toch een luchtkasteel zijn? Ik denk het niet, eerder de uitzondering die de regel bevestigt. Immers, het combineren van ‘legacy’ code met ‘modern’ modelleren is niet het meest voor de hand liggende voorbeeld. Als we alles van de grond af modelleren gaat het vast veel beter.

Die uitdaging heb ik omgezet in een privéresearchproject toen ik even tussen twee banen in zat. De uitdaging was om een domain specific language te maken voor dit soort hightech systemen. Dit heeft ‘Castle’ opgeleverd, waarmee een heel OS ontwikkelen eenvoudig is. Maar ook embedded software modelleren is revolutionair eenvoudig. En natuurlijk zet de bijbehorende codegeneratie-engine dit om in compacte, efficiënte code, zowel voor eenvoudige 8 bit CPU’s als voor een modern multicore Arm-on-a-chip-systeem. Concurrency afbeelden op multicoresystemen is een makkie. En Castle is geweldig om een compiler in te schrijven. Zowel het ontwikkelen van Castle als in Castle gaat erg snel, en toch is de code efficiënt. Het is zelfs mogelijk om realtimesystemen in te maken. Ik zou zelfs Castle willen gebruiken om Castle in te programmeren, pardon, te modelleren. Ik ben helemaal enthousiast, er is niets dat niet kan in Castle. In de toekomst gaan we allemaal modelleren met Castle! Echt waar, Castle geeft projecten veel meer lucht.

U had het waarschijnlijk al opgemerkt: u mag deze column lezen als zo’n fraaie folder. Castle bestaat en is bijna af. Maar toen ik weer een baan had, is er wat lucht uit het Castle-project gelopen.

albert

Foto van AlbertAlbert Mietus werkt als systeemarchitect bij Sogeti-Hightech (albert.mietus AT Sogeti.nl) en schrijft deze column om zijn persoonlijke missie uit te dragen.



Download

De orginele publicatie is beschikbaar in pdf: Download the orginal pdf"/>