PRG 5 Komponentenorientierte Software-Entwicklung J. Heinzelreiter WS 2004/05
Organisatorisches Beurteilung PRG5 (VL) Schriftliche Klausurarbeit (ohne Unterlagen) SWT5x (ÜB) Keine Klausur Kleinere Projektarbeiten Präsentation der Projektarbeiten Gespräch über Projektarbeiten Unterlagen/Literatur http://www.fh-hagenberg.at/staff/jheinzel/prg5 Grundlegende Literatur Weiterführende und ergänzende Literatur 2 Einführung
Noten: Statistische Auswertung Vergleich Notengebung PRG4/PRG6 (SS 2002 bzw 2003) 35 32 30 27 Häufigkeit 25 20 15 10 5 0 14 3 4 5 0 0 0 0 0-5 -4-3 -2-1 0 1 2 3 4 5 Notendifferenz: PRG6-PRG4 3 Einführung
Organisation Zusammenspiel mit anderen LVAs PRG5 Komponentenorientierte Software-Entwicklung DEN5 Web- Engineering SWT5x gemeinsame Übung 4 Einführung
Inhalte - Überblick Wintersemester Einführung JavaBeans CORBA Sommersemester COM/Automation ATL/ASP EJB.NET Web-Services 5 Einführung
Inhalte: Vorläufiger Plan für das WS Vorlesung Einführung JavaBeans CORBA Feiertag CORBA Übung Vertiefung Java/RMI JavaBeans Feiertag CORBA Projekt Projekt arbeit 1 EJB EJB Web-Services Weihnachtsferien EJB EJB Web-Services Präsentation Projektarbeit 2 6 Einführung
Wozu Komponenten? Traditionelle SW-Entwicklung Objektorientierte SW- Entwicklung Komponentenorientierte SW-Entwicklung 7 Einführung
Historische Entwicklung (1) 40er-Jahre Maschinensprache. 50er-Jahre Teure Computer (~ $ 2.000.000.000), Billige Entwickler, Effizientere Nutzung des Computers: Betriebssystem, Produktivität des Entwicklers war sekundär. Symbolischer Assembler, Erfindung von Unterprogrammen. 8 Einführung
Historische Entwicklung (2) 60er-Jahre Hochsprachen: FORTRAN, LISP, BASIC, Simula. Entwicklung komplexerer Softwaresysteme. Vergrößerung der Projektteams. Hochsprachen erlaubten keine Black Boxes. 70er- und 80er-Jahre Software-Entwicklungskosten explodierten. Viele Softwareprojekte scheiterten. Softwarekrise. 90er-Jahre: Software-Komponenten. 9 Einführung
Komponenten - Definition Definition Komponente (1) A small binary object or program that performs a specific function and is designed in such a way to easily operate with other components and applications. (www.webopedia.com) Definition Komponente (2) 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 compositions by third parties. (C. Szyperski) 10 Einführung
Komponenten - Anwendungsgebiete Baugewerbe Baustoffe, Ziegel, Fenster, Küchen, Badezimmer. Elektronikindustrie Widerstände, Dioden, Transistoren, Integriere Schaltkreise, Mikroprozessoren, DVD-Laufwerke, Motherboards, Karten. Die Verwendung von Komponenten ist in diesen Bereichen absolut selbstverständlich! 11 Einführung
Markt für Komponenten Fragestellung in traditionellen Industrien Gibt es bereits eine derartige Komponente? Wo kann ich diese Komponente kaufen? Wo ist die Komponente am billigsten? Wie muss ich Anforderungen ändern, damit eine Standardkomponente eingesetzt werden kann? Voraussetzung für Entwicklung eines Marktes: Standards Großes Angebot an Standard- und anwendungsspezifischen Komponenten. Fördern Konkurrenz zwischen Anbietern. 12 Einführung
Monolithische Anwendungen Anwendung Objekte bzw. Funktionen u. Datenstrukturen Monolithische Anwendungen sind in sich abgeschlossen und sind kaum ineinander integriert. 13 Einführung
Komponenten-basierte Anwendungen Auf Komponenten basierte Anwendungen können einfach integriert werden. 14 Einführung
Abgrenzung zu C++/Java-Klassen C++-Klassen C/C++-Laufzeitumgebung ist nicht standardisiert. Beschreibung der Schnittstelle (Header-File) ist sprachabhängig und nicht Teil der binären Repräsentation. Viele Änderungen in der Klasse bedingen Neuübersetzung (Hinzufügen einer Datenkomponente). Komplexe Abhängigkeiten mit anderen Klassen. Java-Klassen Entsprechen mehr dem Komponenten-Konzept. Integration in Nicht-Java-Anwendungen ist schwierig. Keine Unterstützung zur Design-Zeit. 15 Einführung
Standards für Software-Komponenten Microsoft COM Builder Tool: Visual Basic, C++, Java, Office Tools Komponente: VBX, OCX, ActiveX-Control Microsoft.NET Builder Tool: Visual Studio.NET Komponente:.NET-Komponente (in beliebiger.net-sprache) Borland/Inprise: Builder Tool: Delphi, C++-Builder Komponente: Delphi-Komponente Sun/JavaSoft Builder Tool: BeanBuilder, JBuilder, NetBeans, Sun ONE Studio (Forte), VisualAge, Code Warrior Komponente: JavaBean 16 Einführung
Komponenten-Technologien: Gemeinsamkeiten Komponenten liegen in binärer Form vor. GUI-Design erfolgt grafisch mit Builder Tool. Properties definieren Verhalten und Aussehen. Events steuern die Interaktion mit anderen Komponenten. Properties und Events können bereits zur Design- Zeit verändert werden. 17 Einführung
Delphi: Komponenten-Palette 18 Einführung
Delphi: Object Inspector 19 Einführung
Delphi: GUI-Design 20 Einführung
Visual Basic: Design Time 21 Einführung
Visual Basic: Run Time 22 Einführung
Bean Builder 23 Einführung
Borland JBuilder 24 Einführung
Enterprise-Anwendungen Anwendungen und Merkmale komplexe (Business-)Logik, umfangreiche, komplex strukturierten Daten, besondere Sicherheitsanforderungen, Transaktionen stehen im Mittelpunkt, viele Clients auf verschieden Plattformen, Verteilung auf verschiedene Plattformen: UNIX, AS/400, Windows, Macintosh, Heterogene Entwicklungsumgebung: C, C++, Java, COBOL, Basic, Perl, Smalltalk. 25 Einführung
Mainframe-Anwendungen (1) Terminals Mainframe: Anwendungen und Daten 26 Einführung
Client/Server-Anwendungen Windows Client Daten Mac Client Unix Client Thick Client Oracle, DB2, SQLServer, Informix, Sybase, etc. Server 27 Einführung
Mehrschicht-Anwendungen Windows Client Browser Client Java Client Mobile Client Thin Client Application Server Middle-Tier Services Business Processes Middle Tier (NT/Unix/AS400) Corporate Data Oracle, DB2, SQLServer, Informix, Sybase Data Tier 28 Einführung
Mehrschicht-Architekturen (1) Client Komponente DB Driver DBMS, e.g., Oracle Komp. Komp. Presentation Tier Middle/Bussiness Tier Data Tier 29 Einführung
Mehrschicht-Architekturen (2) Instance- and Resource-Pooling Instance-Pool Client Account 1 Resource-Pool Instance- Manager Account 2 Instance-Pool Resource 1 Resource 2 DBMS Customer 1 Client Customer 2 30 Einführung
Enterprise-Architekturen Big Players Windows DNA (COM+) bzw..net Enterprise Services Enterprise Java Beans (EJB) Merkmale Viele Clients können bedient werden. Einfache Implementierung von Transaktionen. Verwaltung des Zustands von Objekten. Authentifizierung/Autorisierung ist einfach. Resource Sharing/Pooling. Erleichtert Entwicklung von Anwendungen mit mehreren Threads. 31 Einführung
COM+/EJB Architektur (1) Client COM Runtime EJB Conainer Komp. DB Drivers 3. Datenzugriff DBMS, e.g., Oracle 1. Methode aufrufen 2. Transaktion beginnen Transaction Service (DTC) 4. An Transaktion teilnehmen DBMS, e.g., SQL Server 32 Einführung
COM+/EJB Architektur (2) Client COM Runtime EJB Conainer Komp. DB Drivers DBMS, e.g., Oracle 8. Ergebnis 5. Methode erfolgreich/mit Fehler beenden 6. Transaktion: Commit/Rollback Transaction Service (DTC) 7. Transaktion: Commit/ Rollback DBMS, e.g., SQL Server 33 Einführung
Architekturen für verteilte Anwendungen Client Stub Proxy COM/DCOM.NET (SOAP) CORBA Java RMI, RMI-IIOP IDL ORB DCOM RPC-Channel Remote Object Skeleton Stub 34 Einführung