Thales-projects

Title: Automatische afbeelding van software applicaties op hardware

Description (in Dutch):

Binnen de afdeling is een generieke middleware en service framework (O2) ontwikkeld. Hiermee kunnen software applicaties in XML beschreven worden. Deze XML modellen worden door O2 ingelezen en gevalideerd, waarna code (C en Java) gegenereerd wordt. Software applicaties bestaan uit elementaire componenten. Deze componenten kunnen afgebeeld worden op containers, die op hun beurt weer geplaatst kunnen worden op boarden of zelfs op een individuele core. Tevens worden de communicatie protocollen tussen de individuele componenten gedefinieerd.

De opdracht bestaat uit het automatiseren van deze afbeelding. Dit kan enerzijds door patronen te definiëren in bv de keuze van communicatieprotocollen (zoals: componenten die op dezelfde container afgebeeld zijn communiceren via shared memory). Anderzijds kan dat door bv executie informatie over de componenten te analyseren (denk hierbij aan: executietijden, geheugengebruik, shared resources). Studie materiaal uit een reeds gerealiseerde applicatie is beschikbaar.

De opdracht bestaat uit de volgende onderdelen:

1.

Studie naar de mogelijkheden in automatische afbeelding.

2.

Implementatie van de afbeeldingspatronen in O2.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: Ontwerpen flexibele GUI tbv smartphones en tablets

Description (in Dutch):

Binnen de afdeling wordt gebruik gemaakt van een standaard applicatie ten behoeve van onderhoud (maintenance) aan het RADAR systeem. Voor deze applicatie gelden de zgn GUI guidelines. Deze guidelines voorzien in een vaste scherm resolutie en gelden voor computerschermen. In de huidige wereld van tablet, notebook en smartphones is dit nogal beperkend. Vandaar dat we de guidelines meer willen ontkoppelen van scherm resolutie.

Deze opdracht heeft als doel om te onderzoeken

-

wat de impact is van het willen ondersteunen van diverse output devices (zoals smartphone en tablets)

-

welke functionaliteit (typisch) op dergelijke devices aangeboden zou moeten worden

-

welke concrete richtlijnen er gelden m.b.t. de grafische interface en het interactiemodel voor deze applicaties.

Uitgangspunt bij de opdracht zijn de huidige GUI guidelines plus het minimaliseren van de (programmeer technische) inspanning bij het uiteindelijk realiseren van een GUI. Uiteraard hoort hierbij het ontwerpen en ontwikkelen van diverse grafische elementen. Tenslotte zal een prototype gerealiseerd moeten worden die op markt-beschikbare devices uitgetest gaat worden.

Title: Radar display video enhancement

Description:

Display video is one of the outputs of the radar system and is used by the radar operator in the Command and Control center for helicopter guidance, situational awareness and target classification.

Current display video resembles on the phosphorous video displays with a rotating radial line updating ‘blips’ on the screen. This assignment studies the opportunities to dramatically improve the display of the video processing to evolve the display video of surveillance radars to a more modern look-and-feel. From a previous student assignment a functional working Matlab model is available.

Using this model the important aspects for this assignment are:

-

Workout the model for rotating radars as well as for the non-rotators.

-

Make a final end-product proposal (including hardware) using a GPU with either (hand-written) Cuda or from the MatLab model (using standard libs) – or executing C code on a general purpose processor (GPP).

-

Increase the performance of the processing based on the end-product proposal

-

Test demonstrator with live radar video data on existing systems

Title: Ontwikkelen een Zero-Application Generator

Description (in Dutch):

Voor elk programma dat gerealiseerd word binnen surface radar wordt er naar gestreefd om zo snel mogelijk een zogenaamde Zero-Application te maken die op het target systeem komt te draaien. Dit is een data driven applicatie die uit lege radar componenten bestaat die alleen data ontvangen en verder sturen. Een Zero-Application lijkt qua structuur en de data load die het genereert zo veel als mogelijk op de uiteindelijke applicatie. Op deze manier kan op vrij eenvoudige wijze gecontroleerd worden of de platformen en het netwerk de verwachtte data load kunnen verwerken.

De structuur van de applicatie en de componenten die daarin zitten worden tegenwoordig in een model beschreven. Uit dit model wordt code gegenereerd voor de uiteindelijke configuratie. Elk component in de Zero-Application stuurt met een configureerbare frequentie zijn uitvoer en de componenten die de data ontvangen controleren of ze alle berichten ontvangen hebben. Deze componenten zijn dusdanig identiek dat deze componenten uit het model gegenereerd zouden kunnen worden.

In deze opdracht moet een Zero-Application generator ontwikkeld worden, die op basis van een systeem model de bijbehorende Zero Componenten genereert en de daarbij behorende configuratie.

Activiteiten:

-

Vastleggen van de eisen die gesteld worden aan de Zero Application Generator.

-

Het ontwerpen en implementeren van de Zero Application Generator.

-

Testen en documenteren van de Zero Application Generator en overdragen aan de organisatie.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: Real time monitoring application

Description:

State of the art radar systems operate in complex peacekeeping operations and conflict situations. They have to detect and track in a large area and in various weather conditions, small agile targets between huge reflecting objects like drilling platforms and super tankers. Such systems are complex and for maintenance experts are required.

Our customers want to reduce the amount of maintenance, have 24/7 monitoring and maintenance facilities and the maintenance should be less complex to perform. In this assignment a web based real time monitoring application has to redesigned and implemented in Java. The monitoring application should be based on modern framework.

The students take part of a larger team that covers the complete problem.

Title: Realisatie van een Document Generator

Description (in Dutch):

De afgelopen jaren is er veel effort gestoken om het maken van een software design in modellen mogelijk te maken, wat voor een groot deel gerealiseerd is. Uit deze modellen wordt het merendeel van de code, de configuratie en de bouwomgeving gegenereerd, maar de vereiste design documentatie moet nog steeds met de hand gemaakt worden.

Deze opdracht omvat het realiseren van een document generator om het handmatig maken van het software design voor documentatie en overdracht overbodig te maken.

Title: VHDL code generation for interfaces

Description:

In the current MDA approach messages are being defined once in UML; both functional and their physical layout. The physical layout is an extension of the functional message and includes scaling (in both size and value). From this definition all (de)serialization code including documentation is being generated.

Code (either C, C++, Java or Simulink) is being generated from this single definition and used to exchange messages on the different platforms. Since a lot of information is finally ending in FPGA an extension to VHDL code generation makes sense.

In the world some initiatives are known in this field (the OMG is working on this area).

The work is broken down into the following actions:

-

Market survey on existing VHDL interface code generation solutions and studies

-

Requirement analysis

-

Select candidates for benchmark based on requirements

-

Implement proof-of-concept

-

Demonstration of working benchmark(s)

-

Final presentation of results

Title: Opzetten Multi-node test framework voor data distributie service

Description (in Dutch):

De radar software applicaties worden opgebouwd op een middleware laag. Deze laag zorgt voor de distributie van de data tussen de verschillende applicaties. Voor deze data distributie zijn verschillende protocollen geïmplementeerd in de middleware laag. Een van deze protocollen is een publish/subscribe protocol. Dit protocol is data georiënteerd en zorgt voor een goede ontkoppeling van de applicaties. Er is geen harde koppeling tussen zenders en ontvangers. Daarnaast is het met onze implementatie mogelijk om de kwaliteit van de data distributie te bepalen en zorgt het voor automatische detectie van ontvangers en zenders op de verschillende nodes. Deze functionaliteit wordt ook wel Data Distributie Service (DDS) genoemd.

Voor deze implementatie is nog geen test framework beschikbaar. De meeste testen vinden nu plaats met behulp van applicaties. Het idee is om een test framework op te zetten waarmee de standaard functionaliteit van de DDS getest kan worden. Dit framework moet de DDS op meerdere hardware nodes kunnen testen.

De opdracht bestaat uit:

-

Onderzoek multi-node test framework.

-

In kaart brengen functionaliteit DDS.

-

Implementatie test framework op één node.

-

Implementatie test framework op meerdere nodes.

Title: Onderzoek hoe Amdatu gekoppeld kan worden aan Eucalyptus

Description (in Dutch):

Een groot deel van onze processing kabinetten bestaat uit COTS boards. We willen hierop een private Cloud omgeving realiseren. Dit wordt waarschijnlijk Eucalyptus (afhankelijk van de huidige afstudeeropdrachten). Dit biedt een IaaS (Infra structure as a Service) oplossing. Echter, we willen voor onze middleware laag een PaaS (Platform as a Service) oplossing. De open-source oplossing Amdatu lijkt hiervoor een interessante kandidaat.

De opdracht bestaat uit de volgende onderdelen:

1.

Onderzoek (en eventueel nog realiseren van) een Eucalyptus Cloud omgeving.

2.

Onderzoek Amdatu.

3.

Realiseer een Amdatu oplossing boven op Eucalyptus.

4.

Vergelijk de gerealiseerde oplossing met andere PaaS oplossingen.

5.

Indien nog tijd beschikbaar: realiseer een “C” programming interface naar Amdatu op basis van de open-source Celix oplossing.

Deze opdracht kan eventueel gesplitst worden in twee opdrachten.

Title: Onderzoek de consequenties van gebruik Linux op een ARM

Description (in Dutch):

Voor een development board met een dual-core ARM Cortex A9 processor moet een Linux platform ontwikkeld worden.

-

Onderzoek de boot mogelijkheden van de ARM processoren.

-

Gebruik de WindRiver bouwomgeving om een Linux kernel een een filesysteem te bouwen voor deze processor.

-

Onderzoek de benodigde resources (Flash en RAM) welke nodig zijn in combinatie met deze Linux omgeving

-

Onderzoek de performance van de processor op basis van de benchmark die binnen TU-PRO ook voor andere boards wordt gebruikt

Title: Ontwikkel regressietesten voor de Linux platformen

Description (in Dutch):

Op dit moment is een zogenaamde productietester applicatie gerealiseerd. Deze bestaat uit een JAVA GUI op een test PC en een bibliotheek plus applicatie op de target.

De opdracht omvat de volgende stappen:

-

Voeg deze bibliotheek toe aan de Linux platform bouwomgeving

-

Ontwikkel een applicatie (herbruikbaar applicatie framework) waarmee regressietesten kunnen worden uitgevoerd op een Linux omgeving

-

Implementeer regressietesten voor een Linux omgeving

Title: Uitbreiden test framework

Description (in Dutch):

Binnen de afdeling is een generieke middleware en service framework (O2) ontwikkeld. Hiermee kunnen software applicaties in XML beschreven worden. Deze XML modellen worden door O2 ingelezen en gevalideerd, waarna code (C en Java) gegenereerd wordt. Deze code is gebaseerd op het component container model. De componenten bevatten de applicatie code en de containers zorgen voor de verbinding met het O2 framework.

Vanuit deze XML modellen genereren we ook een test framework. Voor het testen van componenten word dit (Java) test framework gebruikt dat op zijn beurt weer gebruik maakt van Mockito. Dit test framework bied veel mogelijkheden waarvan nog niet alle gerealiseerd zijn. De opdracht is dan ook om een aantal toevoegingen te maken voor dit test framework.

De opdracht bestaat uit het aanpassen van het bestaande O2 test framwork:

-

Automatisch starten en stoppen van het test framework na uitvoeren van alle testen.

-

Generieke start/stop scripts maken voor het test framework.

-

Toevoegen mock objecten voor notificaties, alarms, recording points en parameters.

-

Toevoegen automatische object creatie en verificatie code (via Java reflectie).

-

Uitvoeren van testen op target.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: Ontwikkelen een Instantiation Editor

Description (in Dutch):

De systemen waar de processing software op gedraaid wordt zijn groot en complex: meerdere kabinetten per systeem, waarbij elk kabinet weer opgebouwd is uit netwerk switches, racks en computer boards.

Het beschrijven van de configuratie van een compleet systeem is een arbeidsintensief en foutgevoelig proces: welke software draait er en op welke node, welke middleware wordt er gebruikt voor data transport en hoe moet deze geconfigureerd worden, welke configuratie wordt er precies aan de software doorgegeven, etc. En wanneer het systeem eenmaal echt opgestart wordt, dan haalt de werkelijkheid de tekentafel meestal in en zal de configuratie nog meerdere malen aangepast en bijgesteld moeten worden.

In deze opdracht moet een Instantiation Editor ontwikkeld worden, waarmee een beschrijving van de configuratie van een compleet systeem gemaakt kan worden; welke software en hardware componenten zitten in het systeem, op welke hardware draait de software, welke protocollen worden er gebruikt, wat zijn de waardes van de parameters van het systeem, etc.

Met deze editor moet niet alleen de configuratie gemaakt kunnen worden, hij moet ook uit een draaiend systeem de configuratie kunnen lezen en deze weer kunnen geven en daar wijzigingen op door kunnen voeren.

Activiteiten:

-

Vastleggen van de eisen die gesteld worden aan de Instantiation Editor.

-

Het ontwerpen en implementeren van de Instantiation Editor.

-

Testen en documenteren van de Instantiation Editor en overdragen aan de organisatie.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: Ontwikkelen een Network Configuration Editor

Description (in Dutch):

De systemen waar de processing software op gedraaid wordt zijn groot en complex: meerdere kabinetten per systeem, waarbij elk kabinet weer opgebouwd is uit netwerk switches, racks en computer boards.

Het beschrijven van een netwerk configuratie voor deze systemen is een arbeidsintensief en foutgevoelig proces. Daarnaast moet de informatie door meerdere partijen gebruikt worden en wil elk van die partijen de informatie het liefst net even anders aangeboden krijgen (niet geheel zonder reden).

In deze opdracht moet een Network Configuration Editor ontwikkeld worden, waarmee een beschrijving van de netwerk configuratie van een compleet systeem gemaakt kan worden; welke componenten zitten in het systeem, hoe loopt de bekabeling en wat is de addressering (ip-adressen, hostnames, v-lans, etc.). De configuratie moet door middel van transformatie en generatie geschikt gemaakt kunnen worden voor de verschillende partijen die van deze informatie gebruik moeten maken.

Activiteiten:

-

Vastleggen van de eisen die gesteld worden aan de Network Configuration Editor.

-

Het ontwerpen en implementeren van de Network Configuration Editor.

-

Testen en documenteren van de Network Configuration Editor en overdragen aan de organisatie.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: Supporting Software

Description (in Dutch):

Om software goed te kunnen ontwerpen en ontwikkelen is een bouwwerk aan supporting software nodig: Software die het design ondersteund, software die het bouwen ondersteunt en generieke software libraries en services die runtime gebruikt kunnen worden door applicaties en om de werking van het systeem te kunnen controleren.

In deze opdracht wordt niet aan één bepaalde opdracht gewerkt, maar werkt je als stagiair mee in het team dat werkt aan deze ondersteunende software. De opdracht wordt uiteindelijke bepaalt door wat op het moment het meest gewenst is en wordt samen met de rest van het team ontwikkeld. De werkwijze van het team is scrum, zodat in kleine iteraties steeds gewerkt wordt aan een werkend product.

Activiteiten:

-

Meedraaien in het scrum team dat werkt aan de software waarmee de software functionaliteit van de radar ontworpen en ontwikkeld wordt.

Title: VSIPL++ Performance Benchmarking

Description (in Dutch):

De doelstelling van de opdracht is om de bestaande functionele keten te implementeren met behulp van de middleware library VSIPL++ en hiermee performance benchmarks op multi-core GP processoren en Graphical Processing Unit (GPU) en deze resultaten te relateren aan de radar systeem. De VSIPL++ middleware library bevat signal processing functies op hetzelfde abstractie niveau als Matlab en maakt intern gebruik van commerciële geoptimaliseerde libraries voor GP processoren (Intel MKL) en GPU (CUDA).

Tijdens de performance benchmarks zullen o.a. de volgende items (per deel functie) in kaart worden gebracht: processor load(s), memory usage, throughput/latency, etc.

Het programmeren vindt plaats in C++ met gebruik van templates, VSIPL++ library en eventueel CUDA voor GPU algoritmes. De opdracht resulteert in een werkende demonstrator, rapportage in de vorm van een verslag, en presentatie/demonstratie van de resultaten aan de (interne) doelgroep.

Title: Radar video enhancement

Description (in Dutch):

Display video is one of the outputs of the radar system and is used by the radar operator in the Command and Control center for helicopter guidance, situational awareness and target classification.

Current display video resembles on the phosphorous video displays with a rotating radial line updating ‘blips’ on the screen. This assignment studies the opportunities to dramatically improve the display of the video processing to evolve the display video of surveillance radars to a more modern look-and-feel.

Important aspects for this assignment are:

-

Make an inventory on the current shortcomings of RADAR video display, also w.r.t. the competitors.

-

Define the necessary improvements and make a proposal for the next generation of display video for the rotating radars as well as for the non-rotators.

-

Develop demonstrator (in Matlab).

-

Test demonstrator with radar video data recordings of existing systems.

-

Realize final solution.

Title: Configuratie onafhankelijke code generatie

Description (in Dutch):

Binnen de afdeling is een generieke middleware en service framework (O2) ontwikkeld. Hiermee kunnen software applicaties in XML beschreven worden. Deze XML modellen worden door O2 ingelezen en gevalideerd, waarna code (C en Java) gegenereerd wordt. Deze code is gebaseerd op het component container model. De componenten bevatten de applicatie code en de containers zorgen voor de verbinding met het O2 framework

Op dit moment word de systeem configuratie meegenomen in het code generatie proces. Dit zorgt ervoor dat voor configuratie wijzigingen steeds opnieuw code gegenereerd moet worden. Ook is het nu heel moeilijk om dynamisch componenten te instantiëren. Om het ontwikkelproces te versnellen en om dynamisch componenten te kunnen instantiëren willen we de configuratie informatie uit de code halen. Om dit mogelijk te maken zal de code generatie aangepast moeten worden.

Activiteiten:

-

Het aanpassen van de code van de laucher (deze component leest de configuratie in en start op basis van deze informatie alle component instanties). Ook zal hij de component instantiaties configureren.

-

Het aanpassen van de component/container code. Alle configuratie informatie zal uit de code gehaald moeten worden.

-

Het toevoegen van een configuratie manager die op basis van de configuratie lauchers start.

-

Het aanpassen van de gegenereerde run scripts zodat op alle nodes initieel alleen de configuratie managers gestart worden.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: Onderzoek de software karakteristieken, hardware platformen en programmeer talen

Description (in Dutch):

Radar ontwikkeling kan opgesplitst worden in verschillende domeinen. Elk van deze domeinen heeft bepaalde software en hardware eisen.

Activiteiten:

-

Onderzoek voor elk domein de software karakteristieken. Data gebruik, parallellisme, rekenintensiteit, applicatie/algoritmiek samenhang. Onderzoek hierbij de het huidige gebruik van hardware platformen

-

Onderzoek voor elk domein de toekomstige software karakteristieken op basis van de domein roadmaps. Kijk op basis van deze toekomstige karakteristieken welke hardware platformen het hiervoor in aanmerkingen komen.

-

Bepaal op basis van deze software karakteristieken en hardware platformen welke programmeer talen het meest geschikt zijn per domein.

-

Bepaal op basis van deze software karakteristieken en hardware platformen welke programmeer patronen en API’s geschikt zijn. Denk hierbij aan parallellisme en data gebruik.

Als afsluiting zal een presentatie en demonstratie plaats moeten vinden.

Title: OSGi Configuration Admin in Apache Celix

Description:

To be able to use more existing (open-source) technologies Thales wants to use more and more generic software technologies. Apache Celix is chosen as basis for this. Celix is an implementation of the OSGi specification adapted to C. Celix tries to follow the OSGi specification as close as possible, providing implementations of the most used services.

The Configuration Admin Service is an OSGi specification for setting and updating configuration information of deployed bundles. This assignment will focus on the implementation of the Configuration Admin in Celix. Celix is an implementation of the OSGi specification in C, adapted where needed. The implementation of the Configuration Admin for Celix should follow the OSGi specification as close as possible, the specification can be found in chapter 104 of the compendium specification.

Important aspects for this assignment are:

-

Keep configuration format the same as for Java OSGi.

-

Implement the Configuration Admin.

-

Support the ManagedService interface.

-

Support the ManagedServiceFactory interface.

Additionally:

-

Implement a FileInstall component for watching and processing configuration files on disk.

Title: OSGi Deployment Admin in Apache Celix

Description (in Dutch):

To be able to use more existing (open-source) technologies Thales wants to use more and more generic software technologies. Apache Celix is chosen as basis for this. Celix is an implementation of the OSGi specification adapted to C. Celix tries to follow the OSGi specification as close as possible, providing implementations of the most used services.

The OSGi deployment admin is a specification for the deployment and management of the life cycle of bundles. The deployment admin is detailed in chapter 114 of the OSGi Compendium specification.

This assignment will focus on the implementation of the Deployment Admin for Apache Celix. Celix is an implementation of the OSGi specification adapted to C. To be able to remotely manage the deployment of bundles, a repository and a management client are needed. One such client is Apache ACE. While targeted primarily OSGi based systems, it can easily be used for other systems.

Important aspects for the implementation of the Deployment Admin are:

-

Implementation of the Deployment Admin following the OSGi specification|

-

Implementation of an endpoint for Apache ACE

-

Support for Resource Processors

Title: OSGi Event Admin in Apache Celix

Description:

To be able to use more existing (open-source) technologies Thales wants to use more and more generic software technologies. Apache Celix is chosen as basis for this. Celix is an implementation of the OSGi specification adapted to C. Celix tries to follow the OSGi specification as close as possible, providing implementations of the most used services.

The Event Admin is a specification for the publish/subscribe pattern in OSGi. This assignment will focus on implementing this specification in Celix. The implementation should follow the specification from the OSGi Compendium document as close as possible.

The Event Admin consists out of two parts:

-

The Event Admin itself;
The admin is used to send events to a topic. An event exists out of one or more properties.

-

The Event Handler;
An Event Handler subscribes to one or more topics, and receives the events being send to the event admin.
The Event Handler is an service which must be realized by the component interested in the events from a certain topic.

Title: OSGi Remote Services in Apache Celix

Description:

Our customers want to reduce the amount of maintenance, have 24/7 monitoring and maintenance facilities and the maintenance should be less complex to perform. In order to reduce the amount of maintenance, dynamic (re) configuration could be of great interest. One important aspect in a (re) configurable environment is transparent communication between components.

Since Thales wants to use more and more generic software technologies, Apache Celix is chosen as basis for a dynamic solution. Celix is an implementation of the OSGi specification adapted to C. For remote communication between Celix frameworks Thales is looking at the Remote Services specification of OSGi (chapter 13 of the Compendium).
Remote services are needed to be able to use Celix in a distributed environment, but they also make it possible to have interaction with non-Celix applications, for example OSGi implementations in Java.
This assignment will focus on:

-

How the specification can be mapped and used within Celix.

-

Research and select a usable (de) serialization implementation, for use in Java and C.

-

Research and select a usable protocol for communication, for use in Java and C.

-

Research how services are discovered over the network.

-

Implement/use the selected communication and (de) serialization protocols following the Remote Services specification, for use in Java and C.

-

Implement code generator for C endpoints.