Hieronder volgt een voorbeeld van een fictief project voor een WBSO-aanvraag. Het voorbeeld gaat over de ontwikkeling van nieuwe programmatuur en is enkel en alleen bedoeld om een beeld te geven van de tekstuele inhoud van een aanvraag. Gelijkenissen met werkelijke projecten van bedrijven berusten op toeval.
Projecttitel: Ontwikkeling RoofTop Engine 1.0
Projectomschrijving
De gebouwde omgeving binnen Nederland en in het buitenland kan veel efficiënter worden ingericht door bijvoorbeeld het dakoppervlak beter te benutten. Mogelijkheden zijn het plaatsen van zonnepanelen, zonnecollectoren, groendaken, urban farms, bijenkasten, etc. Doordat iedere situatie uniek is ontstaat hierbij een breed scala aan mogelijkheden om daken optimaal te benutten. Inzicht in alle mogelijkheden, de voor- en nadelen, de kosten, de opbrengsten, etc. is erg waardevol voor zowel particulieren, gemeenten alsook bedrijven. TCC wil daarom interactieve online kaarten realiseren met daarop alle mogelijkheden per dak, straat, wijk, gemeente, etc.
In dit project wil TCC de RoofTop Engine (RTE 1.0) ontwikkelen waarmee dergelijke kaarten snel kunnen worden uitgeserveerd en waarmee grootschalige analyses op GEO-data mogelijk worden. TCC wil hierbij ook automatische berekeningen van scenario’s mogelijk maken.
De technische uitdagingen in dit project komen voort uit de diversiteit van dataformaten (o.a. van het Kadaster en Google Maps), omvang van GEO-data (> 40 TB), limitaties in rekencapaciteit van mobiele devices en de downloadsnelheid van mobiele verbindingen.
Fasering
Ontwikkelingsactiviteit | Datum gereed |
---|---|
Ontwikkeling van nieuwe datastructuur en algoritmen | 30-04-2019 |
Ontwikkeling custom broker | 31-07-2019 |
Onderzoek en ontwikkeling imageprocessing | 30-11-2019 |
Ontwikkeling proof of concepts | 31-03-2020 |
Testfase (performance) | 31-05-2020 |
Ontwikkeling prototype | 31-05-2020 |
Doorontwikkeling en optimalisatie | 31-12-2020 |
Technische knelpunten programmatuur
- Requests voor grootschalige analyses op de operationele database veroorzaken vertragingen in de clients. Simultane verzoeken voor unieke kaartinformatie door duizenden gebruikers veroorzaken daarnaast ook een exponentiële toename in het aantal requests. De huidige datastructuur is daarvoor niet schaalbaar genoeg;
- Verwerking van data voor het voorberekenen van kaartinformatie veroorzaakt een te zware serverbelasting;
- Door limieten in mobiele verbindingen en beperkte rekenkracht van mobiele devices duurt het renderen van kaarten zeer lang. Een gevolg hiervan is dat kaarten onvolledig laden of dat er time-outs in de verbinding ontstaan;
- De grote diversiteit in dataformaten en ontbrekende onderlinge relaties veroorzaken interpretatiefouten. Daarnaast wil TCC ook geautomatiseerde herkenning van toekomstige dataformaten mogelijk maken en automatisch nieuwe relaties kunnen leggen.
Technische oplossingsrichtingen programmatuur
De aanvrager denkt aan de volgende oplossingsrichtingen:
- Ontwikkeling van een nieuwe Extractie, Transformatie en Load-layer (ETL) in combinatie met een zelf te ontwikkelen request-broker. Voor dit laatste denkt TCC o.a. aan een high-performance cluster van Docker containers;
- Ontwikkeling van nieuwe data-transformatie algoritmen waarbij blokken informatie in de vorm van images worden geprocessed zodat bloksgewijze verwerking mogelijk wordt;
- Ontwikkeling van een eigen Application Programming Interface (API) en consolidatie-algoritmen welke de data server-side pre-renderen zodat deze snel en efficiënt in de clients kunnen worden geladen;
- Ontwikkeling van generieke herkennings- en conversie-algoritmen die zowel huidige als toekomstige formaten (en individuele parameters) foutloos herkennen en realtime converteren. Ook denkt TCC aan de ontwikkeling van een controlemechanisme dat afwijkingen in structuur snel kan herkennen en vervuiling van data voorkomt.
De ontwikkeling van een ETL-layer en een loadbalancer zijn technisch nieuw voor TCC. Daarnaast heeft TCC geen ervaring met de verwerking van data door deze als blokken (images) te verwerken.
Programmeertalen, ontwikkelomgevingen en tools
Java, Python, HTML5 en JSON
Technische nieuwheid programmatuur
Bestaande libraries en technieken zijn niet in staat om enerzijds grootschalige data-analyses uit te voeren en anderzijds om de data efficiënt en snel uit te serveren naar duizenden clients. Een nieuw technisch werkingsprincipe in dit project is de automatische allocatie van requests naar een grote groep Docker containers d.m.v. een custom broker. Een ander nieuw technisch principe is de efficiënte verwerking van GEO-data d.m.v. imageprocessing-technieken waarbij blokken van data gelijktijdig worden verwerkt.
TCC is in deze fase nog onzeker of en in hoeverre bovenstaande oplossingsrichtingen een acceptabele responstijd mogelijk maken. TCC wil daarom als eerste een proof of concepts van bovengenoemde principes ontwikkelen en uitgebreide performance testen uitvoeren.