Normalized Systems

 
25 september 2009

Een tijd terug werd ik gewezen op het boek Normalized Systems: Re-creating Information Technology Based on Laws for Software Evolvability van Mannaert en Verelst [1]. Het boek resoneerde sterk met enkele ideeën die ik heb over software ontwikkeling. Met name de gedachte dat een software applicatie meer gemeen heeft met een chaotisch systeem dan een strikte orderlijke structuur is iets waar Mannaert en Verelst ook naar lijken te neigen, hoewel ze die term niet gebruiken.

Centraal in hun methode is dat een software applicatie beschreven wordt zoals het er aan het potentiële einde van de totale levensduur uit zou zien. In het boek komt dat neer op een beschouwing in het oneindige. Dit heeft het grote voordeel dat de gevolgen van een keuze gemaximaliseerd worden. Om gemiddeld elke tien jaar een aanpassing zou zo leiden dat in het oneindige er ook oneindig veel aanpassingen gedaan zijn. In Normalized Systems wordt dit gebruikt om een aantal patterns en regels te definiëren voor veranderingen die er voor zorgt dat aanpassingen in het oneindige nog steeds mogelijk blijven.

Hetgeen dat mij hier meteen greep was dat volgens deze methode een systeem uiteindelijk oneindig groot wordt. Hiermee zou aangetoond kunnen worden dat pogingen om een globale overzichtelijk architectuur neer te zetten voor een systeem gedoemd is om te mislukken. Een oneindig groot systeem is namelijk per definitie niet te overzien. Wat wel kan is overzicht behouden op lokaal niveau en dit is wat de door Mannaert en Verelst beschreven regels trachten te doen. Ze definiëren patterns die het mogelijk maken om veranderingen door te voeren in software die geen impact hebben op latere lokale veranderingen in de software.

Om de regels vorm te kunnen geven wordt eerst in het boek een eenvoudig model van een software applicatie waarbij onderscheid gemaakt wordt tussen data entiteiten, actie entiteiten en taken. De actie entiteiten bestaan uit taken, krijgen invoer en leveren uitvoer  in de vorm van data entiteiten. Dit model wordt gebruikt om een viertal regels te definiëren die beperken hoe de onderdelen structureel in elkaar moeten zitten. De regels kunnen worden samegevat als het stabiel houden van de communicatietoegang tot de entiteiten en het niet combineren van taken.

Vanuit het abstracte model leiden Mannaert en Verelst een vijftal minder abstacte elementen af waarin de entiteiten en taken geëncapsuleerd kunnen worden. Met deze vijf elementen, data, action, workflow, connector en trigger, wordt aangetoond hoe ze op verschillende platformen geïmplementeerd kunnen worden.

De ideeën achter Normalized Systems trekken me sterk omdat het een diepe theorische ondersteuning heeft en een software applicatie niet meer beschouwd als een statisch geheel bekeken op een enkel punt in de tijd.

[1] Mannaert Herwig, Verelst Jan.- Normalized systems: re-creating information technology based on laws for software evolvability.- S.l.Koppa2009.- 208 p..- ISBN 978-90-77160-00-8


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Architectuur, Development

Tags: , ,


Reacties (4)

  • Christophe De Clercq schreef:

    Inderdaad, volgende keer lees ik je post volledig :)

    Geplaatst op 06 december 2009 om 17:00 Permalink

  • De wiskundige bewijsvoering in dit boek spreekt me erg aan. Daarnaast (ik heb beide heren gisteren gesproken) passen ze de theorie ook al daadwerkelijk toe in de praktijk, en hebben ze hun eigen patterns al uitgewerkt in een Java omgeving waarmee ze systemen bouwen.

    Bijzonder interessant toegepast onderzoek dus…

    Geplaatst op 17 oktober 2009 om 21:04 Permalink

    • Christophe De Clercq schreef:

      Ze hebben wel degelijk eigen patterns uitgewerkt. En dit wordt in de praktijk toegepast, dit in meerdere meedere projecten. Ik heb de expanders al aan een werk gezien…

      Geplaatst op 01 december 2009 om 20:59 Permalink

      • Dat klopt, ik geef toch ook aan dat ze de patterns hebben uitgewerkt? :)

        Geplaatst op 06 december 2009 om 16:45 Permalink