Bachelor + Master Publishing
811 Bachelorarbeiten, 533 Masterarbeiten, 10.103 Diplomarbeiten

Framework für Zustandsorientierte Programmierung

Einsatz bei der Implementierung eines Service-Containers

Framework für Zustandsorientierte Programmierung
Über dieses Buch
  • Art: Diplomarbeit
  • Autor: Christian Silberbauer
  • Abgabedatum: September 2007
  • Umfang: 104 Seiten
  • Dateigröße: 878,7 KB
  • Note: 1,0
  • Institution / Hochschule: Fachhochschule Regensburg Deutschland
  • Bibliografie: ca. 13
  • ISBN (eBook): 978-3-8366-0686-8
  • ISBN (CD) :978-3-8366-0686-8 CD
  • Sprache: Deutsch
  • Prämierung:
  • Arbeit zitieren: Silberbauer, Christian September 2007: Framework für Zustandsorientierte Programmierung, Hamburg: Diplomica Verlag
  • Schlagworte: Zustandsorientierung, Programmierung, Container, Framework, Service-Container

In den Warenkorb
48,00 €

Diplomarbeit von Christian Silberbauer

Zusammenfassung:

Diese Ausarbeitung beschreibt ein Framework zur Unterstützung der Zustandsorientierten Programmierung. Mit Zustandsorientierter Programmierung ist hier ein Programmierparadigma gemeint, das Variablen und deren Zustände in den Mittelpunkt stellt. Die Variablen werden funktional in Beziehung gesetzt. Ändert sich der Zustand einer Variablen, so werden die davon abhängenden Variablen angepasst.

Die Zustandsorientierung kann auf der Objektorientierung basieren. Genau dies ist beim hier beschriebenen Framework (im Folgenden auch Zustandsframework genannt) der Fall. Das Zustandsframework ist in der objektorientierten Programmiersprache C# entwickelt. Es umfasst hauptsächlich sog. Zustandsklassen und erlaubt eine Zustandsorientierte Programmierung, indem Attribute von Klassen durch jene Zustandsklassen gekapselt sind. Die Zustandsklassen fungieren gewissermaßen als Container für Attribute und kontrollieren deren Zugriff, insbesondere deren Manipulationen.

Mitarbeiter (Employee) haben eine Arbeitsleistung (performance). Deren Chef (Boss) wacht über ihre durchschnittliche Arbeitsleistung (staffPerformance). Sinkt diese unter 98%, so werden ein paar Mitarbeiter entlassen. Die beiden Performance-Attribute sind eigentlich vom Typ double, werden aber durch eine sog. Einfache Zustandsklasse (State) bzw. eine Aggregierte Zustandsklasse (AggregateState) gekapselt. Im Code-Listing nicht abgebildet ist die Konfiguration der entsprechenden Zustandsobjekte. Insbesondere die Aggregierten Zustandsobjekte müssen durch eine Aggregatsfunktion zur Durchschnittbildung parametrisiert werden und die zugehörigen Einfachen Zustandsobjekte müssen als Kind-Zustände definiert werden. Darüber hinaus ist die Methode PerformanceChanged() als sog. Transitions-Listener für staffPerformance zu definieren. Ändert sich also die durchschnittliche Arbeitsleistung der Belegschaft bzw. findet diesbezüglich ein Zustandsübergang bzw. eine Transition statt, so wird PerformanceChanged aufgerufen.

Unter Verwendung des Zustandsframeworks lassen sich Attribute durch deklarative Programmierung funktional miteinander in Verbindung bringen, Zustandsübergänge lassen sich verfolgen und, wie später noch ersichtlich wird, lassen sich vom Zustandsobjekt vorgesehene Zustandsübergänge sogar blockieren. Letzteres bedeutet, dass der Client bei Transitionen die Möglichkeit hat, entsprechende Aktivitäten durchzuführen. Sind diese nicht erfolgreich, so kann der Client bestimmen, dass das Zustandsobjekt in seinem alten Zustand verharrt.

Alles in Allem ist das Zustandsframework ein hilfreiches Werkzeug, um Zusammenhänge zwischen Attributen einfach herzustellen und damit eine zustandorientierte Sichtweise in der Programmierung zu fördern.

Entstanden ist das Framework in Folge einer Beschäftigung des Autors bei Siemens Corporate Research in Princeton in den USA. Dort wird ein Verteiltes System entwickelt. Der Service-Container des Systems hat ein komplexes Lifecycle-Management für seine Komponenten zu realisieren. Entsprechend ist die Ausrichtung des Zustandsframeworks. Seine Zustandsklassen sind nach den Anforderungen des Service-Containers von Siemens entworfen und sind daher keine allgemeine Sammlung von Zustandsklassen für Zustandsorientierte Programmierung. Dennoch sind vor allem die primitiveren Zustandsklassen recht universell einsetzbar. Außerdem ist eine Erweiterung des Frameworks um weitere Zustandsklassen sehr einfach möglich.

Inhaltsverzeichnis:

Inhaltsverzeichnis
1. Einleitung 6
2. Grundlegende Begriffsdefinitionen 10
2.1 Zustand 10
2.2 Framework 11
2.3 Design Patterns 12
3. Das SDS-Projekt 14
3.1 SDS Container 14
3.2 Zustände von SDS Components 15
3.3 Zustände von Services 18
3.4 Abhängigkeiten zu verschiedenen Komponentenzuständen 18
4. Motivation 19
5. Konzeption 20
5.1 Modell eines Zustandsobjekts 20
5.2 Transitionsalgorithmus 22
5.3 Elementare Arten von Zustandsobjekten 26
5.3.1 Einfache Zustandsobjekte 27
5.3.2 Aggregierte Zustandsobjekte 28
5.3.3 Maskierte Zustandsobjekte 28
5.3.4 Geschaltete Zustandsobjekte 29
5.3.5 Strebsame Zustandsobjekte 30
5.4. Zusammengesetzte Arten von Zustandsobjekten 34
5.4.1 Kombinierte Zustandsobjekte 35
5.4.2 Integrierte Strebsame Zustandsobjekte 36
5.4.3 Gemeinsame IS-Zustandsobjekte 47
6. Entwurf 49
6.1 Klasse StateBase (Grundversion) 50
6.2 Klasse State 59
6.3 Klasse AggregateState 61
6.4 Klasse MaskedState 69
6.5 Klasse SwitchedState 71
6.6 Klasse StrivingState 72
6.7 Klassen ComboState, ISState, SharedISState und CompositeState 73
6.8 Klasse MaskPool für ISState 77
6.9 TransitionMode und ActivityHandler für StateBase 79
7. Anwendung im SDS Container 84
7.1 ComponentManager 84
7.2 ServiceManager 88
7.3 Beispielszenarien für den LifecylceState 89
8. Mögliche Erweiterungen 94
8.1 Ein weiteres Zustandsobjekt: Das Funktions-ZO 94
8.2 Konfiguration der Zustandsobjekte mittels Annotations und XML 96
9. Die Zustandsorientierte Programmierung 101
Stichwortverzeichnis 104
Literaturverzeichnis 106

Textprobe:

Kapitel 6.3, Klasse AggregateState:

Der ServiceManager eines SDS Containers überwacht einen einzelnen SDS Service, welcher im Allgemeinen mehrere SDS Components umfasst. Der ServiceManager hat zwei aggregierte Zustände seiner Komponenten, erstens den Error State und zweitens den Availability Indicator.

Der Error State eines Services ist nur dann NoError, wenn sämtliche seiner Komponenten den Error State NoError innehaben. Sobald wenigstens eine Komponente Failed ist, ist der Error State des Services auch Failed. Unter der Annahme, dass es eine Reihenfolge unter den einzelnen Error States gibt und Failed der kleinere Wert und NoError der größere Wert ist, kann man sagen, dass der Error State eines Services über das Minimum der Error States seiner Komponenten definiert ist.

Der Availability Indicator eines Services hingegen ist das arithmetische Mittel der Availability Indicators seiner Komponenten. Zum Beispiel hat ein Service zwei Komponenten A und B mit den Availibility Indicators 0,67 und 0,97, so hat der entsprechende Service Availability Indicator den Wert 0,82.

Zum Zwecke der Integration einzelner Zustände, ist die Klasse AggregateState implementiert. Den Prototyp der Klasse zeigt das nächste Listing, deren Design dem Strategy Pattern folgt. Die Intention dieses Patterns ist:

Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

Demgemäß ist die Aggregatsfunktion, abgebildet durch IAggregation, vom eigentlichen AggregateState abgekapselt. Die Aggregatsfunktion konfiguriert den aggregierten Zustand sozusagen. Heißt, es können ganz einfach verschiedene Arten von Aggregationen definiert und verwendet werden, z.B. eine Aggregatsklasse, die den minimalen Zustand all seiner Kindzustände errechnet oder den maximalen Zustand oder auch den Durchschnitt aller Kindzustände bildet.

In den Warenkorb
48,00 €

Arbeit zitieren:
Silberbauer, Christian September 2007: Framework für Zustandsorientierte Programmierung, Hamburg: Diplomica Verlag

Schlagworte:
Zustandsorientierung, Programmierung, Container, Framework, Service-Container

Entdecken Sie mehr zum Thema

diplom.de
Bachelor + Master Publishing

Hermannstal 119 k
22119 Hamburg

Fon: +49 (0) 40 655992-0
Fax: +49 (0) 40 655992-22

Service-Telefon

Rufen Sie uns an:
+49 (0) 40 655992-0

Mo-Fr
09.00-16.00 Uhr

diplom.de in den Medien

Folgen Sie uns bei Twitter & werden Sie diplom.de-Fan bei Facebook!
Schreibtipps unserer Lektoren, Neuigkeiten aus dem Verlagsalltag und das Expertenwissen unserer Autoren als Tweet & Post!
Wir freuen uns auf Sie!

diplom.de BACHELOR + MASTER PUBLISHING

Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Magisterarbeiten, Dissertationen und andere Abschlussarbeiten aus allen Fachbereichen und Hochschulen können Sie bei uns als eBook sofort per Download beziehen oder sich auf CD oder als Buch zusenden lassen. Seit mehr als 15 Jahren ist diplom.de der seriöse, professionelle und erfolgreiche Partner für die Veröffentlichung wissenschaftlicher Abschlussarbeiten.

© Diplomica Verlag GmbH 1996-2011, AG Hamburg HRB 80293 - GF Björn Bedey, USt-IdNr.: DE214910002 - Verkehrsnummer: 12285 - Impressum
Index der Arbeiten - Index der Autoren