Studiewijzer thema Embedded Software Engineering.
© Harry Broeders.
onderwijseenheid: |
Embedded Software Engineering. |
code onderwijseenheid: |
ESWE1 |
code onderwijsdelen |
ESWE1C1, ESWE1P1, ESWE1C2, ESWE1C3, ESWE1P2 |
studiebelasting: |
8 CP = 224 SBU |
semester / kwartaal: |
EH4C&D / 1+2 |
contacturen: |
kwartaal 1: 3 uur/week college en 2 uur/week practicum
kwartaal 2: 2 uur/week college en 1 uur/week practicum |
toetsing: |
3 tentamens (cijfers) en 2 practicumbeoordelingen (O/V) |
benodigde voorkennis: |
EH3C&D. |
verantwoordelijke docent: |
Harry Broeders |
Inleiding
In het thema ESWE is de aandacht gericht op het ontwikkelen van software
voor embedded, real-time en/of distributed systemen met behulp van moderne
technieken en tools.
The importance of embedded systems is undisputed. Their market size is about
100 times the desktop market. Hardly any new product reaches the market without
embedded systems anymore. The number of embedded systems in a product ranges
from one to tens in consumer products and to hundreds in large professional
systems. An average household employs easily 50 embedded systems nowadays.
This will grow at least one order of magnitude in this decade. Professional
systems will see a similar growth. Besides, many distributed systems will
rely on embedded systems for an ever larger part of their functions. The
strong increasing penetration of embedded systems in products and services
creates huge opportunities for all kinds of enterprises and institutions.
Bron:
http://www.stw.nl/NR/rdonlyres/3E59AA43-68B1-4E83-BA95-20376EB00560/0/ESRversion1.pdf
Onderdelen
onderdeel |
code |
kwartaal |
CP |
SBU |
docent |
toets |
resultaat |
Real-time Embedded Programming |
ESWE1C1 |
1 |
2 |
56 |
Harry Broeders |
schriftelijke toets |
cijfer telt voor 35% mee |
Distributed Programming |
ESWE1C2 |
1 |
1,5 |
42 |
John Visser |
schriftelijke toets |
cijfer telt voor 30% mee |
Practicum Distributed and Real-time
Programming |
ESWE1P1 |
1 |
1,5 |
42 |
Harry Broeders |
practicumbeoordeling |
O/V moet voldoende zijn |
Software Engineering |
ESWE1C3 |
2 |
2 |
56 |
Cobie van der Hoek |
schriftelijke toets |
cijfer telt voor 35% mee |
Practicum Software Engineering |
ESWE1P2 |
2 |
1 |
28 |
Cobie van der Hoek |
practicumbeoordeling |
O/V moet voldoende zijn |
Bij het onderwijsdeel Real-Time Embedded Programming wordt ingegaan op de
implementatie van software voor Real-Time Embedded systemen. Bij de implementatie
kun je gebruik maken van speciale "real-time" programmeertalen of van "gewone"
programmeertalen in combinatie met een "real-time" operating system. Als
voorbeeld van een real-time programmeertaal wordt RT-Java gebruikt en als
voorbeeld van een real-time OS wordt QNX gebruikt. QNX is compatible met
de POSIX standaard voor real-time operating systems. De volgende onderwerpen
komen aan de orde:
-
Introductie real-time systemen. Verschillende definities van real-time systemen,
de karakteristieke eigenschappen van real-time systemen en enkele voorbeelden
van real-time systemen.
-
Concurrent programming. Processes en threads. Wat zijn de verschillen? Wanneer
gebruik je ze? Hoe gebruik je ze in POSIX en in RT-Java.
-
Scheduling. Verschil tussen scheduling in general purpose en in real-time
OS. Verschillende vormen van real-time scheduling.
-
Synchronisatie en communicatie via gemeenschappelijk geheugen. Mutex, semaphores,
conditional critical regions, monitors, protected objects en synchronised
class methods.
-
Synchronisatie en communicatie via berichten. POSIX messages, distributed
messages bij QNX en remote procedure calls.
-
Low level programming. Device drivers en memory management.
-
Tijd. Time of day, tijdvertragingen, tijdsynchronisatie.
-
Veiligheid en betrouwbaarheid. Fout preventie, fout tolerantie, redundancy,
N versie programmeren, recovery blocks, exceptions en het afvangen daarvan,
atomic actions, meten en voorspellen van betrouwbaarheid.
Bij het onderwijsdeel Distributed Programming wordt ingegaan op de problemen
die ontstaan als we een applicatie willen distribueren over verschillende
machines (hardware nodes). Uiteraard worden ook de mogelijke oplossingen
besproken. Denk daarbij aan de volgende onderwerpen:
-
Eigenschappen van de verschillende vormen van middleware: Verbergen
Heterogeniteit, Openess, Security, Scalability, Failure handling, Concurrency,
Transparency etc.
-
Verschillende architecturen: Client-Server, Peer to peer etc.
-
Verschillende implementaties van middleware: RPC, RMI, CORBA, etc.
-
RPC (Remote Precedure Calls) Met behulp van RPC kan een programma dat bestaat
uit meerdere functies verdeeld worden over verschillende machines.
-
RMI (Remote Method Invocation) Met behulp van RMI kan een Java programma
dat bestaat uit meerdere objecten verdeeld worden over verschillende machines.
-
CORBA (Common Object Request Broker Architecture) Met behulp van CORBA kan
een programma dat bestaat uit meerdere objecten die in verschillende talen
ontwikkeld zijn verdeeld worden over verschillende machines.
-
real-time CORBA.
Bij het onderwijsdeel Software Engeneering wordt het software engineering
traject van embedded software in meer detail bekeken. Welke trajecten en
werkwijzen zijn er mogelijk, welke fasen zijn er dan te onderscheiden en
hoe kan zoiets dan worden aangepakt? Twee belangrijke fasen worden er uitgelicht
en uitgebreider bekeken: de analyse-fase en de design-fase. Onderwerp en
de analyse-fase zijn bijvoorbeeld: requirement-analyse, systeem-analyse en
object-analyse. Onderwerpen in de design-fase zijn: architectuur-design en
detailed design. Om de modellen in beide fases te ontwerpen, maken we gebruik
van Realtime UML. Hiermee wordt het mogelijk om timing gerelateerde zaken
te modelleren. Waar mogelijk zal ook worden bekeken waar standaard oplossingen
te gebruiken zijn (design patterns). De volgende onderwerpen komen aan de
orde:
-
Het gebruik van UML voor real-time systemen.
-
Veel voorkomende problemen bij het ontwikkelen van real-time systemen en
de oplossingen daarvoor: Real-time Design Patterns.
-
Testen van real-time systemen.
Globale leerdoelen
Na afloop van deze module:
-
Ken je de verschillende definities van real-time systemen, de karakteristieke
eigenschappen van real-time systemen en enkele voorbeelden van real-time
systemen.
-
Ken je het verschil tussen processes en threads, weet je wanneer ze te gebruiken
en kun je ze gebruiken zowel in POSIX als in RT-Java.
-
Ken je de verschillen tussen scheduling in een general purpose en in een
real-time OS.
-
Ben je bekend met verschillende vormen van real-time scheduling.
-
Ken je de voor- en nadelen van de synchronisatie via gemeenschappelijk geheugen
versus synchronisatie via berichten.
-
Kun je verschillende vormen van synchronisatie en communicatie via
gemeenschappelijk geheugen toepassen, te weten: Mutex, semaphores, conditional
critical regions, monitors, protected objects en synchronised class methods.
-
Kun je verschillende vormen van synchronisatie en communicatie via berichten
toepassen, te weten: POSIX messages, distributed messages bij QNX en remote
procedure calls.
-
Kun je tijdvertragingen en tijdsynchronisatie toepassen in real-time systemen.
-
Ben je bekend met de eigenschappen van de verschillende vormen van middleware:
Verbergen Heterogeniteit, Openess, Security, Scalability, Failure handling,
Concurrency, Transparency etc.
-
Kun je een overzicht geven van de verschillende architecturen: Client-Server,
Peer to peer etc.
-
Ben je bekend met de verschillende implementaties van middleware: RPC, RMI,
CORBA, etc.
-
Ben je bekend met de toepassing van RPC (Remote Precedure Calls) in distributed
systemen.
-
Heb je enige ervaring met het toepassen van RMI (Remote Method Invocation)
om een Java programma dat bestaat uit meerdere objecten te verdelen over
verschillende machines.
-
Heb je kennis gemaakt met CORBA (Common Object Request Broker Architecture)
waarmee een programma dat bestaat uit meerdere objecten die in verschillende
talen ontwikkeld zijn verdeeld kan worden over verschillende machines.
-
Ben je bekend met de specifieke eigenschappen van real-time CORBA.
-
Heb je inzicht in het ontwerpproces van embedded software en wel op een zodanige
manier dat het geheel schaalbaar is naar grotere projecten met meerdere
ontwerpers/ontwikkelaars.
-
Kun je de benodigde aspecten van real-time UML toepassen en gebruiken.
-
Heb je inzicht in de fasering van een embedded software project en kun je
de verschillende handelingen plaatsen in de juiste fase.
-
Heb je enige ervaring in het modeleren (in UML) van een real-time systeem.
-
Ken je veel voorkomende problemen bij het ontwikkelen van real-time systemen
en de oplossingen daarvoor: Real-time Design Patterns.
-
Ben je bekend met de specifieke problemen bij het testen van real-time systemen.
Literatuur
Zie studiewijzers van de afzonderlijke onderwijsdelen.
Toetsing en beoordeling.
Zie studiewijzers van de afzonderlijke onderwijsdelen.