Die bereits vorhandene Kommunikationsschicht CM mit prozeduraler Schnittstelle soll von einer objektorientierten Kommunikationsschicht OC überlagert werden. OC ist als objektorientiertes Framework zu realisieren. Trotzdem soll möglich sein, daß reine CM-Anwendungen mit OC-Anwendungen miteinander kommunizieren können.
[...]
Inhaltsverzeichnis
1 EINLEITUNG
1.1 TÄTIGKEITSBEREICH DER ABTEILUNG ATD IT PS 2
1.2 MOTIVATION FÜR DAS KOMMUNIKATIONS-FRAMEWORK OC
1.3 KOMMUNIKATION MIT HILFE DER CM-SCHNITTSTELLE
1.3.1 CM und OC
1.3.2 Schnittstelle der CM-Bibliothek
1.4 KOMMUNIKATION: DIENSTORIENTIERT VS. DATENORIENTIERT
1.5 REALISIERUNG VON OC ALS KOMMUNIKATIONS-FRAMEWORK
1.5.1 Allgemeines
1.5.2 Anforderungen an OC
1.6 ENTWICKLUNGSUMGEBUNG VON OC
1.6.1 Dokumentation
1.6.2 Programmierung
2 KOMMUNIKATION ZWISCHEN THREADS
2.1 UNTERSUCHUNG VON THREADKOMMUNIKATIONSARTEN AUF PERFORMANCE
2.1.1 Testanwendung
2.1.2 Asynchronous Procedure Calls (APC) als Kommunikationsbasis
2.1.3 Threadkommunikation mit Window-Messages
2.1.4 CM als allgemeine Kommunikationsschicht
2.1.5 Auswertung des Performance-Tests
2.2 THREADKONZEPT IN OC
2.2.1 Threadklassen
2.2.2 Klassen für die Threadsynchronisation
3 GROBENTWURF VON OC
3.1 OC IM SCHICHTENMODELL
3.2 WESENTLICHE KLASSEN
4 FEINENTWURF VON OC
4.1 AUFBAU EINES TELEGRAMMS
4.1.1 Telegrammarten
4.1.2 Wrapper um Datenobjekt
4.1.3 Sichten eines Telegramms
4.1.4 Realisierung des Sichtenkonzepts
4.2 VERTEILEN DER TELEGRAMME IM DISPATCHER
4.2.1 Motivation
4.2.2 Telegramme innerhalb eines Frames verteilen
4.2.3 Weiterleiten eines gewöhnlichen Telegramms
4.2.4 Weiterleiten eines Ack-Telegramms
4.3 AUSWERTUNG DER TELEGRAMME IN HANDLER
4.3.1 Behandlungsroutine
4.3.2 Handler-Basisklassen
4.3.3 Verwaltung der Handler
4.3.4 Verkettung der Handler - Forwardergraph
4.4 TELEGRAMMERZEUGUNG BEIM EMPFANG
4.4.1 Idee 1: Dispatcher erzeugt Telegrammobjekte
4.4.2 Idee 2: Handler erzeugt Telegrammobjekte
4.4.3 Möglichkeiten der Realisierung einer Telegramm-Factory
4.5 TELEGRAMME VERSENDEN
4.5.1 Senden ohne Erwartung einer Quittung
4.5.2 Senden mit Erwartung einer Quittung
4.5.3 Versenden einer Quittung
4.6 DIE HAUPTKLASSEN DES FRAMEWORKS
4.6.1 Frame als Repräsentant eines Kommunikationspartners
4.6.2 Der Frame-Manager
5 HILFSKLASSEN FÜR DEN ANWENDER
5.1 BÜNDELN EINZELNER TELEGRAMME IN EIN CONTAINERTELEGRAMM
5.1.1 Motivation
5.1.2 Anwendung von Containertelegrammen
5.1.3 Quittung des Containertelegramms
5.1.4 Aufbau des Containertelegramms
5.1.5 Kommunikation mit Containertelegrammen
5.2 TELEGRAMMAUSWERTUNG IM THREAD DES FORWARDINGHANDLERS
6 PARAMETRIERUNG DER KOMMUNIKATIONSPARTNER
6.1 STRUKTUR DER PARAMETERDATEI
6.2 PARSER
6.3 HANDLER ANHAND DER PARAMETERDATEI ERZEUGEN
7 FEHLERBEHANDLUNG
7.1 SYNCHRONE FEHLER
7.2 ASYNCHRONE FEHLER
8 OC AUS ANWENDERSICHT
8.1 TELEGRAMMKLASSE ERSTELLEN
8.2 HANDLER ERSTELLEN
8.3 KOMMUNIKATIONSPARTNER ERZEUGEN UND REGISTRIEREN
8.4 SENDERKLASSEN ANWENDEN
8.5 HILFSKLASSEN ANWENDEN
9 PROBLEME BEI DER REALISIERUNG
9.1 SCHWÄCHEN VON C++
9.1.1 friend-Klassen vs. Packages
9.1.2 Interfaces vs. abstrakte Klassen
9.1.3 Templates in Bibliotheken
9.2 SCHWÄCHEN VON OC
9.2.1 Verwaltung der Telegramme und Handler
9.2.2 CM spezifisches Design
9.2.3 OC-Bibliothek
9.2.4 Telegramm-Factory
10 AUSBLICK
10.1 GENERIERUNG BENUTZERDEFINIERTER KLASSEN MIT EINEN ASSISTENTEN
10.2 TOOL FÜR DIE PARAMETRIERUNG DER KOMMUNIKATIONSPARTNER
Zielsetzung und Themen
Die vorliegende Arbeit befasst sich mit dem Design und der Implementierung eines objektorientierten Kommunikations-Frameworks (OC), das die bereits bestehende prozedurale Kommunikationsschicht (CM) in der Anlagenautomatisierung überlagern soll. Das primäre Ziel ist die Steigerung der Produktivität in der Softwareentwicklung durch die Schaffung wiederverwendbarer Komponenten, wobei die Kompatibilität zwischen alten CM-basierten Anwendungen und neuen OC-Anwendungen im Sinne eines Mischbetriebs sichergestellt werden muss.
- Design eines objektorientierten Kommunikations-Frameworks als Aufsatzschicht für CM.
- Untersuchung und Optimierung von Threadkommunikationsarten hinsichtlich ihrer Performance.
- Konzeption eines Sichtenmodells für Telegramme zur besseren Kapselung und Wiederverwendbarkeit.
- Einführung einer dynamischen Handler-Verwaltung mittels DLLs und eines Prototyp-Managers.
- Entwicklung effizienter Fehlermeldungsmechanismen für synchrone und asynchrone Abläufe.
Auszug aus dem Buch
4.1.2 Wrapper um Datenobjekt
Um nicht explizit jedes Datenelement im CM-Telegramm in eine Membervariable des Telegrammobjekts kopieren zu müssen (Serialisierung), enthält die Telegrammklasse das CM-Telegramm als Datenobjekt. Auf den Puffer des CM-Telegramms wird dann direkt mit Get- und Set-Methoden zugegriffen. Dadurch gewinnt man an Performance.
Wird das Telegramm im Dispatcherthread ausgewertet, dann muß das CM-Telegramm nicht in das Datenobjekt kopiert werden. Der Empfangspuffer im Dispatcher dient dann als Datenobjekt.
Findet die Auswertung des Telegramms asynchron und der Empfang in unterschiedliche Threads statt, dann muß das CM-Telegramm dupliziert werden. Das Duplikat ist dem Handler zu übergeben, dort wird es dann im Telegrammobjekt eingehängt.
Zusammenfassung der Kapitel
1 EINLEITUNG: Dieses Kapitel erläutert den Tätigkeitsbereich, die Motivation für das Framework sowie die grundlegenden Anforderungen an die angestrebte objektorientierte Schicht.
2 KOMMUNIKATION ZWISCHEN THREADS: Hier werden verschiedene Threadkommunikationsarten hinsichtlich ihrer Performance untersucht und das resultierende Threadkonzept in OC vorgestellt.
3 GROBENTWURF VON OC: Es erfolgt die Einordnung von OC in das Schichtenmodell sowie eine Übersicht der für das Gesamtsystem wesentlichen Klassen.
4 FEINENTWURF VON OC: Dieser umfangreiche Teil behandelt detailliert den Aufbau von Telegrammen, den Dispatcher-Mechanismus, die Handler-Logik und die Sender-Klassen.
5 HILFSKLASSEN FÜR DEN ANWENDER: Fokus auf das Bündeln von Telegrammen in Containertelegramme zur Steigerung der Datendurchsatzrate.
6 PARAMETRIERUNG DER KOMMUNIKATIONSPARTNER: Beschreibung der Struktur der Parameterdatei und des Parsers zur dynamischen Konfiguration der Handler.
7 FEHLERBEHANDLUNG: Erläuterung der Strategien zur Fehlerbehandlung bei synchronen und asynchronen Kommunikationsvorgängen.
8 OC AUS ANWENDERSICHT: Eine praxisorientierte Zusammenfassung, wie der Anwender Telegramme erstellt, Handler definiert und Senderklassen nutzt.
9 PROBLEME BEI DER REALISIERUNG: Kritische Reflexion der Herausforderungen bei der Nutzung von C++ und den Designentscheidungen für das Framework.
10 AUSBLICK: Vorschläge für weiterführende Tools wie Assistenten zur Codegenerierung und Konfigurationshilfen für die Parametrierung.
Schlüsselwörter
Objektorientiertes Framework, Kommunikationsschicht, Anlagenautomatisierung, Threadkommunikation, Dispatcher, Telegrammklassen, C++, Performance-Test, Handler, Prototyp-Manager, DLL-Management, Fehlertoleranz, Datenorientierte Kommunikation, Softwarewiederverwendbarkeit.
Häufig gestellte Fragen
Worum geht es in dieser Diplomarbeit grundsätzlich?
Die Arbeit beschäftigt sich mit der Entwicklung eines objektorientierten Kommunikations-Frameworks, um eine bestehende prozedurale Schnittstelle für die industrielle Anlagenautomatisierung zu modernisieren.
Was sind die zentralen Themenfelder?
Die Schwerpunkte liegen auf dem Framework-Design, der Threadsynchronisation, der Telegrammverarbeitung, der effizienten Fehlersuche und der Wiederverwendbarkeit von Softwarekomponenten.
Was ist das primäre Ziel der Forschungsfrage?
Das Ziel ist die Erstellung einer objektorientierten Schicht (OC), die schneller und wartungsfreundlicher als die bestehende CM-Schnittstelle ist, während die volle Abwärtskompatibilität gewahrt bleibt.
Welche wissenschaftliche Methode wurde verwendet?
Es wurde ein systematischer Designansatz gewählt, der eine Performance-Analyse verschiedener Thread-Kommunikationsarten (wie APCs und Window-Messages) mit objektorientierten Entwurfsmustern verbindet.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil gliedert sich in Grob- und Feinentwürfe, in denen der Dispatcher-Mechanismus, der Handler-Aufbau und die Mechanismen zur Telegrammerzeugung und -verteilung technisch tiefgehend dokumentiert werden.
Welche Schlüsselwörter charakterisieren die Arbeit?
Wichtige Begriffe sind unter anderem Framework-Design, Thread-Synchronisation, Telegramm-Kapselung, Dispatcher-Architektur und C++ Klassenbibliothek.
Warum wurde auf die ATL-Bibliothek für den Handler-Manager verzichtet?
Die Verwendung von ATL hätte eine starke Abhängigkeit von komplexen Makros erfordert, was den Quellcode schwerer wartbar und weniger transparent gemacht hätte; stattdessen wurde ein eigener Prototyp-Manager implementiert.
Wie löst das Framework das Problem asynchroner Fehler?
Da Fehler im Dispatcher-Thread nicht direkt an den Main-Thread kommuniziert werden können, wurde ein zentraler Errorhandler eingeführt, der dem Framework zur Fehlerbehandlung übergeben wird.
- Citation du texte
- Friedrich Wedel (Auteur), 2000, Design und Implementierung eines objektorientierten Kommunikations-Frameworks, Munich, GRIN Verlag, https://www.grin.com/document/8242