Muster in der Softwaretechnik

Größe: px
Ab Seite anzeigen:

Download "Muster in der Softwaretechnik"

Transkript

1 Muster in der Softwaretechnik Johannes Biermann, Florian Gaul, Christian Hoffmann Informationstechnik BA Horb Florianstraße Horb Abstract: Nowadays reusable software is a common design goal in software development. Many methods exist to ensure high software quality. The object-oriented approach is one of them and is widely used. You can programme classes that abstract the problem from a certain topic and these classes can be reused in another software project. But this paradigm does not necessarily ensure software quality. The main goal is to reuse your development ideas and decisions. A class does not include the ideas from the design decisions. This is the reason why software patterns exist. They provide an abstract collection of different problems and solutions to them. The idea of creating a pattern catalogue goes back to the architect Christopher Alexander. He made an abstract collection for common architectural problems. Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, also known as the Gang of Four (GoF), adopted the ideas into the software world and published the book Design Patterns: Elements of Reusable Object-Oriented Software. There are two different categories of patterns in Software-Development: architecture patterns and design patterns. The architecture pattern describes the whole system. A typical example of an architecture pattern is the 3-tier architecture. A design pattern describes more specific problems in software development, for example observing a state in a spreadsheet cell. The first part of this study defines the expression pattern. An overview over architecture patterns and design pattern is then given, followed by a more detailed description and some examples. The next part discusses antipatterns, which look like patterns but define the way you should not design your software and solutions are given. The last part covers some special topics like idioms and languages that have built-in patterns. To give a practical example another chapter shows software that can automatically generate code for patterns.

2 Inhaltsverzeichnis 1. Einleitung Definition Kategorisierung Muster Architekturmuster Objektorientierte Muster Analyse-Muster Entwurfsmuster Idiome Beschreibungsmittel von Mustern UML-Diagramme zur Beschreibung von Mustern Textuelle Beschreibung von Mustern Einsatz von Mustern in der Praxis Überblick Entwurfsmuster Adapter Fassade (Facade) Kommando (Command) Abstrakte Fabrik (Abstract Factory) Überblick Architekturmuster Schichtenarchitektur (Layer) Broker Blackboard Pipes and Filter Model View Controller MVC Presentation Abstraction Control PAC (Darstellungs-Abstraktions-Kontrolle) Microkernel Reflexion...16

3 7.9. Architekturmuster Beispiel Microkernel Struktur Vor- und Nachteile von Microkerneln Bekannte Software, die Microkernel einsetzt Patterns und Einsatz in funktionale oder imperativen Sprachen Antipatterns (Antimuster) Design-Antipatterns Gott-Objekt Goldener Hammer Programmierungs-Antipatterns Zwiebel Lavafluss Sonstiges Programmiersprachen mit eingebauten Mustern Softwareunterstützung am Beispiel von StarUML Einbinden von neuen Patterns in das bestehende Modell Übernehmen von Patterns in bestehende Modell Code-Erzeugung Fazit...30

4 1. Einleitung Ein Stück Programmcode oder auch eine Klasse ist nur eine kleine Einheit eines Programms. Durch Bündeln dieser Elemente zu einer Bibliothek oder Framework kann man eine Sammlung von wieder verwendbarem Code erzeugen. Wenn der Code oder das Framework gut dokumentiert wurde, so kann man diesen Teil in einer Vielzahl von Anwendungen erneut verwenden. Doch der Programmcode ist nur ein Teil der Anwendung. Während der Anwendungsentwicklung entstehen neben Programmcode weitere Artefakte eines Programms. Diese Artefakte sind Anwendungsspezifikation, Anwendungsentwurf und Anwendungsdesign. Es stellt sich daher die Frage, wie man dieses Wissen in der Softwareentwicklung wieder verwenden kann? In anderen Disziplinen haben sich so genannte Musterkataloge bereits etabliert. Man entwickelt hier auch nicht alles komplett neu, sondern nutzt bewährte Ansätze. Solche Kataloge lassen sich im Maschinenbau, der BWL und in der Architektur finden. Die erste Beschreibung eines Patterns, also Musters, führte der Architekt Christopher Alexander 1974 ein. Er beschrieb verschiedene Architekturprobleme in seinem Buch A Pattern Language und stellte einen Lösungsansatz für wiederkehrende Probleme dar. In dem folgenden Beispiel sieht man, wie man Türen in einem Raum positioniert. Türen in den Ecken (entnommen aus [Sk00]) Musternummer 196 Design Problem Erklärung d. Problems Ob ein Raum funktioniert oder nicht (wörtl: erfolgreich ist), hängt im Wesentlichen von der Lage der Türen ab. Wenn die Türen Unruhe erzeugen und dadurch die Stellen des Raums entwerten, wird dieser Raum niemals gemütlich werden. In Räumen mit nur einer Tür sollte diese im Allgemeinen in der Ecke liegen. Mittige Türen schaffen meist eine Störungszone, die den Raum in für sinnvolle Nutzungen zu kleine Teilräume zersplittert. Nur bei langen, schmalen Räumen kann eine Mitteltür sinnvoll sein, zumal wenn sie den Raum in zwei nutzbare Raumhälften aufteilt, die jeweils unterschiedliche Funktionen aufnehmen. 1

5 Auch bei Räumen mit mehreren Türen ist die Ecklage sinnvoll, wobei hier auch noch die Beziehungen zwischen den einzelnen Türen eine Rolle spielt. Die Türen sollten also wenn möglich an einer Seite liegen, so dass der Raum nicht von einer Verkehrsfläche durchschnitten wird. Schließlich sollte man noch beachten, dass dieses Muster nicht auf sehr große Räume zutrifft. In einem sehr großen Raum oder in einem Raum mit einem großen Tisch in der Mitte können die Türen in der Mitte sein und trotzdem einen formellen und großzügigen Eindruck vermitteln. Tatsächlich ist es in diesem Fall vielleicht sogar besser, wenn sie in der Mitte sind, damit diese Wirkung entsteht. Das funktioniert aber nur, wenn der Raum groß genug ist. Lösung Außer in sehr großen Räumen sind Türen in der Mitte der Wand selten sinnvoll. Doch wäre eine solche Anordnung z.b. bei einem Eingangsraum, dessen Charakter ja gerade von der Tür bestimmt wird, sinnvoll. In den meisten Räumen jedoch, vor allem in den kleinen, empfiehlt es sich, die Tür soweit wie möglich in die Ecke zu schieben. In Durchgangsräumen sollten beide Türen an einer Seite des Raumes liegen. 2

6 Erklärung d. Lösung Übergeordnete Muster Von Raum zu Raum (131) Mehrere Sitzplätze (142) Wechsel von Hell und Dunkel (135) Untergeordnete Muster Ornament (249) Niedrige Tür (224) Schränke zwischen Räumen (198) Gerahmte Öffnungen (225) Solide Türen mit Glas (237) Tabelle 1: Beispiel Architekturmuster Die Beschreibung des Problems abstrahiert von anwendungsspezifischen Details und verallgemeinert das Muster. Dieses Beispiel kann nun bei allen Architekturproblemen, wo Türen benötigt werden zu Rate gezogen werden. Werden solche Muster geschickt kategorisiert und eingeordnet, so hat der Anwender die Möglichkeit während des Entwurfs schnell nach einer Problemlösung zu suchen und muss sich nicht erst lange Gedanken machen. Inspiriert durch den Ansatz von Christopher Alexander versuchten Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides, auch als Gang of Four (GoF) bekannt, diese Ideen auf die Softwaretechnik zu übertragen. Heraus kam dabei das 1994 veröffentlichten das Buch "Design Patterns - Elements of Reusable Object-Oriented Software". Es Dieses Werk wurde in der darauf folgenden Zeit zum ist das Standardwerk für Muster. 3

7 Muster sind also nicht die Problemlöser schlechthin, sondern eine Ansammlung von praktischen Lösungsmöglichkeiten, die gut funktionieren. Während der Softwareentwicklung tauchen häufige gleichartige Probleme auf, die Programmiersprachen unabhängig sind. Da bekannte Muster bereits oft angewendet wurden, kann man sicher sein, dass dieser Ansatz funktioniert und praxistauglich ist. Gerade bei komplexen Problemen kann durch den erprobten Ansatz die Qualität der Software erhöht werden. Am Anfang wurde bereits gesagt, dass es Muster in vielen Fachbereichen gibt. Im Softwarebereich gibt es außer den Softwaremustern noch weitere Musterarten. So finden sich Muster auch bei der Gestaltung von Benutzeroberflächen und seit kurzem gibt es Designmuster für Webseiten. Diese Ausarbeitung beschäftigt sich jedoch mit Mustern, die für die Softwareentwicklung zum Einsatz kommen. 2. Definition Software Patterns sind: Allgemein bewährte Lösungen für Standardprobleme, also Problem/Lösungs-Paare, die in ähnlicher Form immer wieder angewendet werden können. (Vgl. [Sc96]). 3. Kategorisierung Muster Grundsätzlich werden Muster zwei Kategorien zugeordnet: Architekturmuster und objektorientierte Muster Architekturmuster Architektur Muster beschreiben den zugrunde liegenden strukturellen Aufbau eines Softwaresystems. Sie bilden vordefinierte Subsysteme, spezifizieren deren Verantwortlichkeiten und beinhalten Regeln und Richtlinien um die Beziehungen zwischen den Subsystemen zu organisieren Objektorientierte Muster Objektorientierte Muster können weiter unterteilt werden. Dabei gilt es, die grundsätzliche Unterscheidung zwischen Analyse- und Entwurfsmuster zu treffen. Diese sind den jeweiligen Phasen des Software-Engineerings zugeordnet. 4

8 3.3. Analyse-Muster Analyse-Muster dienen dazu, einen schnelleren Einstieg während der Analysephase zu gewährleisten. Sie beinhalten Klassen und Beziehungsarten, die häufig vorkommen Entwurfsmuster Zu den Entwurfsmustern zählen auch die klassischen durch Gang of Four (GoF) beschriebenen Patterns. Dabei werden diese als Basis für alle anderen Patterns betrachtet. Sie sind in drei Gruppen unterteilt: Erzeugungsmuster (Creational), Strukturmuster (Structural) und Verhaltensmuster (Behavioral) Idiome Idiome (engl.: Dialekt, Ausdrucksweise, Spracheigentümlichkeit) beziehen sich auf eine bestimmte Sprache (z.b. Java Idioms). Sie befassen sich damit wie konkrete Probleme in der jeweiligen Sprache am besten zu lösen sind. Unter [JioA] wird ein Überblick über bekannte Java Idiome gegeben. Ein Idiom ist ein programmiersprachenspezifisches Muster und damit ein Muster auf einer niedrigen Abstraktionsebene. Ein Idiom beschreibt, wie man bestimmte Aspekte von Komponenten oder Beziehungen zwischen ihnen mit den Mitteln einer bestimmten Programmiersprache implementiert. (Vgl. [Bu96]) 4. Beschreibungsmittel von Mustern Um Muster auf eine einheitliche Art beschreiben zu können, hat sich ein mehr oder weniger ein einheitliches Notationssystem herauskristallisiert. Dabei muss auf die Beschreibung des statischen sowie des dynamischen Aspekts des Musters Wert gelegt werden. Diese werden mithilfe von UML-Diagrammen visualisiert UML-Diagramme zur Beschreibung von Mustern Um die Struktur und den Ablauf von Mustern klarer zu machen, werden UML- Diagramme eingesetzt. Dabei muss unterschieden werden, welcher Teil des Musters beschrieben werden soll: Ist der Ablauf eines einzelnen Durchlaufs entscheidend zum Verständnis des Musters sollte auf die dynamische UML-Elemente zurückgegriffen werden (i.d.r.: Sequenzdiagramme, Kommunikationsdiagramme). Spielt aber der strukturelle Aufbau des Musters sowie die komplexen Beziehungen zwischen den einzelnen Klassen die tragende Rolle, sind statische Diagramme angebracht (v.a. Klassendiagramme). 5

9 4.2. Textuelle Beschreibung von Mustern Um die UML-Diagramme aussagekräftiger zu machen, bedarf es noch einer textuellen Beschreibung des Ablaufs und des Aufbaus des Musters. Dazu werden mindestens folgende Bestandteile benötigt: Name Problem / Context Solution Consequences Um eine möglichst einheitliche Beschreibungsform von Mustern gewährleisten zu können, wurde die oben dargestellte Form von der GoF als das GoF-Schema spezifiziert. Oft reichen allerdings diese Kriterien nicht oder nur unzureichend aus um komplexe Muster verständlich zu machen. Dann kann es sinnvoll sein, weitere Aspekte in die Beschreibung mit aufzunehmen. Folgende weitere Kriterien können dazu hilfreich sein: Zweck Also Known As, falls das Muster auch unter anderen Namen geläufig ist Ein Beispielszenario, um die Problemstellung zu verdeutlichen Vorteile und Nachteile des Musters Beispielcode Verwendungsbeispiele Varianten und Strategien des Musters Verweise auf ähnliche Muster oder alternative Lösungsansätze 5. Einsatz von Mustern in der Praxis Da Muster allgemein gelten sollen, sind sie immer abstrakt gehalten. In den Beschreibungen finden sich teilweise benötigte Klassen und das statische und dynamische Verhalten. Um nun ein Muster in einem konkreten Anwendungsfall einsetzen zu können, muss das Muster immer auf das Problem zugeschnitten werden. Die konkrete Implementierung hängt auch von der gewählten Programmiersprache ab. Ein Muster hat immer Stärken bei bestimmten Anforderungen, bringt jedoch auch immer gewisse Nachteile mit sich. Die Entscheidung muss daher sorgfältig geprüft werden. Daher finden sich bei einem Muster immer Verweise auf ähnliche Muster. Zusätzlich sollten andere, nicht funktionale Aspekte wie Widerverwendbarkeit des Codes, Dokumentation und Testbarkeit der Software nicht außer Acht gelassen werden. 6

10 6. Überblick Entwurfsmuster 6.1. Adapter Der Adapter ist eines der am häufigsten angewendeten Entwurfsmuster. Es gehört zur Kategorie der Strukturmuster. Annahme: Eine Java-Bibliothek soll in ein eigenes Projekt integriert werden, besitzt aber nicht die passenden Schnittstellen. Nun müssten im eigenen Projekt alle Klassen, welche die Bibliothek nutzen wollen, eventuell erheblich umgeschrieben werden. Um die Anpassung der eigenen Klassen zur vermeiden, nutzen wir das Adapter-Muster. Damit werden die Schnittstellen der Bibliothek an das eigene Projekt adaptiert. Abbildung 1 - Klassenadapter (UML-Diagramm) 1 Das klassische Beispiel 2 für den Einsatz dieses Musters sind eine runderpflock- und eine quadratischerpflock-klasse. Dies wäre die QuadratischerPflock -Klasse: /** * Die QuadratischerPflock -Klasse. * Dies ist die Zielklasse. */ public class QuadratischerPflock { 1 Bildquelle:

11 } public void stecken(string str) { System.out.println("QuadratischerPflock stecken (): " + str); } Die RunderPflock -Klasse sieht folgendermaßen aus: /** * Die RunderPflock -Klasse. * Dies ist die zu adaptierende Klasse. */ public class RunderPflock { public void inlochstecken(string msg) { System.out.println("RunderPflock inlochstecken (): " + msg); } } Dies ist die PflockAdapter -Klasse: /** * Die PflockAdapter -Klasse. * Das hier ist die Adapter Klasse. * Sie adaptiert einen RunderPflock zu einem QuadratischerPflock. * Die Schnittstelle ist die eines QuadratischerPflock. */ public class PflockAdapter extends QuadratischerPflock { private RunderPflock runderpflock; public PflockAdapter (RunderPflock pflock) {this.runderpflock = pflock;} public void insert(string str) { runderpflock.inlockstecken(str);} } Die hier vorgestellte Variante ist der Klassenadapter, es existiert auch der Objektadapter (siehe Abbildung 2 - Objektadapter (UML-Diagramm)). 8

12 Abbildung 2 - Objektadapter (UML-Diagramm) Fassade (Facade) Das Fassade-Muster gehört zur Kategorie der Strukturmuster. Oft sind die Schnittstellen eines Subsystems sehr umfangreich und manchmal auch unübersichtlich. Um dies zu beheben wird eine Schnittstellen-Fassade gebaut, welche die benötigten Methoden zur Verfügung stellt, die Komplexität aber verbirgt. Außerdem kann die nutzende Klasse auch bei Änderung des Subsystems gleich bleiben Änderungen werden an der Fassade vollzogen. 3 Bildquelle: 9

13 Abbildung 3 - Fassade (UML-Diagramm) Kommando (Command) Das Kommando-Muster gehört zur Kategorie der Verhaltensmuster. Wie auf einer Fernbedienung ein Knopf gedrückt wird, sollen bei einem Auslöser mehrere Tätigkeiten ausgeführt werden. Der Auslösende will hierbei nichts von den Abläufen innerhalb des Systems wissen. Hierzu dient das Kommando-Muster. Es kapselt und entkoppelt eine Befehlsfolge. 4 Bildquelle: 10

14 Abbildung 4 - Kommandomuster (UML-Diagramm) Abstrakte Fabrik (Abstract Factory) Eine Abstrakte Fabrik ist ein erzeugendes Muster, welches eine Schnittstelle zur Erzeugung abstrakter Produkte einer Produktfamilie definiert. Es wird zum Beispiel eine abstrakte Fahrzeugfabrik und ein dazugehöriges abstraktes Objekt Fahrzeug erstellt, die an die konkreten Fabriken Automobilfabrik und Fahrradfabrik vererbt, welche wiederum die konkreten Objekte Automobil und Fahrrad erzeugen. Dadurch werden konkrete Klassen isoliert und der Austausch ganzer Produktfamilien vereinfacht. 5 Bildquelle: 11

15 Abbildung 5 - Abstrakte Fabrik (UML-Diagramm) 6 7. Überblick Architekturmuster Architekturmuster (AM) dienen der Beschreibung einer Softwarearchitektur an sich. Sie umfassen somit die ganze Anwendung. Die AMs sind abstrakt, damit sich damit die Strukturen einer Anwendung beschreiben lassen. Ein AM dient dazu, eine Software grob zu strukturieren als auch eine zentrale Anforderung wie bestimmte Reaktionszeit eines Systems zu erreichen oder eine leichte Anpassbarkeit der Bedienoberfläche. Ein AM beschreibt die Anwendung im Globalen. Aus diesem Grund müssen Subsysteme weiter strukturiert werden. Eine weitere Strukturierung kann mit Entwurfsmustern erfolgen. 7 6 Bildquelle: 7 siehe auch [Bu98] S

16 7.1. Schichtenarchitektur (Layer) Mit der Schichtenarchitektur kann man eine Anwendung in mehrere Gruppen unterteilen. Die beliebtesten Beispiele für Schichtenarchitekturen sind das OSI Netzwerkschichtenmodell und Client-Server Prinzip, dass auf mehrere Ebenen verteilt sind und verschiedene Teilgruppen der Software auf verschiedenen Maschinen laufen. Die Schichtenarchitektur kommt immer dann in Frage, wenn eine unterschiedliche Abstraktion einer Software vorgenommen werden soll und Schichten wieder verwendet werden. Im Idealfall lässt sich eine Schicht austauschen, ohne dass andere Schichten davon betroffen sind Broker Durch die Broker Architektur können verteilte Anwendungen entworfen werden. Dabei sendet der Client eine Anforderung an einen Broker. Dieser Broker sucht dann den passenden Server und sendet die Antwort wieder an den Client. Ein Anwendungsbeispiel für Broker sind Java Enterprise Edition und Webservices. Dabei stellen Anwendungen Methodenaufrufe für andere Anwendungen zur Verfügung. Mit einem Netzwerk und einem speziellen Protokoll rufen dann die Anwendungen diese Methoden über das Netzwerk auf. Ein Beispiel für eine Referenzarchitektur und Protokoll ist die Common Object Request Broker Architecture (CORBA) Blackboard Die Blackboard Architektur wurde entworfen für Probleme, die nicht deterministisch lösbar sind oder für die noch kein vollständiger Lösungsansatz verfügbar sind. Diese Architektur ermöglicht es, Teilprobleme verschiedenen Algorithmen zuzuführen. Typische Algorithmen, die dabei zum Einsatz kommen, sind regel- und rollenbasierend, basieren auf Fuzzy Logik, neuronale Netzwerke, genetische Algorithmen und klassische mathematische Algorithmen. Die Blackboard Architektur ist in Bereichen der Bildverarbeitung und Sprach-, Bild- und Spamerkennung häufig zu finden. Wichtig bei den Blackboard Architektur ist das Zerlegen in Teilprobleme und einfaches Austauschen der verwendeten Algorithmen Pipes and Filter Die Pipes and Filter (PaF) Architektur wurde für Systeme entwickelt, die Datenströme verarbeiten. Jeder Verarbeitungsschritt wird von einem Filter durchgeführt, der nach Ende der Verarbeitung wieder den Datenstrom bereitstellt (Pipes). Die Filter kann man beliebig kombinieren. Ein Anwendungsbeispiel ist ein Compiler, der Programmcode durch verschiedene Schritte ein einen Datenstrom zerlegt. Die bekannteste PaF Architektur ist jedoch UNIX. Unter UNIX existieren viele kleinere Programme, die parametrisiert werden können. Diese Programme können auf beliebige Art kombiniert werden und Datenströme aus verschiedensten Quellen verwenden. 13

17 7.5. Model View Controller MVC Das MVC Muster hat sich mittlerweile zu dem bekanntesten Architekturmuster entwickelt. Mit dem MVC Muster kann man leicht änderbare grafische Anwendungen entwickeln. Die Idee dahinter ist, dass man die Oberfläche beliebig ändern kann. Die Oberfläche ist dabei die Sicht (View), die Sicht kommuniziert mit dem Controller, der wiederum die Daten mit dem Modell abgleicht. Diese Art der Änderbarkeit ist auch bei Webanwendungen gewünscht, so dass dieses Muster dort häufig zu finden ist Presentation Abstraction Control PAC (Darstellungs- Abstraktions-Kontrolle) Dieses Muster ist ähnelt dem MVC Muster. Bei PAC gibt es die Abstraktion, in der die Daten gehalten werden. Die Präsentation ist die Bedienoberfläche. Der Agent hat die Aufgabe, mit beiden Teilen zu kommunizieren. Der Unterschied zu MVC ist, dass jeder PAC Teil nur einen kleinen Teil der Anwendung bereitstellt, etwa ein Knopf oder ein Fenster. Trotzdem hat PAC die positiven Eigenschaften von MVC. PAC Komponenten können vom verschiedenen Entwickler unabhängig entwickelt werden. PAC hat Vorteile bei Software, die in verschiedenen Varianten ausgeliefert werden soll, also etwa Light Version, Pro Version. Auch können einzelne Komponenten einer Oberfläche leichter als bei MVC wieder in einem anderen System verwendet werden Microkernel Microkernel kommen in Softwaresystemen in Einsatz, wo leichte Portierbarkeit oder Erweiterbarkeit gewünscht ist. Dabei werden Kernfunktionen in einen kleinen Kern untergebracht. Alle weiteren Funktionen klinken sich in den Microkernel ein. Bei einem Betriebssystemkern muss bei einer Portierung auf eine andere Prozessorarchitektur im Idealfall nur der Microkernel angepasst werden. Jedoch kommt die Microkernel Architektur nicht nur bei Betriebssystemkernen zum Einsatz, auch bei normaler Software gibt es sinnvolle Anwendungsfälle. Überall, wo eine minimale Funktionsbasis und dynamische Erweiterbarkeit (auch zur Laufzeit) erforderlich sind, kann der Einsatz eines Microkernels in Betracht gezogen werden Reflexion Das Reflexionsmuster hat das Ziel, eine flexibel anzupassende Software zu schaffen. Die Software wird dabei in zwei Teile unterteilt. Der erste Teil ist die Metaebene. In der Metaebene werden Informationen über die Anwendung selbst verwaltet. Hier sind Informationen über Datentypen, Strukturen, Funktionen, Methoden und Algorithmen abgelegt. Der zweite Teil benutzt immer diese Metadaten und bildet die Anwendungslogik. Durch Ändern an den Metadaten kann das Verhalten der Anwendung geändert werden ohne die Logik zu verändern. 14

18 Im Anschluss an die Übersicht wird das Architekturmuster Microkernel näher beschrieben Architekturmuster Beispiel Microkernel Das Architekturmuster Microkernel ist meist in Betriebssystemkernen zu finden. Jedoch kann auch andere Software von diesem Modell profitieren. So basiert zum Beispiel der JBoss Java Application Server auf diesem Pattern. Natürlich ist ein Microkernel auch in Betriebsssystem-Kerneln wie Mach, Windows NT usw. zu finden Struktur Ein Microkern besteht aus fünf Komponenten: (Struktur nach [Bu98] S ) Interner Server Externer Server Adapter Clients Microkern Der Microkern ist die Hauptkomponente der Architektur. In den Microkern werden die notwendigen Kernfunktionalitäten implementiert. Ganz wichtig ist die Implementation einer Kommunikationsmöglichkeit und Ressourcenverwaltung. Die anderen beteiligten Komponenten nutzen die Kommunikationsschnittstellen des Microkerns. Bei einem Betriebssystem würden in den Microkern elementare Fähigkeiten wie Prozess- und Speicherverwaltung und Zugriffe auf Systemressourcen wie Geräte und Dateien implementiert. Der Microkern ist daher sehr klein. Alle über die elementarsten Funktionen hinaus gehenden Funktionen werden in die internen Server implementiert. In dem internen Server sind Grundfunktionalitäten enthalten, die über die minimalen Funktionen eines Microkerns hinausgehen. Um wieder bei dem Beispiel Betriebssystem zu bleiben, findet sich in einem internen Server Treiber für Speichercontroller und Grafikkarten wieder. Der Microkern kann diese Komponenten bei Bedarf laden. Die internen Server stehen nur dem Microkern selbst zur Verfügung. 8 vgl. [Bu98] S

19 Externe Server sind Komponenten, die von außen zugänglich sind. In die externen Dienste können verschiedene Funktionalitäten wie Dateisystemtreiber, weitere nicht elementare Gerätetreiber und weitere Abstraktionen usw. implementiert werden. Die Funktionalitäten der Server sind über Schnittstellen von außen zu erreichen. Die Server kommunizieren mit den internen Diensten über Schnittstellen des Microkerns. Externe Server werden jeweils als eigenständiger Prozess gestartet. Über Adapter werden die Funktionalitäten eines Microkerns nach außen angeboten. Der Adapter kommuniziert dann mit den externen Servern des Microkerns. Ein Client greift immer über Adapter auf den Kernel zu. Der Adapter delegiert dann die Aufrufe an die verschiedenen Server des Clients und reicht die Anfrage dem Client weiter. Sehr wichtig ist es, dass der Microkern selbst sehr klein gehalten wird. Die Kommunikationswege zwischen Kern und den Server müssen sehr schnell und effizient sein. Abbildung 6: Struktur eines Microkernels 9 Zusammenfassend lassen sich folgende Class-Responsibility Karten finden: (vgl.[bu98]) Klasse Microkern Beteiligte Interne Server Verantwortung Atomare Funktionen Interprozesskommunikation Verwaltung von Ressourcen 9 Bildquelle: 16

20 Klasse Interne Server Beteiligte Microkern Verantwortung Weitere Grundfunktionen Kapselung systemspezifischer Funktionen Klasse Externe Server Beteiligte Microkern Verantwortung Weitere gekapselte Funktionen Erweiterungsmöglichkeit des Kernels Klasse Adapter Beteiligte Externe Server Microkern Verantwortung Schnittstellen nach außen Delegiert zwischen verschiedenen Servern Abstrahiert von der internen Implementierung des Kernels Ruft Funktionen des Kernels auf 17

21 Klasse Client Beteiligte Adapter Verantwortung Anwendung, die über die Adapter kommuniziert Bringt man nun diese Klassenzugehörigkeiten in ein Klassendiagramm, so ergibt sich folgendes Klassendiagramm: Abbildung 7: Klassendiagramm 10 In diesem statischen Klassendiagramm sieht man den Nachrichtenfluss eines solchen Systems. Der Adapter ruft dabei die passenden externen Server auf. Der Microkernel ist die zentrale Kommunikationsschnittstelle des Systems. Daher ist darauf zu achten, dass die Kommunikation sehr schnell erfolgt. Der Kern kennt seine internen Server und lädt diese bei Bedarf, während der Microkernel von den externen Servern nichts weiß. Der Adapter ruft diese Server bei Clientanforderung auf. 10 Bildquelle: 18

22 Betrachten wir nun den dynamischen Aspekt dieses Systems: Abbildung 8: Verhalten bei Zugriff von außen 11 Die Abbildung zeigt das Verhalten des Systems, wenn ein externer Server auf Dienste von internen Servern zugreift. Zunächst sendet der externe Server eine Anforderung an den Microkernel. Der Microkernel ruft den passenden internen Server auf und leitet den Aufruf an diesen weiter. Nun gibt der interne Server die Ergebnisse seiner Arbeit an den Microkernel weiter, der diese wiederum an den externen Server zurückgibt. 11 Bildquelle: 19

23 Abbildung 9: Dynamische Aspekte 12 In dieser Abbildung ist der ganze dynamische Ablauf zu sehen, wenn ein Client einen Dienst von dem Microkernel benötigt. Der Client sendet einem Adapter einen Methodenaufruf. Das System muss dafür einen entfernten Prozeduraufruf (RPC) besitzen, sonst wäre der Client untrennbar mit dem Adapter verbunden. Nun bittet der Adapter den Mikrokern um den Aufbau einer Kommunikation mit dem externen Server. Nun sucht der Mikrokern die Adresse des externen Servers und teilt dem Adapater diese Adresse mit. Der Adapter kann nun direkt mit dem externen Server kommunizieren. Der externe Server empfängt nun die Nachricht des Adapters und führt den Aufruf intern durch. Die Ergebnisse werden wieder dem Adapter übermittelt, der diese wiederum an den Client zurück liefert Vor- und Nachteile von Microkerneln Kleiner Systemkern, der gut testbar ist Dynamisch durch externe Server zu erweitern Kapseln von systemspezifischen Bestandteilen, dadurch leicht portierbar Verschiedene Sichten auf das System (durch Adapter und externe Server) Externe Server laufen unter normalen Benutzerrechten - Durch die vielen Kommunikationswege langsamer als ein monolithischer Kern 12 Bildquelle: 20

24 - Synchronisation zwischen vielen Prozessen aufwendig Bekannte Software, die Microkernel einsetzt Microkernel kommen in verschieden Betriebssystemen zum Einsatz. Man findet jedoch oft hybride Kernelformen. Das heißt, dass ein Teil der Funktionalität durch Microkernel realisiert wird und weitergehende Teile einem anderen Muster folgen. Bekannte Implementierungen sind L4, Mach (Teil einiger BSD Systeme), Windows NT Kernel und GNU/Hurd. Daneben gibt es noch Linuxdistributionen, die einen Microkernel anstatt des monolithischen Linux Kernels einsetzen. Dies sind unter anderem MkLinux und spezielle echtzeitfähige Linuxsysteme. Durch die Adapter verhält sich der Microkernel eines solchen Systems von den Aufrufen her wie ein gewöhnlicher Linuxkernel. Microkernel finden sich auch in weiteren Systemen. Er ist bei Serversystemen beliebt, der Mikrokern realisiert die Kernfunktionalitäten, die durch interne Server erweitert werden. Die externen Server sind dann Module, die den Server um weitere Funktionalitäten ergänzen. Daher finden sich Microkernel auch im Apache HTTP Server und in Java Enterprise Servern wie JBoss. Diese Server zeichnen sich durch eine große Anzahl an Modulen aus (externen Servern), mit der die Funktionalität stark erweitert werden kann. 8. Patterns und Einsatz in funktionale oder imperativen Sprachen Da ein Muster die Abstraktion einer Lösung darstellt stellt sich generell die Frage, ab wann solch eine Abstraktion als Muster zu werten ist. Meist ist ein gewisser Grad an Abstraktion Vorraussetzung für eine solche Zuordnung. Auf niedriger Abstraktionsebene haben sich die Idiome als Mini-Muster durchgesetzt. Nicht-Objektorientierte Muster können nicht in einem UML-Diagramm dargestellt werden und es ist schwierig, denselben Grad an Komplexität zu erreichen. Ein Idiom wäre jedoch nicht komplex genug um einem funktionalen Muster gerecht zu werden. Diese befinden sich deshalb meist zwischen beiden Modellen. Besonders im Bereich der funktionalen logischen Programmiersprachen sind einige bekanntere Muster wie zum Beispiel der beschränkte Konstruktor ( Constrained Constructor ) oder die Inkrementelle Lösung ( Incremental Solution ) zu verzeichnenl

25 Auch in der nicht-logischen funktionalen Programmiersprache kennt man einige Entwurfsmuster 14 wie zum Beispiel das Function Object oder das Lazy Object, welches alle Berechnungen bis zum spätmöglichsten Zeitpunkt aufhebt und erst dann ausführt. Johannes Waldmann stellt in einer 2005 veröffentlichten Rede die These auf, dass OO- Entwurfsmuster trotz einer guten Orientierung und Abstraktionen im Rahmen der OO- Programmierung bieten, oft eine klarere funktionale Lösung existiere. 15 Die imperative Programmierung muss währenddessen bislang ohne Entwurfsmuster auskommen. 9. Antipatterns (Antimuster) Im Gegensatz zu Patterns sind Antipatterns Muster, die zwar auf den ersten Blick als gute Lösung erscheinen könnten, bei genauerem Hinsehen aber mehr Nach- als Vorteile bringen. Diese Art der Muster wurde vor allem erforscht und dokumentiert, um gegen geläufige Fehler Prävention zu leisten, indem man sie klar identifiziert und einen Lösungsweg bzw. das passende Entwurfsmuster vorgibt Design-Antipatterns Gott-Objekt Eines der bekanntesten Beispiele für Entwurfs-Antimuster hierfür ist das Gott-Objekt, auch bekannt unter den Namen Big Hairy Object und Blob. Wie der Name schon verrät, handelt es sich hierbei um eine Klasse, in der die objektorientieren Möglichkeiten nur suboptimal ausgenutzt wurden und welche eine Vielzahl an Methoden beinhaltet, die offensichtlich gut in die entsprechenden, meist schon vorhandenen Objekte aufgeteilt werden können Goldener Hammer Als besonders kniffliges Antipattern gilt der goldene Hammer. Er besagt, dass es auch als Antipattern gilt, wenn man versucht, alle Probleme mit einem einzigen (wohlgemerkt an sich positivem) Pattern zu erschlagen ab S [Wa05], S. 5. letzter Teil 22

26 9.2. Programmierungs-Antipatterns Zwiebel Anstatt alten Code zu nutzen oder zu erweitern wird neuer Code einfach wie eine neue Schicht darüber gelegt. Dies kann häufig gesehen werden, wenn ein Programmierer den Code nicht selbst geschrieben hat und ihn deshalb nicht verstehen kann oder will. So entstehen viele Versionen und letztendlich ein Zwiebel-System Lavafluss Ein Lavafluss besteht aus totem Quelltext, der nicht entfernt wurde, so wie ein Lavastrom zu einem bestimmten Zeitpunkt abkühlt und erhärtet. Anstatt den Code zu löschen wird immer mehr Code außen herum gebaut Sonstiges Interessanterweise beschränken sich die Antipatterns nicht nur auf den Programmcode und noch nicht einmal auf die Softwareentwicklung, auch wenn sie wahrscheinlich aus diesem Bereich hervorgingen. So findet sich als Teil der Team-Antipatterns zum Beispiel auch der Doppelgänger. Es beschreibt das Problem, dass eine Person mit einem Manager oder Kollege eine bestimmte Zeit gut und effizient zusammenarbeiten kann. Doch daneben reagiert der Kollege oder Manager bösartig und tritt unvernünftig auf. Des Weiteren existieren unter anderem auch Projektmanagement-Antipatterns und Organisations-Antipatterns Programmiersprachen mit eingebauten Mustern Eines der interessantesten Beispiele für in Programmiersprachen integrierte Patterns stellt Smalltalk dar. Insbesondere das Model-View-Controller-Muster (MVC) wurde durch Trygve Reenskaug für Smalltalk das erste Mal beschrieben und gilt heute als Standard für die Entwicklung eines Softwaresystems. Dieses Muster trennt die Daten ( Model ) von der Darstellung ( View ) und den ändernden Instanzen ( Controller ). Hier kommt auch schon ein weiteres Muster ins Spiel: Um die Daten in der Darstellung immer aktuell zu halten wird das Observer-Muster eingesetzt. 16 weitere Literatur [Br98], [Br99] und [Br00] 23

27 Des Weiteren finden sich in Smalltalk zum Beispiel Anwendungen des Strategy- und des Compositemusters. 11. Softwareunterstützung am Beispiel von StarUML Um den täglichen Einsatz von Design-Patterns zu erleichtern, ist in einigen UML-Case- Tools eine Pattern-Unterstützung integriert. In der Regel führen die Programme Pattern- Kataloge mit, in den auch schon bestimmte Patterns eingepflegt sind (z.b. die GOF- Patterns). Allerdings ist die grundsätzliche Handhabung der verschiedenen Tools teilweise noch etwas verbesserungsbedürftig. Um die Vorgehensweise anhand eines Beispieles aufzuzeigen, wurde das UML- Programm StarUML gewählt. StarUML ist ein Open-Source-UML-Case-Tool für Windows-Plattformen. StarUML bietet unter anderem: UML 2.0-Unterstützung: UML ist ein sich standing weiterentwickelnder Standard der OMG (Object Management Group) und wird von StarUML in der derzeit aktuellsten Version 2.0 unterstützt. MDA (Model Driven Architecture) Eine Plug-in Architektur Pattern-Support 24

28 11.1. Einbinden von neuen Patterns in das bestehende Modell Um neue Patterns, und damit auch neue Klassen, in ein bestehendes UML-Projekt einbinden zu können, bietet StarUML den Apply pattern -Dialog. Dort können bestehende Patterns ausgewählt und in das aktuelle Modell hinzugefügt werden. Abbildung 10: Der "Apply pattern"-dialog Ist das passende Pattern gewählt, können die Namen der neuen Klassen angepasst und abschließend in das Diagramm übernommen werden. Abbildung 11: Ein aus dem Pattern-Katalog übernommenes Pattern 25

29 11.2. Übernehmen von Patterns in bestehende Modell Wird auf bereits bestehende Modelle aufgesetzt, kann auch später ein Pattern auf die Klassen angewendet werden. Dies kann zum Beispiel der Fall sein, wenn nach der Modellierung erkannt wird, dass der Einsatz von einem Entwurfsmuster positiv ist. Um die bestehenden Klassen in das Pattern einzubinden, werden diese in der Parametrisierung des Patterns angegeben. Abbildung 12: Übernehmen von Patterns in bestehende Modell 26

30 Ist dieser Schritt abgeschlossen, baut sich das Modell erneut auf bzw. werden die betroffenen Klassen im Modell aktualisiert. Abbildung 13: Ein erneut generiertes Modell Code-Erzeugung StarUML ist anschließend auch in der Lage, den Quellcode des erzeugten Modells zu generieren. Dazu können verschiedene Profile eingestellt werden. Diese können dann C++, C# und Java-Code erzeugen. 27

31 12. Fazit Die Sammlung und Verwendung von Klassen und Bibliotheken erlauben es, verschiedene Teilfunktionen und Algorithmen wieder zu verwenden. Jedoch kann mit diesen Bibliotheken keine Entwurfsentscheidungen wieder verwendet werden. Software Patterns ermöglichen, Entwurfsideen und Strukturen über das konkrete Softwareprojekt hinaus festzuhalten und zu beschreiben. Die Muster können dann bei ähnlichen Problemstellungen immer wieder verwendet werden. Musterkataloge bilden dabei eine strukturierte Sammlung von Softwaremuster für verschiedenste Problemstellungen. So kann ein Anwender auf diese Sammlung während der Analyse oder des Entwurfs einer Software zurückgreifen und diese Muster an die konkrete Problemstellung anpassen. Durch die vielfache Erprobtheit der Mustersammlungen muss das Rad nicht immer neu erfunden werden. Dies spart Zeit und gibt eine gewisse Garantie, dass der Entwurf auch funktioniert, was durch eigene Ideen nicht immer gewährleistet ist. Es gibt zwei Arten von Mustern. Die einen sind die Architekturmuster, welche die gesamte Systemarchitektur einer Software beschreiben. Ein Beispiel dafür ist die Mehrschichten Architektur. Im Gegensatz dazu gibt es die Entwurfsmuster, die für Teilprobleme der Software angewendet werden, etwa der Observer, der Änderungen in der Tabellenkalkulation überwacht. Daher finden sich in einer Anwendung mehrere Muster, die verschiedene Probleme behandeln. Sehr bekannte Muster sind vielen Softwareentwicklern bekannt. Daher erhöhen Muster das Verständnis für die Funktionsweise der Software. Durch Nennung eines Musters kann man schon den groben Aufbau der Software abschätzen und erleichtert somit die Diskussion über Entwurfsaspekte. Die Muster sind abstrakt gehalten, damit sie für eine ganze Problemklasse anwendbar sind. Daher muss ein Muster immer an den gewünschten Anwendungsfall angepasst werden. Oft gibt es mehrere Muster, die für die Anwendung passen. Daher muss sorgfältig geprüft werden, welches Muster eingesetzt werden soll. Grundsätzlich hat ein Muster gewisse Vorteile für Teilaspekte, bringt jedoch immer Nachteile in anderen Bereichen mit. Natürlich gewährleisten Muster nicht automatisch eine gute Softwarequalität. Die abstrakten Muster müssen erst konkretisiert werden. So kann ein gleiches Muster in zwei Anwendungen völlig anders umgesetzt worden sein. Ein Architekturmuster alleine sagt über die Qualität noch gar nichts aus. Es beschreibt nur den Rahmenaufbau einer Software. In der Software ist noch viel Freiraum für Chaos. Gefährlich ist aber auch das Überstrapazieren von Mustern, also dass für fast jedes Problem ein Muster gesucht wird. 28

32 Literaturverzeichnis [Bu98] Buschmann et al.: Pattern-orientierte Software-Architektur. Ein Pattern-System. Addison-Wesley. ISBN [Bu96] Buschmann, F. et al.: Pattern-Oriented Software Architecture - A System of Patterns, John Wiley & Sons, New York, 1996 [Kü99] Kühne, Thomes: A Functional Pattern System for Object-Oriented Design. Verlag Dr. Kovac; Auflage: 1. Aufl. (1999); ISBN: [Wa05] Waldmann, Johannes: Objektorientierte Entwurfsmuster in der Funktionalen Programmierung. HTWK Leipzig, Juni Weblink: [Sk00] Stephan Kohlrausch, Türen in den Ecken, Bauhaus-Universität Weimar, April 2000 (Sekundärquelle für Alexander Christophers Patternsammlung) [Ez99] Ezgarani, O.: The Magic Format Your Way to Pretty Books, Noah Sons, [JioA] Abruf am [Sc96] Software Patterns, Commun. ACM, October 1996, [Br98] Brown, William J.; Raphael C. Malveau, Hays W. "Skip" McCormick, Dr. Thomas J. Mowbray, Theresa Hudson (ed).) (1998). AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. John Wiley & Sons, ltd. ISBN [Br99] Brown, William J.; Raphael C. Malveau, Hays W. "Skip" McCormick, Scott W. Thomas, Theresa Hudson (ed).) (1999). Anti-Patterns and Patterns in Software Configuration Management. John Wiley & Sons, ltd. ISBN [Br00] Brown, William J.; Raphael C. Malveau, Hays W. "Skip" McCormick, Scott W. Thomas, Theresa Hudson (ed).) (2000). Anti- Patterns in Project Management. John Wiley & Sons, ltd. ISBN

33 Abbildungsverzeichnis Abbildung 1 - Klassenadapter (UML-Diagramm)...9 Abbildung 2 - Objektadapter (UML-Diagramm)...11 Abbildung 3 - Fassade (UML-Diagramm)...12 Abbildung 4 - Kommandomuster (UML-Diagramm)...13 Abbildung 5 - Abstrakte Fabrik (UML-Diagramm)...14 Abbildung 6: Struktur eines Microkernels...18 Abbildung 7: Klassendiagramm...20 Abbildung 8: Verhalten bei Zugriff von außen...21 Abbildung 9: Dynamische Aspekte...22 Abbildung 10: Der "Apply pattern"-dialog...27 Abbildung 11: Ein aus dem Pattern-Katalog übernommenes Pattern...27 Abbildung 12: Übernehmen von Patterns in bestehende Modell...28 Abbildung 13: Ein erneut generiertes Modell...29 Tabellenverzeichnis Tabelle 1: Beispiel Architekturmuster...5

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess malte@mathematik.uni-ulm.de Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm

Mehr

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen 9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08 Security Patterns Benny Clauss Sicherheit in der Softwareentwicklung WS 07/08 Gliederung Pattern Was ist das? Warum Security Pattern? Security Pattern Aufbau Security Pattern Alternative Beispiel Patternsysteme

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi Design Pattern - Strukturmuster CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi Agenda Einleitung Strukturmuster Fassade Model View Controller Vergleich 2 Einleitung Strukturmuster

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Prof. Dr. Dr. h.c. Manfred Broy Sommersemester Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Einführung in die Softwaretechnik Übung 6: Feinentwurf Aufgabe 17: Entwurfsmuster

Mehr

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08 Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten Seit Anfang Juni 2012 hat Facebook die Static FBML Reiter deaktiviert, so wird es relativ schwierig für Firmenseiten eigene Impressumsreiter

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

8 Design Patterns. Events

8 Design Patterns. Events 8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 9 Dr. H. Ehler, S. Wagner 11. Januar 2007 Übungen zu Softwaretechnik Aufgabe 15 Systemerstellung / Systemarchitektur nach dem V- Modell XT Machen Sie sich mit den

Mehr

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung? Kapitelübersicht Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge Was bedeutet Objektorien+erung? ObjektorienCerte Analyse und Design die Objektmodellierung

Mehr

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems Name: Bruno Handler Funktion: Marketing/Vertrieb Organisation: AXAVIA Software GmbH Liebe Leserinnen und liebe Leser,

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI TTS - TinyTimeSystem Unterrichtsprojekt BIBI Mathias Metzler, Philipp Winder, Viktor Sohm 28.01.2008 TinyTimeSystem Inhaltsverzeichnis Problemstellung... 2 Lösungsvorschlag... 2 Punkte die unser Tool erfüllen

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

Content Management System mit INTREXX 2002.

Content Management System mit INTREXX 2002. Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,

Mehr

Model View Controller Pattern

Model View Controller Pattern Christian Vogt HAW Hamburg 19. Dezember 2011 Inhaltsverzeichnis 1 Prolog Einleitung Entwurfsmuster andere Muster 2 Model-View-Controller Hintergrund Konzept Umsetzung 3 Beispiele Überblick Beispiel in

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014 Konfiguration VLAN's Version 2.0.1 Deutsch 01.07.2014 In diesem HOWTO wird die Konfiguration der VLAN's für das Surf-LAN der IAC-BOX beschrieben. Konfiguration VLAN's TITEL Inhaltsverzeichnis Inhaltsverzeichnis...

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Projektmanagement in der Spieleentwicklung

Projektmanagement in der Spieleentwicklung Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Vortrag von: Ilias Agorakis & Robert Roginer

Vortrag von: Ilias Agorakis & Robert Roginer MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

SDD System Design Document

SDD System Design Document SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

Persönliches Adressbuch

Persönliches Adressbuch Persönliches Adressbuch Persönliches Adressbuch Seite 1 Persönliches Adressbuch Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. ALLGEMEINE INFORMATIONEN ZUM PERSÖNLICHEN

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Workshop: Eigenes Image ohne VMware-Programme erstellen

Workshop: Eigenes Image ohne VMware-Programme erstellen Workshop: Eigenes Image ohne VMware-Programme erstellen Normalerweise sind zum Erstellen neuer, kompatibler Images VMware-Programme wie die Workstation, der ESX-Server oder VMware ACE notwendig. Die Community

Mehr

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN Der Zauberwürfel-Roboter Paul Giese Schule: Wilhelm-Raabe-Schule Jugend forscht 2013 Kurzfassung Regionalwettbewerb Bremerhaven

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16 Änderungen in Dokumentation und Software sind vorbehalten! Copyright Copyright 2005 COSA GmbH Alle Rechte vorbehalten.

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Lizenzierung von SharePoint Server 2013

Lizenzierung von SharePoint Server 2013 Lizenzierung von SharePoint Server 2013 Das Lizenzmodell von SharePoint Server 2013 besteht aus zwei Komponenten: Serverlizenzen zur Lizenzierung der Serversoftware und CALs zur Lizenzierung der Zugriffe

Mehr

Informatik 1 Tutorial

Informatik 1 Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so

Mehr

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung The ToolChain Grafisches Debugging mit der QtCreator Entwicklungsumgebung geschrieben von Gregor Rebel 2014-2015 Hintergrund Neben dem textuellen Debuggen in der Textkonsole bieten moderene Entwicklungsumgebungen

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Mediumwechsel - VR-NetWorld Software

Mediumwechsel - VR-NetWorld Software Mediumwechsel - VR-NetWorld Software Die personalisierte VR-NetWorld-Card wird mit einem festen Laufzeitende ausgeliefert. Am Ende der Laufzeit müssen Sie die bestehende VR-NetWorld-Card gegen eine neue

Mehr

Inkrementelles Backup

Inkrementelles Backup Inkrementelles Backup Im Gegensatz zu einer kompletten Sicherung aller Daten werden bei einer inkrementellen Sicherung immer nur die Dateien gesichert, die seit der letzten inkrementellen Sicherung neu

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

Installation OMNIKEY 3121 USB

Installation OMNIKEY 3121 USB Installation OMNIKEY 3121 USB Vorbereitungen Installation PC/SC Treiber CT-API Treiber Einstellungen in Starke Praxis Testen des Kartenlesegeräts Vorbereitungen Bevor Sie Änderungen am System vornehmen,

Mehr

Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären:

Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären: Lassen Sie sich dieses sensationelle Projekt Schritt für Schritt erklären: Gold Line International Ltd. Seite 1 STELLEN SIE SICH VOR: Jeder Mensch auf der Erde gibt Ihnen 1,- Dollar Das wäre nicht schwer

Mehr

Bilder Schärfen und Rauschen entfernen

Bilder Schärfen und Rauschen entfernen Bilder Schärfen und Rauschen entfernen Um alte Bilder, so wie die von der Olympus Camedia 840 L noch dazu zu bewegen, Farben froh und frisch daherzukommen, bedarf es einiger Arbeit und die habe ich hier

Mehr

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt Objektorientierter Software-Entwurf Grundlagen 1 1 Einordnung der Veranstaltung Analyse Design Implementierung Slide 1 Informationssystemanalyse Objektorientierter Software-Entwurf Frühe Phasen durch Informationssystemanalyse

Mehr

Kurzeinweisung. WinFoto Plus

Kurzeinweisung. WinFoto Plus Kurzeinweisung WinFoto Plus Codex GmbH Stand 2012 Inhaltsverzeichnis Einleitung... 3 Allgemeines... 4 Vorbereitungen... 4 Drucken des Baustellenblatts im Projekt... 4 Drucken des Barcodes auf dem Arbeitsauftrag

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Application Layer Active Network

Application Layer Active Network Folie 1 Application Layer Active Network Vortrag zur Diplomarbeit Entwicklung eines Netzwerk-Interface zur Steuerung der Datenkommunikation einer Netzwerkkarte geschrieben und gehalten von Martin Wodrich

Mehr

ARAkoll 2013 Dokumentation. Datum: 21.11.2012

ARAkoll 2013 Dokumentation. Datum: 21.11.2012 ARAkoll 2013 Dokumentation Datum: 21.11.2012 INHALT Allgemeines... 3 Funktionsübersicht... 3 Allgemeine Funktionen... 3 ARAmatic Symbolleiste... 3 Monatsprotokoll erzeugen... 4 Jahresprotokoll erzeugen

Mehr

WordPress. Dokumentation

WordPress. Dokumentation WordPress Dokumentation Backend-Login In das Backend gelangt man, indem man hinter seiner Website-URL einfach ein /wp-admin dranhängt www.domain.tld/wp-admin Dabei gelangt man auf die Administrationsoberfläche,

Mehr

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D 1 1. EINLEITUNG... 3 2. ZWECK... 3 3. MOTIVATION... 3 4. ANWENDBARKEIT... 6 5. STRUKTUR... 6 6. TEILNEHMER... 7 7. INTERAKTION...

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und

Mehr

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen!

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen! Stefan Böttner (SB4) März 2013 Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen! Verwendbar ab EEP7.5(mitPlugin5) + EEP8 + EEP9 Abmessung: (B 12m x H 12m) Die Einsatzhöhe

Mehr

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur UML-Klassendiagramme als Werkzeug im Unterricht Blitzlicht? In welcher Programmiersprache(n) unterrichten Sie?? In welchem Umfang unterrichten Sie Objektorientierung??

Mehr

Was ist neu in Sage CRM 6.1

Was ist neu in Sage CRM 6.1 Was ist neu in Sage CRM 6.1 Was ist neu in Sage CRM 6.1 In dieser Präsentation werden wir Sie auf eine Entdeckungstour mitnehmen, auf der folgende neue und verbesserte Funktionen von Sage CRM 6.1 auf Basis

Mehr

Fragen 2015. Arthur Zaczek. Apr 2015

Fragen 2015. Arthur Zaczek. Apr 2015 Arthur Zaczek Apr 2015 1 Ihre Fragen 2015 2 WPF 2.1 Code Behind Mit dem MVVM Pattern haben wir praktisch keinen Nutzen für das Code Behind der WPF Forms, sind diese dann eher für kleinere Applikationen

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Anleitung zur Webservice Entwicklung unter Eclipse

Anleitung zur Webservice Entwicklung unter Eclipse Entwicklungsumgebung installieren Sofern Sie nicht an einem Praktikumsrechner arbeiten, müssen Sie ihre Eclipse-Umgebung Webservice-fähig machen. Dazu benötigen Sie die Entwicklungsumgebung Eclipse for

Mehr