Posts tonen met het label database. Alle posts tonen
Posts tonen met het label database. Alle posts tonen

donderdag 22 november 2012

MVC Workshop: Een model ontwerpen


"Wie een MVC model ontwerpt, denkt aan informatiestromen."
                                                                                      — Sam Rain
Wie een software oplossing wilt ontwerpen, zal vaak de voorkeur hebben aan de MVC strategie: Model-View-Controller ontwerpen zijn populair omdat ze structuur geven aan een applicatie. De 'M’ uit MVC staat voor model — het deel van een oplossing dat verantwoordelijk is als de abstracte laag tussen de databanken van informatie en de applicatie. In dit artikel leggen we de loep over het ontwerpen van een 'model'.
Applicaties hebben meerdere controllers, views en dus ook models. Informatie is losgekoppeld in industriële toepassingen — ze is beschikbaar via de 'database'. Echter is de ene database de andere niet en is databasespecialisme een expertise die zeer afhankelijk is van de omgeving waarin informatie wordt opgeslagen. Een model hoeft niet perse een reflectie te zijn van de tabellen in de database — ze wordt ontworpen voor de informatie die de applicatie nodig heeft.
Wanneer een controller het verzoek doet aan een model om een artikel op te vragen, voert het model de nodige werk uit dat speciaal gericht is aan de database. Daarom is een model ook een abstractie — het transformeert gegevens van en naar de database, zodat de controller niet hoeft te worden aangepast wanneer er 'onder de motorkap' veranderingen plaatsvinden in de database.
Een 'model' is daarom eigenlijk het beste te omschrijven als een mal — het is de 'gegevensstructuur' die werkt als een container voor controllers; een model werkt met de technische onderdelen van een applicatie. Wie een model ontwerpt zal dus moeten beginnen met een inventarisatie van de volgende punten:
• Welke informatie is aanwezig in de database?
• Welke informatie heeft de applicatie nodig?
• Zijn er speciale bewerkingen nodig voor de informatie gebruikt kan worden?
• Hoe dient de informatie te worden aangeleverd?
 Stel, we nemen een simpel ontwerp voor een model die ontworpen moet worden voor artikelen. We noemen daarom dit ontwerp het 'Artikel Model'. Het 'Artikel Model' moet artikelen kunnen opvragen, toevoegen, aanpassen, verwijderen. Omdat het Artikel Model werkt met een database, is het handig om te weten hoe de artikelen in de database worden opgeslagen. Databases werken met CRUD bewerkingen — dit zijn de Create, Read, Update en Delete opdrachten waarmee databases tabellen beheren. Echter zijn deze vanzelfsprekend voor modellen. In het ontwerp is het belangrijk om een duidelijk onderscheid te maken van de types informatie. Een model ontwerpen in de diepte vereist dus de nodige ervaring met databases en datatypes.
Natuurlijk is dit een voorbeeld wat niet gelijk staat aan de industrie. Echter is het de bedoeling van een ontwerp dat het vooral duidelijk is wat er qua informatie beschikbaar is dat een model moet 'aanleveren'.
©SamRain
Model Ontwerpen

zaterdag 12 mei 2012

Praktische informatica: De basisvaardigheden voor database ontwerpers - deel 4


“Koppelen betekent aansluiten als één geheel.”
                                                            - Sam Rain
Queries en tabellen zijn natuurlijk prachtig, maar wat nu als je een paar tabellen hebt voor een boel formulieren of de behoefte hebt aan een enkel rapport? De oplossing is het leggen van een relatie tussen de tabellen, waardoor je met een query een super informatiebalk kunt genereren.
Relaties zijn hèèl simpel, er zijn 2 gangbare relaties:
-       de 1-op-1 relatie
-       de 1-op-veel relatie.
De 1-op-1 relatie vertelt dat een rij tot maar één andere rij mag toebehoren. De 1-op-veel relatie vertelt dat een rij kan behoren tot meerdere andere rijen. Echt waar, dat is het!
De relaties zijn mogelijk door de ‘id’ kolom (zie deel 2); omdat alle rijen (records) een uniek nummer hebben zijn ze rekenkundig gemakkelijk te koppelen door een rij te ontwerpen met een ‘relatie kolom’. Dit klinkt moeilijker dan het is.
Stel, we nemen de tabel Tijgers (zie deel 2) en maken een extra tabel ‘Verzorgers’:
Id (reeks) – naam (tekst) – aanwezig (ja/nee)
Iedere tijger heeft 1 verzorger, dus koppelen we de tabel Tijgers aan Verzorgers door een kolom ‘verzorger_id’ toe te voegen aan het ontwerp van ‘Tijgers’:
Id (reeks) – naam (tekst) – leeftijd (datum) – gewicht (numeriek) – agressiviteit (numeriek) – verzorger_id (numeriek).
Als we 10 verzorgers zouden toevoegen, hadden we zonder relaties de Tabel Tijgers moeten uitbreiden en voor iedere tijger de verzorger handmatig moeten invullen. Met tabellen zoals puma’s, leeuwen en panters zou het een ramp worden en bij een geval van ziekte of ontslag zouden de dieren verhongeren, omdat de verzorgers de database moeten aanpassen. In plaats daarvan kan met de ‘id’ van de verzorger meteen alle informatie van de verzorger worden opgehaald aan de hand van de tijger! Ook kan dezelfde truuk gebruikt worden voor de andere dieren – en weet je hoeveel verzorgers er vandaag werken!
Relaties teken je als ontwerper in diagrammen:
Verzorgers
Id
naam
aanwezig
Tijgers
 Id
naam
leeftijd
gewicht
agressiviteit
verzorger_id
Leeuwen
Id
naam
leeftijd
gewicht
agressiviteit
verzorger_id
                                   




Koppelen heet een ‘join’ in queries; het combineert een rij met een andere rij; wat ook kan is de simpele ‘waar’ (where):
Selecteer Tijgers.naam, Verzorgers.naam
waar Tijgers.Verzorger_id gelijk is aan Verzorgers.id
sorteer aflopend
uit Tabel Tijgers, Verzorgers.
Ook kun je als ontwerper de relatie definiëren voor de ontwikkelaar als volgt:
·      Tijgers hebben 1 verzorger
·      Verzorgers hebben meerdere tijgers.
Als ontwerper is het belangrijk om duidelijk te zijn over wat je wilt bereiken!
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

©SamRain

Database ontwerpen

Praktische informatica: De basisvaardigheden voor database ontwerpers - Deel 3


“De kunst van zoeken is weten wat je wilt vinden.”
                                                                        - Sam Rain
In deel 1 besprak ik de vier zuilen van een database vluchtig; in dit deel ga ik dieper in op de Queries die de tabellen praktisch maken.
Zoeken in tabellen is veel gemakkelijker dan men doet voorkomen. Feitelijk is de zoekopdracht een selectie van rijen, waarbij de criteria bepaalt hoeveel rijen er geselecteerd worden om door een filter te gaan die kolommen teruggeven. Ontwerpers zullen minder vaak zich bezig houden met supercomplexe instructies en meer met de praktische kant.
Een zoekopdracht is eigenlijk een samengestelde formule, die losgelaten wordt op de tabellen in de database om een collectie van gegevens ‘terug te geven’. Een query bedenken is makkelijk; met het volgende stappenplan:
1)    Welke informatie heb ik nodig?
2)    In welke tabel(len) staat deze informatie?
3)    Met welke criteria wil ik de informatie selecteren?
4)    Welke informatie wil ik laten zien?
Alleen stap 3 is ‘wennen’ voor non-techneuten; toch blijft het een kwestie van kijken en vergelijken. Bijna alle database applicaties hebben een methode om queries te ontwerpen – sommigen zelfs een simpele interface met knopjes waardoor je queries in seconden maakt. De meesten ondersteunen ook SQL, een programmeertaal speciaal voor databases. Als ontwerper is belangrijker om vast te leggen wat de query zou moeten doen dan het typografisch vast te leggen in een technische taal – dit eerste is helemaal geen moeilijk karwei!
Criteria in een query zijn niets meer dan vergelijkingen, die door sleutelwoorden worden aangegeven:
Waar (where)            :   vergelijk de ‘waarde’ van een veld met een andere veld of een
                                      opgegeven ‘waarde’;
Of (or)                       :  vergelijk twee ‘waarden’ óf kies een andere vergelijking met
                                       twee ‘waarden’;
En (and)                   :    vergelijk twee vergelijkingen;
Dit zijn de ‘logische’ operatoren; andere operatoren vergelijken de rekenkundige gelijkwaardigheid, terwijl de logische operatoren de ‘Boolean’ gebruiken (waar/onwaar, ja/nee, true/false).
=                        :            Gelijk aan de waarde aan de linkerzijde
>,<                     :            Groter of kleiner dan de waarde aan de linkerzijde.
Als we de ‘Tijgers’ tabel nemen uit deel 2, en we willen een query ontwerpen voor ons nieuwe rapport genaamd ‘Agressieve Tijgers’ dan weten we dat we top-10 tijgers gaan selecteren, met de criteria dat we sorteren op de kolom ‘agressiviteit’ en dat we alleen de waarde van 4 of hoger zien als agressief. We gaan de query dan zo ‘ontwerpen’ en geven het de naam TopTienAgressieveTijgers.
Selecteer 10 rijen            -> Selecteer / bepaal hoeveelheid rijen
waar agressiviteit > 4      ->
bepaal criteria
sorteer aflopend           
  -> bepaal ordening
uit tabel Tijgers              
-> definieer tabel
Met queries kun je ook invoergegevens, hele gedetailleerde zoekopdrachten en zelfs beheerfuncties knutselen – uiteindelijk komt het neer op selecteren, aanpassen, verwijderen en aanmaken van rijen. Hoe vaker je een oplossing bedenkt, hoe meer je wilt gaan leren over queries in de diepte; laat voor serieuze toepassingen een techneut met je meedenken!
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

vrijdag 11 mei 2012

Praktische informatica: De basisvaardigheden voor database ontwerpers - Deel 2


“Zoek naar niets, vind ook niets – letterlijk.”
                                                            - Sam Rain
In deel 1 besprak ik de vier zuilen van een database vluchtig; in dit deel ga ik dieper in op de tabellen.
Een tabel, in het geval van een database, dient als functie door een grote collectie van individuele informatiegroepen te beheren. Een ‘informatiegroep’ bepaal je door de typische eigenschappen te identificeren naar het ‘soort’ eigenschap. De ‘informatiegroep’ is een ‘rij’ (row) en het ‘soort’ eigenschap een kolom (column).
Stel we willen ‘tijgers’ beheren (nou ja – de informatie over tijgers). Iedere afzonderlijke tijger hoort thuis in een ‘rij’ en we kunnen de specifieke informatie ontwerpen in de kolommen. Sam’s Zoo heeft 100 tijgers, waarvan elk een eigen naam, een leeftijd, een gewicht en een ‘gedragscijfer’ (hoe hoger hoe agressiever). De eigenschappen worden ieder een kolom in de tabel ‘Tijgers’ (het meervoud van de rij dat het object weergeeft – een tijger). Omdat tabellen gebruikt worden om te zoeken (en zoals later duidelijk wordt voor andere handige truukjes) kun je iedere rij voorzien van een ‘speciale’ kolom, genaamd ‘id’. Dit staat ook voor identificatie, zodat iedere tijger óók gezocht kan worden op ‘nummer’. Het ontwerp van de rij bestaat dan uit 5 kolommen:
Id – naam – leeftijd – gewicht – agressiviteit
We zouden aan de hand van deze groep informatie o.a. het volgende kunnen vinden: a) alle tijgers tussen een bepaalde leeftijd, b) tijgers die zeer agressief zijn, c) een alfabetische volgorde van alle namen, d) het gemiddeld gewicht en e) het totaal aan tijgers. Juist voor de berekeningen zal iedere kolom specifiek ontworpen moeten worden naar een ‘datatype’ – informatie waardoor een computer begrijpt waar de informatie voor bedoeld is. Zonder al te moeilijk te gaan doen, zijn dit de algemene types in de databases.
·      numeriek (cijfers en getallen)
·      tekst (letters en woorden)
·      datum (tijdsnotering)
·      ja/nee (de Boolean)
·      reeks (de automatische nummering)
Als we deze toepassen op ons ontwerp:
Id (reeks) – naam (tekst) – leeftijd (datum) – gewicht (numeriek) – agressiviteit (numeriek)
Hebben we een functioneel tabel ontwerpen, waarop we naar hartenlust queries (zoekopdrachten) op los kunnen laten. We kunnen zoveel kolommen (eigenschappen) toevoegen als we willen; echter wil je geen ‘onnodige’ informatie toevoegen dan noodzakelijk. Een ‘rij’ toevoegen kost schijfruimte en over een bepaalde tijd zal de collectie dus groeien.
Na een tijdje belt de verzorger van Sam’s Zoo; alle tijgers zijn wel opgeslagen, maar ze overlijden ook zo nu en dan. Dòh! Weer wat geleerd, want door de rij te voorzien van een kolom ‘levend’ van het datatype ‘Boolean’ kunnen de levende tijgers snel gevonden worden en het aantal doden ook. Of was het slimmer om een geboortedatum en sterftedatum te gebruiken? En dat zijn dus de dilemma’s voor ontwerpers – alle tijgers moeten gecontroleerd worden en de nieuwe informatie worden toegevoegd. Oefening baart kunst!
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

donderdag 10 mei 2012

Praktische informatica: De basisvaardigheden voor database ontwerpers - Deel 1


“Alles is met elkaar verbonden, vooral in een database.”
                                                                                    - Sam Rain
De ‘database’ hebben we als IT-term té vaak gehoord alsof het hersenchirurgie is; graag spreken consultants over het nut zonder enkele vaardigheid in de kunde van ontwerpen. Een database ontwerpen is anders dan erin ontwikkelen of deze te beheren – met wat achtergrond kennis kun je informatie organiseren of deze praktisch gebruiken in het dagelijks leven.
Informatie is abstract – het is alles en tegelijk ook specifiek; je kunt het observeren, beheren of gebruiken naar eigen inzicht. Een database is een structuur waarin informatie in brokken verdeelt zijn om allerlei vormen te creëren; een doos Lego™ maakt het mogelijk om huizen, kastelen en autootjes te maken. Hoewel iedere doos verschilt in de inhoud, blijven de bouwstenen hetzelfde, omdat ze immers ongeacht ‘het plan’ moeten passen. De applicatie is niets meer dan een ‘robotje’ dat snel de juiste steentjes uit de doos haalt en ze in elkaar zet; een ontwerper bedenkt het ‘politiebureau’ of het huis van de ‘burgemeester’, zodat het robotje een programmaatje krijgt van een ontwikkelaar – die kijkt naar de ‘gebruiksaanwijzing’ van de ontwerper.
Alle werkzaamheden in een database kun je zien als taken; een taak kan het a) invoeren zijn van gegevens, b) het zoeken van gegevens, c) het actueel houden van gegevens. Voor iedere soort taak moet er een ‘formulier’ bedacht worden; hoé wil je de gegevens zien / invoeren / aanpassen en welke blokjes informatie bevat ieder formulier? Vaak gaandeweg bedenk je verbeteringen of ‘vergat’ je iets belangrijks – ontwerpen is dan een snel leerproces omdat computerprogramma’s geen vergeving kennen.
Naast formulieren wil je ook informatie weergeven als het zijnde een object – een rapport presenteert de informatie zonder mogelijke werkzaamheden. Denk eens aan een kassabon, een offerte of de afschriften van een bank; maar ook een webpagina of een spel kan dit. Weten wat je wilt zien is een belangrijke stap in het ontwerpen, omdat je altijd werkt richting een verwacht resultaat.
Omdat magie niet erg berekenbaar is, is er een techniek die het mogelijk maakt om formulieren qua informatie om te zetten in een rapport: tabellen. Een tabel bestaat uit kolommen en rijen, waardoor er ‘blokjes’ ontstaan – de velden. Ieder veld houdt informatie vast, de kolom waarin het veld zich bevindt bepaald de soort informatie en de rij is een groep waar de informatie tot behoord. Wanneer er informatie wordt gezocht, dan zoekt het ‘programma’ naar de rij (de groep) in het geheel. Met zoekcriteria en ‘filters’ worden kolommen (soorten) uitgesloten en het aantal rijen met gelijke informatie eventueel gesorteerd. Het zieken in een tabel met deze structuur heet een Query.
Toeters en bellen maken het alleen breder en gemakkelijker voor geavanceerde ontwerpen, maar iedere database werkt volgens deze principes.
Bedenk daarom eerst welke resultaten je wilt zien, daarna welke gegevens je zult moeten ingeven; voordat je gaat nadenken over moeilijke constructies, groepeer je eerst de informatie. Ieder formulier kent zijn eigen groep en ieder rapport vloeit voort uit een query; begin simpel en denk in hokjes!
Ontwerpen begint bij begrijpen en begrijpen kun je door te leren.
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave van alle artikelen!

zaterdag 24 december 2011

De oplossing vormgeven: Het datamodel converteren naar technisch ontwerp


“De beste vertaling is niet die het meest op het origineel lijkt, maar die er het meeste van afwijkt”
                                                                                                - G. Bradford
De grootste kloof ligt tussen ontwerpers en uitvoerders als het gaat om de uitwisseling van informatie. Niet verwonderlijk, ontwerpers kijken met adelaarsogen naar hetzelfde object, waar uitvoerders de bevelen uitvoeren als hardwerkende mieren. Het mooie aan technologie is dat het werkt als een horloge; kleine radertjes en tandwieltjes werken nauw tezamen om precisie af te leveren. Dit is ook meteen het zwakke punt: bij ‘miscommunicatie’ loopt het wijzertje zo de verkeerde kant op.
Data modellen zijn de vrachtschepen van informatie binnen alle programmatuur; deze eigenschap betekent dat hun ontwerp afhangt van hetgeen wat ze vervoeren. Eenmaal vol, is vol. In het beginstadium is verandering nog niet een groot probleem, maar naarmate de complexiteit vordert kan het succes van een oplossing slagen of falen vanwege een niet-begrepen model.
Een technisch ontwerper zal het conceptueel model ‘vertalen’ naar technische elementen. Naast de keuze van ontwikkelingsstrategieën (taal, omgeving, etc), zal in de eerste plaats een prototype gebouwd worden. Ter illustratie nemen we het voorbeeld uit een voorgaand artikel () naast zo’n prototype:
Concept                                                            Prototype
Factuur (model)
Object Factuur
* id
* datum factuur
* factuurnummer
* artikelregels (collectie)
          * artikelregel (aantal, omschrijving,
              prijs)
* totaal bedrag
* btw tarief
* status
* lengte betalingstermijn
* debiteur id                       

id (integer)
factuurDatum (data)
factuurNummer (string)
Array artikelRegels (Array)


factuurTotaal (float)
factuurBtw (float)
factuurBetalingstermijn (integer)
factuurStatusBetaling (boolean)
debiteurId (integer)

Mocht het prototype duizelingwekkend overkomen, lees dan eerst de artiekelen-serie ‘Programma’s begrijpen’. (link)
De artikel regel is in het prototype ‘weggelaten’; in technisch perspectief is ze een eigen object, die per element in de lijst ‘artikelRegels’ geplaatst worden. Daarnaast heeft iedere variabele een conventie toegepast gekregen, omdat ze volgens technische regels geen spaties mogen houden. Ook heeft ieder element een primitief datatype toegewezen gekregen. Valuta waarden werken met cijfers achter de komma, vandaar dat ze als ‘floating point’ zijn gekozen. Ondanks dat het element factuurNummer klinkt als een getal, kunnen ze letters en tekens bevatten; ze hebben geen rekenkundige waarde, maar dienen als referentie.
Vrijwel iedere ervaren programmeur zou het technisch concept in pseudo-code zoals hier is aangegeven foutloos vertalen naar de programmeertaal van hun keuze. Door deze ‘vertaling’ zelf te kunnen, voorkom je onverwachte resultaten. Toets echter het technisch concept altijd met een programmeur, in de ICT geldt het niet dat de bijl een timmerman vervangt.
Naast fouten voorkomen is de kennis van technische concepten snappen uitermate waardevol in de ‘grote’ industrietakken. Grote bedrijven hebben duurdere speeltjes; integratie software of BPM-systemen zijn er alledaags en vereisen bijna geen ‘code’ om data modellen te simuleren. Echter blijft het principe gelijk; de toetsing wordt gedaan door het platform, maar verwacht de voorkennis over datatypes.
Zoals in het voorbeeld wordt voorgedragen, is het niet nodig in de techniek om het model super complex te maken. Een verzameling van informatie is en blijft een verzameling; de structuur binnen deze verzameling is gewoon een ander object. Het enige waar rekening mee gehouden hoeft te worden is de relatie met de factuur, dat met een enkele variabele opgelost kan worden (factuurId).
Houd altijd een database als opslagplaats in gedachten wanneer je datastructuren en modellen ontwerpt voor industriële oplossingen.

Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave voor alle artikelen!

donderdag 15 december 2011

Programma's ontwerpen: Een applicatie ontwerpen


“Doe uw plicht en laat het verder aan de goden over”
                                                                        - Corneille
Applicaties zetten een gebruiker centraal; door informatie op een bepaalde manier weer te geven en besturingselementen toe te voegen geeft een applicatie de mogelijkheid tot interactie. Zo koppelen ze verwerking aan iedere ‘beslissing’ die de gebruiker maakt en geven de status terug nadat het proces voltooid is. Applicaties maken gebruiken van de kernprogrammatuur: een collectie van services waar de applicatie toegang tot heeft.
Een applicatie bestaat uit 3 onderdelen:
-       formulieren: de visuele weergave van informatie
-       besturingselementen: knoppen en invoervelden
-       koppelingen aan services: de mechaniek naar daadwerkelijke verwerking
Een applicatie bestaat dus uit een aantal taken bedoeld om een ‘proces’ te voltooien; een medewerker zal bijvoorbeeld klantgegevens moeten invoeren, zodat deze kan worden opgeslagen in de centrale database, waarop een buitendienst medewerker weer deze informatie kan gebruiken. Een applicatie hoeft niet zeer complex te zijn om een applicatie genoemd te worden. Het proces van de invoerende medewerker is al voldoende om het programma te classificeren als applicatie.
Bij het ontwerpen van formulieren is het belangrijk om het proces te begrijpen: welke informatie wordt er verwacht van de gebruiker en welke beslissingen zal deze moeten nemen binnen de applicatie? Als we het eerdere voorbeeld nemen, zullen we moeten weten welke klantgegevens er opgeslagen moeten worden, welke gegevens op juistheid gecontroleerd moeten zijn en hoe de beslissingen worden teruggekoppeld aan de gebruiker. Door het proces in een stroomdiagram te plaatsen krijgen we daar duidelijkheid in:
Het proces maakt meteen duidelijk dat er 2 formulieren nodig zijn: een formulier voor de invoer en één voor de bevestiging. De mechaniek is onzichtbaar voor de gebruiker; daarom werkt de bevestiging als een visueel hulpmiddel om de voltooiing te bevestigen.
Omdat gegevens gebruikt worden voor diverse doeleinden, word er uitgegaan van een data model. (Zie hier)  In het geval van dit voorbeeld is het er een van het type ‘debiteur’, en zullen we het formulier moeten voorzien van minimaal de invoervelden die aan dat model voldoen. De opmaak staat echter in zijn geheel vrij, het ontwerp voor de interactie is natuurlijk wel belangrijk voor de effectiviteit van de applicatie. Naast de invoervelden moeten er ook andere besturingselementen aanwezig zijn; een ‘opslaan’ knop, zodat de gebruiker bepaald of de ingevoerde informatie ook daadwerkelijk opgeslagen mag worden. Visueel mag er van alles gedaan worden met het formulier; plaatjes, video’s of muziek het kan allemaal, zo lang er voor ieder besturingselement maar beschreven is welke service zij aanroepen. Net zoals een service, kan een applicatie ook ontworpen worden in stroomdiagrammen voor ieder formulier.
Wanneer een applicatie veel formulieren bevat, kan een ‘keuze menu’ een meerwaarde hebben: deze menu’s zijn eigenlijk een applicatie om applicaties te starten, maar wekken het gevoel op alsof ze besturingselementen zijn.
Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave voor alle artikelen?

zaterdag 3 december 2011

Programm's Begrijpen: Denken in Pseudocode


“De meeste tekenaars beginnen met een ruwe schets”
                                                                        - Sam Rain
Programma’s bestaan uit componenten die invloed uitoefenen op informatie met behulp van operatoren, condities en lussen. Hoe deze invloeden worden uitgewerkt in detail wordt bepaald door de ‘omgeving’; de beschikbare programmeertaal, de informatievoorziening en de distributie en uitwisseling naar andere systemen. Voordat de uitwerking kan beginnen is er een oplossing nodig die de verwerking in grote lijnen kan beargumenteren; een ‘ruwe’ schets van de mechaniek zonder vastgekoppeld te zijn aan de omgevingslimieten: de pseudo-code.
Pseudo-code is niet uitvoerbaar; het is een abstracte methode om de oplossing in theorie te maken. Gelukkig hoeft dit niet zoals de grote nauwkeurige meesters als lange, complexe en onleesbare formules. Het doel van pseudo-code is dat het begrijpelijk is voor iedereen die de basis begrijpt van informatieverwerking.
Een praktisch voorbeeld: Karel wilt zijn telefoontjes registreren en koppelen aan zijn debiteurenbestand. Als hij een debiteur aan de telefoon krijgt, wilt hij de geschiedenis op kunnen vragen aan de hand van de naam, postcode of klantnummer van de debiteur.
Eerst moeten de informatiebronnen in kaart gebracht worden. Debiteuren hebben contactgegevens, ieder telefoontje is een nieuwe registratie en alle registraties horen bij een debiteur.
Vervolgens kijken we naar de structuur voor de informatie. Elke registratie heeft een datum- en tijdsnotering nodig, tezamen met een omschrijving. De debiteurgegevens hebben altijd een uniek klantnummer nodig.
Pas dan kijken we naar de mechaniek van de oplossing. De informatie moet opgevraagd, aangepast, opgeslagen of verwijderd kunnen worden. Daarnaast moet er een zoekmechanisme zijn die juiste gegevens afbeeld. In programma’s zijn er twee delen waar de mechaniek zich afspeelt; de gebruikerskant en de kern. Soms hebben programma’s geen gebruikers nodig, ze voeren zonder vertraging of tussenkomst van een gebruiker de taken uit en heten een ‘service’ (achtergrondproces). Een programma dat de gebruiker centraal stelt is wel interactief en wordt een applicatie genoemd. In dit voorbeeld gaat het om een applicatie, er zul dus rekening gehouden worden met de gebruikerskant.
Voor de gebruiker zijn er 3 ‘schermen’ nodig. Schermen zijn in dit geval zelfstandige formulieren welke informatie weergeven. Het eerste scherm gaat om de registratie, het tweede is een zoekscherm en het derde scherm beheerd de debiteurgegevens. Het ontwerp van ieder scherm valt al onder pseudo code: 
 De ‘kern’ van een applicatie handelt de functionaliteit af van alle schermen. Ongeacht de invulling qua taal of omgeving kan het volgende al worden ‘geschetst’ voor de kern:
Procedure Nieuw-knop (vereist debiteurnummer, omschrijving):
·      nieuwe registratie maken met huidige tijd en datum
·      vereiste debiteurnummer, omschrijving aan registratie toevoegen
·      gegevens opslaan van registratie
·      velden leegmaken
·      eventuele bevestiging dat de gegevens zijn opgeslagen.
Voor iedere functionaliteit zal er dus een ‘eigen’ procedure moeten komen. Soms kunnen bepaalde procedures opnieuw gebruikt worden binnen een applicatie, bijvoorbeeld om een structuur beschikbaar te maken. Computers denken overigens nooit verder dan hun processor lang is, gegevens in een structuur moeten heel expliciet bewaard worden of zelf ‘teruggegeven’ worden. Echter heeft pseudo code het voordeel dat een aantal puntjes op de i gemist mogen worden.
Aan de hand van ‘de wensen’ om de applicatie te maken, laat de pseudocode duidelijk zien dat het hier niet gaat om een hele complexe applicatie. Het gaat met name om het beheer van gegevens en het maken van relaties. Een voor de hand liggende keuze om de applicatie te bouwen is met behulp van een database technologie. Deze ondersteunen simpele formulieren en hebben een ingebouwde programmeertaal om de procedures tot leven te wekken.
De reden waarom een database technologie vooral gekozen wordt ligt aan de noodzaak om informatie te koppelen, de gegevens van de debiteur horen bij iedere registratie, ze hebben een ‘relatie’. Deze relatie werkt technisch gezien als een ‘sleutel’. Met behulp van een unieke waarde in beide gegevensbronnen kan een database de relatie vinden. Er is wel een valkuil: soms kan een debiteurnummer omstreden zijn als sleutel, en computers zijn zeer strenge wezens. Gelukkig mag je als ontwerper de vrije keuze maken; de relatie is alleen interessant voor de computer. Veel ontwerpers voegen daarom een relatie toe door een handig truukje: ze voegen ‘informatie’ toe dat iets verteld over de informatie, beter bekend als ‘meta-data’. Omdat het gaat om unieke nummering wordt in de industrie voor sleutels de afkorting ‘ID’ gebruikt, welke staat voor Identifier, vrij vertaald als identificatie. Een ‘gegevensbron’, dus een tabel in de database, gebruikt de ‘ID’ om iedere verzameling van gegevens te identificeren. Deze ‘primaire sleutel’ legt dus niet automagisch een relatie vast. Vaak zijn er gegevens die als ‘ouder’-informatie dienst doen, zoals in het geval van het voorbeeld zijn dit de debiteuren. De informatie die een relatie moeten hebben met deze gegevens hebben dus de informatie nodig van de ‘ouder’-bron. Echter zijn deze ook uniek, ze hebben ook een ‘primaire sleutel’ nodig voor het geval ze dienst moeten doen als ‘ouder’-bron. Dezelfde truuk wordt daarom toegepast; de structuur krijgt extra informatie: de ‘foreign key’ (vrij vertaald: de buitenlandse sleutel). Deze sleutel is de ‘primaire sleutel’ van de relatie; dankzij deze sleutel kan een computer de relatie vinden. Even ter illustratie:
Tabel: debiteuren                                        
ID
KLANT
DEBITEURNR
11
Jaap
200117
12
Mien
200118
13
Hans
201302





Tabel: registraties
ID
DATUM
OMSCHRIJVING
DEBITEUR-ID
1
22-11
Klacht levering
12   (Relatie met Mien)
2
23-11
Bevestiging
11    (Relatie met Jaap)
3
23-11
Order Ontvangen
11



De ‘relaties’ in kaart brengen vallen ook onder pseudo-code; vaak werkt een database specialist verbeteringen uit om de snelheid te bevorderen of zal de structuur ‘optimaliseren’.  Echter biedt de pseudocode de mogelijkheid om gegevensstructuren vorm te geven: niet alle gegevens zijn nodig voor de formulieren. De gegevens horen dus in een structuur thuis; het ‘data-model’ bevat de gietvorm van hoe deze beschikbaar moeten zijn:
Data-Model ‘Registratie’
-       DATUM
-       KLANT
-       DEBITEURNR
-       OMSCHRIJVING

De pseudocode brengt de primaire mechaniek, structuren en formulieren als ontwerp. Voordat er een projectplan gemaakt wordt kan de complexiteit voorzien worden en een goede schatting wat betreft de tijd die het gaat kosten om daadwerkelijk de applicatie te bouwen. Daarnaast helpt de ‘pseudo-code’ om een oplossing preventief te testen op ‘veiligheidsfouten’, toekomstige wensen en schetst het een duidelijk beeld voor de ‘uitvoerders’ van de applicatie bouw.

Meer lezen over Informatie Technologie? Klik hier voor de inhoudsopgave voor alle artikelen!
©SamRain
Pseudo-code