Omslag stagerapport & -werkplan

Maat: px
Weergave met pagina beginnen:

Download "Omslag stagerapport & -werkplan"

Transcriptie

1 Omslag stagerapport & -werkplan Haagse Hogeschool Rotterdamseweg AL - Delft - Telefoon Fax Stagewerkplan Opleiding Technische Informatica Tussenrapport Afstudeervariant* x Eindrapport Stageperiode Voorletters & naam student B. van den Aardweg Studentnummer Naam Bedrijf Haagse Hogeschool Delft Naam bedrijfsmentor: Harry Broeders Door de hogeschool in te vullen Stagecoach Opmerkingen: Beoordeling Goed Voldoende Matig Onvoldoende 1. Indeling/opzet 2. Technische inhoud 3. Verzorging presentatie 4. Taalgebruik 5. Totaal beoordeling Opmerkingen n.a.v. bovenstaande punten: Datum: gezien accoord Datum beoordeling: In te vullen door de stage-administratie: Ingekomen datum: Verwerkt door: Datum: * Invullen indien bekend. Anders dit veld leeg laten

2 Stageverslag SystemC omzetten naar een diagram Student: Bas van den Aardweg Studentnummer: Datum: Stagebedrijf: De Haagse Hogeschool, Academy for Technology, Innovation & Society Delft Afdeling: Opleiding Elektrotechniek Bedrijfsmentor: Harry Broeders

3 Voorwoord Dit is mijn verslag over mijn stage periode op de Haagse Hogeschool Delft waar ik aan een opdracht voor de docent Harry Broeders heb gewerkt. Bij deze wil ik Harry Broeders bedanken voor het aanbieden van deze stageopdracht en de begeleiding tijdens het uitvoeren van de opdracht. Bas van den Aardweg

4 Samenvatting Er zijn geen bestaande open-source tools die SystemC volledig om kunnen zetten naar een control- en dataflow diagram. Tijdens de stage is er een begin gemaakt aan een open-source tool die dit wel kan. Deze tool is een plugin voor GCC en kan daardoor uit de datastructuur die GCC gebruikt control- en dataflow halen.

5 Inhoudsopgave Inhoudsopgave Voorwoord... i Samenvatting...ii 1. Inleiding Opdracht Oorspronkelijke opdracht Uiteindelijke opdracht Aanpak Onderzoek GCC Ontwikkeling GCC plugin FIR filters Datastructuur Uitvoer Invoer Ontwerp Visitor Design Pattern Datastructuur GIMPLE AST omzetten naar eigen boomstructuur GIMPLE_ASSIGN GIMPLE_CALL GIMPLE_RETURN GIMPLE_COND processtreenode Visitors Evaluatie...20 Bronnen Bijlage A: How to Model a FIR Filter in SystemC.pdf...22

6 1. Inleiding Dit document beschrijft de stage die is uitgevoerd door Bas van den Aardweg. De stageopdracht gaat over control- en dataflow informatie verkrijgen uit een SystemC model. Om dit te te kunnen doen is er tijdens de stage een begin gemaakt aan een open-source tool. Dit document gaat ervan uit dat de lezer bekend is met SystemC en C++. De code die tijdens deze stage geschreven is, is hier te vinden: Hoofdstuk 2 beschrijft de opdracht. In hoofdstuk 3 wordt de aanpak beschreven. Hoofdstuk 4 beschrijft het onderzoek waarmee de stage gestart is. Hoofdstuk 5 geeft kort wat informatie over hoe GCC in elkaar zit. Deze informatie is nodig om hoofdstuk 6 te begrijpen waarin de ontwikkeling van de open-source tool beschreven wordt. Hoofdstuk 7 gaat over het ontwerp van de tool. Hoofdstuk 8 bevat een evaluatie van de student over de stage. Bijlage A is een document geschreven door Harry Broeders. Dit document gaat over verschillende manier om een FIR filter te modelleren in SystemC. Deze modellen zijn tijdens de stage gebruikt als invoerbestanden voor de tool.

7 2. Opdracht Dit hoofdstuk beschrijft de stageopdracht. De eerste paragraaf beschrijft de oorspronkelijke opdracht zoals omschreven bij de aanvang van de stage. De tweede paragraaf beschrijft de uiteindelijke opdracht die tijdens de stage tot stand is gekomen. 2.1 Oorspronkelijke opdracht Hier volgt de oorspronkelijke opdracht zoals omschreven door de opdrachtgever. De opleiding Elektrotechniek verzorgt, samen met de opleiding Technische Informatica de minor Embedded Systems. Bij deze minor wordt gebruik gemaakt van de system-level modelleertaal SystemC. Harry Broeders doet als afstudeeropdracht voor zijn Master opleiding aan de TU-Delft onderzoek naar parsers voor deze taal. Er is op dit moment geen open-source parser voor SystemC beschikbaar. Een SystemC parser moet in staat zijn om de structuur van het in SystemC gemodelleerde systeem uit het SystemC model te herleiden. Deze structuur bestaat uit hiërarchische modules die via channels met elkaar zijn verbonden. Het probleem bij het vaststellen van deze structuur is dat het SystemC model gedeeltelijk uitgevoerd moet worden omdat de model hiërarchie tijdens de zogenoemde elaboratie fase van de uitvoering van een SystemC model wordt opgebouwd. Op dit moment is het (bijna) mogelijk om dit met behulp van gnu debugger (gdb) te doen. Als we een SystemC module (automatisch) willen implementeren in hard- of software dan moet het gedrag van deze module uit het SystemC model worden afgeleid. In tegenstelling tot de module hiërarchie kan het gedrag van een module worden bepaald zonder het SystemC model uit te voeren. Het gedrag van een module wordt in SystemC beschreven door middel van één of meer SC_THREAD s, SC_CTHREAD s en/of SC_METHOD s. Als we een bepaalde module uit een SystemC model willen synthetiseren in hardware dan is het noodzakelijk om de zogenoemde control- en dataflow tussen de in- en uitgangen van deze module te bepalen. Dit is geen eenvoudige zaak omdat in de gedragsbeschrijvingen elke geldige C++ taalconstructie kan worden gebruikt. Sommige C++ taalconstructies kunnen zelfs helemaal niet in hardware worden geïmplementeerd, bijvoorbeeld het dynamisch alloceren van geheugen. Om deze reden is een subset van SystemC gedefinieerd. De draft versie 1.3 1van deze standaard is in augustus vorig jaar (2009) vastgesteld en te downloaden vanaf: Bas zal in overleg met zijn begeleider een programma gaan maken waarin SystemC modules die voldoen aan de SystemC Synthesizable Subset Draft 1.3 omgezet kunnen worden in een control- dataflow diagram. Dit programma zal ontwikkeld worden in C++ maar er zal zoveel mogelijk gebruik gemaakt worden van bestaande tools die gebruikt worden om compilers mee te bouwen (bijvoorbeeld flex en bizon). Ook moet gekeken worden in hoeverre bestaande open-source compilers (bijvoorbeeld gcc) gebruikt kunnen worden. Het SUIF compiler systeem is misschien ook bruikbaar: 2.2 Uiteindelijke opdracht De uiteindelijke opdracht was om een plugin te schrijven voor GCC. Deze plugin moet instaat zijn om genoeg informatie uit een SC_METHOD of SC_CTHREAD te halen om gemakkelijk een control-/dataflow diagram (CDFD) te kunnen maken. Dit houdt in dat de uitvoer van de plugin niet noodzakelijk een CDFD hoeft te zijn zolang de benodigde informatie om zo'n diagram te maken maar duidelijk aanwezig is. De uitvoer van de plugin moet in XML formaat zijn. De plugin hoeft niet de volledige SystemC taal te ondersteunen, zolang de plugin maar uit te breiden is zodat hij het in de toekomst wel zou kunnen.

8 De opdrachtgever zal zelf werken aan een tool die informatie over de modules kan verzamelen. Deze tool zal kunnen zien welke modules er zijn en hoe deze aan elkaar gekoppeld zijn. Ook zal deze tool de processen van modules herkennen (SC_METHOD's en SC_CTHREAD's). Na het herkennen van deze processen moet de tool gebruik kunnen maken van de plugin om informatie over de control- en dataflow te verzamelen. De uiteindelijke opdracht is pas tot stand gekomen na een onderzoek naar bestaande tools.

9 3. Aanpak Dit hoofdstuk beschrijft de aanpak van de stage. De stage is begonnen met een onderzoek en vervolgens is er een ontwikkel methodiek toegepast om de opdracht uit te voeren. Onderzoek De stage is begonnen met een onderzoek naar bestaande tools om mogelijk de benodigde informatie uit een SystemC model te halen. Dit onderzoek wordt beschreven in het volgende hoofdstuk. Er is begonnen met een onderzoek omdat o.a. de mogelijkheid aanwezig was dat er al een bestaande tool open-source tool is die alle benodige informatie uit een SystemC model of een C++ functie kon halen. Een andere reden voor het onderzoek was voor indien er geen bestaande open-source tool beschikbaar was. In deze situatie zou er onderzocht moeten worden hoe deze informatie wel uit een SystemC model gehaald kon worden en welke tools hiervoor nodig zijn. Methodiek Na het onderzoek zijn er enkele princiepes van 'Agile Developement' toegepast. Omdat er met 'Agile Developement' met een team aan een project wordt gewerkt, is dus niet de gehele methodiek toegepast. De dingen die wel toegepast zijn, zijn het test-driven developement en het plannen. Bij 'Agile Developement' is er veel contact met de opdrachtgever en de wensen en eisen kunnen gedurende het project elk moment veranderen. Dit was ook het geval bij de stageopdracht. Daarom was ervoor gekozen om deze methodiek gedeeltelijk toe te passen. Test-driven developement Test-driven developement houdt in dat er eerst testcases geschreven worden en vervolgens wordt de code geschreven die deze testcases laten slagen. Ook houdt het in dat er van te voren niet een ontwerp gemaakt wordt. De testcases zijn de handleiding voor de code en de code is het ontwerp bij 'Agile Developement'. Plannen Bij 'Agile Developement' worden de eisen en wensen van de opdrachtgever steeds op bepaalde intervallen geformuleerd en omgezet naar taken hiervoor uitgevoerd moeten worden met een schatting van de benodigde tijd erbij. De opdrachtgever geeft vervolgens prioriteiten aan deze taken, terwijl hij rekening houd met de tijd die beschikbaar is, en daarna worden de taken aan de hand van die prioriteiten uitgevoerd. Tijdens laatste weken van de stage is deze manier van plannen toegepast. De weken ervoor is deze manier van werken wel toegepast tijdens de ontwikkeling maar zonder tijdsschatting bij de taken. Er was ervoor gekozen om geen tijdsschatting te maken bij de start van de ontwikkeling omdat de taken die toen uitgevoerd werden absoluut afgemaakt moesten worden, ongeacht de benodigde tijd.

10 4. Onderzoek Dit hoofdstuk beschrijft het onderzoek dat is uitgevoerd gedurende de eerste weken van de stage. Het eerste doel van het onderzoek was om erachter te komen of er bestaande opensource tools gebruikt konden worden om een CDFD te maken gegeven een SystemC model. Het resultaat hiervan was echter dat dit niet het geval was. Vervolgens richtte het onderzoek zich op het vinden van open-source tools die met aanpassingen of een zelfgeschreven programma's gebruikt kunnen worden om de benodigde informatie voor een CDFD wel uit een SystemC model te halen. Dit is een aanvulling op het onderzoek dat Harry Broeders heeft uitgevoerd. Bestaande open-source tools De opdrachtgever heeft zelf al een onderzoek gedaan naar bestaande open-source tools die informatie halen uit een SystemC model. Bij het onderzoek van de stagiar lag de focus dus op het vinden van andere tools. PinaVM Tijdens het onderzoek is er een tool gevonden die gedeeltelijk voldoet aan de wensen van de opdrachtgever. Deze tool heet PinaVM. PinaVM is geschreven voor verificatie van SystemC modellen. PinaVM zou echter wel kunnen dienen als een basis voor visualisatie van een SystemC model. Het maakt gebruik van de LLVM compiler infrastructuur. Uiteindelijk is er voor gekozen om deze tool toch niet te gebruiken omdat er door de stagiar veel werk verricht zou moeten worden om een back-end te schrijven voor deze tool om een CDFD te maken. Een andere reden is dat het niet duidelijk was in hoeverre PinaVM dataflow kan vinden. GAUT De opdrachtgever heeft zelf al gekeken naar GAUT, een open-source tool die o.a. gegeven C code een dataflow diagram kan genereren. GAUT zou mogelijk gebruikt kunnen worden als een SC_METHOD of SC_CTHREAD omgezet kan worden naar C code. Het omzetten naar C code zou in dat geval eventueel weer door een andere tool gedaan kunnen worden. Hierdoor zou de stageopdracht eventueel voltooid kunnen worden door het aan elkaar koppelen van meerdere open-source tools. GAUT heeft echter een paar grote nadelen. GAUT kan geen controlflow verwerken en er zitten veel beperkingen aan de C code die GAUT als invoer kan gebruiken. Er is dus besloten om geen gebruik te maken van GAUT. Bison Ook zijn er tools in de richting van Flex en Bison onderzocht. Deze tools kunnen gebruikt worden om zelf compilers te schrijven. Het idee was om deze tools te gebruiken om de SystemC code te parsen. Maar omdat SystemC bestaat uit C++ code zou dat betekenen dat er in feite een C++ compiler geschreven moest worden en dit zou haast onmogelijk zijn. LLVM Er is ook gekeken naar LLVM. LLVM zou gebruikt kunnen worden om de SystemC code om te zetten naar een datastructuur waarin control en dataflow informatie te vinden is. LLVM maakt gebruik van LLVM-GCC, een aangepaste versie van GCC. Deze afhankelijkheid zou

11 in de toekomst mogelijk problemen kunnen opleveren als bijvoorbeeld een nieuwe versie van SystemC afhankelijk is van een bepaalde versie van GCC. Aangepaste versie van GCC Uit het onderzoek is naar voren gekomen dat het mogelijk is om zelf een aangepaste versie van GCC te schrijven. Hierdoor moet het mogelijk zijn om direct toegang te krijgen tot de Abstract Syntax Tree (AST) die GCC intern gebruikt. Deze AST bevat alle informatie die nodig is om een CDFD te maken van een stuk code. Het probleem met een aangepaste versie van GCC schrijven is dat de code afhankelijk is van een specifieke versie van GCC en het zou veel werk zijn om als er een nieuwe versie van GCC is deze vervolgens ook aan te passen. Plugin voor GCC Aan het einde van het onderzoek was naar voren gekomen dat het mogelijk is om een plugin te schrijven voor GCC. Dit is een redelijk nieuwe feature van GCC. Met een plugin voor GCC is het mogelijk om direct toegang te krijgen tot alle interne functies en datastructuren van GCC, zonder dat GCC zelf aangepast moet worden. De nadelen van deze oplossing zijn dat GCC redelijk slecht gedocumenteerd is (bijvoorbeeld vergeleken met LLVM) en dat het schrijven van plugins voor GCC redelijk nieuw is en er dus weinig voorbeelden te vinden zijn. Er was besloten dat het gebruik maken van een plugin ondanks deze nadelen toch het beste eindresultaat zou kunnen opleveren. Dehydra en Treehydra Dehydra en Treehydra zijn plugins voor GCC. Met deze tools is het mogelijk om statische analyses uit te voeren op code. Dit is eigenlijk precies wat nodig is voor de opdracht omdat het met behulp van statische analyse van de code mogelijk is om de control- en dataflow te vinden. Uiteindelijk is er toch besloten om zelf een plugin voor GCC te schrijven om er zo zeker van de zijn dat daadwerkelijk alle informatie die eventueel nodig kan zijn voor een CDFD te vinden is en met Dehydra en Treehydra is dat niet zeker. Een ander nadeel van deze plugins is dat de informatie alleen met javascript te benaderen is en niet met een programmeertaal.

12 5. GCC Dit hoofdstuk beschrijft de interne werking van GCC voor zover nodig om de rest van dit document te begrijpen. De volgende hoofdstukken beschrijven ook onderdelen van de interne werking van GCC op een lager niveau. De focus van dit hoofdstuk is om slechts een globaal overzicht te geven. Generic GCC bestaat uit front-ends voor meerdere programmeertalen. Deze front-ends zetten de code van hun specifieke programmeertaal om naar GENERIC. GENERIC is een taal onafhankelijke manier om functies in een AST te vertegenwoordigen. GIMPLE GIMPLE is een AST afgeleid van GENERIC. Bij GIMPLE is de structuur versimpeld ten opzichte van GENERIC waardoor het voor de compiler makkelijker is om optimalisaties uit te voeren. GIMPLE is opgebouwd uit zogenaamde basic blocks met edges ertussen. Een basic block bestaat uit een of meerdere GIMPLE statements. Dit zijn bijvoorbeeld assign statements of function call statements. Deze statements bevatten boomstructuren met daarin de juiste variabelen en waardes die nodig zijn voor het uitvoeren van de statement. De edges tussen de basic blocks stelt de control flow voor tussen de basic blocks. Passes Tijdens het compileren wordt een groot aantal passes uitgevoerd. Deze passes wijzigen de GENERIC AST en later GIMPLE AST. Enkele voorbeelden van passes zijn het omzetten van GENERIC naar GIMPLE en bijvoorbeeld een optimalisatie pass die dode code elimineerd. De passes worden voor elke individuele functie uitgevoerd. Single Static Assignment (SSA) Om optimalisaties gemakkelijk uit te kunnen voeren wordt de GIMPLE AST door GCC in de SSA pass omgezet naar een SSA vorm. SSA houdt in dat elke variabele in een functie precies een keer ge-assigned wordt. SSA zit ingewikkelder in elkaar dan hier beschreven wordt, maar voor het begrijpen van dit document is een simpele omschrijving voldoende.

13 6. Ontwikkeling Dit hoofdstuk beschrijft de ontwikkeling van de GCC plugin en de keuzes die daarbij gemaakt zijn. 6.1 GCC plugin Aan het begin van de ontwikkeling is er het plugin gedeelte van de code geschreven. De eerste keuze die hierbij gemaakt moet worden is wanneer de plugin geactiveerd moet worden. Het is met GCC mogelijk om op verschillende moment tijdens het compileren code van de plugin uit te voeren. Op de verschillende momenten kan er verschillende informatie beschikbaar zijn. Het meest geschikte moment om de benodigde informatie uit het geheugen van GCC te halen is wanneer de passes worden uitgevoerd. Elke pass van GCC wordt uitgevoerd voor elke functie in de code en op het moment van uitvoeren heeft de pass toegang tot de AST van de betreffende functie. Er is een eigen pass geschreven die met behulp van de pass manager van GCC toegevoegd kan worden tussen elke willekeurige pass. SSA pass Er is ervoor gekozen om de code uit te voeren na de SSA pass. De SSA pass wordt uitgevoerd nadat GENERIC is omgezet naar GIMPLE en nadat alle COND statements (if's) een 'then' en een 'else' hebben. Het voordeel van de code direct uit voeren na de SSA pass betekent dat er verder nog geen optimalisaties zijn uitgevoerd. Hierdoor lijkt de GIMPLE AST nog het meest op de oorspronkelijke code. Na enkele optimalisatie passes kan de GIMPLE AST af gaan wijken van de oorspronkelijke code. Het effect is dan nog wel hetzelfde maar het is toch beter om zo dicht mogelijk bij de oorspronkelijke code te zitten omdat GCC optimaliseert voor een gewone processor en niet voor hardware. Hierdoor kunnen enkele optimalisaties van GCC juist een negatieve invloed hebben als er later besloten zou worden om aan de hand van het CDFD hardware te synthetiseren. Loop unroll pass De opdrachtgever had op een later moment de wens om eventueel loopjes te kunnen unrollen. Dit betekent dat bijvoorbeeld de volgende code: for (int i = 0; i < 2; ++i) a[i]=1; omgezet wordt naar: a[0]=1; a[1]=1; GCC heeft zelf passes die loops unrollen, het probleem hiermee is echter dat deze passes alleen uitgevoerd kunnen worden na een groot aantal optimalisaties en vervolgens moeten er daarna nog enkele optimalisaties worden uitgevoerd om de AST op te schonen. Dit betekent dus als de loopjes ge-unrolled worden dat er dan eventueel ongewenste optimalisaties plaatsgevonden kunnen hebben. 6.2 FIR filters De plugin is ontwikkeld aan de hand van enkele SystemC testcases die de plugin moet supporten. Deze testcases komen uit een document van de opdrachtgever en het zijn allemaal verschillende manieren om hetzelfde FIR filter te modelleren.

14 Een FIR filter is een digitaal filter voor signalen. Voor meer informatie over de FIR filters en de SystemC code waarmee FIR filters gemodelleerd kan worden zie Bijlage A. Cir Om te kunnen testen of de plugin de SystemC code goed kan interpreteren is er in het eerste stadium van de ontwikkeling gebruik gemaakt van een cir uitvoer formaat. Een cir formaat is een formaat dat gebruikt wordt door een tool geschreven door de TUDelft. Deze tool kan onder andere dataflow visualiseren aan de hand van de invoer. Er is voor dit tijdelijke uitvoer formaat gekozen omdat de verschillende testcases van FIR filters die zijn gebruikt, zijn afgeleid van hetzelfde.cir bestand. Dit betekent als de plugin bij een FIR filter test-case een vergelijkbaar.cir bestand kan produceren dat de test-case geslaagd is. Dit uitvoer formaat is echter alleen gebruikt bij het testen van de FIR filters zonder controlflow. Voor meer informatie over cir bestanden en de tool van TUDelft zie Bijlage A. 6.3 Datastructuur Tijdens de ontwikkeling is er voor de datastructuur van de plugin en de bewerkingen die hierop uitgevoerd worden veel gebruik gemaakt van testcases. Dit zorgde ervoor dat fouten die later geïntroduceerd werden veel sneller gelocaliseerd konden worden. Ook maakte dit het refactoren sneller. Omdat er tijdens de ontwikkeling steeds kleine dingen werden toegevoegd om de FIR filter testcases te laten slagen moest de datastructuur regelmatig gerefactored worden. De GIMPLE AST van GCC wordt door de plugin omgezet naar de interne datastructuur van de plugin. Deze datastructuur is een versimpelde AST waarin SystemC function calls zoals read, write en wait herkenbaar zijn. In de GIMPLE AST zijn deze namelijk niet direct te onderscheiden van andere function calls. Daarom kijkt de plugin tijdens het omzetten naar de namespaces, classes en namen van de functies die aangeroepen worden. En afhankelijk van welke namespaces, class en naam van een functie kan de plugin zien of er bijvoorbeeld een SystemC read, write of wait plaatsvindt. Ook is het mogelijk om SystemC datatypes zoals een SC_FIXED het zelfde te behandelen als bijvoorbeeld een double. Voorbeeld: SC_FIXED<64,32> a = 1.0; a = 1.1 * a; Dit moet dezelfde dataflow opleveren als: double a = 1.0; a = 1.1 * a; Het verschil zit hem alleen in de type informatie. Er is ervoor gekozen om tijdens de stage nog niks te doen met de type informatie, omdat de opdrachtgever dit geen prioriteit vond hebben. Het is op een later moment nog wel mogelijk om type informatie toe te voegen aan de plugin. Visitor Er is voor een op het visitor design pattern gebaseerde datastructuur gekozen om zo gemakkelijk bewerking te uit te kunnen voeren op de datastructuur. De reden dat er bewerkingen op de datastructuur uitgevoerd moeten worden is omdat na het direct omzetten van GIMPLE naar de datastructuur van de plugin er veel overbodige informatie is. Deze informatie moet gefilterd kunnen worden en daarom moeten er bewerkingen op de

15 datastructuur uitgevoerd kunnen worden. De belangrijkste bewerking die uitgevoerd moet worden zal nu uitgelegd worden aan de hand van een voorbeeld. In een SystemC module is het volgende gedefinieerd: sc_out<int> a; Gegeven de volgende regel SystemC code in een SC_METHOD of SC_CTHREAD van de code: a.write(1); Deze regel wordt door GCC omgezet naar iets vergelijkbaars met: D.0 = 1; D.1 = &a; D.2 = D.1; write(d.2, D.0); Er zitten hier onnodig veel assignments in. Deze assignments moeten door de plugin eruit gehaald worden. 6.4 Uitvoer In het eerste stadium van de ontwikkeling is er gebruik gemaakt van een.cir uitvoer formaat, maar dit was slechts een tijdelijk uitvoer formaat. In het laatste stadium van de ontwikkeling is er gebruik gemaakt van een XML uitvoer formaat dat overeen komt met de interne datastructuur van de plugin. De XML uitvoer was een wens van de opdrachtgever maar ook de meest logische keuze als uitvoer formaat, omdat het later makkelijk uit te breiden is en omdat het makkelijk is voor andere programma's om wat met dit uitvoer formaat te doen. 6.5 Invoer Aan het einde van de stage was er de keuze om de invoer van de plugin te laten verlopen via command-line parameters of een invoer bestand. Er is gekozen voor een XML invoer bestand waarin alle functies staan die omgezet moeten worden naar een CDFD. Deze keuze is gemaakt door de opdrachtgever. Dit is ook de meest logische keuze omdat het later makkelijk uit te breiden is. Hier volgt een voorbeeld van de xml: <?xml version="1.0"?> <plugin_args> </plugin_args> <analyze unroll="1"> </analyze> <function>::fir::entry</function> <output-file>output/test2.xml</output-file>

16 7. Ontwerp Dit hoofdstuk beschrijft het ontwerp. De eerste paragraaf beschrijft het visitor design pattern. De tweede paragraaf beschrijft de datastructuur die door de plugin gebruikt wordt. De derde paragraaf beschrijft hoe de GIMPLE structuur omgezet wordt naar de datastructuur van de eerste paragraaf. De vierde paragraaf beschrijft de algoritmes die uitgevoerd worden op de datastructuur. Zoals eerder beschreven is met 'Agile Developement' de code het ontwerp. Dus om een beter beeld te krijgen bij sommige beschrijvingen in dit hoofdstuk kan het handig zijn om de code bij de hand te hebben (http://code.google.com/p/systemc-cdfd/source/checkout). 7.1 Visitor Design Pattern Afbeelding 1: Visitor Design Pattern [http://en.wikipedia.org/wiki/visitor_patter n] Er is gebruik gemaakt van het visitor design pattern (afbeelding 1) om bewerkingen uit te kunnen voeren op de boomstructuur. Bij het visitor design pattern zijn er elementen. Deze elementen implementeren een accept functie die een visitor object als argument meekrijgt. Visitor is een interface met een visit functie voor elke element class. De accept functie van een element roept de visit functie van de visitor aan. Hierdoor is het mogelijk om bij een class die visitor implementeert voor elk type element ander gedrag te programmeren. Het is bij het visitor design pattern mogelijk om eventuele elementen binnen andere elementen te itereren vanuit de accept functies of vanuit de visitors. Er is bij de plugin gekozen om dit te doen bij de visitors, omdat dit de visitor de meeste controle geeft over wat er gebeurd. 7.2 Datastructuur De datastructuur is opgezet als een boomstructuur. In deze boomstructuur komen nodes voor. Alle nodes implementeren de interface INode. INode is vergelijkbaar met de element class van het visitor design pattern. Alle inner nodes moeten TreeNode of MapTreeNode extenden. TreeNode bevat protected functies om nodes toe te voegen aan een lijst. MapTreeNode bevat protected functies om nodes toe te voegen aan een map, dit is handig in situatie waarin bekend is dat een node een vast aantal childnodes heeft (bijvoorbeeld een WriteNode met een port en een source als childnode). Er is ervoor gekozen dit soort functies protected te maken zodat het bij afgeleide classes hiervan niet mogelijk is om elk type node

17 aan de lijst of map toe te voegen. Voorbeeld: Een BlockNode extend TreeNode en mag alleen nodes bevatten van het type IActionNode. De datastructuur bevat veel interfaces om ervoor te zorgen dat er geen nodes op verkeerde plaatsen aan de boom kunnen worden toegevoegd. De volgende paragraaf zal meer inzicht geven in de boomstructuur aan de hand van het omzetten van GIMPLE AST naar de boomstructuur. 7.3 GIMPLE AST omzetten naar eigen boomstructuur Het omzetten van de GIMPLE AST naar de eigen boomstructuur begint met het aanmaken van een ControlFlowRoot object. De ControlFlowRoot is de root voor de boomstructuur. Itereren van basic blocks Voor elk basic block van de functie die omgezet wordt naar de eigen boomstructuur wordt een BasicBlock node aangemaakt en toegevoegd aan de ControlFlowRoot. Elk basic block heeft een of twee edges. Deze edges worden ook toegevoegd aan de ControlFlowRoot. Itereren van statements Ieder basic block bevat een of meerdere statement. Voor iedere statement wordt gekeken naar de gimple_code van deze statement. De gimple_code stelt het type statement voor. Enkele voorbeelden van gimple_codes zijn: GIMPLE_ASSIGN, GIMPLE_CALL, GIMPLE_COND, GIMPLE_RETURN. Deze voorbeelden zijn ook de enige GIMPLE statements die op het moment ondersteund worden door de plugin GIMPLE_ASSIGN Een GIMPLE_ASSIGN stelt een simpele assignent voor zoals: a = b; a = b + c; a =!b; Een GIMPLE_ASSIGN bevat geen complexere syntax trees. Als de gimple_code van een statement GIMPLE_ASSIGN is dan wordt er een AssignNode aangemaakt. Deze AssignNode wordt toegevoegd aan de BlockNode. Een AssignNode krijgt een target en een operand. De target wordt gevonden door de AST die teruggeven wordt door de gimple_assign_lhs functie om te zetten naar een VarNode met behulp van de processtreenode van de plugin. Een VarNode wordt gebruikt om variabelen uit de GIMPLE AST te vertegenwoordigen in de eigen datastructuur. Een VarNode implementeert de IValueNode interface. De processtreenode functie wordt aan het einde van deze paragraaf beschreven. Voor het vinden van de op waarde moet er eerst gekeken worden naar wat voor type assignment de GIMPLE_ASSIGN voorstelt. Er zijn drie type assignments: een unary-, binary- en een single assignment. Bij een unary assignment wordt er een UnaryExpressionNode aangemaakt en met de setop functie toegevoegd aan de eerder aangemaakte AssignNode. De UnaryExpressionNode heeft zelf ook een op, deze waarde wordt gevonden door de GIMPLE boom die

18 teruggegeven wordt door de gimple_assign_rhs1 functie om te zetten naar een IValueNode met behulp van de processtreenode functie. Bij een binary assignment wordt er een BinaryExpressionNode aangemaakt en met setop toegevoegd aan de AssignNode. Een BinaryExpressionNode heeft echter twee operands: op1 en op2. Op1 wordt gevonden door het verwerken van gimple_assign_rhs1 en op2 door het verwerken van gimple_assign_rhs2. Bij een single assignment wordt de boom van gimple_assign_rhs1 direct verwerkt en met setop toegevoegd aan de AssignNode GIMPLE_CALL Een GIMPLE_CALL stelt een function call voor. Als de gimple_code van een statement een GIMPLE_CALL is wordt er gekeken naar wat voor soort function call het is. Bij verschillende soorten SystemC function calls worden andere type nodes toegevoegd aan de BlockNode. Bij een function call naar een read op een port of signal wordt een ReadNode aangemaakt. Bij een write op een port of signaal wordt er een WriteNode aangemaakt. Bij een wait wordt een WaitNode aangemaakt. Net zoals bij de GIMPLE_ASSIGN zijn er bij de GIMPLE_CALL ook speciale functies zoals gimple_call_lhs en nog meer om AST's op te vragen. Afhankelijk van wat voor type node aangemaakt moet worden, worden de juiste AST's omgezet naar VarNodes of IValueNodes. Hier wordt gebruik gemaakt van een switch om de functie naam afte vangen. In het geval dat de GIMPLE_CALL een function call is naar een niet SystemC functie dan wordt er CallNode aangemaakt met daarin zoveel mogelijk informatie over de function call GIMPLE_RETURN Een GIMPLE_RETURN stelt een return statement voor. Deze worden door de plugin genegeerd want de plugin hoeft nu alleen control en dataflow te halen uit een SC_METHOD of SC_CTHREAD te halen en deze geven nooit een waarde terug GIMPLE_COND Een basic block kan eindigen met een GIMPLE_COND statement. Dit stelt een conditie voor. Voor deze statements wordt een ConditionNode aangemaakt en toegevoegd aan de ControlFlowRoot, ook krijgen de EdgeNodes die bij deze BlockNode horen en verwijzing naar deze ConditionNode. Een ConditionNode is een BinaryExpressionNode met een ID zodat edges ernaar kunnen verwijzen en het implementeert de IControlFlowNode interface om zo toegevoegd te kunnen worden aan de ControlFlowRoot. De ConditionNode wordt niet toegevoegd aan de BlockNode. Dit heeft te maken met de manier waarop de controlflow en dataflow gescheiden zijn in de datastructuur processtreenode processtreenode is een functie geschreven om bomen uit de GIMPLE AST om te kunnen zetten naar IValueNodes. Deze functie heeft een GIMPLE AST als argument (vanaf nu: tree). De tree heeft een code (tree code). Het type IValueNode dat teruggeven moet worden hangt af van deze tree code. Hier volgt een korte omschrijving van enkele van de handelingen die verricht worden bij bepaalde tree codes:

19 VAR_DECL Bij de VAR_DECL tree code wordt er een VarNode aangemaakt en teruggeven. De VarNode krijgt een type waaraan te zien is dat de VarNode is aangemaakt vanwege een VAR_DECL. Er is ervoor gekozen om VarNodes types te geven afhankelijk van waar ze zijn aangemaakt om het debuggen makkelijker te maken, maar ook voor eventuele bewerkingen. ADDR_EXPR en INDIRECT_REF Als de tree code van een tree een ADDR_EXPR of een INDIRECT_REF is wordt de processtreenode voor de bijbehorende operand van de tree uitgevoerd. Dit betekent dat informatie over adressen en referenties als overbodig wordt beschouwd door de plugin. In de toekomst is het nog wel mogelijk om deze informatie toe te voegen, maar voor de FIR filter test-cases was deze informatie niet relevant. REAL_CST en INTEGER_CST Als de tree code van een tree gelijk is aan REAL_CST of INTEGER_CST betekent het dat er een floating point of integer constant waarde gevonden is. Een REAL_CST kan een float of een double voorstellen en een INTEGER_CST kan een bool, char, int, etc. voorstellen. Afhankelijk van welke tree code wordt er een IntNode of RealNode aangemaakt en teruggegeven. Beide implementeren de IValueNode interface. Tijdens de ontwikkeling waren er wat problemen met het vinden van de juiste waarde bij een REAL_CST. De documentatie van GCC is onvolledig en het is lastig om duidelijke voorbeelden te vinden. Uiteindelijk is er met behulp van de opdrachtgever een manier gevonden om de juiste waarde te vinden. SSA_NAME Bij een tree met SSA_NAME als code wordt eerst gecontroleerd of de node een GIMPLE_PHI node is. Dit betekent dat de node een van meerdere waardes heeft en het is onbekend welke waarde. In dit geval wordt er een PHINode aangemaakt en teruggegeven. Een PHINode extend VarNode en heeft als childnodes alle mogelijke waardes die de GIMPLE_PHI node kan hebben. Als de SSA_NAME geen GIMPLE_PHI node is wordt er een VarNode aangemaakt en teruggegeven. COMPONENT_REF Een tree met COMPONENT_REF als code stelt een veld voor binnen een class- of structachtige constructie. De tree heeft in deze situatie twee relavante operands. De eerste operand is een tree die het object vertegenwoordigd en de tweede is een tree die het veld binnen het object vertegenwoordigd. Deze trees worden verwerkt met processtreenode en samengevoegd tot een enkele VarNode. Er is echter een lastig probleem bij een COMPONENT_REF. De eerste operand kan uitkomen op een tree met SSA_NAME als tree code. Deze SSA_NAME wordt niet altijd binnen de functie assigned. In dat geval is het object het 'this' object. Deze constructie wordt herkent door bij het verwerken van de SSA_NAME een NullNode terug te geven. Het is noodzakelijk om speciaal rekening te houden met deze situatie. Het gebruik van een VarNode die niet assigned wordt (in dit geval de SSA_NAME van het 'this' object) maakt het genereren van dataflow lastig omdat er niet bekend is waar de flow begint.

20 7.4 Visitors Er zijn gedurende de ontwikkeling meerdere visitors geschreven om bewerkingen uit te voeren op de datastructuur. Enkele hiervan zijn overbodig geworden en zullen niet beschreven worden, met uitzondering van de CirVisitor. MergeVisitor De MergeVisitor heeft als doel zoveel mogelijk AssignNodes waarvan getop() een VarNode geeft weg te optimaliseren. De eerste stap in dit proces is om te kijken of een AssignNode wel weggehaald mag worden. Dit mag alleen als de target van de assign slechts een keer als target gebruikt wordt. Ondanks dat de code pas uitgevoerd wordt als GIMPLE in de SSA vorm is, kan het voorkomen dat een variabele meerdere keren assigned wordt. Dit is iets wat GCC doet op het moment dat een variabele in de code als een reference of pointer wordt meegegeven aan een andere functie. In het geval van SystemC werkt de write functie van porten en signalen met references. Om te controleren of een target van een assign meerdere keren als target gebruikt wordt is er een visitor geschreven die bij het uitvoeren een multiset gegenereerd met daarin het aantal keren dat elke variabele assigned wordt. Nadat de merge visitor heeft bepaald dat een AssignNode weggehaald mag worden dan wordt er gebruik gemaakt van een ReplaceVisitor. Deze visitor zoekt in de boomstructuur naar VarNodes met als waarde de gettarget() van de AssignNode en vervangt deze met de waarde van de getop() van de assign node. Na het vervangen van een VarNode geeft de ReplaceVisitor de VarNode een nieuw type waardoor in de uitvoer te zien is er een bewerking op is uitgevoerd. Na het uitvoeren van de ReplaceVisitor wordt de AssignNode verwijderd. RemoveUselessAssignVisitor Als de GIMPLE AST omgezet naar de boomstructuur van de plugin dan worden function calls naar de destructors van SystemC objecten niet meegenomen, deze zijn niet relevant voor de control en dataflow en ze zijn gemakkelijk te filteren. Het probleem is echter dat er in de GIMPLE AST wel GIMPLE_ASSIGN nodes staan waarvan de variabele die assigned wordt alleen gebruikt wordt door de destructor. Daarom is er een visitor geschreven om deze AssignNodes achteraf uit de boomstructuur te verwijderen. De RemoveUselessAssignVisitor haalt AssignNodes uit de boomstructuur waarvan de waarde van de gettarget() verder niet gebruikt wordt. Deze visitor maakt een set van alle waardes van VarNodes die als target van een AssignNode gebruikt worden en een set van alle waardes van VarNodes die op andere plaatsen gebruikt worden. Vervolgens worden alle AssignNodes van de target in de eerste set voorkomt en niet in de tweede set voorkomt verwijderd uit de boom. AssignToReadVisitor In SystemC zijn bij signalen en porten meerdere = operatoren gedefineerd. Een van deze operatoren gaat ervan uit dat links en rechts van de = hetzelfde type staat. Voorbeeld: sc_buffer<int> a, b; a = b; Dit betekent dat buffer b uitgelezen wordt en de waarde hiervan naar buffer a geschreven wordt. Bij = operatoren die niet hetzelfde type links en rechts hebben komt er een expliciete function call naar de read functie te staan in de GIMPLE AST. Maar in deze situatie komt er

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren November 2014 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 1 Inhoudstafel 1 Introductie 3 1.1

Nadere informatie

Software Design Document

Software Design Document Software Design Document Mathieu Reymond, Arno Moonens December 2014 Inhoudsopgave 1 Versiegeschiedenis 2 2 Definities 3 3 Introductie 4 3.1 Doel en Scope............................. 4 4 Logica 5 4.1

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Modulewijzer tirprog02/infprg01, programmeren in Java 2 Modulewijzer tirprog02/infprg01, programmeren in Java 2 W. Oele 17 november 2009 1 Inhoudsopgave 1 Inleiding 3 2 Studiehouding 3 3 Voorkennis 4 4 Inhoud van deze module 5 5 Leermiddelen 5 6 Theorie en

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Vorig jaar in 5v cluster, tot en met OO hoofdstukken, geen problemen. Nu in mengcluster, tot OO hoofdstukken, wel problemen bij 4h leerlingen

Vorig jaar in 5v cluster, tot en met OO hoofdstukken, geen problemen. Nu in mengcluster, tot OO hoofdstukken, wel problemen bij 4h leerlingen Eerste programmeertaal Leren programmeren vs. een programmeertaal leren In Nijmegen: Algol68 als basis voor o.a. Modula-2 en C Voor Codi/Boxmeer: Pascal, Java, HTML/PHP Niet helemaal tevreden over Java

Nadere informatie

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

Nadere informatie

ProjectHeatmap. Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar

ProjectHeatmap. Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar ProjectHeatmap Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar 1 Inhoudsopgave Inleiding...3 Gheat...4 Info...4 Voordelen...4 Nadelen...4 Google Fusion Tables...5 Info...5 Voordelen...5 Nadelen...5 OLHeatmap...6

Nadere informatie

1 Inleiding in Functioneel Programmeren

1 Inleiding in Functioneel Programmeren 1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 02 april 2009. Versie 2.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

Het definitieve prototype van Foliostory zal op basis van een usability test getest worden.

Het definitieve prototype van Foliostory zal op basis van een usability test getest worden. Testplan prototype Het definitieve prototype van Foliostory zal op basis van een usability test getest worden. Hierbij wordt een happy flow scenario aan de respondenten voorgelegd met daarin taken die

Nadere informatie

Enterprise Connectivity. Marnix van Bo. TU Delft Elek Software Architect 20 jaar ervarin ontwikkeling

Enterprise Connectivity. Marnix van Bo. TU Delft Elek Software Architect 20 jaar ervarin ontwikkeling Fir rst Base Enterprise Connectivity Marnix van Bo chove First Base: opgericht in 2001 TU Delft Elek ktrotechniek - 1998 Software Architect 20 jaar ervarin g met software ontwikkeling Presentatie Ideeën

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

2BA Deeplink Gebruiksbeschrijving

2BA Deeplink Gebruiksbeschrijving 2BA Deeplink Gebruiksbeschrijving Document versie: 1.0 SCVN 02 Uitgiftedatum: 2006-5-1 Status: Conceptueel Auteur: 2BA Inhoudsopgave Inhoudsopgave... 2 1 Wat is deeplink?... 3 2 Deeplink gebruiken... 4

Nadere informatie

Dynamiek met VO-Script

Dynamiek met VO-Script Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software bert@dla-architect.nl Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren Maart 2015 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 2 December 2014 Yannick Verschueren

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 26 september 2007 Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces Meer over class

Nadere informatie

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................

Nadere informatie

Inleiding C++ Coding Conventions

Inleiding C++ Coding Conventions Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,

Nadere informatie

Inleiding tot Func.oneel Programmeren les 3

Inleiding tot Func.oneel Programmeren les 3 Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere

Nadere informatie

Programmeerstructuren met App Inventor

Programmeerstructuren met App Inventor Programmeerstructuren met App Inventor Kevin Krul, Universiteit Utrecht Roncalli, Bergen op Zoom Inhoud: Les 1: Introductie tot App Inventor, when statement en variabelen. Les 2: Introductie if-statement

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

MS-Office documenten integratie via SAP PI

MS-Office documenten integratie via SAP PI MS-Office documenten integratie via SAP PI Met behulp van het SAP Process Integration systeem (SAP PI) kun je op vele manieren je integratie regelen tussen je SAP systemen en/of andere systemen. Ook met

Nadere informatie

Programmeren: Visual Basic

Programmeren: Visual Basic PETERSTUYVESANT COLLEGE INFORMATICA 2009-2010 Programmeren: Visual Basic Algemene Kennis: 01. Programmeren Programmeren is het schrijven van een computerprogramma, een concrete verzameling instructies

Nadere informatie

Project plan. Erwin Hannaart Sander Tegelaar 61849 62407

Project plan. Erwin Hannaart Sander Tegelaar 61849 62407 Project plan Erwin Hannaart Sander Tegelaar 61849 62407 I4C2 I4C1 1 Inhoudsopgave Doel en doelgroep van het project... 3 Beschrijving van het project... 4 Benodigde materialen... 5 Te verwachten resultaten,

Nadere informatie

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces. Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de

Nadere informatie

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be info@beanpole.be 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

High Performance Computing

High Performance Computing High Performance Computing Kristian Rietveld (krietvel@liacs.nl, kamer 138) Groep Computer Systems - Embedded systems - Specifieke software mappen op specfieke hardware. - Hardware synthesis. - Real-time

Nadere informatie

Vraag 1. Vraag 1a TERUGKOPPELING PROEFTENTAMEN. Software architecture

Vraag 1. Vraag 1a TERUGKOPPELING PROEFTENTAMEN. Software architecture Software architecture IM0203 TERUGKOPPELING PROEFTENTAMEN Vraag 1 Vraag 1a Veel van de in het werkboek besproken patterns kunnen ingezet worden voor het referentiesysteem. We lopen de patterns hier stuk

Nadere informatie

Tools voor canonieke datamodellering Bert Dingemans

Tools voor canonieke datamodellering Bert Dingemans Tools voor canonieke datamodellering Tools voor canonieke datamodellering Bert Dingemans Abstract Canonieke modellen worden al snel omvangrijk en complex te beheren. Dit whitepaper beschrijft een werkwijze

Nadere informatie

Opdrachtformulering (pagina 3 van 7)

Opdrachtformulering (pagina 3 van 7) Afstudeerovereenkomst van Tim Wils Bijlage 1 Opdrachtformulering (pagina 3 van 7) Dit project betreft een eigen framework (soort API) waarmee relatief gemakkelijk en in korte tijd eindproducten opgezet

Nadere informatie

BTW Code conversie Legal Eagle Boekhouding versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers

BTW Code conversie Legal Eagle Boekhouding versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers BTW Code conversie Legal Eagle Boekhouding versie 2.18.x naar 2.19.0 2012 Sdu uitgevers BTW Code conversie Legal Eagle Boekhouding Inhoudsopgave BTW Code Conversie Legal Eagle Boekhouding... 3 Tips...

Nadere informatie

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft.

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft. Doel Module Fronter 92 Dit document is gemaakt door Fronter Ltd fronter.com. Het document mag alleen gekopieerd of digitaal verspreid worden volgens contract of in overeenstemming met Wat is nieuw in deze

Nadere informatie

Software Quality Assurance Plan

Software Quality Assurance Plan Software Quality Assurance Plan GameTrac Versie Datum Auteur(s) Opmerking 1.0 10-12-2010 Bram Bruyninckx Eerste iteratie 1 Door hieronder te tekenen verklaart u akkoord te zijn met dit document en zijn

Nadere informatie

BTW Code conversie Legal Eagle Boekhouding versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers

BTW Code conversie Legal Eagle Boekhouding versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers BTW Code conversie Legal Eagle Boekhouding versie 2.18.x naar 2.19.0 2012 Sdu uitgevers BTW Code conversie Legal Eagle Boekhouding Inhoudsopgave BTW Conversie Legal Eagle Boekhouding... 3 2012 Gebruikershandleiding

Nadere informatie

Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark

Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Inhoudsopgave Inhoudsopgave... 2 1. Beheer helpdesk... 3 1.1. Settings... 3 1.2. Applicaties... 4 1.3. Prioriteiten... 5 1.4. Gebruik mailtemplates...

Nadere informatie

Plan van Aanpak. Christophe Deloo, Roy Straver & Machiel Visser. Versie 4 (26-06-2010)

Plan van Aanpak. Christophe Deloo, Roy Straver & Machiel Visser. Versie 4 (26-06-2010) Plan van Aanpak Christophe Deloo, Roy Straver & Machiel Visser Versie 4 (26-06-2010) Inhoudsopgave Voorwoord... 2 1 Inleiding... 3 1.1 Aanleiding... 3 1.2 Accordering en bijstelling... 3 1.3 Toelichting

Nadere informatie

Plannen opladen in FMIS

Plannen opladen in FMIS Plannen opladen in FMIS 1. Algemeen De ruggengraat van het FMIS is de geografische boomstructuur waarin het GO! patrimonium is ondergebracht. Elk object in deze structuur kan gekoppeld worden met een brede

Nadere informatie

Programmeren in C ++ met wxwidgets les 5

Programmeren in C ++ met wxwidgets les 5 Elektrotechniek/Embedded Systems engineering inf2d Programmeren in C ++ met wxwidgets les 5 cursus 2009-2010 ir drs E.J Boks Les 5 Grafische toolkits Basisbeginselen gebruik grafische toolkit WxWidgets

Nadere informatie

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

Stageplan. Stageplan v0.3 10-03-11 Dennis Wagenaar

Stageplan. Stageplan v0.3 10-03-11 Dennis Wagenaar Stageplan Stageplan v0.3 10-03-11 Dennis Wagenaar 1 Inhoudsopgave Inleiding...3 Organisatorische aspecten...3 Gegevens van de student...3 Gegevens van de stageorganisatie...3 Gegevens van de stagebegeleider...3

Nadere informatie

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent Het relaas van de beginnende programmeur Het hoe en waarom van de assistent 1. Help, mijn code doet niks... Mogelijke oplossingen: Heb je op run geduwd (groene pijltje)? Zolang je niet op 'run' duwt, kent

Nadere informatie

Informatica 2 Studiehandleiding

Informatica 2 Studiehandleiding Informatica 2 Studiehandleiding Embedded Systems Engineering Groep: ES1D ir drs E.J Boks 25-02-2010 Inhoud 1 Inleiding... 2 2 Doelstelling... 3 3 Beoordeling... 4 4 Eisen aan het verslag... 6 Voorbeeld

Nadere informatie

Google Module Snelstarter

Google Module Snelstarter Google Module Snelstarter Handleiding voor de Google Module Version 6.0 Date Mei. 2013 Author Intermix Intermix Management B.V. www.intermix.nl Intermix.nl/linkedin Rijnstraat 323 Twitter.com/intermixnl

Nadere informatie

van PSD naar JavaScript

van PSD naar JavaScript 2015 van PSD naar JavaScript F. Vonk versie 2 19-9-2015 inhoudsopgave 1. inleiding... - 2-2. ontwikkelomgeving... - 3-3. programmeerconcepten... - 4 - statement... - 4 - sequentie... - 4 - variabele en

Nadere informatie

Inhoud. Endnote X7 Handleiding Mediacentrum maart 2015 Page 2

Inhoud. Endnote X7 Handleiding Mediacentrum maart 2015 Page 2 Inhoud Over Endnote... 3 Endnote installeren... 4 Een library aanmaken... 5 Voordat je begint!... 6 Tussenvoegsels in namen... 6 Referenties invoegen in een Worddocument/Cite while you write... 7 Handmatig

Nadere informatie

BTW Code Conversie Legal Eagle Integratie Zonder Export versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers

BTW Code Conversie Legal Eagle Integratie Zonder Export versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers BTW Code Conversie Legal Eagle Integratie Zonder Export versie 2.18.x naar 2.19.0 2012 Sdu uitgevers BTW Code Conversie Legal Eagle Integratie Zonder Export Inhoudsopgave BTW Conversie Legal Eagle Integratie

Nadere informatie

De plug-in is heel eenvoudig te installeren met een setup-programma. Waarna je een aantal menu opties in het tools menu er bij krijgt.

De plug-in is heel eenvoudig te installeren met een setup-programma. Waarna je een aantal menu opties in het tools menu er bij krijgt. Plsqldoc Genereer je documentatie Beeklaan 444 2562 BK Den Haag www.darwin-it.nl info@darwin-it.nl KvK 27283780 ING 65.35.40.663 Technical Architect Net als (vrijwel) elke ontwikkelaar vind ik het documenteren

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

LES 1: AAN DE SLAG MET WORDPRESS. Lesoverzicht: Aan de slag Wat is WordPress CMS Front-end Back-end Samenvatting. Tijd: 5 minuten

LES 1: AAN DE SLAG MET WORDPRESS. Lesoverzicht: Aan de slag Wat is WordPress CMS Front-end Back-end Samenvatting. Tijd: 5 minuten LES 1: AAN DE SLAG MET WORDPRESS Lesoverzicht: Aan de slag Wat is WordPress CMS Front-end Back-end Samenvatting Tijd: 5 minuten Doel: Aan het einde van deze les weet je wat WordPress is en kun je benoemen

Nadere informatie

Verzamelingen, Lijsten, Functioneel Programmeren

Verzamelingen, Lijsten, Functioneel Programmeren Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen

Nadere informatie

Een website omzetten naar WordPress

Een website omzetten naar WordPress 1 Een website omzetten naar WordPress Er zijn talloze programma s beschikbaar om websites te maken. In de titels Basisgids Websites maken met WordPress en Websites maken met WordPress voor senioren wordt

Nadere informatie

High Performance Computing

High Performance Computing High Performance Computing Kristian Rietveld (krietvel@liacs.nl, kamer 138) Groep Computer Systems High-Performance Computing Optimizing compilers (generieke codes, maar ook specifieke rekenkernels). Parallel

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 11 maart 2009. Versie 1.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 11 maart 2009. Versie 1.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 11 maart 2009 Versie 1.1.0 Teamleden: Armin

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang

Nadere informatie

CONFIDENTIEEL. EIB-RPT-880076 3 van 12. Samenvatting

CONFIDENTIEEL. EIB-RPT-880076 3 van 12. Samenvatting EIB-RPT-880076 3 van 12 Samenvatting Inleiding Dit rapport beschrijft de prototypekeuring van de SDUMJGA stemmachine RS- Vote. De RS-Vote stemmachine is bedoeld voor elektronisch gefaseerd stemmen en is

Nadere informatie

Tips & Tricks for TUE students doing Architecture Reconstruction with Rascal

Tips & Tricks for TUE students doing Architecture Reconstruction with Rascal SWAT - Software Analysis and Transformation Tips & Tricks for TUE students doing Architecture Reconstruction with Rascal Jurgen Vinju Davy Landman https://gist.github.com/jurgenvinju/8972255 http://update.rascal-mpl.org/unstable

Nadere informatie

Socio-technisch systemen. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 2 Slide 1

Socio-technisch systemen. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 2 Slide 1 Socio-technisch systemen Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 2 Slide 1 Systeem categoriën Technische op computer gesteunde systemen Systemen die HW en SW bevatten, maar waar

Nadere informatie

Projectorganisatie Marc Martojo Esther krijnen Rodger Buyvoets Danilo Meulens

Projectorganisatie Marc Martojo Esther krijnen Rodger Buyvoets Danilo Meulens Concrete projectbeschrijving De afstudeeropdracht is om een informatief, innovatief en interactief boek te ontwikkelen dat als presentatie materiaal gebruikt kan worden om weer te geven hoe bijzonder en

Nadere informatie

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies 17 Operaties op bits In hoofdstuk 1 is gezegd dat C oorspronkelijk bedoeld was als systeemprogrammeertaal om het besturingssysteem UNIX te implementeren. Bij dit soort toepassingen komt het voor dat afzonderlijke

Nadere informatie

BTW Code Conversie Legal Eagle Integratie Met Export versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers

BTW Code Conversie Legal Eagle Integratie Met Export versie 2.18.x naar 2.19.0. 2012 Sdu uitgevers BTW Code Conversie Legal Eagle Integratie Met Export versie 2.18.x naar 2.19.0 2012 Sdu uitgevers BTW Code Conversie Legal Eagle Integratie Met Export Inhoudsopgave BTW Code Conversie Legal Eagle Integratie

Nadere informatie

Release datum: 11 juni 2012

Release datum: 11 juni 2012 Highlights 1 HSExpert versie 5.2 Begin juni is versie 5.2 van HSExpert gereleased. In versie 5.2 zijn vooral wijzigingen op het RiAxion (Arbo) dossier doorgevoerd. Daarnaast zijn er wat kleinere wijzigingen

Nadere informatie

Verslaglegging. P. Broekhuizen F. Sijsling G. Zandvliet Docenten Nederlands

Verslaglegging. P. Broekhuizen F. Sijsling G. Zandvliet Docenten Nederlands Verslaglegging P. Broekhuizen F. Sijsling G. Zandvliet Docenten Nederlands Leeuwarden, 13 september 2011 Verslaglegging Door : P. Broekhuizen, F. Sijsling en G. Zandvliet Docenten Nederlands Klas : LBLV.2

Nadere informatie

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat: Training Trainingscode Duur Gepubliceerd Taal Type Leermethode Kosten SF2015V8 4 dagen 02/02/2015 Nederlands & Engels Developer, basis Invidueel & klassikaal Op aanvraag Deze training richt zich op het

Nadere informatie

DrICTVoip.dll v 2.1 Informatie en handleiding

DrICTVoip.dll v 2.1 Informatie en handleiding DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software

Nadere informatie

HvA Instituut voor Interactieve Media ActionScript 3.0

HvA Instituut voor Interactieve Media ActionScript 3.0 PPRO 1: OEFENINGEN LES 1 Hierbij de werkgroepoefeningen behorend bij het practicum week 1. Lees de stukken uitleg aandachtig door, zonder deze informatie zullen de principes in de oefeningen moeilijk te

Nadere informatie

Overzichten genereren in het FMIS

Overzichten genereren in het FMIS Overzichten genereren in het FMIS 1. Algemeen Het FMIS is een database-applicatie waarin een gigantische set aan gegevens zit. Deze gegevens worden beheerd door gebruik te maken van de verschillende modules:

Nadere informatie

De Vergeten Abstracties

De Vergeten Abstracties De Vergeten Abstracties Cesario Ramos Senior Consultant bij Xebia B.V. 2009 Inleiding Rollen zijn een belangrijk concept in object georiënteerde software ontwikkeling dat vaak vergeten wordt. Het gebruik

Nadere informatie

Rapportage Lineage. Introductie. Methode. J. Stuiver

Rapportage Lineage. Introductie. Methode. J. Stuiver Rapportage Lineage Rapportage Lineage J. Stuiver Introductie In elk project is het essentieel om informatie over het project en haar activiteiten voor alle partijen beschikbaar te stellen. Deze informatie

Nadere informatie

Vergelijking Oracle certificering voor Java en het CPP Gecertificeerd Javaprogrammeur van de Open Universiteit

Vergelijking Oracle certificering voor Java en het CPP Gecertificeerd Javaprogrammeur van de Open Universiteit Vergelijking Oracle certificering voor Java en het CPP Gecertificeerd Javaprogrammeur van de Open Universiteit Inleiding Op het gebied van scholing van de taal Java zijn er vele aanbieders op de markt.

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Reflectie Verslag. 25 januari. Game Developement Informatica Hogeschool v. Amsterdam

Reflectie Verslag. 25 januari. Game Developement Informatica Hogeschool v. Amsterdam Reflectie Verslag 25 januari 2013 Het reflectie verslag met nabeschouwing en beoordelingen over de stage van Simon Karman bij het bedrijf Sticky Studios. Game Developement Informatica Hogeschool v. Amsterdam

Nadere informatie

Central Station. CS website

Central Station. CS website Central Station CS website Versie 1.0 18-05-2007 Inhoud Inleiding...3 1 De website...4 2 Het content management systeem...5 2.1 Inloggen in het CMS... 5 2.2 Boomstructuur... 5 2.3 Maptypen... 6 2.4 Aanmaken

Nadere informatie

Application interface. service. Application function / interaction

Application interface. service. Application function / interaction Les 5 Het belangrijkste structurele concept in de applicatielaag is de applicatiecomponent. Dit concept wordt gebruikt om elke structurele entiteit in de applicatielaag te modelleren: softwarecomponenten

Nadere informatie

Debugging in embedded en native systemen met GDB

Debugging in embedded en native systemen met GDB Debugging in embedded en native systemen met GDB A.M. ten Doesschate July 15, 2015 Abstract Een korte beschrijving : intro gebruik met welke tools en hulpmiddelen van de GDB setup en een summier aantal

Nadere informatie

1 Inleiding. 3 Handmatig... invoeren zaken basis 4 Verwerken... zaken 5 Afhandelen... van zaken. 7 Uitgebreidere... zaak opties

1 Inleiding. 3 Handmatig... invoeren zaken basis 4 Verwerken... zaken 5 Afhandelen... van zaken. 7 Uitgebreidere... zaak opties 2 Supportdesk Pro Introductie Inhoudsopgave I Supportdesk Pro 3 1 Inleiding... 3 2 Werkwijze... 3 II Zaken 4 1 Introductie... 4 2 Zaken beheren... 4 3 Handmatig... invoeren zaken basis 4 4 Verwerken...

Nadere informatie

case: toestandsdiagrammen

case: toestandsdiagrammen Hoofdstuk 13 case: toestandsdiagrammen In dit hoofdstuk wordt het maken van de eerste versie van de toestandsdiagrammen voor het boodschappensysteem van Hans en Jacqueline uitgewerkt. 13.1 Vind klassen

Nadere informatie

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing. irkel (met Jpanel) ij de onderstaande opdracht behoort het bestand Panels: JPanels_1.java (map Panel) in de map irkel. pplicaties in Java hebben altijd een publieke klasse waarin een methode main voorkomt.

Nadere informatie

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

Inleiding Visual Basic en VBA. Karel Nijs 2009/01 Inleiding Visual Basic en VBA Karel Nijs 2009/01 Leswijze Eerst wat theorie Begeleid met (korte) oefeningen Ms Excel 2003 Online hulp: http://www.ozgrid.com/vba/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx

Nadere informatie

SEO search engine optimalisatie

SEO search engine optimalisatie SEO search engine optimalisatie SEO staat voor Search Engine Optimizer, iedereen kan een website maken maar is uw website ook goed uit te lezen door een zoekmachine? Een zoekmachine ziet uw website niet

Nadere informatie

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,

Nadere informatie

Agile werken: zó doen we dat

Agile werken: zó doen we dat Agile werken: zó doen we dat Bij Freshheads werken we graag volgens de Agile aanpak. De voordelen? Verhoogde efficiëntie en flexibiliteit, snellere resultaten en grotere betrokkenheid. Maar hoe gaat het

Nadere informatie

Darts. Versie 1.21 23 september 2010 Reinier Vos. CS Engineering Brugweg 56 Postbus 235 2740 AE Waddinxveen

Darts. Versie 1.21 23 september 2010 Reinier Vos. CS Engineering Brugweg 56 Postbus 235 2740 AE Waddinxveen Darts Versie 1.21 23 september 2010 Reinier Vos CS Engineering Brugweg 56 Postbus 235 2740 AE Waddinxveen Inhoud HOOFDSTUK 1 - INLEIDING... 3 1.1 DOEL VAN DIT DOCUMENT... 3 1.2 DOELGROEP VOOR DIT DOCUMENT...

Nadere informatie

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Module 3: Scratch programmeren: is het logisch of is het niet logisch? Module 3: Scratch programmeren: is het logisch of is het niet logisch? Inhoudsopgave Module 3: Scratch programmeren: is het logisch of is het niet logisch?...1 Wat is een computerprogramma eigenlijk?...2

Nadere informatie

Projectplan. Elektronica-ICT Artesis. Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce

Projectplan. Elektronica-ICT Artesis. Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce Elektronica-ICT Artesis Projectplan Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce Projectplan ter voorbereiding van de bachelorproef en stage Academiejaar

Nadere informatie

De voordelen van Drupal

De voordelen van Drupal Drupal is een open source Content Management System (CMS). Daarnaast kun je Drupal zien als een framework, dit betekent dat je modules (oftewel mini-applicaties) kunt implementeren in je installatie van

Nadere informatie

Gentoo linux. Introductie. Gentoo is anders. LinuxFocus article number 336 http://linuxfocus.org. door Guido Socher (homepage) Over de auteur:

Gentoo linux. Introductie. Gentoo is anders. LinuxFocus article number 336 http://linuxfocus.org. door Guido Socher (homepage) Over de auteur: LinuxFocus article number 336 http://linuxfocus.org Gentoo linux door Guido Socher (homepage) Over de auteur: Guido werkt erg graag met Gentoo omdat het hem meer controle geeft over het installatie proces.

Nadere informatie

FUMAGGO WEB SOLUTIONS

FUMAGGO WEB SOLUTIONS FUMAGGO WEB SOLUTIONS Aanpassen design stemexamen.nl Offerte voor ProDemos Den Haag Fumaggo Web Solutions Lammenschansweg 93, 2313 DK Leiden KvK Rijnland 52202992 Leiden, 19 juni 2012 2 1 Introductie ProDemos

Nadere informatie

IPBEV Testplan Hogeschool Leiden - Informatica

IPBEV Testplan Hogeschool Leiden - Informatica - Informatica Voor Stichting Wireless Leiden waren wij als student ingezet om een interactieve nodemap te maken om de verschillende nodes van Wireless Leiden te kunnen tonen aan gebruikers en beheerders.

Nadere informatie

Handleiding Merge items

Handleiding Merge items Handleiding Merge items Copyright, Connexys Versie 3.2.0.1-30 september 2013 Niets uit dit document mag worden verveelvoudigd en/of openbaar worden gemaakt door middel van druk, fotokopie, microfilm of

Nadere informatie

Financieel Management Systeem. Versie beschrijving 4.3. Bizon Software B.V., 2 oktober 2012, versie 20121002 Opgesteld door Jaap van Vugt

Financieel Management Systeem. Versie beschrijving 4.3. Bizon Software B.V., 2 oktober 2012, versie 20121002 Opgesteld door Jaap van Vugt Financieel Management Systeem Versie beschrijving 4.3 Bizon Software B.V., 2 oktober 2012, versie 20121002 Opgesteld door Jaap van Vugt Inhoud 1. ALGEMEEN 3 1.1. TOELICHTING OP DE NIEUWE RELEASE 3 1.2.

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

Presentatie Jaarproject. Nils De Moor Sam Verboven

Presentatie Jaarproject. Nils De Moor Sam Verboven Presentatie Jaarproject Nils De Moor Sam Verboven Story Driven Modelling Story Diagrams UML class / activity / colaboration diagrams Operatoren : - Diagram begint bij - Doorloopt activities (onderling

Nadere informatie

2 Pagina s binnen TYPO3

2 Pagina s binnen TYPO3 2 Pagina s binnen TYPO3 Als u links onder de module Web klikt op de submodule Pagina krijgt u aan de rechterzijde het volgende scherm: Afbeelding 2.2 (frontend) Afbeelding 2.1 (backend) De gele, blauwe

Nadere informatie