Das Raven MDA Profil für die Modellierung sicherheitskritischer Systeme - Klaus Wachsmuth

Die Seite wird erstellt Pierre-Oliver Keller
 
WEITER LESEN
Das Raven MDA Profil für die Modellierung sicherheitskritischer Systeme - Klaus Wachsmuth
Das Raven MDA Profil
     für die Modellierung
sicherheitskritischer Systeme
         Klaus Wachsmuth
Das Raven MDA Profil für die Modellierung sicherheitskritischer Systeme - Klaus Wachsmuth
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*3URILOIU57XQG6DIHW\
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