Eindwerk Bachelor Informatica



Vergelijkbare documenten
Zelftest Java concepten

Programmeren in C ++ met wxwidgets les 5

DNAQL Simulator. Presentatie Bachelorproef. Tom Desair. Universiteit Hasselt. Academiejaar

Proces to model en model to execute

Veel (onderzoeks)simulatoren voor verkeer en transport

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

OpenChange. Jelmer Vernooij. LinuxWorld 2009, Utrecht 4 november OpenChange. MAPI MAPI/RPC OpenChange Huidige status Toekomst.

ARE methodiek Het ontwikkelen van Informatie Elementen

Inleiding C++ Coding Conventions

Opleidingsonderdelen Telecommunicatie Bachelor Informatica. C. Blondia

Uitdagingen performancetesten in een Agile omgeving Best Practices & Demo

Erik Poll Martijn Warnier.

Kleine cursus PHP5. Auteur: Raymond Moesker

ECM Crowd Simulation in Unity

Informatica aan de Universiteit Antwerpen

Zelftest Informatica-terminologie

Programmeertechnieken Week 7

Vraag 1. Vraag 1a TERUGKOPPELING PROEFTENTAMEN. Software architecture

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Inhoud Inhoud. Over dit boek 7. 1 Eclipse IDE (Integrated Development Environment) 9. 2 Functionele specificatie 13

Cover Page. The handle holds various files of this Leiden University dissertation.

UML is een visuele taal om processen, software en systemen te kunnen modeleren.

De ins en outs van OpenERP! OpenERP wanneer en hoe toepasbaar en welke aandachtspunten bij invoering

In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen.

Variability in Multi-tenant SaaS Applications:

Workshop 12 ART-DECOR en Acute overdracht. Michael Tan Kai Heitmann Maarten Ligtvoet

Inhoudsopgave. Hoofdstuk 1.RMI...2

Aanbesteding implementatie, beheer en onderhoud van Microsoft Dynamics 365 for Operations. Bijlage 5: Beschrijving toekomstige ESB

Software Test Documentation

Specialisatie RTES - Project FunnyScreens. Installatie en gebruik van JUnit

Analyse Programmeertalen

High Performance Computing

Raspberry Pi Webhosting Datacenter

Gevorderde Programmeertechnieken

APPENDIX 3. Visueel voetmodel ter simulatie van voetkinematica aan de hand van planetaire drukdata (Friso Hagman)

Is APEX a worthy substitute for Oracle Forms?

Adaptive Components & Dynamo

Temperatuur logger synchronisatie

Lab6: Implementatie video timing generator

Artikel / Parametrisch ontwerpen en rekenen. Een hype of de toekomst?

Indoor Navigation System

ES1 Project 1: Microcontrollers

LES 3: XAMPP OF MAMP. Lesoverzicht:

Uitgebreid voorstel Masterproef Informatica. Titel van het project: Rolnummerherkenning van op een kraan

Perceptive Process. Technische Specificaties. Versie: 3.4.x

Opdrachtformulering (pagina 3 van 7)

Visie op de BasisSoftware. Next Generation Hydro-Software. SIMONA gebruikersdag 9 november 2010

1 Inleiding probleembeschrijving

Uitgebreid voorstel Masterproef Informatica. Titel van het project : Ontwikkeling van remote controlled Alert & Task Agent

Introductie. NAV performance. Derk Jan Oelemans. Manager Development, BI en E-Business Qurius Business Solutions

Base24 database suite

Programmeren met databanken volgens het lagenmodel in C#

Beheer van databanken

HTML. Media. Hans Roeyen V 3.0

Standard Parts Installatie Solid Edge ST3

slides2.pdf 2 nov

APEX en JasperReports

J2EE/.NET en de rol Applicatie Architectuur

Software Test Plan. Yannick Verschueren

Open Source Software. Bart van Dijk

Dynamiek met VO-Script

Geen webservice? Geen probleem!

Dicht het security gat - Microsoft SharePoint, OCS, en Exchange met Secure File Sharing Heeft uw organisatie ook een Dropbox probleem?

Programmeren: Visual Basic

Installatiegids Registratie Hardware specificaties

Inhoudsopgave. Hoofdstuk 1: Ant...4

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar

FACULTEIT DER LETTEREN RIJKSUNIVERSITEIT GRONINGEN. STUDIEHANDLEIDING Inleiding Programmeren II ( )

Automating Complex Workflows using Processing Modeler

Gevorderd Programmeren

Individuele opdracht - PENCIL - Kenny Goorts 26 mei, 2012

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Samengaan van Geo-informatie en Service Oriëntatie

VERENIGINGSWIJZER.NL PROJECTPLAN

studie waarmee we de principes van de analyse willen demonstreren. Een volledig beschrijving van de algoritmen en de resultaten zijn te vinden in

ADVANCED KNOWLEDGE SERVICES (AKS )

Transcriptie:

Eindwerk Bachelor Informatica Opdracht Opleiding Bachelor of Science in Computer Science van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2015-2016, VERSIE 2, 3 november2015. J. Broeckhove, S. Stijven, Dirk De Vos Onderzoeksteam Computationeel Modelleren en Programmeren

Inhoudsopgave 1 Projectopdracht 2 1.1 Achtergrond................................ 2 1.2 Niet-functionele vereisten......................... 3 1.3 Functionele vereisten........................... 4

HOOFDSTUK 1 Projectopdracht 1.1 Achtergrond Simulatie is vandaag essentieel om systemen van realistische complexiteit te bestuderen en te evalueren. De kracht van simulatie volgt uit de voordelen die het biedt inzake kost, beschikbaarheid, reproduceerbaarheid, flexibiliteit en schaalbaarheid. Het belang van simulatie en de brede inzetbaarheid ervan heeft geleid tot een waaier aan tools, formalismen en software designs om simulatiemodellen te definiëren, te integreren, uit te voeren en hun output te analyseren. De studie van plantengroei is belangrijk vanuit strikt wetenschappelijk oogpunt, maar ook omwille van diverse redenen zoals landbouwrendement, biomassaproductie en zo meer. De figuur hieronder geeft aan welke rol modelleren en simuleren spelen in systeembiologie waar men die zeer complexe groei- en ontwikkelingsprocessen probeert te doorgronden. Er zijn meerdere simulatoren in de literatuur beschreven, telkens gekarakteriseerd door conceptuele verschillen zoals de resolutie van de biologische processen, de volledigheid, het plantenorgaan (blad, knop, wortel,...), maar ook door implementatieverschillen (taal, data formaten, simulatie mogelijkheden, performantie,...). In dit eindwerkproject zullen we voortbouwen op simpt. Bij de start van het project zal de code repository van simpt voor de project deelnemers beschikbaar zijn. Er zal ook uitleg gegeven worden over basisbegrippen en termen die van toepassing zijn zoals cell, node, wall segment, wall, mesh, leaf file en zo meer.

1.2. NIET-FUNCTIONELE VEREISTEN 3 Figuur 1.1: Systeembiologie cyclus. 1.2 Niet-functionele vereisten De structuur en organisatie van de projectdirectories moet in stand gehouden worden: er moet voortgebouwd worden op het huidige project. Dat geldt eveneens voor het build en documentatiesysteem. De draagbaarheid (Linux, Mac OS X, Windows) van het project mag niet in het gedrang komen. Zoek zelf naar mogelijkheden om periodisch op een Mac OS X en een Windows/MinGW systeem een test uit te voeren. Code moet geformatteerd worden in dezelfde stijl en met dezelfde naam conventies als de bestaande code. Er mogen enkel bijkomende afhankelijkheden (naast bestaande zoals Qt, headeronly Boost,... ) gecreëerd worden na voorafgaande goedkeuring van de opdrachtgever. Toevoeging van FOSS componenten in source vorm (zoals bijvoorbeeld gtest, TCLAP reeds gebruikt worden) kan. Meld dat dan in de LICENSE gerelateerde files van het project. De voertaal voor de code is C++ en waar mogelijk moeten C++11 taalconstructies gebruikt worden([1], [2]). Compiler afhankelijke dialectconstructies zijn niet toegelaten. Testing: unit tests dienen voorzien te worden, alsook scenario-gedreven testen

4 1.3. FUNCTIONELE VEREISTEN 1.3 Functionele vereisten 1.3.1 Opdracht: Model specifieke algoritmen afsplitsen naar plugins Het project bevat verschillende modellen die ieder hun eigen karakteristieken hebben. Zo zijn er erg eenvoudige modellen die als demo dienen maar ook modellen die erg complexe processen binnen de plant simuleren. Momenteel zijn al deze klassen (we noemen ze ook wel algoritmische componenten want het zijn van function object klassen) nog aanwezig in een monolithische simulator. Omwille van flexibiliteit in het werken met modellen is het beter dat ieder model in een aparte shared of dynamic link library gemaakt wordt. Hierbij kan van Qt plugins gebruikt gemaakt worden. Ook op niveau van de directory structuur en dus ook van het build systeem moeten modellen losser geïntegreerd zijn in het het geheel. Als architecturale stap: Maak gebruik van het Qt plugin systeem om op runtime een shared library te laden en gebruiken. Deze stap moet voor het Kerstreces voltooid zijn. 1.3.2 Opdracht: Protocol Buffers voor Attributes De geometrische beschrijvingsmethode van het plantenorgaan is hetzelfde voor alle modellen die gebruikt worden. Iedere model heeft een aantal attributen voor de Mesh, Cell, Wall, Node. Dat zijn bijvoorbeeld concentraties van chemicalieien of rekbaarheid van de wand enzomeer. Het aantal en de aard van deze attributen verschillen evenwel naargelang het model. In de huidige versie van de implementatie zijn die attributen niet modelspecifiek, m.a.w. alle modellen hebben dezelfde attributen. Dat betekent noodgedwongen dat alle modellen in hun klassen de atrributen hebben van alle andere modellen, al worden ze niet gebruikt in de simulatie. Dit is geen schaalbare aanpak. Het is onoverzichtelijk, niet efficiënt in geheugengebruik en veroorzaakt vele nodeloze problemen van achterwaartse compatibiliteit. Er bestaan een aantal open source libraries die gebruikt kunnen worden om dit probleem aan te pakken: Google Protocol Buffers, Apache Thrift en Cap'n Proto. Ze laten toe op basis van een meta-beschrijving de data content van klassen vast te leggen en dan, via een pre-compilatie stap, de code te genereren voor de klassen, inclusief i/o en serialisatie functionaliteit. Gebruikmakend van een van deze libraries kunnen de attributen van de Mesh, Cell, Wall en Node definieerbaar per model gemaakt worden. Dat betekent dat ieder model aparte klassen heeft en dus ook dat de simulator nu geparametrizeerd (aan de hand van templates) wordt door die klassen. Aan het build proces zal een pre-compilatie stap toegevoegd moeten worden waarin (met behulp van de hogervermelde library) code gegenereerd wordt voor deze attributen van Mesh, Cell, enz. ). Daarbij moet wellicht ook code gepatcht worden om de impact van te ondervangen (tenzij je alles met templates kan afhandelen). Denk bijvoorbeeld aan de tooltips

1.3. FUNCTIONELE VEREISTEN 5 van de visualisatie, of aan de SWIG wrappers voor de interoperabiliteit met Python en met Java. Er zal door deze ingrepen een omkering plaatsvinden van de relatie tussen executable, simulator en modellen. Momenteel bevat het simulator executable één exemplaar van het simulator object dat op zijn beurt vastgeknoopt is aan alle modellen. Hierna zal het executable meerdere instanties van de simulator bevatten, ieder geïnstantieerd voor een ander model en worden de model-specifieke algoritmen dynamisch geladen. Als architecturale stappen: de hogervermelde libraries onderzoeken en verduidelijken naar welke library jullie voorkeur gaat. In overleg met alle groepen zal er n library worden gekozen voor de uiteindelijke implementatie. ga na of de SWIG technologie overweg kan met getemplatiseerde C++ code en als dit problemen geeft of er alternatieven zijn voor de interoperabiliteit Deze stappen moeten voor het Kerstreces voltooid zijn zodat de implicaties voor de implementatie duidelijk zijn. 1.3.3 Opdracht: Parex verzamelen van resultaten Het framwework bevat de mogelijkheid om in parallel experimenten uit te voeren op verschillende servers. Dit is nodig als we parameter-sweeps willen doen om het gedrag van de modellen te onderzoeken in functie van bepaalde parameterwaarden. Het resultaat van deze experimenten blijft echter momenteel nog staan op de server waarop deze uitgevoerd is. Dit is erg onpraktisch, vooral als er gebruik gemaakt wordt van een groot aantal servers. Pas het Parex protocol aan zodat het mogelijk wordt om de workspaces met resultaten van de verschillende servers op te halen. Hiervoor mag je ook gebruik maken van bestaande file transfer protocollen en frameworks. Hou er rekening mee dat niet iedere server het zelfde besturingssysteem gebruikt en het dus moeilijk wordt om gebruik te maken van de ingebouwde file sharing functionaliteiten van het besturingssysteem. Je kan er vanuit gaan dat de Parex server en client op hetzelfde lokale netwerk aanwezig zijn en dus security geen punt is. 1.3.4 Optionele deelopdracht ivm Parex In het Parex protocol is de data-inhoud van de protocol boodschappen hard coded in diverse source. Ook hier (het is zelfs de originele bestaansreden van protobuf) kunnen tools zoals Google Protocol Buffers, Apache Thrift en Cap'n Proto gebruikt worden om de beschrijving van die data-inhoud naar een descriptief meta-niveau te tillen. Dat biedt naast performantievoordelen ok flexibiliteit in de (onvermijdelijke) evolutie van het protocol en en zijn software implementatie. 1.3.5 Opdracht: Redesign van GUI code In de huidige code is de GUI losgekoppeld van de simulator (vleaf shell versus sim shell). Deze afsplitsing is momenteel niet meer nodig en kan dus best weg-

gewerkt worden. Zorg ervoor dat de GUI functioneel equivalent blijft. Voor deze opdracht moet de compatibiliteit met Qt4 niet meer behouden blijven. Je kan daarom de volledige Qt5 verbeteringen gebruiken zoals lambda function callbacks. Een niet-functionele vereiste hierbij is als volgt. De GUI-code draagt de sporen van het feit dat ze ontwikkeld werd als tool i.p.v. als library met een geschikte API voor het werken met workspaces, projecten, sessie enzomeer. De test-code is daar een voorbeeld van. Een verbetering vestaat erin een duidelijke API te ontwikkelen, de bestaande code daarnaar te refactoren en de GUI van VLeag daarmee te implementeren. 1.3.6 Optionele deelopdracht ivm GUI Redesign Het huidige viewer systeem is hiërarchisch opgebouwd. Dit was nodig omdat in het verleden bepaalde viewers gebruikt maakten van andere viewers. In de huidige versie van de code is dit echter niet meer nodig en mag deze structuur vereenvoudigd worden. 1.3.7 Optionele opdracht: Logging Momenteel is de logging in de simulator nog volledig ad-hoc. Op verschillende plaatsen in de code staan cout en cerr statements, maar er is geen gestructureerd logging systeem. Maak gebruik van spdlog of g3log, twwe open source asynchrone logging frameworks, om logging beter te structureren. Zorg er zeker voor dat er verschillende niveaus van logging gehanteerd kunnen worden.

Bibliografie [1] B. Stroustrup, The C++ Programming Language, Fourth Edition C++11. Pearson Education, Inc., Upper Saddle River, New Jersey, 2013. [2] S. B. Lippman, J. Lajoie, and B. E. Moo, C++ Primer, Fifth Edition C++11. Addison Wesley, Inc., Upper Saddle River, New Jersey, 2013.