Das Raven MDA Profil für die Modellierung sicherheitskritischer Systeme - Klaus Wachsmuth
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
80/XQG0'$ • Modelle nehmen zentrale Stellung im Entwicklungsprozess ein • Erstellen von Platform Independant Model‘s (PIM) – Verwendung von UML Notation – Fokus liegt auf der Domäne PIM • Abbilden auf Platform Specific Model‘s (PSM) – Erweiterung des PIM durch die technische Infrastruktur Transformator – Durch Transformatoren • Maximizing automation of the mapping step is the goal (MDA Paper, OMG) PSM – Von Hand • Source Code ist ein PSM
=LHOLVWHLQODXIIlKLJHV6\VWHP • Es muß Code erzeugt werden – Ada, Java, C++, C, .. • Es muß getestet werden – Testfälle, Test Scripte, ... • Es muß dokumentiert werden – HTML, XML, RTF, ... => Umsetzung der Modelle in die Implementierung Konsistenz der verschiedenen Entwicklungsstufen
0'$XQG3URILOH • Ideal für MDA ist die Bereitstellung semantisch eindeutiger UML Entwurfselemente mit hohem Abstraktionsgrad durch UML Profilen • Profil – Definiert einfache Entwurfselemente und komplexe Entwurfsmuster – Definiert Abbildungsvorschriften von PIM nach PSM – Nutzen der Erweiterungsmechanismen der UML – Vordefinierte Stereotypes, Constraints, Tagged Values – Profile müssen dokumentiert sein • Einfluss von Profilen – Auf die Modellierung – Auf die Transformation der Modelle • Profile sind domainspezifisch
(LQDXI0'$EDVLHUHQGHU(QWZLFNOXQJVSUR]HVV +LJKOHYHO )DFKOLFKH$VSHNWH PIM 80/0RGHO 7HFKQLVFKH$VSHNWH 7UDQVIRUPDWLRQUXOHV 7UDQVIRUPDWLRQ 7UDQVIRUPDWLRQ $EELOGXQJ80/!$GD (QJLQH (QJLQH 'HVLJQ3DWWHUQV 570HFKDQLVPXV PSM $GD5DYHQ
20*3URILOIU57XQG6DIHW\ OMG Standard „Profile for Schedulability, Performance, and Time Specification“ (SPT) • Niedrige Abstraktionsebene – Es müssen viele technische Details modelliert werden – keine vordefinierten Kommunikationsmuster • MDA Ziel: – möglichst viel transformieren – wiederverwendbare Muster bereitstellen Höhere Entwurfselemente bereitstellen und deren Semantik über Stereotypen definieren
5DYHQVFDU3URILO • Industriestandard für sicherheitskritische Realzeitsysteme mit Ada Idee des Profils: • Natürliche Parallelität der Anwendung durch Strukturierung einer Applikation in eine Menge unabhängiger Tasks realisieren – zyklische – sporadische – kooperierende • die über Ereignisse und Puffer miteinander kommunizieren • Einschränkung auf eine zertifizierbare Sprachuntermenge
5HDOWLPH6LWXDWLRQ Menge von konzeptuellen oder physischen parallelen Tasks •Tasks haben Hard- oder Soft-Deadlines •Tasks mit Hard-Deadlines sind periodisch Schedulability Aanalyse: Könnnen Tasks so ausgeführt werden, dass alle Deadlines getroffen werden? Statische und dynamische SchedulabilityAlgorithmen, z.B. •Rate Monotonic Scheduling (statische Prioritäten) •Earliest Deadline First (Dynamische priorities)
5HDOWLPH6LWXDWLRQ 7DVN6FKHGXOLQJ $QDO\VLV 3DUDOOHOWDVNV 7DVN$ 3HULRG'XUDWLRQ 7DVN% 3HULRG'XUDWLRQ 7DVN& 3HULRG'XUDWLRQ ([HFXWLRQ 6HTXHQWLDOSURFHVVLQJ $ % % & $ & % % $ & & $ % % $
6FKHGXODELOLW\ Zusammenarbeit von Tasks, Scheduler und Prozessor Rate-Monotonic-Analyse: vereinfachte Voraussetzungen •Uni Prozessor System •Tasks sind unabhängig •Realtime tasks sind alle periodisch •Excecution times und Ressourcen alle Tasks sind bekannt
5DYHQ3URILO Einflüsse für das Raven Profile: AdaRaven Subset, SPT und dem ARINC 653 Standard. «profile» Raven «stereotype» «stereotype» «stereotype» CyclicTask SporadicTask Buffer Priority NrOfElements Period TransportedItem
5&0XVWHUHOHPHQWHDNWLY %HLVSLHOH • RepetetiveTask – Endlos. Ohne feste Periode – Tagged Values: priority, stacksize • CyclicTask – wie RepetetiveTask, jedoch mit fester Periode – Tagged Values: priority, stacksize, period =>Transporter Muster – wie cyclic, jedoch – es gibt eine Get-Association – es gibt eine Put-Association – Item_Type • SporadicTask – wartet auf einen Event oder einen Interrupt – hat eine Assoziation zu einer „Event“-Klasse
.RPPXQLNDWLRQ0XVWHU Stereotypen für die Darstellung fundamentaler Kommunikation Muster aus dem ARINC 653 Standard: •Buffer •Blackboard (ResourceControl) •Event •Interrupt
%XIIHU Buffer: Messages werden mittles eines FIFO Puffers mit vordefinierten Grösse übertragen. «CyclicTask » «Buffer» «CyclicTask » BufferTask1 BufferTask2 «Buffer» - queue : type[1..size] «SAAction» + receive() «SAAction» + send()
%ODFNERDUGRU5HVRXUFH&RQWURO Blackboard: Ungepufferte Übertragung von Messages. Eine Message in einem Board steht solange zur Verfügung, bis sie überschrieben wird. «CyclicTask» «ResourceControl» «CyclicTask» BBTask1 BBTask2 «ResourceControl» message-: type «SAAction» + clear() «SAAction» + read() : type «SAAction» write()
(YHQWV Events: Asynchrone Benachrichtigung über ein Ereignis «Task» «Event» wait «SporadicTask» EventTask1 EventTask2 send «Event» state : bool- «SAAction» + reset() «SAAction» + set() «SAAction» + wait()
&RGHJHQHULHUXQJ 3,0 7HPSODWHV 80/0RGHOOH $XWRPDWLVFKH7UDQVIRUPDWLRQ GHV'HVLJQ0RGHOOV LQYHUVFKLHGHQH 7UDQVIRUPDWRU 7UDQVIRUPDWRU ,PSOHPHQWLHUXQJV 6SUDFKHQ Q7UDQVIRUPDWLRQ ,QWHUIDFHV $GD -DYD & 7HVW
&RGH*HQHULHUXQJ Abbildung von highlevel Modellierung in einfachere Assoziationen (Modell Transformation => MDA) in «Buffer» «CyclicTask» «CyclicTask» Sender Receiver out Data out «CyclicTask» SenderReceiverBuffer «CyclicTask» Sender - queue: Data[] Receiver in + receive() + send()
.RPPXQLNDWLRQVFKHPD7UDQVSRUWHU PressureSensor Get() get «CyclicTask» Pressure {Transported_Item=Pressure_Type, Period=Milliseconds(100)} put «ResourceControl» get PressureControl
*HQHULHUWHU&RGH7UDQVSRUWHU7DVN with PressureSensor_Pkg; with PressureBuffer_Pkg; with Ada.Real_Time; use Ada.Real_Time; package body Pressure_Pkg is task body Pressure is Next_Time : Ada.Real_Time.Time; Period : constant Ada.Real_Time.Time_Span := Milliseconds(100); Item : Pressure_Type; begin Next_Time := Ada.Real_Time.Clock; loop delay until Next_Time; Item := PressureSensor_Pkg.read; -- Raven Class Package --#ACD# M(UCOD:: 102:BOTTOM) User Defined Code -- Section for User Defined Code --#end ACD# PressureBuffer_Pkg.Write (Item); -- Raven Class Package Next_Time := Next_Time + Period; end loop; end Pressure; end Pressure_Pkg;
7HPSODWH&\FOLF7DVN template CyclicTaskBody(MClass) with Ada.Real_Time; use Ada.Real_Time; -- To get visibility to the "+" operator. package body [MClass.name]_Pkg is task body [MClass.name] is Next_Time : Ada.Real_Time.Time; Period : constant Ada.Real_Time.Time_Span := [Period([MClass])]; [transporter_decl([MClass])] begin Next_Time := Ada.Real_Time.Clock; loop delay until Next_Time; [transporter_read([MClass])] [genStateMachineCall([MClass])] [mergeOut("UCOD:: "getUniqueId([Mclass,"User Def Code", "")] [transporter_write([MClass])] Next_Time := Next_Time + Period; end loop; end [MClass.name]; end [MClass.name]_Pkg; end template
'HU(QWZLFNOXQJVSUR]HVV High level Objektlogische Objekt logischeSicht Sicht Analyse UML Modell RMA Sicht (events, actions, resources) 6W380/ Konkurrierende Sicht Raven UML (task, communication) Profile Design Raven Templates Regeln Uml->Raven RT Mechanismen Design Patterns Code gen. 6W3$&' Implementierung Generiert++Manuell Generiert Manuell Generierter Ada Implementierungs- Generierter Raven Ada Code Raven Code code code modell
=XVDPPHQIDVVXQJ • Einige Muster aus dem Ravenscar Profile – sprachunabhängig, aber Abbildung nach Ada natürliche Vorteile – Einhaltung der Sprachteilmenge, die sicherheitskritischen Aspekten genügt. • Hohes Abstraktionsniveau • Abbildung in Zielsprache durch Template gesteuerte Codegenerierung • Berücksichtigung von Eigenschaften von Safety- Standards • Abbildung des Modells auf Code mittels MDA ist durch den Benutzer direkt spezifizierbar und erweiterbar
Sie können auch lesen