Architectuur in de digitale wereld/2010-11/begrippen/Specificatie

Uit Werkplaats
Ga naar: navigatie, zoeken

Specificatie

Definitie

Een interessant begin voor het defineren van een begrip is kijken wat een woordenboek[1] over het destreffende begrip zegt:

  1. the act or process of specifying
    1. a detailed precise presentation of something or of a plan or proposal for something —usually used in plural
    2. a statement of legal particulars (as of charges or of contract terms); also : a single item of such statement
    3. a written description of an invention for which a patent is sought

Het begrip heeft dus meerdere betekenisvormen, en daarvan zijn er ook meerdere toepasbaar binnen onze context.

In de meeste gevallen wordt met "specificatie" gedoeld op een expliciete set van eisen waaraan een (onderdeel van een) artefact moet voldoen. Deze kunnen kort en krachtig zijn: "Welke taak verricht het artefact?", maar ook zeer uitgebreid: "Schakelaar Zonneschermen in stand 0 zorgt voor signaal op ingang 0 van de Zonnescherm-motorcontroller, welke de motoren in werking zet totdat de zonneschermen volledig zijn ingetrokken in hun behuizing." om maar een voorbeeld te geven. Ook kan een specificatie dienen als een onderdeel van het contract tussen de betrokken partijen. Het doel daarvan is mogelijkheid tot controle of voldaan wordt aan de gestelde eis. Daarnaast kan een specificatie aangeven welke functionaliteit een artefact levert: Welke taak kan het artefact verrichten?

Binnen de Digitale Wereld

Een belangrijk verschil binnen de digitale wereld tov de fysieke is dat de nadruk op het fysieke, daarmee het tastbare en/of meetbare, nagenoeg vervalt. Er kan niet meer gesproken worden over centimeters of standen van een zonnescherm. Binnen de digitale wereld komt de gebruiker niet met dergelijke zaken in contact. Wat wel overblijft en zelfs versterkt wordt is het functionele aspect van specificatie: "Wat gebeurt er (met het artefact) wanneer een gebruiker een bepaalde handeling uitvoert?" Een (technische) beschrijving over het gedrag van het artefact bij het uitvoeren van een bepaalde procedure en de eisen waaraan voldaan moet worden opdat de handeling uitgevoerd kan en mag worden. Denk hierbij aan input van externe agent (een gebruiker) die zich vertaalt in de gewenste output (resultaat) en wat er aan tussenliggende events (gebeurtenissen/handelingen) plaatsvindt. Waarbij deze events ook weer op zichzelf een proces kunnen zijn die input van de externe agent vereist/verwacht en zijn eigen output levert.

Ook is de rol die specificatie kan spelen bij het ontwikkelen en het uitvoeren van controle en testing activiteiten is belangrijk binnen de Digitale Wereld. Met specificatie is vastgelegd wat een (onderdeel van het) digitaal artefact moet kunnen en in veel gevallen ook hoe deze dat moet doen (software patenten). Daarna wordt pas de code geschreven die deze functionaliteit moet implementeren. Vervolgens is te controleren of de code doet wat deze zou moeten doen door te testen of deze voldoet aan de specificatie. Levert een invoer de verwachte uitvoer op en treden hier geen rariteiten op. Kloppen alle stappen zoals beschreven in de specificaties? Of kunnen er ook uitstapjes gemaakt worden die niet horen.


Aantal zaken herschreven en ingekort naar aanleiding van commentaar. Is dit nog steeds te algemeen? Of kloppen er zaken niet? Ontbreekt er iets? Laat maar weten :-)
Stefan Joosten.jpg
Stefan JoostenArchitectuur in de digitale wereld Remove this comment when resolved!


Relevantie voor architectuur

Er zijn meerdere raakvlakken met architectuur te bedenken voor het begrip "specificatie". Maar de meest primaire van deze is het maken van afspraken over de functionaliteit van en procedures binnen het digitale artefact. Duidelijk genoteerd wat het artefact kan, welke paden bewandeld kunnen worden en wat bijbehorende eisen zijn om dit tot resultaat te laten komen.

Vragen

Voorbeelden en Tegenvoorbeelden

Een typisch voorbeeld voor wat een uitdrukking van specificatie kan zijn is een Use-case. Met bijvoorbeeld de omschrijving: "Wanneer een gebruiker op de Application Drawer tikt, schuift er een menu over het scherm waarin de beschikbare applicaties getoont worden." Dit geeft kort aan wat er moet gebeuren wanneer er bepaalde input plaatsvind en welke eisen er gesteld worden aan de handelingen. Met goed de nadruk op het "wat" en mogelijk een vleugje "hoe".

En tegenvoorbeeld van wat specificatie niet is, is de informatie binnen een gebruikershandleiding. Dergelijke handleiding geeft een beschrijving van hoe een gebruiker met het systeem kan omgaan om het gewenste doel te bereiken. Hier wordt gekeken vanuit het oogpunt van de gebruiker, enkel en alleen wat deze moet doen en wat deze van het artefact mag verwachten. Het artefact kan zich echter ook anders gedragen dan in de handleiding staat beschreven en hoeft dus niet zozeer aan de handleiding te voldoen, maar die relatie werkt juist andersom: de handleiding aan de hand van het artefact geschreven. Ook is een handleiding vaak niet compleet, maar geeft deze beknopt en vanuit het oogpunt van de gebruiker enkele functionaliteiten aan van het systeem.

Antwoord op de vraag: Welk probleem lost dit concept/deze concepten op? (Kracht)

Geeft de functionaliteit van het artefact vast: wat kan het artefact en hoe doet het dat. Dit geeft de programmeur een duidelijk beeld van wat de code moet implementeren aan functionaliteit en dikwijls ook van hoe dit dient te gebeuren, hiermee wordt tijd bespaart omdat er een leidraad is waarlangs gewerkt kan worden.

Ook is duidelijk controleerbaar wanneer een (onderdeel van een) artefact correct functioneert omdat deze getoetst kan worden aan de hand van de specificatie. Wanneer aan de specificatie voldaan wordt is het, in princiepe, in orde en zo niet dan is gelijk te zien waaraan nog gewerkt moet worden.

Antwoord op de vraag: Wat zijn de grenzen van dit concept/deze concepten? (Beperkingen)

De specificatie is een puur technisch document waarin eigenschappen van het artefact beschreven worden. Een nieuw artefact direct in de specificatie-fase maken is vrijwel onmogelijk, tenzij je in je eentje werkt of het een erg simpel concept is, omdat er op zo'n moment nog geen ontwerp is hoe het artefact er in grote lijnen uit gaat zien en problemen in de samenhang zijn lastig af te vangen omdat er met losse items gewerkt wordt. Specificatie is een logisch vervolg op een ontwerp, maar heeft deze ook nodig in zijn beginsel.

Antwoord op de vraag: Hoe draagt dit concept bij aan goede architectuur? (Inpassing in architectuur)

Specificatie kan redundantie beperken, de snelheid van het ontwikkelen verhogen en duidelijk aangeven wat voor bepaalde functionaliteit zorgt en hoe dit dient te gebeuren.

Bronnen

  1. Merrian-Webster Dictionary - Specification http://www.merriam-webster.com/dictionary/specification