Entwurf einer Middleware zur Unterstützung der Entwicklung komponentenbasierender Softwaresysteme. Diplomarbeit im Fach Informatik

Größe: px
Ab Seite anzeigen:

Download "Entwurf einer Middleware zur Unterstützung der Entwicklung komponentenbasierender Softwaresysteme. Diplomarbeit im Fach Informatik"

Transkript

1 Entwurf einer Middleware zur Unterstützung der Entwicklung komponentenbasierender Softwaresysteme Diplomarbeit im Fach Informatik vorgelegt von Tobias Limmer, B.IT. (Hons.) geboren am in Schrobenhausen Angefertigt am Institut für Informatik Lehrstuhl für Informatik 4 (Verteilte Systeme und Betriebssysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Betreuer: Prof. Dr.-Ing. habil. Wolfgang Schröder-Preikschat Dr.-Ing. Jürgen Kleinöder Dipl.-Ing. Efthimios Liakos, Siemens AG Victor Sauermann, Siemens AG Beginn der Arbeit: Abgabe der Arbeit:

2

3 Ich versichere, dass ich die Arbeit ohne fremde Hilfe und ohne Benutzung anderer als der angegebenen Quellen angefertigt habe, und dass die Arbeit in gleicher oder ähnlicher Form noch keiner anderen Prüfungsbehörde vorgelegen hat und von dieser als Teil einer Prüfungsleistung angenommen wurde. Alle Ausführungen, die wörtlich oder sinngemäß übernommen wurden, sind als solche gekennzeichnet. Erlangen, den

4

5 Kurzfassung Für komplexe Anwendungen setzt sich immer mehr die komponentenbasierte Entwicklung durch. Dabei werden Komponenten entworfen, welche möglichst unabhängig voneinander eingesetzt werden können. Ein Ziel ist die Wiederverwendung von Komponenten, welche aber durch die Verwendung von unterschiedlichen Middlewareplattformen eingeschränkt wird: es muss zusätzlicher Entwicklungsaufwand investiert werden, Komponenten von einer Plattform auf die andere zu portieren. Diese Arbeit entwickelt einen Prototyp einer Middlewareschicht, welcher die Schnittstellen unterschiedlicher Middlewareplattformen abstrahiert und Anwendungen eine einheitliche Schnittstelle zur Verfügung stellt. Dabei werden hierarchische Komponentenstrukturen in der Konfiguration unterstützt. Zusätzlich wird eine leichtgewichtige Implementierung von Middlewarediensten zur Verfügung gestellt, sodass die Ausführung komponentenbasierter Anwendungen auch ohne Middlewareplattform möglich ist, wie beispielsweise für GUI-Anwendungen. Abstract Component-based design is becoming more and more common for the development of complex applications. One of its goals is the reuse of components. This goal is constricted by the employment of different middleware platforms: additional effort needs to be invested to port components between platforms. This work devises a prototype of a middleware layer which abstracts interfaces of different middleware platforms. A common interface is provided to the application and thus independence of middleware platforms is achieved. To enable the execution of component-based applications like GUI applications without the use of a heavyweight middleware platform, we also provide a lightweight implementation of middleware services.

6

7 Danksagung Ich bedanke mich vielmals bei all denen, die mir geholfen haben diese Arbeit fertigzustellen. Als Erstes möchte ich mich bei meinen Betreuern bei Siemens, Efthimios Liakos und Victor Sauermann, für die Möglichkeit bedanken, meine Diplomarbeit in der Wirtschaft schreiben zu können. Sie standen mir zu jeder Zeit mit Rat und Tat zur Seite. Auch bei meinen wissenschaftlicher Betreuer Dr. Jürgen Kleinöder möchte ich mich sehr für seine Ratschläge und gedankliche Führung bedanken. Weiterhin möchte ich Wolfgang Rössler für die hilfreichen Diskussionen und Kommentare danken. Die sehr gute Arbeitsatmosphäre in der Abteilung I&S Software Factory trug viel zum Gelingen dieser Arbeit bei. Ohne der ständigen Unterstützung meiner Familie wäre es mir natürlich auch nicht möglich gewesen, diese Arbeit abzuschließen. Vielen Dank!

8 Inhaltsverzeichnis Abbildungsverzeichnis Tabellenverzeichnis Akronyme ix ix xi 1. Einführung Motivation Ziele Struktur der Arbeit Überblick Komponentenbasierte Entwicklung UML Middleware Einführung Implementierungen Analyse der verwendeten Middlewareplattformen JMX Aufbau Managed Beans JMX in JBoss OSGi Überblick Aufbau Komponentenintegration Spring Framework Überblick Inversion-of-Control Container Spring OSGi Vergleich JMS

9 Inhaltsverzeichnis ix Überblick JMS in JBoss Zusammenfassung Entwurf einer plattformunabhängigen Middlewareschicht Voraussetzungen und Ziele Angebotene Dienste Lebenszyklus Schnittstellenimport und -export Asynchroner Nachrichtenaustausch Verwendung Einbindung in Komponente Komponentenhierarchie Asynchroner Nachrichtenaustausch Konfiguration Buildprozess Ausführung Internes Design Aufbau von CIML Komponentenlebenszyklus Schnittstellenimport und -export Asynchroner Nachrichtenaustausch CIMLBuild Zusammenfassung Diskussion Design Zyklen bei Schnittstellenimport und -export Komponentensichtbarkeit Vergleich von dynamischer und statischer Komponentenerstellung Erfüllung der Anforderungen Vergleich mit Spring OSGi Fazit Zukünftige Arbeit A. Aufbau von CIML 82 A.1. Klassendiagramme A.2. CIML-Classloader Prozess

10 x Inhaltsverzeichnis B. Programmatische Schnittstellen zur Anwendung 85 B.1. AMS B.2. ShutdownTriggerBean C. Konfiguration 86 C.1. Definition C.2. Beispiel C.2.1. Überblick C.2.2. CIML C.2.3. JBoss C.2.4. OSGi

11 Abbildungsverzeichnis 1.1. Quellcodezeilen in Microsoft Windows c Betriebssystemen Schnittstellen von Komponenten in der UML Komponentenverbindung in der UML Delegierende Ports in der UML Kommunikation zwischen Komponenten mit Hilfe von Middleware Beispiel für synchrone Kommunikation zwischen Komponenten Systemarchitektur von JMX Architekturebenen von OSGi Funktionsweise des Spring Containers Struktur einer Queue beim Point-to-Point Modell von JMS Struktur eines Topics beim Publish-Subscribe Modell von JMS Aufteilung des IoC Paradigmas auf zwei Ebenen Hierarchische Anordnung von Komponenten Zustandsdiagramm des Komponentenlebenszyklus Import einer Schnittstelle in den Spring Applikationskontext Applikationskonfiguration für Verbindung von Komponenten Einbindung von CIML innerhalb einer Komponente Beispiel einer Komponentenhierarchie Beispiel eines delegierenden Ports Beispiel eines internen Ports Buildprozess von Anwendungen für CIML Dienste von CIML mit benutzten Bibliotheken Interaktion von CIML mit externen Einheiten Klassenstruktur des ComponentManagers Aufrufstruktur des CIML-Containers in der Komponentehierarchie Ablaufskizze eines Schnittstellenimports ohne Benutzung einer externen Middlewareplattform Ablaufskizze eines Schnittstellenimports mit Benutzung einer externen Middlewareplattform

12 xii Abbildungsverzeichnis Ablaufskizze eines Schnittstellenimports von einer intern sichtbaren Komponente AMS Zugriffe zwischen intern und extern sichtbaren Komponenten Beispiele für Zyklen bei Import und Export von Schnittstellen Ablauf bei Verwendung einer Rückruffunktion Konflikte bei unterschiedlichen Komponentensichtbarkeiten

13 Tabellenverzeichnis 3.1. Funktionsvergleich zwischen Middlewareplattformen Vergleich von synchronem Nachrichtenaustausch und Lebenszyklusmanagement zwischen Middlewareplattformen

14 Akronyme AMS API CCM CIML CORBA DRE DSML EJB HTTP IDL IoC JAR Java EE JFC JMS JMX LGPL MDA MOM OMG OSGi POJO RMI RPC SOA SQL UML XML Asynchronous Messaging Service Application Programming Interface CORBA Component Model Container Independent Middleware Layer Common Object Request Broker Architecture Distributed Real-time and Embedded Domain-Specific Modeling Language Enterprise Java Beans Hypertext Transfer Protocol Interface Description Language Inversion of Control Java Archive Java Enterprise Edition Java Foundation Classes Java Message Services Java Management Extensions GNU Lesser General Public License Model Driven Architecture Message Oriented Middleware Object Management Group Open Standards Gateway Initiative Plain old Java Object Remote Method Invocation Remote Procedure Call Service Oriented Architecture Structured Query Language Unified Modeling Language Extensible Markup Language

15 1. Einführung 1.1. Motivation Durch die steigende Automatisierung von Aufgaben in unserer modernen Gesellschaft wird immer mehr Software in den verschiedensten Geräten eingesetzt. Aufgabenbereiche von Software reichen von Haushaltsgeräten, Industrierobotern zu Computern, welche mittlerweile in jedem Haushalt üblich geworden sind. Neben der Verbreitung erhöhte sich auch der Umfang der eingesetzten Software. Vor 20 Jahren bietete eine Textverarbeitung auf einem Computer nur Textausgabe ohne grafischer Benutzerschnittstelle an. In der heutigen Zeit wird nicht nur von einer Textverarbeitung erwartet, dass man Text editieren kann, sondern dass es möglich ist, darin Grafiken zu erstellen, ein Dokument im Internet zu veröffentlichen und eine Grammatikprüfung durchzuführen. Eine Möglichkeit, die Komplexität von Software zu messen, ist die Anzahl der Quellcodezeilen, also der Lines of Code. Am Beispiel des Betriebssystems Microsoft Windows kann man sehen, dass sich innerhalb von 12 Jahren der Umfang des Quellcodes verzehnfacht hat, wie in Abbildung 1.1 gezeigt wird (Quellen: [25, 15, 6]). Im ähnlichen Maße hat sich demnach auch die Komplexität der Software gesteigert. Um die Größe von Programmen verwalten zu können, wurden immer neue Technologien in der Softwareentwicklung eingeführt. Ein immer öfter angewandtes Paradigma ist die komponentenbasierte Entwicklung von Anwendungen. Dabei wird eine Applikation aus mehreren Komponenten zusammengesetzt. Die Komponenten werden so entworfen, dass sie möglichst wenige kleine Schnittstellen und Abhängigkeiten zu anderen Kompo- 45 Microsoft Windows Lines of Code 40 NT (1993) 6 30 NT 3.5 (1994) NT (1996) (2000) XP 5(2002) 40 0 Vista Beta 2 (2005) 50 Mio. Lines of Code 50 NT 3.1 (1993) NT 3.5 (1994) NT 4.0 (1996) 2000 (2000) XP (2002) Vista Beta 2 (2005) Abbildung 1.1.: Quellcodezeilen in Microsoft Windows c Betriebssystemen

16 2 Einführung nenten besitzen. Durch diese Methodik ist es möglich, während der Entwicklung eine bessere Übersicht über eine Anwendung zu erhalten, und dadurch die Programme besser zu strukturieren. Dies verkürzt die Entwicklungsdauer, da der Quellcode weniger komplex geartet ist und sich bei der Programmierung weniger Fehler einschleichen. Ein weiterer Vorteil ist die Wiederverwendung: Komponenten eignen sich durch ihrer geringen Anzahl an Schnittstellen für Einsatz in anderen Applikationen, falls deren Funktionalität darin erneut benötigt wird. Durch die Wiederverwendung lassen sich Kosten sparen, da auf erneute Entwicklung der gleichen Funktionalität verzichtet werden kann. Oft wird im Zusammenhang komponentenbasierter Entwicklung Middleware eingesetzt. Diese stellt Funktionen zur Unterstützung der Anwendung neben dem Betriebssystem bereit. Middleware kann die Verwendung von Komponenten hinsichtlich der Verteilung über mehrere Geräte, Transaktionssicherheit, Persistierung von Objekten und vieles mehr unterstützen. Dafür existieren verschiedene Implementierungen, welche für unterschiedliche Einsatzgebiete vorgesehen sind und jeweils verschiedene Vorteile besitzen. Beispiele dafür sind das OSGi Framework für eingebettete Systeme, CORBA für programmiersprachenunabhängige Kommunikation über Netzwerke oder Java EE mit Enterprise Java Beans für Geschäftsanwendungen. Alle Funktionen dieser Middlewareimplementierungen sind darauf ausgerichtet, die Entwicklung von Anwendungen in bestimmen Bereichen zu vereinfachen. Deshalb ist es nötig, je nach Einsatzgebiet der Anwendung unterschiedliche Middlewareimplementierungen zu nutzen. Da aber viele Middlewareimplementierungen unterschiedliche Schnittstellen für die Ansteuerung von Seiten der Anwendungsseite besitzen, müssen Komponenten bei Wiederverwendung in anderer Middleware angepasst werden. Diese Aufgabe kann so aufwändig sein, dass ein großer Teil der Einsparung durch Wiederverwendung der Funktionalität aufgebraucht wird. Ein weiterer Faktor ist die Einarbeitungszeit in verschiedene Schnittstellen: D. Schmidt et al. stellen in ihrer Arbeit von 2004 [20] fest, dass Programmierer durchschnittlich 6-9 Monate zur Einarbeitung benötigen, bis sie ein Framework hocheffektiv nutzen können. Somit kann es kosteneffektiver sein, ein neues Framework zu entwickeln, wenn es die Einarbeitungszeit in mehrere Andere erspart Ziele Aufbauend auf dem Ansatz, dass ein neues Framework Portierungsaufwand von Komponenten und die Einarbeitung in unterschiedliche Frameworks erspart, soll in dieser Arbeit eine Middlewareschicht entworfen werden. Diese Schicht wird zwischen Applikation und einer Middlewareplattform eingefügt, sodass die Anwendung eine selbst definierte Schnittstelle zur Middlewareschicht ansteuert. Die außen liegende Middlewareplattform kann beliebig gewechselt werden, ohne dass der Anwendungscode innerhalb von Kompo-

17 1.3 Struktur der Arbeit 3 nenten geändert werden muss. Dadurch wird die Entwicklung von neuen Anwendungen durch die in dieser Arbeit entworfene Middlewareschicht, genannt CIML (Container Independent Middleware Layer), effizient unterstützt. Folgende Eigenschaften und Dienste soll CIML unterstützen: Registrierung und Lokalisierung von internen und externen Schnittstellen: Komponenten sollen Schnittstellen exportieren können, auf die andere Komponenten zugreifen und darüber Methoden für synchronen Nachrichtenaustausch aufrufen können. Verwaltung eines Komponentenlebenszykluses: Komponentenbasierte Programme werden häufig direkt von Middlewareplattformen gestartet. Hierbei besitzt jede Komponente einen Lebenszyklus mit mehreren Zuständen. Mit Hilfe von Ereignissen wird die Komponente über Zustandswechsel informiert. Asynchroner Nachrichtenaustausch: Ein zusätzlicher Dienst neben dem Schnittstellenimport und -export wird von CIML für asynchronen Nachrichtenaustausch über Kanäle angeboten, sodass Publish/Subscribe Systematik nachgebildet werden kann. Bereitstellung eines unterstützenden Frameworks innerhalb von Komponenten: Bestimmte Middlewarefunktionen, welche von einigen Middlewareplattformen zur Verfügung gestellt werden, können innerhalb von Komponenten benutzt werden. Dies umfasst unter anderem Persistierung oder aspektorientierte Programmierung. Somit werden Funktionen, welche nicht über mehrere Komponenten hinweg angeboten werden müssen, nur innerhalb einer Komponente zur Verfügung gestellt. Unterstützung von Standalone Anwendungen: In CIML entwickelte Anwendungen sollen ohne externe Middlewareplattformen effizient lauffähig sein, sodass auch GUI Anwendungen damit gestartet werden könnten. Hierarchische Komponentenstrukturen: In traditionellen Middlewareplattformen werden nur flache Komponentenstrukturen unterstützt. CIML wird hierarchisch geschachtelte Komponentenstrukturen mit mehreren Ebenen verwalten können. Im Geschäftsbereich sind aktuell hauptsächlich zwei Programmiersprachen im Einsatz: Java von Sun Microsystems und C von Microsoft. In dieser Arbeit wird Java verwendet und die von CIML unterstützten Middlewareplattformen sind das OSGi Framework und der Applikationsserver JBoss mit JMX Unterstützung Struktur der Arbeit In nächsten Kapitel wird ein Überblick über komponentenbasierte Entwicklung und Middleware gegeben. Im anschließenden Kapitel werden die von CIML verwendeten

18 4 Einführung Middlewareplattformen und -technologien analysiert und miteinander verglichen, damit Gemeinsamkeiten und Unterschiede zwischen den Technologien sichtbar werden. Das Design von CIML wird im darauffolgenden Kapitel beschrieben, folgend mit einer Diskussion des Designs und einer Überprüfung, ob das entwickelte Ergebnis den Zielen der Arbeit entspricht.

19 2. Überblick In diesem Kapitel wird eine kurze Einführung in die Thematik dieser Arbeit gegeben: im ersten Abschnitt wird komponentenbasierte Entwicklung und UML erläutert. Anschließend wird der Zusammenhang von Komponenten mit Middleware erklärt und verschiedene Middlewareimplementierungen kurz vorgestellt Komponentenbasierte Entwicklung Die sich erhöhende Komplexität von Software zwingt Softwaredesigner dazu, den Entwicklungsprozess immer weiter zu vereinfachen. Schon immer ist in der Geschichte der Softwareentwicklung ein Trend zur Abstraktion erkennbar gewesen. Anfangs wurde der Prozessor direkt mit Assemblerbefehlen programmiert, diese Befehle wurden später zusammengefasst und abstrahiert zu der prozeduralen Programmierung wie beispielsweise in der Programmiersprache C. Der nächste Schritt in dieser Entwicklung war die Einführung des Paradigmas der Objektorientiertheit, in der einzelne Prozeduren und Variablen zu Klassen gruppiert wurden, was die Softwareentwicklung wiederum übersichtlicher gemacht hat. Der Übergang von Programmen, welche nur auf einzelnen Rechnern ausgeführt wurden, zu sogenannten verteilten Applikationen, welche auf mehreren Computern gleichzeitig liefen und über das Netzwerk Daten austauschten, wurde durch die Verwendung von Bibliotheken, die zum Beispiel RPC (siehe auch Abschnitt 2.2.1) bereitstellen, erleichtert. Sie führten aber keine neue Vorgehensweise bei der Anwendungsentwicklung zur weiteren Abstraktion der Software ein. Diesen Schritt vollzog die komponentenbasierte Entwicklung, in der eine Anwendung nach dem Prinzip seperation of concerns in mehrere Komponenten aufgeteilt wurde. Die Definition einer Komponente ist sehr wichtig, da diese eine der Kriterien für das Design von Komponenten ist. Sie entscheidet mit, wann Anwendungscode in eine neue Komponente ausgelagert oder in eine Bestehende hinzugefügt wird. Bei diesem Thema gibt es verschiedene Sichtweisen, aber C. Szyperski bietet eine der klarsten Definitionen [24]: A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties.

20 6 Überblick Somit lassen sich folgende Eigenschaften für Komponenten zusammenfassen (siehe auch [8, 1]): Eine Komponente realisiert abgekapselte Funktionalitäten. Es existieren explizit definierte Schnittstellen und Abhängigkeiten zwischen Komponenten. Dabei wird versucht, diese möglichst klein zu halten. Je kleiner die Interaktion zwischen Komponenten ist, desto loser sind sie gekoppelt ( loose coupling ). Diese Abkapselung verbessert die Möglichkeiten, Komponenten auszutau- schen, voneinander unabhängig zu verbessern und sie isoliert zu testen. Eine Komponente kann nicht alleine ohne andere Komponenten existieren. Applikationen werden aus mehreren Komponenten zusammengesetzt. Diese Zusammensetzung kann auch von außen geschehen. Eine unterschiedliche Zusammensetzung von Komponenten ergibt neue Applikationen. Damit ist es möglich, Komponenten wieder zu verwenden. Um möglichst effizient Komponenten entwickeln zu können, benötigt man Prozesse und Methoden, welche Leitlinien für das Design von Komponenten definieren. Hierzu werden komponentenbasierte Vorgehensmodelle entwickelt, welche Modellierungssprachen wie UML (siehe auch Abschnitt 2.1.1) einsetzen. K. Balasubramanian et al. stellen mehrere Ansätze in ihrer Publikation von 2006 vor [2]. Innerhalb von Komponenten befindet sich meistens der Anwendungscode innerhalb von Klassen. Es kann auch eine Hierarchie von Komponenten aufgebaut werden, in der eine Komponente eine oder mehrere Subkomponenten besitzen kann. Abgrenzung von SOA (Serviceorientierte Architektur) Im Gegensatz zur komponentenbasierten Entwicklung ist die SOA kein Softwareentwicklungsprozess, sondern ein Managementkonzept, nach dessen Vorgaben eine Softwarearchitektur entwickelt wird. Applikationen versuchen dabei, Geschäftsprozesse nachzubilden und dadurch möglichst flexibel auf Änderungen reagieren zu können. Hierbei wird auch das Ziel verfolgt, Abhängigkeiten zwischen den einzelnen Services (welche durch Komponenten realisiert werden können) möglichst gering zu halten. Eine genauere Abhandlung des Themas wird von M. Stal in [23] durchgeführt UML Die UML (Unified Modeling Language) ist eine freie Spezifikationssprache zur Modellierung von Objekten. Die aktuelle Version 2.0 wurde von der OMG (Object Management Group, siehe [17]) im Oktober 2004 eingeführt. Da sie in weiten Bereichen der Softwareentwicklung eingesetzt wird, fördert sie durch die standardisierte graphische Notation

21 2.1 Komponentenbasierte Entwicklung 7 <<component>> Komponente A <<component>> Komponente B Interface A Port A Interface B Port B Abbildung 2.1.: Schnittstellen von Komponenten in der UML <<component>> Komponente A Port A Port B <<component>> Komponente B assembly connector Abbildung 2.2.: Komponentenverbindung in der UML die Einführung von modellgetriebenen Entwicklungsprozessen wie zum Beispiel MDA (Model driven architecture, siehe [16]). UML definiert verschiedene Diagrammtypen für die unterschiedlichsten Bereiche der Softwareentwicklung. Unter anderen sind dort Komponentendiagramme definiert, welche sich anbieten, die Struktur und das Zusammenspiel von Komponenten übersichtlich zu modellieren. In Komponentendiagrammen wird eine Komponente mit einem Rechteck dargestellt, das in dessen Ecke rechts oben ein Symbol bestehend aus einem Rechteck mit zwei kleinen Rechtecken an der linken Seite besitzt. Um nach außen angebotene und von außen verwendete Schnittstellen graphisch zu definieren, verwendet man die in Abbildung 2.1 dargestellte Notation. Komponente A besitzt einen Port namens Port A. An diesem Port wird die Schnittstelle Interface A bereitgestellt, was durch den Kreis am Ende der Linie gekennzeichnet wird. Komponente B fordert die Schnittstelle Interface B an Port Port B an, was durch den Halbkreis dargestellt wird. Komponenten können mehrere Ports besitzen, genauso kann auch ein Port mehrere Schnittstellen importieren (also anfordern) oder exportieren (nach außen anbieten). UML erzwingt nicht die Verwendung von Ports, Schnittstellen können auch direkt an die Komponente angedockt werden. In dieser Arbeit wird allerdings nur die Darstellung mit Hilfe von Ports verwendet, da sich damit Schnittstellen effektiv gruppieren lassen. Um die Verbindung von Komponenten darzustellen, werden connectors verwendet. Die direkte Verbindung von Schnittstellen wird mit Hilfe von assembly connectors visualisiert. In Abbildung 2.2 wird die Schnittstelle von Port A mit der Schnittstelle von Port B verbunden. Hierbei ist zu beachten, dass jeweils eine exportierende Schnittstelle mit mehreren importierenden Schnittstellen verbunden werden kann. Falls mehrere

22 8 Überblick <<component>> A delegate <<component>> B Klasse C delegate Interface C Interface C Port A2 Interface B Port A1 Interface B Port B Klasse D delegate Interface D Interface D Abbildung 2.3.: Delegierende Ports in der UML Schnittstellen einem Port zugehörig sind, müssen alle Schnittstellen des einen Ports mit allen Schnittstellen des anderen Port verbunden werden. Bieten diese Ports unterschiedliche Schnittstellen an, ist eine Verbindung nicht möglich. Falls zwei Ports mit jeweils gegenseitigen Schnittstellen vom gleichen Typ verbunden werden sollen, reicht die Information, welche zwei Ports von welchen Komponenten verbunden werden. Die entsprechenden verbunden Schnittstellen ergeben sich automatisch. Komponenten können Subkomponenten und Klassen enthalten. Klassen werden als Rechteck mit dem Klassennamen in der Mitte dargestellt. Diese können wie Komponenten auch Schnittstellen exportieren und importieren, allerdings ohne die Gruppierung durch Ports. Abbildung 2.3 zeigt eine Komponente A, welche die Klassen C und D beinhaltet. Beide Klassen realisieren jeweils eine Schnittstelle, und diese soll von Komponente A nach außen angeboten werden. Dies wird in der Grafik durch den delegation connector verdeutlicht, der die beiden Schnittstellen Interface C und Interface D jeweils zu den Klassen C und D weiterleitet. Die Beschränkung, dass jeweils Ports mit allen Schnittstellen auf einmal verbunden werden müssen, muss nur bei Verbindungen zwischen zwei Komponenten beachtet werden, für Klassen wird sie sinnvollerweise nicht beachtet. In der Abbildung wird das Delegieren von importierten Schnittstellen anhand Interface B mit Komponente B verdeutlicht. UML stellt mit den Komponentendiagrammen eine leistungsfähige und übersichtliche Methode bereit, die Interaktion und Zusammenhänge von Komponenten graphisch zu visualisieren. Durch die hohe Verbreitung dieser Notation haben sich auf dem freien Markt mittlerweile schon mehrere leistungsfähige Modellierungsapplikationen etabliert, welche den Entwickler effizient beim Entwurf von größeren Applikationen unterstützen können.

23 2.2 Middleware 9 Applikation <<component>> A <<component>> B <<component>> C Middleware Abbildung 2.4.: Kommunikation zwischen Komponenten mit Hilfe von Middleware 2.2. Middleware Einführung Im Gebiet der Softwareentwicklung wird eine Anwendungsschicht, welche zwischen der Anwendung und niedrigeren Laufzeitfunktionen wie beispielsweise dem Betriebssystem, Netzwerkprotokollstacks oder Hardware sitzt, als Middleware bezeichnet. Dabei stellt sie Zusatzfunktionen neben den reinen Betriebssystemfunktionen für die Anwendung bereit und isoliert die Applikation von komplexen Vorgängen in den niedrigeren Ebenen, wie beispielsweise die fehleranfällige Programmierung von Netzwerkprotokollen. In dieser Arbeit wird der Begriff Middleware für eine Programmschicht bezeichnet, welche die Entwicklung von komponentenbasierten Applikationen erleichtert. Der Teil der Software, welcher die Middleware nutzt, wird als Applikation oder auch als Anwendung bezeichnet. Einzelne Komponenten fordern Dienste von anderen Komponenten an und die Middleware verwaltet deren Verbindung (siehe Abbildung 2.4). Im besten Fall weiß die Applikation nichts davon, dass einzelne Teile auf andere Rechner ausgelagert sind, weil diese transparent über die Middleware Dienste voneinander nutzen und gegenseitig Daten austauschen können. Typen der Kommunikation Eine Möglichkeit der Kategorisierung von Kommunikation zwischen zwei Komponenten ist die Betrachtung des Programmablaufs während des Datenaustauschs. Hierbei kann man zwischen synchroner und asynchroner Kommunikation unterscheiden. Bei synchroner Kommunikation wird eine Anfrage verschickt, und während des Wartens auf Antwort wird die Ausführung des Programms unterbrochen. Nach dem Eintreffen der Antwort wird die Ausführung wieder fortgesetzt. Abbildung 2.5 verdeutlicht die Arbeitsweise anhand eines Funktionsaufrufs, welcher transparent durch Middleware über das Netzwerk übertragen wird: Komponente A wird ausgeführt und ruft Funktion

24 10 Überblick Komponente A Komponente B machedas(a,b) C Abbildung 2.5.: Beispiel für synchrone Kommunikation zwischen Komponenten machedas der Komponente B auf. Über das Netzwerk wird der Aufruf an Komponente B inklusive der Parameter A und B gemeldet. Die Funktion wird auf Komponente B ausgeführt und deren Ergebnis C wird wieder zurück an Komponente A übertragen. Vom Zeitpunkt des Aufrufs von machedas bis zur Rückgabe des Ergebnisses wird die Ausführung in Komponente A angehalten. Asynchrone Kommunikation kann nicht durch einen einfachen Funktionsaufruf gekapselt werden, da die Ausführung auf der Seite der datenverschickenden Komponente nicht angehalten wird. Zum Versenden der Daten wird eine von der Middleware bereitgestellte Methode aufgerufen, welche nach Versand der Daten sofort zurückkehrt und auf keine Antwort wartet. Zum Empfangen von Daten spezifiziert die Applikation meistens eine Rückrufmethode, welche bei Eingang von Daten aufgerufen wird. Arten von Middleware Hurwitz hat 1998 [9] vorhandene Middlewareimplementierungen in verschiedene Arten unterteilt. Nachfolgend werden einige daraus vorgestellt: Asynchroner RPC (Remote Procedure Call) erlaubt, Dienste von Clients anzufordern, ohne auf eine Antwort zu warten. Normalerweise muss der Client die explizite Netzwerkadresse des Servers wissen und eine Punkt-zu-Punkt Verbindung dorthin aufbauen. Message-oriented Middleware (MOM) verwaltet den Austausch von Nachrichten, welche asynchron verschickt und empfangen werden. Üblicherweise besitzt dabei jede Komponente eine Liste an eingegangenen Nachrichten, welche von dieser abgearbeitet wird. Nachrichten können dabei entweder direkt an andere Komponenten verschickt werden, oder die Struktur einer Publish-and-subscribe Middleware nutzen. Dabei wird von der Middleware noch zusätzlich eine Datenbank verwaltet, in der festgehalten wird, welche Komponenten welche Arten von Nachrichten empfangen wollen ( Subscriber ). Falls nun eine Komponente eine Nachricht veröffentlicht ( Publisher ), wird diese von der Middleware an alle Komponenten

25 2.2 Middleware 11 verteilt, welche für die Nachrichtenart registriert sind. Object Request Broker (ORB) ermöglichen Applikationen, Objekte über das Netzwerk zu verschicken. Dabei kann der ORB die Route von jedem Objekt nachverfolgen und routet Anfragen im richtigen Format zu einem spezifischen Objekt. Dabei wird auf Objekte mit Hilfe von Namen zugegriffen, ohne dass die Applikation den Ort des Objektes wissen muss. Synchroner RPC erlaubt einem verteilten Programm, Dienste auf verschiedenen Computern im Netzwerk aufzurufen. Die Entwicklung von Middleware, die synchronen RPC anbietet, erfordert einen hohen Aufwand. Dieser lohnt sich, da der Anwendung eine transparente Schnittstelle angeboten wird, welche sich von der Benutzung von lokalen Schnittstellen innerhalb einer Komponente nicht oder nur wenig unterscheidet. Diese Arbeit wird sich hauptsächlich mit Middleware beschäftigen, welche synchronen RPC und MOM unterstützt Implementierungen In dieser Sektion werden einige Implementierungen von Middleware vorgestellt, welche auf dem freien Markt eingesetzt werden. Java EE Java EE (Java Platform, Enterprise Edition) ist ein Teil der von Sun angebotenen Java Plattform für die Entwicklung von verteilten Applikationen, welche auf Komponenten basieren. Neben Java EE werden noch die Plattformen Java SE (Standard Edition) für autonome Anwendungen und Java ME (Micro Edition) für Anwendungen auf eingebetteten Systemen angeboten. Java EE Anwendungen werden auf einem Applikationsserver ausgeführt, welche die Middleware für Applikationen bereitstellen. Java EE enthält verschiedene API Spezifikationen, welche für Geschäftsanwendungen ausgelegt sind. Beispiele dafür sind JDBC (Datenbankzugriff), RMI (synchroner Nachrichtenaustausch), , JMS (asynchroner Nachrichtenaustausch), Web Services oder eine API für den Zugriff auf XML-Daten. Innerhalb der Java EE Spezifikation sind mehrere Technologien definiert, welche die Entwicklung von komponentenbasierten Anwendungen vereinfachen sollen. EJB (Enterprise Java Beans) sind davon die populärste Technologie: mit Hilfe von EJB entwickelte Komponenten sollten dem Entwickler ersparen, sogenannten Backend-Businesscode wie für Datenbankzugriff, Transaktionsverwaltung oder Sicherheit zu schreiben. Dieses Ziel wurde nie erreicht, da EJBs nicht dynamisch genug konfigurierbar waren für die Anforderungen von den meisten Anwendungen. Dadurch entstanden sehr schwergewichtige Applikationen, da die Middleware mehr Funktionen anbot als von der Anwendung benötigt

26 12 Überblick wurden. Es wird versucht dieses Problem zu lösen, indem die Funktionen von Middleware dynamisch konfigurierbar gemacht werden (siehe [7, 26]), oder durch eine leichtgewichtige Middlewareimplementierung, welche auch als Fassade zwischen schwergewichtiger Middleware und Anwendung agieren kann. Ein Vertreter der leichtgewichtigen Middleware ist das Spring Framework (siehe Abschnitt 3.3). JBoss JBoss ist ein Applikationsserver für Java EE, entwickelt von JBoss Inc. und ist aktuell in der Version 4.0 verfügbar [10]. Er ist als Open-Source-Produkt unter der LG- PL veröffentlicht. Durch die hohe Konformität zum Java EE Standard und der guten Unterstützung der Entwicklermannschaft ist der Applikationsserver sehr populär geworden. JBoss bietet neben den von der Java EE Spezifikation geforderten Diensten noch weitere an. Eine Auswahl davon wird anfolgend aufgelistet: Webcontainer mit Jetty oder Tomcat SQL-Datenbank mit Hsqldb Message Queuing Provider (für MOM) Clustering und Farming JMX (Java Management Extensions) CORBA CORBA (Common Object Request Broker Architecture) wird von der OMG (Object Management Group) entwickelt und stellt eine plattformunabhängige und objektorientierte Middleware dar. Sie definiert APIs, Kommunikationsprotokolle und Informationsmodelle, wobei ein besonderer Fokus die Vereinfachung der Entwicklung verteilter Anwendungen auf unterschiedlichen Plattformen ist. Mittels der Interface Definition Language (IDL) werden Schnittstellen beschrieben, die Objekte nach außen zur Verfügung stellen. CORBA erstellt daraus Wrapper Code, welcher die Schnittstellen auf entsprechende Schnittstellen in einer Zielsprache wie C++ oder Java abbildet. Das CORBA Component Model (CCM) führt komponentenorientierte Programmierung bei CORBA ein und stellt eine Weiterentwicklung von EJBs dar. Darin wird ein Komponentencontainer definiert, in dem Softwarekomponenten registriert werden können, und welcher für diese zusätzliche Dienste wie beispielsweise Notifizierung, Authentifizierung oder Persistenz anbietet. Ein großer Forschungsbereich beschäftigt sich mit der Erweiterung des CORBA Frameworks zur Unterstützung von verteilten Echtzeit- und eingebetteten Softwaresystemen

27 2.2 Middleware 13 (Distributed real-time and embedded software systems, DRE). Eine Führungsrolle bei dieser Forschung besitzt D. Schmidt, welcher die Thematik in verschiedene Richtungen vorantreibt. Die Komplexität von Anwendungen in eingebetteten System nimmt mittlerweile auch so stark zu, dass es nötig wird, modellgetriebene Entwicklung auch in diesem Bereich einzuführen. Schmidt präsentiert in seiner Publikation von 2006 [21] domänenspezifische Modellierungssprachen (Domain-specific modeling languages, DSMLs), welche an eine bestimmte Anwendungsdomäne angepasst sind. Diese werden durch Transformationsengines und Generatoren in Anwendungscode übersetzt. Er resümiert darin, dass für den praktischen und umfassenden Gebrauch von modellbasierter Entwicklung noch einiges an Forschung nötig ist.

28 3. Analyse der verwendeten Middlewareplattformen Einen der wichtigsten Einflüsse beim Design einer plattformunabhängigen Middlewareschicht wie CIML haben die Middlewareplattformen, auf die CIML aufsetzt. Als ersten Schritt werden deswegen die Funktionen der Middlewareplattformen JMX, OSGI und dem Spring Framework analysiert, deren Konfiguration vorgestellt und im anschließenden Abschnitt miteinander verglichen. Für den asynchronen Nachrichtenaustausch wird JMS als externe Middleware benutzt. Diese Technologie wird im letzten Abschnitt untersucht JMX Die Java Management Extensions (JMX) in der aktuellen Version 1.2 sind seit Dezember 2002 verfügbar und wurden im Rahmen des Java Community Prozesses entwickelt (siehe [12]). In der Version 5.0 von Java SE wurde JMX in die Spezifikation aufgenommen und ist seitdem in der Java API verfügbar. Mit Hilfe von JMX ist es möglich, Softwarekomponenten mit externen Werkzeugen auf einheitliche Art zu überwachen und zu verwalten. JMX konzentriert sich auf das Anbieten und Vermitteln von Diensten und stellt dabei nur einen kleinen Teil der Funktionalität von EJBs zur Verfügung. Aber die Entwicklungsfreiheit wird durch die Spezifikation von EJBs stark eingeschränkt, was viele Programmierer zur Verwendung von JMX bewegt hat. Beispielsweise dürfen Komponenten in JMX im Gegensatz zu EJBs Dateien im lokalen Dateisystem lesen und schreiben oder neue Threads starten Aufbau Man kann die JMX Architektur in drei Ebenen unterteilen (siehe Abbildung 3.1): Instrumentation: Ressourcen, so wie Applikationen, Geräte oder Komponenten werden als Managed Beans (MBeans) instrumentiert. MBeans beschreiben ihre Managementschnittstelle, welche sich aus Attributen und Operationen zusammensetzen kann. Eine Anwendung kann beliebig viele MBeans bereitstellen.

29 3.1 JMX 15 JMXConsole Web Browser RMI HTML/HTTP Remote Management Connector Adaptor Ag ent MBeanSer ver Instrumentation MBean A MBean B MBean C Abbildung 3.1.: Systemarchitektur von JMX Agent: Der wichtigste Teil eines JMX Agenten ist der MBean Server. Dieser stellt Dienste zum Verwalten von MBeans bereit, außerdem werden dort MBeans registriert. JMX Agenten steuern Ressourcen und stellen diese für externen Zugriff bereit. Remote Management: Protocol adaptors und standard connectors ermöglichen Zugang zum JMX Agenten für externe Applikationen. Dienste in den Ebenen Agent und Remote Management werden oft von Applikationsservern wie JBoss bereitgestellt, sodass nur die Anwendungsschicht entwickelt werden muss, und alles andere von der Middleware verwaltet wird. Da die zu entwickelnde Middlewareschicht CIML zwischen Applikation und einer Middlewareplattform wie einem JMX Agenten liegt, wird sich diese Arbeit hauptsächlich auf die Interaktion zwischen Instrumentations- und Agentenschicht konzentrieren Managed Beans MBeans beschreiben Schnittstellen für den Zugriff von externen Programmen aus. Sie beziehen sich immer auf eine Java-Klasse, welche Methoden und Attribute besitzt. In der Definition von MBeans wird beschrieben, welche dieser Methoden und Attribute für externe Programme sichtbar und zugreifbar sind. Hierbei gibt es vier verschiedene Arten, diese Beschreibung zu definieren: Standard-MBeans: Alle zu exportierenden Methoden und Attribute einer Klasse MyClass werden im Java-Interface MyClassMBean aufgelistet und in MyClass

30 16 Analyse der verwendeten Middlewareplattformen implementiert. Der MBean Server sucht bei Standard-MBeans nach einem implementierten Java-Interface Klasse MBean. Diese Möglichkeit der MBean-Definition ist vor allem für Klassen geeignet, die eine fest definierte Schnittstelle besitzen und diese bei der Entwicklungszeit schon feststeht. Dynamic-MBeans: Klassen, welche über diese Methode ihre Schnittstelle beschreiben, müssen das Interface javax.management.dynamicmbean implementieren. Durch dieses Interface wird vom MBeanServer die zu exportierenden Methoden und Attribute zur Laufzeit abgefragt. Dadurch kann die exportierte Schnittstelle dynamisch zur Laufzeit den aktuellen Bedingungen angepasst werden. Wegen dieser Flexibilität ist die Programmierung relativ aufwändig und unübersichtlich. Model-MBeans: Diese Art von MBeans ist eine Erweiterung der Dynamic-MBeans. Eine beliebige Klasse kann hierbei ein MBean mit allen angebotenen Methoden und Attributen definieren. Dafür wird eine Struktur mit den exportierten Namen der Elemente und der entsprechenden Klasseninstanz gefüllt, welche die Methoden sowie Referenzen auf die aufzurufenden Methoden implementiert. Diese Methode eignet sich besonders, wenn ein Mittler die Schnittstelle einer Klasse festlegen kann und exportieren will. Open-MBeans: Ebenso wie Model-MBeans setzen Open-MBeans auf Dynamic- MBeans auf. Damit eine größere Auswahl an externen Programmen auf die JMX- Schnittstelle zugreifen kann, begrenzen sich Open-MBeans auf wenige fest spezifizierte Datentypen. JMX ist sehr stark auf Trennung der Komponenten ausgerichtet, sodass diese auf verschiedene Server verteilt werden können. So wird bei Zugriff auf andere Komponenten immer vom MBeanServer ein Dynamic Proxy (für weitere Informationen siehe die Java-API Dokumentation) erstellt, welcher die Schnittstelle der anderen Komponente bereitstellt und die Aufrufe transparent weiterleitet. Diese Methode führt zusätzlichen Overhead beim Aufruf von MBeans ein, welcher vor allem bei lokalen MBeans unnötig wäre. Durch einen ausgeklügelten Mechanismus schränkt JMXs Proxy-Wrapper die Verwendung von Rückrufen (Callbacks) bei MBean Aufrufen nicht ein: ruft beispielsweise ein MBean A das MBean B auf und übergibt als Parameter eine Referenz auf ein Java- Interface von MBean C, werden die dem Interface entsprechenden Methoden in MBean C transparent aufgerufen, falls es von MBean B benutzt wird. MBeans werden innerhalb von einer MBeanServer Instanz mit Hilfe ihres ObjectName identifiziert. Dieser wird bei Erstellung der MBeans definiert. Er muss der Form [Domäne]:Schlüssel=Wert[,Schlüssel=Wert]*

31 3.1 JMX 17 entsprechen. Das Feld Domäne ist optional. Anschließend können beliebig viele Schlüssel und Wertpaare angegeben werden, um das MBean zu benennen JMX in JBoss Nachfolgend wird die Verwendung von JMX in JBoss vorgestellt. Dabei wird speziell auf die Verpackung und Konfiguration von Komponenten und ihrer MBeans eingegangen. Die JMX Spezifikation definiert eine Schnittstelle für den Import und Export von Diensten. Falls eine komponentenbasierte Anwendung eine Verwaltung für den Lebenszyklus von Komponenten und eine Abhängigkeitsverwaltung benötigt, muss ein Applikationsserver wie JBoss eingesetzt werden. Dieser stellt unter anderem Komponentenverwaltung und eine JMX-Schnittstelle bereit. JBoss erwartet, dass die zu verwendenden Komponenten in JAR-Dateien verpackt sind. In diesen Archiven befinden sich die benötigten Klassen und Konfigurationsdateien, welche die Komponenten spezifizieren. Dabei kann ein Archiv mehrere MBeans enthalten, welche automatisch durch JBoss beim Deployment der Komponente gestartet werden. Die Startreihenfolge der Komponenten wird durch die Abhängigkeitsbeziehungen der Komponenten untereinander bestimmt. In der Konfigurationsdatei für JBoss können folgende Angaben pro MBean gemacht werden: ObjectName des MBeans (siehe Abschnitt 3.1.2) Implementierungsklasse (diese sollte sich entweder im Jar-Archiv der entsprechenden Komponente oder im Classpath befinden) Abhängigkeiten von anderen MBeans: Dabei werden ObjectNames von anderen MBeans angegeben. Diese ObjectNames müssen in Konfigurationsdateien von anderen Komponenten angegeben sein und dürfen nicht programmatisch durch die JMX-API erstellt worden sein, da sonst JBoss nicht erkennt dass die Abhängigkeit erfüllt wurde, und die Komponente nicht automatisch gestartet wird. Liste aller zu exportierenden Methoden und Attribute: Dies ist eine Alternative zu den verschiedenen MBean-Klassen, welche im vorigen Abschnitt vorgestellt wurden. Alle MBeans innerhalb einer Komponente können Ereignisse bei Wechsel des Komponentenlebenszykluszustands erhalten. Dafür wird die Methode create in der Implementierungsklasse bei der ersten Erzeugung aufgerufen, nachdem alle Abhängigkeiten erfüllt wurden. Anschließend kann das MBean beliebig oft gestartet oder gestoppt werden, hierbei werden die Methoden start und stop aufgerufen. Bei Herunterfahren des Applikationsservers wird vor Zerstörung des MBeans die Lebenszyklusmethode destroy aufgerufen.

32 18 Analyse der verwendeten Middlewareplattformen 3.2. OSGi Überblick Das OSGi Framework [18] ist eine auf Java basierende Serviceplattform, die seit Oktober 2005 in der Version R4 verfügbar ist. Sie wurde von der gleichnamigen OSGi Alliance entwickelt, welche ein Zusammenschluss von verschiedenen Firmen wie u.a. Sun Microsystems und IBM ist, um einen Industriestandard zu schaffen. Es existieren viele verschiedene Implementierungen der OSGi Spezifikation. In dieser Arbeit wird das Knopflerfish OSGi Framework in der Version 2.0 verwendet [14]. Das OSGi Framework stellt ein dynamisches Komponentenmodell bereit, in dem Komponenten, welche Bundles genannt werden, installiert, gestartet, gestoppt, aktualisiert und deinstalliert werden können, ohne dass das Framework neu gestartet werden muss. Dabei ist es auch möglich, gleichnamige Bundles mit unterschiedlichen Versionen gleichzeitig zu starten. Die Dienstverwaltung ermöglicht es, dass Bundles Dienste bereitstellen oder von anderen Bundles benutzen können. Basierend auf diesen Funktionen wurden weitere Dienste hinzugefügt, so wie unter anderem die Verwaltung von Logs, Konfigurationsmanagement, ein HTTP-Dienst, welcher u.a. Java Servlets ausführen kann oder ein XML Parser. Im Gegensatz zu JMX ist OSGi nicht darauf ausgelegt, von Komponenten angebotene Dienste möglichst transparent geräteübergreifend zur Verfügung zu stellen. Der Schwerpunkt beim OSGi Framework liegt beim Bereitstellen einer standardisierten Umgebung für Anwendungen, die das Starten und Stoppen einer Vielzahl von Diensten auf einem Gerät ermöglicht. Die Java Entwicklungsumgebung Eclipse [3] verwendet beispielsweise für die Verwaltung von Plugins und internen Komponenten eine leicht veränderte Version eines OSGi Frameworks. Ein weiterer Aspekt beim Entwurf der OSGi Spezifikation war, dass Implementierungen im Bereich von eingebetteten Systemen lauffähig sind. Die Spezifikation ist deshalb modular aufgebaut, sodass von Anwendungen unbenötigte Teile spezifikationskonform nicht zwingend in einer OSGi Implementierung bereitgestellt werden müssen Aufbau Abbildung 3.2 zeigt den grundlegenden Aufbau eines OSGi Frameworks: Auf der untersten Ebene befindet sich das Execution environment, welches die Java- Umgebung definiert. Dafür können verschiedene Konfigurationen und Profile verwendet werden wie z.b. Java SE oder Java ME. In der OSGi Spezifikation werden mehrere Execution environments entsprechend der verfügbaren Funktionen und der Hardwareanforderungen definiert. Darauf baut das OSGi Framework auf und setzt sich aus verschiedenen Komponenten zusammen. Die Modules Komponente definiert die Richtlinien für das Laden von

33 3.2 OSGi 19 application layer OSGi layer J2RE layer bundles modules ser vice registr y lifecycle execution environment Abbildung 3.2.: Architekturebenen von OSGi Klassen. Das OSGi Framework fügt zum Standard-Java-Klassenlademodell Modularisierung hinzu. Jedes Modul besitzt die Möglichkeit, einen Classpath zum Auffinden von benötigten Klassen selbst zu definieren. Dabei können private Klassen geladen werden, oder auch Klassen von anderen Bundles. Die Lifecycle Komponente stellt Bundles einen Lebenszyklus zur Verfügung. Dadurch können diese von außen dynamisch installiert, gestartet, gestoppt und wieder deinstalliert werden, ohne dass davon andere Bundles beeinflusst werden oder das OSGi Framework neu gestartet werden müsste. Bestimmte Mechanismen stellen dabei sicher, dass Abhängigkeiten zwischen Bundles beachtet werden, um eine korrekte Funktionsfähigkeit zu gewährleisten. Die Service Registry ermöglicht die Kommunikation und das Austauschen von Objekten zwischen verschiedenen Bundles. Hat ein Bundle Dienste anzubieten, registriert sie die Schnittstelle des Dienstes in der Service Registry. Bundles können mittels Ereignissen überwachen, welche Dienste in der Service Registry registriert und deregistriert werden. Somit ist für sie feststellbar, wann alle benötigten Dienste zur Verfügung stehen und können dann ihre normale Arbeit aufnehmen Komponentenintegration Die OSGi Spezifikation definiert den Aufbau und die Konfiguration von Bundles. Dies sind Jar-Archive, welche die Implementierungsklassen mit zusätzlichen Daten enthält (wie bei Komponenten bei JBoss). Jedes Bundle wird durch eine Manifest-Datei, welche sich unter META-INF/MANIFEST.MF innerhalb des Archivs befindet, konfiguriert. Darin wird unter anderem spezifiziert, welche Java-Packages von anderen Bundles importiert werden. Dies ist für die Verwendung von gemeinsamen Java-Interfaces wichtig, wie bei der Verwendung von gemeinsamen Bibliotheken. Bibliotheken müssen als eigenes Bundle in das Framework aufgenommen werden und dann von den abhängigen Bundles importiert werden. Eine Abhängigkeitsverwaltung für exportierte und importierte Schnittstellen wird im OSGi Framework als zusätzliches Modul bereitgestellt. Dieses wird nicht in dieser Arbeit verwendet.

Komponentenbasierte Softwareentwicklung

Komponentenbasierte Softwareentwicklung Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

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

Ü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

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

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr. Multimedia im Netz Wintersemester 2011/12 Übung 10 Betreuer: Verantwortlicher Professor: Sebastian Löhmann Prof. Dr. Heinrich Hussmann Organisatorisches 2 Gesundes neues Jahr 3 Blatt 08 Videoformate im

Mehr

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele: 2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway

Mehr

SharePoint Demonstration

SharePoint Demonstration SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. Systemprogrammierung WS 2006-2007 CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA

Mehr

IBM Software Demos Tivoli Provisioning Manager for OS Deployment

IBM Software Demos Tivoli Provisioning Manager for OS Deployment Für viele Unternehmen steht ein Wechsel zu Microsoft Windows Vista an. Doch auch für gut vorbereitete Unternehmen ist der Übergang zu einem neuen Betriebssystem stets ein Wagnis. ist eine benutzerfreundliche,

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

Java und XML 2. Java und XML

Java und XML 2. Java und XML Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik Java und XML Hauptseminar Telematik WS 2002/2003

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

FAQ The FAQ/knowledge base. Version 2.1.1

FAQ The FAQ/knowledge base. Version 2.1.1 FAQ The FAQ/knowledge base. Version 2.1.1 (c) 2012 OTRS AG, http://otrs.org/ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007 This work is copyrighted by OTRS AG, Norsk-Data-Str. 1, 61352 Bad

Mehr

Man liest sich: POP3/IMAP

Man liest sich: POP3/IMAP Man liest sich: POP3/IMAP Gliederung 1. Einführung 1.1 Allgemeiner Nachrichtenfluss beim Versenden von E-Mails 1.2 Client und Server 1.2.1 Client 1.2.2 Server 2. POP3 2.1 Definition 2.2 Geschichte und

Mehr

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite http://www.hp.

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite http://www.hp. Erfahrungen mit dem Insight Manager von HP Dipl. Ing. Elektrotechnik (FH) - Automatisierungs- / Regelungstechnik DV-Spezialist Landesbank Rheinland-Pfalz Abteilung 2-351 Große Bleiche 54-56 55098 Mainz

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

STARFACE SugarCRM Connector

STARFACE SugarCRM Connector STARFACE SugarCRM Connector Information 1: Dieses Dokument enthält Informationen für den STARFACE- und SugarCRM-Administrator zur Inbetriebnahme des STARFACE SugarCRM Connectors. Inhalt 1 Inbetriebnahme...

Mehr

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit EMF ist ein eigenständiges Eclipse-Projekt (Eclipse Modeling Framework Project) EMF ist ein Modellierungsframework und Tool

Mehr

Workflow, Business Process Management, 4.Teil

Workflow, Business Process Management, 4.Teil Workflow, Business Process Management, 4.Teil 24. Januar 2004 Der vorliegende Text darf für Zwecke der Vorlesung Workflow, Business Process Management des Autors vervielfältigt werden. Eine weitere Nutzung

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

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

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

Lokale Installation von DotNetNuke 4 ohne IIS

Lokale Installation von DotNetNuke 4 ohne IIS Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

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

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS 072 MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS Die Flut von Open Source Frameworks ist vergleichbar mit dem Markt von kommerziellen Produkten Es gibt eine Vielzahl

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

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

Windows Small Business Server (SBS) 2008

Windows Small Business Server (SBS) 2008 September 2008 Windows Small Business Server (SBS) 2008 Produktgruppe: Server Windows Small Business Server (SBS) 2008 Lizenzmodell: Microsoft Server Betriebssysteme Serverlizenz Zugriffslizenz () pro

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

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

Java Enterprise Architekturen Willkommen in der Realität

Java Enterprise Architekturen Willkommen in der Realität Java Enterprise Architekturen Willkommen in der Realität Ralf Degner (Ralf.Degner@tk-online.de), Dr. Frank Griffel (Dr.Frank.Griffel@tk-online.de) Techniker Krankenkasse Häufig werden Mehrschichtarchitekturen

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

Windows Server 2008 (R2): Anwendungsplattform

Windows Server 2008 (R2): Anwendungsplattform Mag. Christian Zahler, Stand: August 2011 13 14 Mag. Christian Zahler, Stand: August 2011 Mag. Christian Zahler, Stand: August 2011 15 1.5.2 Remotedesktop-Webverbindung Windows Server 2008 (R2): Anwendungsplattform

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

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

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

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

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

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

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

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP) Enterprise Applikation Integration und Service-orientierte Architekturen 09 Simple Object Access Protocol (SOAP) Anwendungsintegration ein Beispiel Messages Warenwirtschaftssystem Auktionssystem thats

Mehr

Gefahren aus dem Internet 1 Grundwissen April 2010

Gefahren aus dem Internet 1 Grundwissen April 2010 1 Grundwissen Voraussetzungen Sie haben das Internet bereits zuhause oder an der Schule genutzt. Sie wissen, was ein Provider ist. Sie wissen, was eine URL ist. Lernziele Sie wissen, was es braucht, damit

Mehr

Herzlich Willkommen bei der nfon GmbH

Herzlich Willkommen bei der nfon GmbH efax Handbuch Herzlich Willkommen bei der nfon GmbH Wir freuen uns, Ihnen unser efax vorstellen zu dürfen. Mit dem efax können Sie zu jeder Zeit mit Ihrem Rechner Faxe empfangen. Sie bekommen diese dann

Mehr

VENTA KVM mit Office Schnittstelle

VENTA KVM mit Office Schnittstelle VENTA KVM mit Office Schnittstelle Stand: 24.05.2013 Version: VENTA 1.7.5 Verfasser: Jan Koska 1. Funktionsumfang der Office Schnittstelle Die in VENTA KVM integrierte Office Schnittstelle bietet zahlreiche

Mehr

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen? Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen? Januar 2012 CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Motivation Modernisierung eines Systems mit

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

Mehr

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77 7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77 (LQOHLWXQJ Mit der SAP Testworkbench und dem Testtool ecatt können Anwender von SAP Software auf Basis des SAP Web Application Servers ab

Mehr

Komponenten- und ereignisorientierte Softwareentwicklung am Beispiel von Borland-Delphi

Komponenten- und ereignisorientierte Softwareentwicklung am Beispiel von Borland-Delphi Komponenten- und ereignisorientierte Softwareentwicklung am Beispiel von Borland-Delphi Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg Institut für Simulation und Graphik Lisa-Weiterbildung -

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Local Control Network Technische Dokumentation

Local Control Network Technische Dokumentation Steuerung von Hifi-Anlagen mit der LCN-GVS Häufig wird der Wunsch geäußert, eine Hi-Fi-Anlage in die Steuerung der LCN-GVS einzubinden. Auch das ist realisierbar. Für die hier gezeigte Lösung müssen wenige

Mehr

Das Handbuch zu Simond. Peter H. Grasch

Das Handbuch zu Simond. Peter H. Grasch Peter H. Grasch 2 Inhaltsverzeichnis 1 Einführung 6 2 Simond verwenden 7 2.1 Benutzereinrichtung.................................... 7 2.2 Netzwerkeinrichtung.................................... 9 2.3

Mehr

ARCWAY Cockpit. Professional Upgrade. von 3.0 auf 3.1

ARCWAY Cockpit. Professional Upgrade. von 3.0 auf 3.1 ARCWAY Cockpit Professional Upgrade von 3.0 auf 3.1 ARCWAY AG Alt-Moabit 90b D-10559 Berlin Tel. +49 (30) 800 97 83-0 Fax +49 (30) 800 97 83-100 E-Mail info@arcway.com RECHTLICHE HINWEISE Bitte senden

Mehr

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT SWT II Projekt Chat - Anwendung Pflichtenheft 2000 SWT i Versionen Datum Version Beschreibung Autor 3.11.2000 1.0 erste Version Dietmar Matthes ii Inhaltsverzeichnis 1. ZWECK... 1 1.1. RAHMEN... 1 1.2.

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel. EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.de/~mtr FRAGEN / ANMERKUNGEN Vorlesung Neue Übungsaufgaben MODELLIERUNG

Mehr

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel Orville Bennett Übersetzung: Thomas Bögel 2 Inhaltsverzeichnis 1 Einführung 5 2 KNetAttach verwenden 6 2.1 Hinzufügen von Netzwerkordnern............................ 6 3 Rundgang durch KNetAttach 8 4 Danksagungen

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung Inhalt 1. Einleitung:... 2 2. Igel ThinClient Linux OS und Zugriff aus dem LAN... 3

Mehr

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH Amt für Informatik Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH Anleitung vom 12. September 2009 Version: 1.0 Ersteller: Ressort Sicherheit Zielgruppe: Benutzer von SSLVPN.TG.CH Kurzbeschreib:

Mehr

UpToNet Workflow Workflow-Designer und WebClient Anwendung

UpToNet Workflow Workflow-Designer und WebClient Anwendung UpToNet Workflow Workflow-Designer und WebClient Anwendung Grafische Erstellung im Workflow-Designer 1 Grafische Erstellung im Workflow-Designer Bilden Sie Ihre Arbeitsvorgänge im Workflow-Designer von

Mehr

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail: gi@uwe.doetzkies.de

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail: gi@uwe.doetzkies.de Agiles Design Dr.-Ing. Uwe Doetzkies Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail: gi@uwe.doetzkies.de startupcamp berlin 15.3.2013 Regionalgruppe Berlin/Brandenburg Arbeitskreis Freiberufler

Mehr

Lizenzierung von System Center 2012

Lizenzierung von System Center 2012 Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im

Mehr

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken Betriebliche Datenverarbeitung Wirtschaftswissenschaften AnleitungzurEinrichtungeinerODBC VerbindungzudenÜbungsdatenbanken 0.Voraussetzung Diese Anleitung beschreibt das Vorgehen für alle gängigen Windows

Mehr

Java Entwicklung für Embedded Devices Best & Worst Practices!

Java Entwicklung für Embedded Devices Best & Worst Practices! Java Entwicklung für Embedded Devices! George Mesesan Microdoc GmbH Natürlich können wir dieses neue log4j Bundle auch auf dem Device verwenden. Ist doch alles Java. Java Micro Edition (ME) Java Standard

Mehr

ANYWHERE Zugriff von externen Arbeitsplätzen

ANYWHERE Zugriff von externen Arbeitsplätzen ANYWHERE Zugriff von externen Arbeitsplätzen Inhaltsverzeichnis 1 Leistungsbeschreibung... 3 2 Integration Agenda ANYWHERE... 4 3 Highlights... 5 3.1 Sofort einsatzbereit ohne Installationsaufwand... 5

Mehr

Client/Server-Systeme

Client/Server-Systeme Fachbereich Informatik Projektgruppe KOSI Kooperative Spiele im Internet Client/Server-Systeme Vortragender Jan-Ole Janssen 26. November 2000 Übersicht Teil 1 Das Client/Server-Konzept Teil 2 Client/Server-Architekturen

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie importiere und exportiere ich Daten zwischen myfactory und Outlook? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory Daten aus Outlook importieren Daten aus myfactory nach Outlook

Mehr

SE2-10-Entwurfsmuster-2 15

SE2-10-Entwurfsmuster-2 15 Architektur und Skalierbarkeit SE2-10-Entwurfsmuster-2 15 Skalierbarkeit Skalierbarkeit bedeutet die Anpassung einer Software an wachsende Last: Interaktionsfrequenz Nutzerzahl Anpassung durch Hinzufügen

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

FTP-Leitfaden RZ. Benutzerleitfaden

FTP-Leitfaden RZ. Benutzerleitfaden FTP-Leitfaden RZ Benutzerleitfaden Version 1.4 Stand 08.03.2012 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Zeitaufwand... 3 2 Beschaffung der Software... 3 3 Installation... 3 4 Auswahl des Verbindungstyps...

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

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis Kommunikationsübersicht Inhaltsverzeichnis Kommunikation bei Einsatz eines MasterServer... 2 Installation im... 2 Installation in der... 3 Kommunikation bei Einsatz eines MasterServer und FrontendServer...

Mehr

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten. ewon - Technical Note Nr. 001 Version 1.3 Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten. 19.10.2006/SI Übersicht: 1. Thema 2. Benötigte Komponenten

Mehr

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Der Konfigurations-Assistent wurde entwickelt, um die unterschiedlichen ANTLOG-Anwendungen auf den verschiedensten Umgebungen automatisiert

Mehr

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

System Center Essentials 2010

System Center Essentials 2010 System Center Essentials 2010 Microsoft System Center Essentials 2010 (Essentials 2010) ist eine neue Verwaltungslösung aus der System Center-Produktfamilie, die speziell für mittelständische Unternehmen

Mehr

SQL Server 2008 Standard und Workgroup Edition

SQL Server 2008 Standard und Workgroup Edition September 2008 Produktgruppe: Server Lizenzmodell: Microsoft Server Server/ Serverlizenz Zugriffslizenz () pro Gerät Zugriffslizenz () pro Nutzer Produktgruppe: Server Lizenzmodell: Microsoft Server Pro

Mehr

Cockpit 3.4 Update Manager

Cockpit 3.4 Update Manager Cockpit 3.4 Update Manager ARCWAY AG Potsdamer Platz 10 10785 Berlin GERMANY Tel. +49 30 8009783-0 Fax +49 30 8009783-100 E-Mail info@arcway.com ii Rechtliche Hinweise Bitte senden Sie Fragen zum ARCWAY

Mehr

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Verwaltungsdirektion Informatikdienste Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Inhaltsverzeichnis Einleitung... 3 Installation WSUS Server... 4 Dokumente... 4 Step by Step Installation...

Mehr

System-Update Addendum

System-Update Addendum System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im

Mehr

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Ziele Common Object Request Broker Architecture CORBA Plattformunabhängige Kommunikation Transparente Verteilung von Objekten CORBA-Konzept Object Management Group Spezifiziert den CORBA-Standard

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

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Anleitung für den Datenaustausch mit mobile.de

Anleitung für den Datenaustausch mit mobile.de Anleitung für den Datenaustausch mit mobile.de Inhaltsverzeichnis 1. Automatischer Import von mobile.de 1.1 Abschaltung der Schnittstelle 2. Benutzung von AutoAct 2.1 Vorteile von AutoAct 2.2 Registrierung

Mehr

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht

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

SQL Server 2005 Standard Edition SQL Server 2005 Enterprise Edition SQL Server 2005 Workgroup Edition

SQL Server 2005 Standard Edition SQL Server 2005 Enterprise Edition SQL Server 2005 Workgroup Edition SQL Server 2005 Standard Edition SQL Server 2005 Enterprise Edition SQL Server 2005 Workgroup Edition Produktgruppe: Server SQL Server 2005 Standard Edition, Enterprise Edition, Workgroup Edition Lizenzmodell:

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr