Design of Concurrent Software
There is a description in English
Det finns en utförligare artikel
som beskriver metodiken.
Kursen lär ut en direkt metodik att göra design av samtidig
programvara i Ada. Deltagarna lär sig att konstruera enkla,
eleganta och låsningsfria system.
Kursen introducerar en metodik kallad "Entety-life
modelling (ELM)", som används för att modellera samtidig
programvara och särskilt realtidssystem där programvara skall
kontrollera ett antal fysiska resurser. ELM baseras på en teori
om samtidighet som appliceras på såväl problemdomän som
programdomän.
Kursen är avsedd för de som konstruerar parallellt
exekverande system. Exemplen med tasks är från Ada 83 och Ada
95. Kunskaper i Ada tasking krävs men idéerna är användbara
även i system som inte skrivs i Ada. Kursen är användbar för
den som vill ha en djupare förståelse för tasking och
samtidighet.
Bo Sandén doktorerade vid KTH 1978 och är sedan 1987
professor vid George Mason University, USA. Hans idéer finns
presen-terade i CACM, ett antal böcker och vid åtskilliga
internationella konferenser. Som kursmaterial används bland
annat hans senaste bok "Software Systems Construction with
Examples in Ada", Prentice-Hall, 1994.
Bo I.
Sandén, Colorado Technical University, USA
- Inledning
- Metoder för konstruktion of samtidiga realtidssystem
[approaches for the design of concurrent real-time
systems]
- Metoder byggda på dataflöde [data flow]
- Metoder byggda på parallella processer i problemdomänen
[methods based on inherent concurrency in the problem]
- Modell för samtidighet i problemdomän och
programdomän[a concurrency model for both problem domain
and software domain]
- Ada-syntax (särskilt processer [tasking], skyddade
enheter och typer [protected units and types], o. dyl.)
- Övningar: guards, skyddade enheter/typer
- Ömsesidig uteslutning [mutual exclusion]
- Övning: Kontroll av elkraftsdistribution in slutet
system (ubåt)
- Typer av tillämpningsprogram [application patterns]:
Introduktion och översikt.
- Periodiska program [periodic applications]
- Övning: (avgörs senare)
- Program byggda på tidsstyrning [applications with
- delayable tasks] (Program som utnyttjar "delay"
för att förlägga verksamhet till bestämda tider eller
med bestämda intervall.)
- övning: Elkraftsdistribution. Trafiksignal.
- Program byggda på ändliga automater [finite-state
machine applications]
- Ändliga automater i allmänhet
- Övningar: Dörröppnare for garage, servo för öppning
av bilfönster
- Implementering av automater som processer [tasks]
ellerskyddade enheter.
- Ett antal mönster kan urskiljas för program av detta
slag, som typiskt innehåller:
- processer som periodiskt känner av storheter i det
omgivande systemet och/eller avbrottshanterare
- en representation av den ändliga automaten antingen som
process eller skyddad enhet
- eventuellt ett antal (periodiska) processer som påverkar
det omgivande systemet som en funktion av aktuellt
tillstånd
- Övning: någon av de ovannämnda: dörröppnare for
garage, servo för öppning av bilfönster
- Operatörsprocesser [user thread pattern]
- (Processer som speglar det sekventiella beteendet hos en
operatör i dialog med systemet.)
- Övning: Kassasystem för självbetjäningsbutik eller
varuhus
- Tillämpningar av löpandeband-modell [assembly-line
applications]
- Övning: (Avgörs senare)
- Situationer med slumpartad utgång [race conditions]
(Problem där systemet reagerar på flera olika sätt på
en given situation och de olika åtgärderna kan var i
konflikt med varandra. Exempel: Ett hisskontrollsystem
sänder mer än en hiss för att betjäna ett enda
passagerare.)
Teknik för att undvika sådana situationer.
Exempel: Kontrollsystem för hiss
- Resurskonflikter. Undvikande av låsning.
- Exempel: Kontrollsystem för fabrik med flexibel
tillverkning [flexible manufacturing system]
- Övning: Automatiserad rangerbangård
- Fortsättning av resurskonflikter, osv.
- Övriga ämnen:
- Dynamiskt omkonfigurerbara system
- Exempel: ``Patch bay" för MIDI {Musical instrument
digital interface}-system
- System med säkerhetskärna [safety kernel]
- (Ett program förses med en enkel kärnmodul, som är
oberoende av vilken styralgoritm som används och som ser
till att endast parametervärden inom vissa givna
säkerhetsmarginaler sänds ut till det kontrollerade,
fysiska systemet. Genom att t.ex. formellt bevisa en
sådan kärna är korrekt kan man förvissa sig om att
programvaran som helhet inte överskrider vissa
gränsvärden även vid programfel.)
- Exempel: Trafikljus
- (Säkerhetskärnan garanterar t.ex. att två
trafikriktningar på kollisionskurs inte får grönt
samtidigt, och att ett omslag från grönt till rött
alltid föregås av en viss minimitid med gult ljus,
osv.)
- Summering och tillbakablick
Gå till Kalendarium