Angelo_Hulshout_05

Angelo Hulshout

13 January 2010

Er zijn van die periodes in het leven van een softwarearchitect dat je zo veel nieuwe dingen tegenkomt die je moet verwerken, dat je het liefst alles uit je handen zou willen laten vallen om een berenvel aan te trekken en in een grot te gaan zitten. Zonder wielen en zonder vuur, terug naar af. Eerlijk gezegd, is dat soms best lekker: het nieuwe even laten liggen en nog eens terugkijken naar oude ideeën en wat daarvan is terechtgekomen.

Tien jaar geleden werkte ik bij Philips Research en toen leek de notie van ’systems of systems‘, dat vrijwel elk systeem een verzameling is van kleinere systemen, een belangrijke rol te gaan spelen. Als ik nu met mensen in de industrie praat, valt het me op dat er maar weinig het grotere geheel proberen te zien. Elk probleem en elke uitdaging beschouwen ze als op zichzelf staand, terwijl ze eigenlijk onderdeel zijn van een groter systeem.

Volgens een toenmalige autoriteit, Mark Maier, moeten systemen-van-systemen  voldoen aan een aantal eisen. Elk systeem dat onderdeel is van een groter systeem moet operationeel onafhankelijk zijn en onafhankelijk zijn te ontwikkelen en te beheren. Daarnaast moet het totale systeem evolutionair gebouwd (kunnen) worden en gedrag vertonen dat groter is dan de som van de delen – zogenaamd emergent behaviour. Dit soort systemen bestaat, pas geleden heb ik er met de Ooti-studenten van de TU Eindhoven nog een aantal geïdentificeerd, maar veel zijn het er niet.

Iets soortgelijks is er aan de hand met systeemdenken. In de jaren tachtig vulden mensen als Eliya Goldratt en Peter Senge hier al de nodige boeken, colleges en projecten over. Uitgangspunt is, grof gezegd, dat alles met elkaar samenhangt – net als systemen-van-systemen – en dat de oorzaak van een probleem zelden bij de dichtstbijzijnde schakel in de keten ligt. In de economie en de logistiek heeft systeemdenken tot interessante ontdekkingen geleid, maar in de systeemontwikkeling blijft het bij symptoombestrijding.

 advertorial 

8-bit Microcontrollers Still Anchor the Majority of Embedded Designs Today

They are tiny, but vitally important. The market for 8-bit microcontrollers continues to grow strongly as a key part of the drive to digitalisation, highlighted by the current chip shortages. Read more about Microchip’s 8-bit devices.

Op de Oopsla-conferentie, eind oktober in Orlando, gaf Barbara Liskov acte de présence. Deze coryfee uit de tijd dat objectoriëntatie de softwarewereld veroverde, mocht een presentatie geven omdat ze de Turing Award heeft gekregen voor haar bijdrage aan software-engineering. In haar verhaal stipte ze aan dat jonge softwareontwikkelaars de geschiedenis van het vakgebied niet kennen. Anders hadden uitbreidbare programmeertalen zeker niet bestaan, een nachtmerrie in haar ogen, en zouden we het er allemaal over eens zijn dat het gemakkelijk kunnen lezen van code belangrijker is dan het gemakkelijk kunnen schrijven.

Sommige uitbreidbare programmeertalen hebben inderdaad niet uitgepakt zoals bedoeld. Python is en blijft erg krachtig, maar is recentelijk niet voor niets volledig herschreven. De vraag is hoe goed talen als Lua en Ruby zich gaan redden op dit punt. Ook leesbare code is belangrijk: ondanks alle goede bedoelingen documenteren veel organisaties nog steeds nauwelijks wat code doet, en dan is leesbaarheid wel zo prettig, met name voor de ontwikkelaar die het onderhoud doet. Anderzijds verhoogt makkelijk te schrijven code wel de productiviteit – we hebben niet voor niets DSL‘s en codegeneratie bedacht.

Vanuit haar dertig jaar ervaring in software-engineering belichtte Liskov heel goed beide kanten van de medaille. Nieuwe ontwikkelingen zijn nodig, maar we vallen steeds terug op dezelfde ineffectieve oplossingen omdat we niet leren van het verleden en het grotere geheel niet willen zien. Ze benoemt daarmee een valkuil waar die andere OO-coryfee Grady Booch met open ogen in tuint. Die stelde ongeveer tegelijkertijd in een interview dat we terug moeten naar ’de basis van UML‘ zoals we die tien jaar geleden hadden, en naar een aanpak waarin de broncode en het coderen centraal staan. En dat ondanks alle vruchten die modelleren en modelgedreven ontwikkeling nu beginnen af te werpen.

Ik heb mijn berenvel maar weer aan de kapstok gehangen en ben bij het vuur gaan zitten met een artikel over de laatste trends in IT en softwareontwikkeling. Soms is het goed even terug te kijken, maar laten we nu eens proberen de juiste nieuwe dingen op te pakken en vast te houden, in plaats van toe te geven aan onze oude angst voor verandering.