Die Fehlersuche in einer/m Software/Programm welches keine Debuginformationen enthalten, gestaltet sich schwierig. Zu diesem Zweck wurden C++ Klassen entwickelt welche es ermöglichen, im Falle eines Fehlers während des Programmablauf einer Release-Version, festzustellen in welche Sourcedatei der Fehler auftrat. Das Verhalten der Klassen kann so angepasst werden, dass mehr Fehler protokolliert werden oder weniger, sprich man kann verschieden Loglevel angeben z.B. INFO, WARN, CRITICAL oder ERROR. Der Speicherort für die Log-/Monitoring-Daten kann eine Datenbank oder eine Textdatei sein. Die Klassen sind so entworfen, dass die auch leicht erweitert werden können z.B. XML-Datei.
Inhaltsverzeichnis
1 Einführung
1.1 Einleitung
1.2 Ziel der Diplomarbeit
1.3 Aufbau der Diplomarbeit
2 Grundlagen
2.1 Programmfehler
2.2 Protokollierung
2.3 Reproduzierbarkeit / Nachvollziehbarkeit
3 Das vorhandene Informationserfassungssystem
3.1 Protokollierungskomponente
3.2 Monitoring-Komponente
4 Motivation
5 Anforderungen an das neue Informationserfassungssystem
5.1 Flexible Datenhaltung
5.2 Schnellere Identifizierung
5.3 Die Daten
5.3.1 Log-Daten
5.3.2 Monitoring-Daten
5.4 Die Datendarstellung
5.5 Performance
5.6 Implementierung
5.7 Konfigurierbarkeit
6 Entwicklung eines Lösungsansatzes
6.1 Einführendes Beispiel
6.2 Client-Server-Architektur
6.3 Interprozesskommunikation
6.4 Nebenläufigkeit und Synchronisation
6.5 Daten
6.5.1 Log-Daten
6.5.2 Monitoring-Daten
6.6 Datenbank
6.7 Performance
6.8 Zusammenfassung
7 Entwurf des Lösungsansatzes
7.1 Datenbank der Protokollierungskomponente
7.2 Datenbank der Monitoring-Komponente
7.3 Klassendiagramm Informationserfassungssystem
7.3.1 Allgemeines
7.3.2 Beschreibung des Klassendiagramms
7.3.2.1 Der grüne Bereich
7.3.2.2 Der blaue Bereich
7.3.2.3 Der gelbe Bereich
7.3.2.4 Der orange Bereich
7.3.2.5 Der pinke Bereich
7.3.2.6 Restliche Klassen
7.4 Beschreibung der verwendeten Software-Muster
7.4.1 Singleton
7.4.2 Wrapper-Facade
7.4.3 Scoped Locking
7.4.4 Double-Checked Locking Optimization
7.4.5 Thread-Safe Interface
8 Ergebnisse
8.1 Allgemein
8.2 Anwendungsbeispiel
8.3 Performance-Test
8.3.1 Testsergebnisse
8.3.2 Erkenntnisse Performance-Test
8.3.3 Verbesserungsvorschlag
8.4 Compiler-Test
9 Zusammenfassung
9.1 Allgemein
9.2 Zukunftsvorstellung
9.2.1 Empfehlungen zur 1. Generation
9.2.2 Die 2. Generation
9.3 Fazit
Zielsetzung & Themen
Das Hauptziel dieser Diplomarbeit ist die Neukonzeption und Implementierung eines effizienten Informationserfassungssystems für ein Warenwirtschaftssystem, um die bisher unzureichende Protokollierung durch ein strukturiertes, datenbankgestütztes System zu ersetzen und erweiterte Überwachungsmöglichkeiten zu schaffen.
- Strukturierung und Vereinheitlichung der Logging-Prozesse
- Integration einer Monitoring-Komponente zur Ressourcenüberwachung
- Client-Server-Architektur zur zentralen Datenspeicherung
- Einsatz von Software-Mustern zur Gewährleistung von Performance und Nebenläufigkeit
- Konfigurierbarkeit der Datenhaltung und Überwachungslevel
Auszug aus dem Buch
7.4.2 Wrapper-Facade
Dieses Entwurfsmuster wurde bei den Klassen "MonitorLogger", "InfoLogger", "IPC_Stream", "URI", "PIPE_Connector", "PIPE_Acceptor", "SOCK_Connector", "SOCK_Acceptor", "THREAD_Manager", "THREAD_MeteredSection", "THREAD_Mutex", "SYSTEM_Info", "DB_Info", "ODBC_Record", "ODBC_Stmt", "ODBC_Connection", "MySQL_Connection" und "MSSQL_Connection" wie auch in der Abbildung 9 zu sehen ist, angewandt. Der Grund liegt darin, dass diese Klassen auf nichtobjektorientierte APIs zugreifen.
Zweck: Das Entwurfsmuster Wrapper-Facade kapselt Funktionen und Datenstrukturen von nichtobjektorientierten APIs, indem es sinnvolle objektorientierte Klassenschnittstellen auf diese spezifiziert, die dann robust, präzise und portierbar sind.
Problem: Programmentwickler erstellen sehr oft Anwendungen unter Verwendung von nicht objektorientierten APIs, wie z.B. Netzwerkdienste oder grafische Benutzungsschnittstellen und Datenbanken. Was dabei aber nicht beachtet wird, ist, dass kurzer und präziser Code leichter zu entwickeln und zu warten ist.
Lösung: Der direkte Zugriff auf nicht objektorientierte APIs soll vermieden werden. Stattdessen sollte eine Gruppe verwandter Funktionen zu einer Klasse zusammengefasst werden. Die Aufgabe der Klasse besteht darin, die Datenstrukturen zu kapseln, um sie somit robust, präzise, portier- und wartbar zu machen.
Zusammenfassung der Kapitel
1 Einführung: Diese Einleitung definiert das Ziel der Arbeit, ein bestehendes Informationserfassungssystem neu zu konzipieren und zu implementieren.
2 Grundlagen: Hier werden theoretische Aspekte von Programmfehlern, Protokollierungsmethoden sowie die Wichtigkeit der Reproduzierbarkeit für die Softwareentwicklung dargelegt.
3 Das vorhandene Informationserfassungssystem: Dieses Kapitel analysiert die Schwachstellen der bisherigen, unstrukturierten Protokollierung in einfachen Log-Dateien.
4 Motivation: Die Notwendigkeit eines neuen Konzepts zur komfortableren Auswertung von Log- und Monitoring-Daten wird begründet.
5 Anforderungen an das neue Informationserfassungssystem: Festlegung der Kriterien wie flexible Datenhaltung, Performance und Konfigurierbarkeit.
6 Entwicklung eines Lösungsansatzes: Vorstellung einer Client-Server-Architektur zur Bewältigung der Informationserfassung unter Berücksichtigung von IPC und Nebenläufigkeit.
7 Entwurf des Lösungsansatzes: Detaillierte Beschreibung der Datenbankmodelle und des Klassendiagramms sowie der verwendeten Software-Muster.
8 Ergebnisse: Evaluierung des entwickelten Systems anhand eines Anwendungsbeispiels, Performance-Tests und Kompilierungstests.
9 Zusammenfassung: Abschlussbetrachtung der erreichten Ziele und Ausblick auf künftige Entwicklungspotenziale, wie z.B. ein dediziertes Analyseprogramm.
Schlüsselwörter
Logging, Monitoring, Warenwirtschaftssystem, C++, Client-Server-Architektur, Interprozesskommunikation, Datenbank, Software-Muster, Wrapper-Facade, Singleton, Scoped Locking, Performance, Thread-Safe, Protokollierung, Systemressourcen
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Diplomarbeit befasst sich mit der Neukonzeption und Implementierung eines effizienten Systems zur Protokollierung und Überwachung für ein Warenwirtschaftssystem.
Was sind die zentralen Themenfelder?
Die zentralen Themen sind Logging, System-Monitoring, Software-Architektur und der Einsatz von Entwurfsmustern in der C++-Programmierung.
Was ist das primäre Ziel der Arbeit?
Das Ziel ist die Ablösung einer unstrukturierten Protokollierung durch eine performante, datenbankgestützte Lösung, die eine schnellere Fehlersuche und Systemüberwachung ermöglicht.
Welche wissenschaftliche Methode wurde verwendet?
Der Autor wählt einen systemtechnischen Ansatz, bei dem Anforderungen analysiert, eine Client-Server-Architektur entworfen und mittels Performance-Tests auf ihre Praxistauglichkeit geprüft wurde.
Was wird im Hauptteil behandelt?
Der Hauptteil umfasst die Analyse des Ist-Zustands, die Definition der Anforderungen, die Entwicklung und den Entwurf des neuen Lösungsansatzes sowie die Validierung der Ergebnisse durch Tests.
Welche Schlüsselwörter charakterisieren die Arbeit?
Typische Begriffe sind Logging, Monitoring, Client-Server-Architektur, Datenbank, Performance und Software-Muster wie Singleton oder Wrapper-Facade.
Warum wird ein Puffer im Lösungsansatz verwendet?
Ein Puffer verhindert, dass das Hauptprogramm durch langsame Schreibvorgänge in die Datenbank blockiert wird, wodurch die Performance des Gesamtsystems stabil bleibt.
Was ist der Unterschied zwischen 1. und 2. Generation?
Die 1. Generation fokussiert sich auf das Sammeln und Speichern der Daten, während die 2. Generation ein dediziertes Analyseprogramm zur Visualisierung und Live-Überwachung vorsieht.
- Quote paper
- Pascal Fritz (Author), 2006, Neukonzeption und Implementierung eines Informationserfassungssystems für ein Warenwirtschaftssystem, Munich, GRIN Verlag, https://www.grin.com/document/133256