Entwicklung verteilter echtzeitfähiger Sensorsysteme

Ähnliche Dokumente
UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

Von der UML nach C++

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

Codingstandard. Softwareentwicklung Praktikum Stand:

Theorie zu Übung 8 Implementierung in Java

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Gebundene Typparameter

Das umfassende Handbuch

Assoziative Container in C++ Christian Poulter

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

Einfach verkettete Liste

12) Generische Datenstrukturen

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Generische Datenstrukturen

Einführung in die STL

12) Generische Datenstrukturen

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

1.3 Charakteristische Eigenschaften von objektorientierten Systemen

Software-Entwurfsmuster

Name: Klausur Informatik III WS 2003/04

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Probeklausur. Klausurdeckblatt. Name der Prüfung: Objekt-orientierte Programmierung mit C++

Selbststudium OOP Programmieren 1 - H1103 Felix Rohrer

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Christoph Kecher UML2. Das umfassende Handbuch. Galileo Press

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

3. Konzepte der objektorientierten Programmierung

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

JAVA KURS COLLECTION

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

11: Echtzeitbetriebssystem ucos-ii

39 Object Request Brokers. 40 Components of an ORB Stubs and Skeletons Stub

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Exercise (Part I) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Einführung in die Informatik 1

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Programmierkurs C++ Kapitel 6 Module Seite 1

Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung

UML 2.0 Das umfassende Handbuch

Interaktionsdiagramme in UML

Java Generics & Collections

Szenario 3: Service mit erweiterter Schnittstelle

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Algorithmen und Datenstrukturen 06

Java Einführung Collections

UML (Unified Modelling Language) von Christian Bartl

Einführung in die Programmierung mit Java. Hörsaalübung

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

Java Einführung Methoden in Klassen

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester / 32

Softwaretechnik WS 16/17. Übungsblatt 01

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Übung HP Musterlösung zu Aufgabe 9:

Vgl. Oestereich Kap 2.4 Seiten

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors

C++, STL und Qt. C++, STL und Qt. Dipl.Ing. Christoph Stockmayer, Schwaig,

Themen. Web Service - Clients. Kommunikation zw. Web Services

Repetitorium Informatik (Java)

Java Einführung Abstrakte Klassen und Interfaces

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Kommunikation HOST TMC420 Controller

Zusammenfassung. Mit bjam und ein paar Zeilen in einem Jamroot oder Jamfile lässt sich das Kompilieren und Linken einfach automatisieren

VGM. VGM information. HAMBURG SÜD VGM WEB PORTAL USER GUIDE June 2016

Infrastructure as a Service (IaaS) Solutions for Online Game Service Provision

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Title. Power-to-Design circuits. HyDraw CAD 600 What s New 1 of 29

Einstieg in die Informatik mit Java

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Objektorientierte Programmierung

Innere Klassen in Java

4. AuD Tafelübung T-C3

18. Vererbung und Polymorphie

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

ISO Reference Model

Einstieg in die Informatik mit Java

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

3 Objektorientierte Konzepte in Java

Objekt-basiert oder objekt-orientiert? Moderne Low Level Treiberprogrammierung mit C/C++ Programmier-Paradigmen Programmiersprachen C und C++

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Inhalt. Einleitung Liebe Leserin, lieber Leser, Wer dieses Buch aus welchem Grund lesen sollte Ihre Meinung ist uns sehr wichtig.

1.4. Funktionen. Objektorientierte Programmierung mit C++

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

OOAD in UML. Seminar Software-Entwurf B. Sc. Sascha Tönnies

Innovator 11 classix. Java Reverse Engineering. HowTo. Ralph Schönleber.

Der C++ Crashkurs v1.0

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Transkript:

Projekt Erdbebenfrühwarnung im SoSe 2011 Entwicklung verteilter echtzeitfähiger Sensorsysteme Joachim Fischer Klaus Ahrens Ingmar Eveslage fischer ahrens eveslage@informatik.hu-berlin.de EDIM SOSEWIN-extented

6. SDL 1. Grundphilosophie 2. ITU-Standard Z.100 3. Werkzeuge 4. SDL-Grundkonzepte 5. Musterbeispiel (in UML-Strukturen) 6. Umsetzung in SDL-RT J.Fischer

Erweitertes System pe:playerensemble dg:deamongame C: Creator[1] PL:Player[0..*] «create» M: Monitor Server[*]:GameServer «create» D: Deamon R:Random S: Semaphore UML-like Definition Strukturierte Klassen (SDL: Blocktypen) Ports (SDL: Gates) Events (SDL: Ankunft von Nachrichten) Interface (SDL-RT: Schnittstelle aktiver Klassen) Parts (SDL: Blockinstanzmenge/ Prozessinstanzmenge) Unterschied: Kardinalitätsangabe Verbindung (SDL: gerichteter Übertragungskanal) 10-3

Weitere Präzisierungen (SDL als UML-Profil) SDL-Agent Self Parent Offspring Sender Player Deamon Existenz verbunden mit Vergabe systemeindeutiger PId-Werte SDL-Signal «Signal» jedes Signal überträgt die PId des sendenden Prozesses 10-4

PragmaDev DS- Project Manager SDL-RT SDL-Z100 10-5

DeamonGame-Projekt ProjektDatei 10-6

Systemname entspricht Dateinamen/Projektnamen Package-Import Systemspezifikation bidirektionalerkanal chplayermonitor mit Angabe zu transportierender Nachrichten Systemgrenze Signal newplayer von der Umgebung unidirektionale Kanäle chcreatorenv chdeamonenv Signal randominit von der Umgebung entweder lokal oder im Paket defniert Block pe vom Typ PlayerEnsemble Gate gpd (= UML-Port) mit Eingang dg2pe und Ausgang p22dg Nachrichten-Listen dg2pe pe2dg entweder lokal oder im Paket defniert Block dg vom Typ DeamonGame

Package besteht aus verschiedenen Typdefinitionen und systemglobalen Variablen Definition von Nachrichtentypen und Definition von Nachrichtenlisten SDL-RT-Besonderheiten Nachrichtenparametertypen: - Standard C-Typen - SDL-Typ PId - nutzereigene C++ Typen PId = RTDS_QueueId SIGNAL = MESSAGE 10-8

Package Passive Klassen besteht aus UML-like-Definitionen aktiver und passiver SDL-RT-Klassen (äußere Schnittstelle) und deren Assoziationen Interface: <Richtung> <Nachrichtensignatur> {via: <Gate-Angabe>} Aktive Klassen 10-9

Package UML-Klassendiagramm SDL-RT- Block und -Processtypen Random wird lokale Variable von Deamon (Typ: RandInt) *.h wird generiert *.ccp ist nutzerseitig bereitzustllen 10-10

#ifndef _RANDINT_H_ #define _RANDINT_H_ // Forward declaration class RandInt; // Standard and common includes #include "RTDS_gen.h" // Includes for related classes #include "RTDS_messages.h" C++ -Quellen #include "DeamonGamePackage\RandInt.h" #include <cmath> /* * ATTRIBUTES FOR CLASS: * --------------------- * * [From RandInt] * - int lower; * - int upper; */ // PUBLIC OPERATIONS: // ================== // CLASS RandInt: // ============== class RandInt { // ATTRIBUTES: // ----------- private: int int lower; upper; // OPERATIONS: // ----------- public: RandInt(int lower, int upper); virtual int sample(); virtual void setlowerupper( int lower, int upper); }; #endif // Operation RandInt: // ------------------ RandInt::RandInt(int lower, int upper) { this->lower = lower; this->upper = upper; } // Operation sample: // ----------------- int RandInt::sample() { int span = upper -lower; return (rand() % span + lower); } // Operation setlowerupper: // ------------------------ void RandInt::setLowerUpper(int lower, int upper) { this->lower = lower; this->upper = upper; } 10-11

Blocktypen Blocktyp DeamonGame Name = Dateiname Blocktyp PlayerEnsemble Name = Dateiname C/C++ Erweiterung globale Variable System DeamonGameSystem Name = Dateiname 10-12

Blocktyp DeamonGame Semaphore- Steuerung Prozess- Instanz- Mengen (1,*) Gate-Angabe C++ StandardTemplateLibrary besser: Monitor(1,1) GameServer(0,*) Deamon(1,1) 10-13

C++ Standard Template Library C++ Maps are sorted associative containers that contain unique key/value pairs. Maps are sorted by their keys. Map Constructors & Destructors Map operators Map typedefs begin clear count empty end equal_range erase find default methods to allocate, copy, and deallocate maps assign, compare, and access elements of a map typedefs of a map returns an iterator to the beginning of the map removes all elements from the map returns the number of elements matching a certain key true if the map has no elements returns an iterator just past the last element of a map returns iterators to the first and just past the last elements matching a specific key removes elements from a map returns an iterator to specific elements 10-14

Package 10-15

Prototypinstanz der Processmenge Monitor Deklarationsbox: lokale Variable runningpairs Startzustand Zustand runningpairs.count(pid) runningpairs[pid_x]=pid_y runningpairs.erase(pid) runningpairs[pid] Dynamische ProcessInstanz Generierung SENDER wird aktualisiert falls newgame konsumiert wird Decision OFFSPRING= neue Instanz der Menge GameServer TO_ID Adressangabe: PId Folgezustand 10-16

Prototypinstanz der Processmenge GameServer Deklarationsbox: Lokale Variable player: zugeordneter externer Spieler Exklusivzugriffs- Recht sichern Vernichtung der ProcessInstanz Exklusivzugriffs- Recht freigeben Weitere Kommunikation des Spielers über die PId-Variable (jetzt Null-Wert) führt zu einem LaufzeitFehler 10-17

Prototypinstanz der Processmenge Deamon Deklarationsbox: Lokale Variable lower, random sind als Assoziationsende bereits schon Attribute Objekterzeugung muss in der Start-Transition erfolgen TimeOut- Nachricht Timer-Start mit zufälligem Wert Timervariablen werden in SDL-RT implizit deklariert Transition gilt für jeden Zustand Folgezustand ist der Ausgangszustand 10-18

Blocktyp PlayerEnsemble Verbindung zur Semaphore-Variablen ist nutzerseitig zu organisieren 10-19

Prototypinstanz der Prozessmenge Creator Deklarationsbox: Lokale Variable requestedplayer OFFSPRING wird bei jeder erfolgreichen Instanziierung der PId-Wert der Instanz zugewiesen Sollte dabei die maximale Kardinalität der Instnzmenge Player überschritten werden, wird keine Instanz erzeugt, OFFSPRING erhält den Wert Null Darstellung: geschlossene Verbindung wäre hier Konnektoren vorzuziehen 10-20

Prototypinstanz der Prozessmenge Player max. Spielzüge Player-Instanz Und GameServer-Instanz Kennen Ihren jeweiligen Partner per Pid-Wert 10-21