Pieter Wisse
Service oriented architecture biedt een veelbelovende aanzet, maar blijft
steriel zonder voorzieningen voor semantische variëteit. Dit artikel beschrijft
de noodzakelijke samenloop voor stelselmatig effect.
Allereerst schets ik service oriented architecture, verder afgekort als Soa, in
historisch perspectief. Daaruit blijkt, zoals met spreekwoordelijke
communicerende vaten, dat alsmaar sterkere verbijzondering gepaard moet gaan
met navenant extra facilitering van samenhang. De totale variëteit blijft
immers constant, nee, groeit zelfs sterk door opschaling van bereik met
informatieverkeer. De èxtra benodigde voorzieningen, zeg ook maar
infrastructuur, dreigen door eenzijdige aandacht voor zgn diensten echter
verwaarloosd te raken. Kortom, zulke steriele diensten doen het domweg niet.
Na deze analyse volgt mijn visie op herstel van evenwicht, respectievelijk
kansen voor ontwikkeling. Als kritieke factor voor productieve samenhang door
diensten leg ik nadruk op semantiek. De beslissende stap bestaat eruit om voor
semantiek bewust hetzèlfde bereik te kiezen als waarop de diensten mikken. Die
reële schaal geldt nota bene steeds ruimer. In het kielzog van het Internet
moet semantiek feitelijk óók wereldwijd samenhangend gefaciliteerd zijn. Zelfs
wie dat (nog) overdreven vindt, beseft daardoor dat diensten moeten (kunnen)
leveren op een schaal waarop uniformiteit van betekenis onmogelijk simpel valt
te waarborgen.
Evenwichtige opzet vergt volgens een informatiekundige relativiteitstheorie
zelfs het omgekeerde uitgangspunt. Met andere woorden, betekenissen variëren
stelselmatig, vandaar semantische variëteit. Door èlke relevante betekenis als
het ware te markeren met de zgn nodige en voldoende contextuele verbijzondering
waarvoor zij (slechts) geldt, kunnen ze allemaal eenduidig in ruimere samenhang
opgenomen zijn. Precies op die manier is er praktisch een stelselmatige plaats
voor elke dienst, met elke dienst inderdaad reuze praktisch op zijn stelselmatige
plaats.
Deze historische schets is, toegegeven, een karikatuur. De aanloop lijkt
nodeloos lang, maar helpt om het gemis van de huidige Soa aan de oppervlakte te
krijgen.
Ooit was een computer, laat ik gemakshalve zeggen, een doos gevuld met
elektronica. Een computerprogramma bespeelde zelfstandig de registers en
verwante verwerkingsmogelijkheden, respectievelijk moest netzo zelfstandig
afgestemd zijn op beperkingen. Wat de variatie van verwerkingsgedrag betrof,
kortom, voerde louter het programma de regie. Met een ander programma was er
sprake van zowat een compleet ander systeem.
Gauw viel op, dat verschillende programma’s vaak dezelfde instructies bevatten.
Naarmate de computer als hardware modulair samengesteld was, ontstond de
noodzaak van samenwerking tussen zulke modules. Als vooruitblik, in wezen is
het vraagstuk met wat tegenwoordig diensten à la Soa heten, niets anders. Goed,
samenhangende werking van hardwarecomponenten werd de verbijzonderde taak van
het besturingssysteem. De besturingsaspecten konden dienovereenkomstig
verdwijnen uit de programma’s. Dankzij ondersteuning door het besturingssysteem
kon elk apart programma’s voortaan (meer) beperkt blijven tot wat voor een
specifieke taak nodig was. Dat kwam in de naamgeving tot uitdrukking:
toepassing.
In een notendop, nogmaals, manifesteert zich aldus reeds wat (ook) voor moderne
diensten niet veronachtzaamd mag zijn. Was destijds de specifieke taak geklaard
met louter een toepassing? Nee, dat lukte dus niet zònder passend
besturingssysteem enzovoort ter facilitering. Vergelijkbaar gebeurt er met een
dienst nog helemaal niets. Bedenk daarbij dat een dienst met recht nog altijd
een toepassing mag heten; kenmerkend is ontleding resulterend in a. enkele
factoren die algemener faciliterend werken en b. expliciete voorzieningen voor
regie ter compensatie van ontleding.
De strekking van het verhaal is eigenlijk wel duidelijk. Alom groeide en groeit
modularisering van programmatuur. Een programma heette ook wel een routine.
Ontwikkeling en/of onderhoud is overzichtelijker dankzij subroutines. Daarvoor
maakt besturingssysteem versus toepassingen overigens geen verschil. Zolang
alle benodigde subroutines behoren tot één en dezelfde routine, kan die
overkoepelende routine de regie voeren over de noodzakelijke samenhang in
verwerking door de subroutines. Tussendoor merk ik op dat onderscheid van
lokale met globale variabelen feitelijk al een kwestie van context is. Het
regievraagstuk is binnen één routine met enkele subroutines betrekkelijk
eenvoudig. Dat verandert categorisch door hergebruik met ruimer bereik.
Componenten, objecten, aspecten … Dienst is in die rij eigenlijk de laatste
naam voor subroutines, zodra ze niet langer allemaal ingekapseld zijn door één
vaste routine. Nogmaals, daardoor wordt onmisbare regie vanzelfsprekend weer
ingewikkelder, véél ingewikkelder.
Modularisering inclusief schaal van hergebruik is intussen zover gevorderd, dat
traditionele indelingen hinderen. Vroeger veroorzaakte ontleding een
verhoudingsgewijs marginale behoefte aan regie, waarvoor de inspanningen nog
redelijkerwijs als overhead golden. Dergelijke verhoudingen zijn achterhaald.
De regie vergt allang de meeste aandacht en dat aandeel blijft stellig groeien
naarmate modularisering aanhoudt.
Ik bepleit de accentsprong naar samenhang als leidend vraagstuk voor praktische
voorzieningen. Wie denkt dat Soa primair over aparte diensten gaat, waarmee het
vervolgens in willekeurige samenhang allemaal als vanzelf wel goed komt, blijft
met informatievoorziening steken op een schaal die, zoals gezegd, achterhaald
is. Weliswaar vormt een dienst een bouwsteen, maar zomaar een stapel stenen is
nog lang geen bouwwerk. Het gaat om architectuur in de zin van door-en-door
samenhang. De reële variëteit is pas beheersbaar vanuit stelselmatig
perspectief.
Wat wij in dit tijdperk meemaken, is opschaling van operationele digitale
techniek. Het Internet is exemplarisch voor de wereldwijde schaal waarop de
techniek thans interoperabel werkt. Daarmee blijken voorzieningen in het
semantische vlak echter geen gelijke tred gehouden te hebben.
Het voert hier te ver om initiatieven zoals OWL en CCTS in detail te bespreken.
Mijn kritiek komt in essentie op het volgende neer. Dergelijke
inrichtingsaanbevelingen, respectievelijk standaarden gaan onverminderd uit van
contextvrije begrippen. Van een begrip tellen voor een specifieke toepassing
dan dito specifieke eigenschappen die geselecteerd zijn uit de totale
eigenschappenverzameling van het begrip in kwestie.
Inderdaad bestaat een lange filosofische traditie die past bij zo’n benadering.
Bijvoorbeeld het logisch atomisme komt erop neer. Dat geldt ook voor de
fenomenologie, althans de variant die het objectieve wezen laat kennen door
eidetische schouw.
Kenmerkend voor postmodernisme is dat onherroepelijke onverenigbaarheid van
betekenissen kan bestaan. Daar gaat dus de aanname van contextvrije betekenis.
Want onverenigbare betekenissen kunnen nu eenmaal onmogelijk aan een
contextvrije verzameling met eigenschappen ontleend zijn. Let wel dat het er
praktisch helemaal niet om gaat, of er geen ènkel contextvrij begrip
voorstelbaar is. Wat voor consistente operationele voorzieningen telt, is dat
er óók onverenigbare betekenissen bestaan. Daaruit volgt dat logisch atomisme
e.d. ongeschikt zijn als grondslag voor voorzieningen voor semantische
variëteit inclusief onverenigbaarheid. Mocht een bepaald begrip wel degelijk
contextvrij gelden, dan past ook dàt prima volgens het schema van contextuele
verbijzondering. Dat lukt door er bijvoorbeeld de context nihil oid. aan toe te
kennen.
Op wat tegenwoordig allang de praktische schaal van interoperabiliteit is,
blijkt de omgekeerde aanname van principiële contextuele verbijzondering van
èlke betekenis vruchtbaar. Daarop is ook een methode voor conceptuele
informatiemodellering, zeg ook maar semantiek, op open stelselschaal gebaseerd:
Metapatroon (Engels: Metapattern). Voor evenwichtige positionering van Soa doe
ik daarop een beroep.
Voor dit artikel onthoud ik me van beoordeling van concrete platforms e.d.
die leveranciers met verwijzing naar Soa aanbieden. Algemeen geldig behandel ik
thema’s die geïnspireerd zijn door vanuit noodzakelijke samenhang te kijken
naar informatievoorziening. Gemakshalve begin ik daarvoor met de
veronderstelling dat een bepaalde informatiebehoefte door een ènkele dienst
vervulbaar is.
Het woord dienst zegt het eigenlijk al. Passende dienstenvariëteit strookt met
reële behoeftenvariëteit. Een specifieke behoefte is vervuld door een
dienovereenkomstig resultaat. Aldus bestaat de dienst uit informatie als het
beoogde resultaat. Daarvoor moet echter praktisch iets gebeuren, zodat het
duidelijker is om onderscheid te maken tussen dienst-als-proces en
dienst-als-resultaat. Met de behoeftestelling als een gerichte vraag, levert de
dienst-als-proces (lees ook: bedrijfsregels) als àntwoord de
dienst-als-resultaat.
Een programmatuurmodule die tussen vraag en antwoord gepositioneerd is, vervult
een contract. Een concreet contract is bepaald door specifieke zgn ex-ante
(vraag) en ex-post voorwaarden (antwoord). Een andere behoefte vergt een ander
contract, dat op zijn beurt een andere dienst betekent. Hieruit volgt dat
contract, althans voor zo’n programmatuurmodule, correspondeert met context. En
ordening van contracten kan die voor behoeften volgen, waarvan de associatie
met contexten nog sterker is.
Zo past bijvoorbeeld polymorfisme volgens objectgerichtheid. Weliswaar kunnen
afwijkende methoden dezelfde naam dragen, maar één methode geldt steeds
eenduidig als ingekapseld in een specifiek object(type). Dat object(type) is
dus onderdeel van de relevante context van de methode in kwestie.
Hoezeer object- en dienstgerichtheid overeenkomen, laat zich illustreren door
het vroege werk van Alan Kay. Bekend als ontwerper van Smalltalk, noemde hij de
eenheid voor inkapseling van gedrag aanvankelijk geen object, maar activiteit
(sic!).
De nadruk op behoeften vanuit het perspectief van, zeg maar even, gebruikers
legt een bron van verwarring bloot. Stel dat iemand wil weten hoeveel 2 plus 3
is. En dat hij even later het antwoord zoekt op de vraag van 2 plus 5. Dat zijn
inderdaad twee verschillende informatiebehoeften. Wij zijn echter gewend geraakt,
want wij hebben geleerd om het allebei als optellen te beschouwen. Dergelijke
verdichting tot één dienst vergt echter tevens navenante uitbreiding van de
ex-ante voorwaarden. Met nog aparte diensten voor elke concrete optelling,
zaten de relevante getallen steeds a priori in de module. Met één optelmodule
moeten de getallen in kwestie expliciet worden opgegeven. Nogmaals, de totale
variëteit blijft ongewijzigd.
Dit simpele geval kan iedereen zó volgen. Daarop mogen ontwikkelaars van
middelen voor informatievoorziening echter niet blijven rekenen. Wat zij ter
optimalisering van hergebruik tot dienst verdichten, vinden zgn gebruikers gauw
onbegrijpelijk. Hùn concrete behoeften herkennen ze niet meer op basis van wat
zij blijkbaar als variabelen voor een algemene(re) functie moet opvatten.
Wezenlijk verandert het woord dienst niets aan dit reële communicatievraagstuk.
Retoriek kan nooit verhullen, dat classificatie volgens objecten, diensten e.d.
inzicht vergt in optimale exploitatie van digitale technologie. Omgekeerd zijn
ontwikkelaars vaak belemmerd door hùn vooringenomenheid, waardoor zij het
feitelijke gebruiksmiddel teveel als doel op zichzelf kiezen. Het gevaar
dreigt, dat zij wèrkelijke verschillen volgens reële behoeften veronachtzamen.
Een bepaalde vraag kan gauw afgedaan zijn met “oh, dat is ook gewoon optellen.”
Tegelijk missen ontwikkelaars stellig kansen voor veralgemenisering. Zolang de
interpretatie van een antwoord, nota bene context, duidelijk genoeg gevoed is,
zou bijvoorbeeld optelling als proces weleens prima kunnen voldoen voor wat
geabstraheerd eveneens die vorm draagt.
Een belangrijk deel van de rechtvaardiging van modularisering is dat modules
vaak niet strikt atomair blijven. Het is dus meestal niet zo, dat slechts een
lineaire tijdvolgorde geldt waarbij de ene module zijn werk voltooid vóórdat
een andere module aan de slag gaat, enzovoort.
Samenhang blijft nog betrekkelijk overzichtelijk bij strikt hiërarchische
ontleding. Dan is er zoiets als een hoofdmodule, die op zijn beurt twee of meer
deelmodules telt waartussen nog wel lineair verloop bestaat. Eventueel is zo’n
deelmodule vergelijkbaar samengesteld uit verdere deelmodules, totdat sprake is
van — vooralsnog — rudimentaire modules annex diensten. Daarbij is het mogelijk
dat in diverse ontledingshiërarchieën dezèlfde module/dienst verschijnt. Als
dat gebeurt, past daarvoor de aanduiding aspectgerichtheid.
Hoe danook roept verbijzondering tot aparte diensten de behoefte op aan
voorzieningen voor beheersing van samenhang. Dat staat bekend als orkestratie.
Vanuit gebruikersperspectief vertegenwoordigt een bepaalde instantie van
orkestratie echter nu nèt zijn behoefte. Daardoor is het zelfs logisch om
orkestratie niet buiten het dienstconcept te laten, maar om het er nadrukkelijk
in te laten meespelen. Het idee is om het bereik van ontleding, respectievelijk
samenstelling zo ruim mogelijk te nemen. Het eerder praktische onderscheid
volgens toepassing en besturingssysteem verliest o.a. door consequente
aspectgerichtheid zijn waarde en dreigt zelfs contraproductief uit te pakken.
Voor communicatie met gebruikers is arrangement eigenlijk een beter woord dan
orkestratie. Want in arrangement zit meteen de specifieke instantie besloten.
Een arrangement, kortom, is óók een dienst.
De methode voor classificatie van diensten moet uiteraard passende variëteit
bieden voor zowel verbijzondering van, als samenhang tussen diensten. Dat lukt
allereerst door context niet langer te beschouwen als een externe markering.
Context, met andere woorden, is óók informatie en maakt daarom integraal
onderdeel van stelselmatige informatievoorziening uit. Vervolgens verdient
context in het informatiestelsel geen aparte status, maar juist principieel een
betrekkelijke. Neem een simpel geval van ontleding. Module a kent modules b en
c als samenstellende delen, terwijl module b op zijn beurt bestaat uit modules
d en e. Voor e is dan de geordende verzameling a en b ‘zijn’ context. Maar òp
het punt b zèlf, is b natuurlijk geen context meer, maar geldt slechts a als
zodanig.
Metapatroon biedt aldus zoiets als de informatiekundige relativiteitstheorie.
Afhankelijk van de gebruiker kan de informatiebehoefte variëren en
dienovereenkomstig wat informatie betekent, respectievelijk van een
informatiedienst wordt verlangd.
De vergelijking met de relativiteitstheorie voor de fysica is hier niet uit
de lucht gegrepen. Daarvoor gold immers de ambitie om verschijnselen op een
ruimere schaal te verklaren. Dat vergde nadere precisie van de theorie.
Voor diensten à la Soa wordt eveneens een ambitieus bereik geclaimd. Daarvoor
is echter een passend gepreciseerde theorie onontbeerlijk. Zo’n theorie is
voorhanden dankzij het beginsel van contextuele verbijzondering dat recursief
toepasbaar is. Dankzij recursieve relativiteit resulteert één theorie voor
classificatie van informatie en de bijbehorende diensten-als-proces.
Dankzij zo’n relativiteitstheorie voor semantiek passen voorheen meestal
apart opgezette voorzieningen in één en hetzelfde referentiekader met alle
voordelen van hergebruik e.d. van dien. Authenticatie? Dat is natuurlijk ook
vatbaar voor dienstbenadering. Zo zijn de subjecten stellig elders reeds
bekend. De complete dienst-als-proces laat zich uiteraard ontleden. Deelmodules
ofwel –diensten blijken deels elders reeds ontwikkeld, zodat (ook)
authenticatie het karakter van een specifiek arrangement kan verkrijgen.
In het verlengde van authenticatie ligt meteen autorisatie. De geauthenticeerde
gebruiker, althans de identificatie ervan, vormt mede de context van zijn
bevoegdheden. Gelet op de stelselmatige informatieruimte, over welke
informatie(diensten) kan hij beschikken, of juist niet?
Beveiliging is aldus nauw verwant met autorisatie. Toen een toepassing nog als
het ware een geïsoleerde doos was, bestond beveiliging uit versteviging,
bewaking e.d. van de buitenkant van die doos. Volgens het paradigma van
informatieverkeer bestaan zulke aparte dozen niet langer. Verkeersveiligheid
vergt kwalitatief andere maatregelen. Het beveiligingsobject moet de informatie
zèlf zijn, dat dus zonodig versleuteld moet zijn en ontsleuteld moet kunnen
worden. Voor, respectievelijk door wie? Dat ligt natuurlijk precies in lijn met
contextueel verbijzonderde autorisatie.
literatuur
Forum Standaardisatie, Semantiek
op stelselschaal, issues en oplossingsrichtingen, M. Abrahamse, P.E. Wisse
en P. Oude Luttighuis (samenstellers), juni 2009, in het Nederlands.
Kay, A., Microelectronics and the Personal Computer, in: Scientific American, 1977. Tevens opgenomen in: Object-Oriented Computing (volume 1: Concepts), G.E.
Peterson (samensteller), IEEE, 1987.
Wisse, P.E., Metapattern: context and time in
information models, Addison-Wesley, 2001.
28 juli 2009, webeditie 2009 © Pieter Wisse