Sie sind hier
E-Book

Software modular bauen

Architektur von langlebigen Softwaresystemen - Grundlagen und Anwendung mit OSGi und Java

AutorUlf Fildebrandt
Verlagdpunkt
Erscheinungsjahr2012
Seitenanzahl332 Seiten
ISBN9783864911828
FormatPDF/ePUB
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis31,99 EUR
Software wird in Projekten zumeist unter extremem Zeitdruck geschrieben. Dieser Zeitdruck liefert auch gute Ergebnisse, aber die Software ist für spätere Erweiterungen nicht geeignet. Daher sollten Architekturprinzipien und Konzepte verwendet werden, um die Software zu strukturieren und für späteren Anforderungen vorzubereiten.

Fildebrandt studierte Informatik an der Universität Hildesheim. Seit dem Diplomabschluss 1998 arbeitet er bei SAP in verschiedenen Technologiebereichen. Angefangen hat er mit UI-Technologien wie ActiveX und HTML, bis er über Java und Eclipse zu Integrationsarchitekturen im SOA-Bereich kam. Seit einigen Jahren ist er als Architekt für verschiedene Produkte von SAP wie das SAP Netweaver Composition Environment verantwortlich.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Inhaltsverzeichnis7
1 Einleitung11
1.1 Über dieses Buch12
1.1.1 Zielgruppe12
1.1.2 Aufbau13
1.1.3 Herangehensweise14
1.2 Motivation14
1.3 Nachstellen der Beispiele16
1.3.1 Voraussetzungen16
1.3.2 Synchronisieren von Projekten17
1.3.3 Ausführen der Projekte18
1.4 Regeln18
2 Grundlagen21
2.1 Definitionen21
2.2 Grundthese22
2.2.1 Komponenten und Module23
2.2.2 Selbstähnlichkeit von Architektur23
2.2.3 Schnittstelle und Implementierung25
2.3 Prinzipien und Konzepte26
2.4 Modularity Patterns31
2.4.1 Modularity Patterns in der Coding-Architektur31
2.4.2 Modularity Patterns in der Komponentenarchitektur32
2.4.3 Modularity Patterns in der Systemarchitektur33
2.5 Vorgehen zur Definition modularer Architektur35
2.5.1 Anforderungsanalyse35
2.5.2 Sichten36
2.5.3 Vorgehensmodelle während der Entwicklung37
2.6 Modularitätsmodell (Modularity Maturity Model)39
3 Coding-Architektur: Erweiterbarkeit43
3.1 Hintergrund von Coding Best Practices43
3.1.1 Design Patterns44
3.1.2 SOLID45
3.1.3 Modularity Patterns in diesem Kapitel46
3.2 Beschreibung des Anwendungsbeispiels46
3.3 Factory Pattern50
3.3.1 Umsetzung im Beispiel52
3.4 Decision Map55
3.4.1 Umsetzung im Beispiel55
3.4.2 Cyclomatic Complexity57
3.5 Single Responsibility59
3.5.1 Umsetzung im Beispiel60
3.6 Nachstellen des Beispiels61
3.7 Exkurs: Adapter und Facade61
3.7.1 Facade in Coding62
3.7.2 Traditionelle Adapter63
3.7.3 Modulare Adapter im Coding64
3.7.4 Nachstellen des Beispiels67
3.8 Zusammenfassung67
4 Komponentenarchitektur: Grundlagen69
4.1 Hintergrund eines modularen Laufzeitsystems69
4.1.1 Module69
4.1.2 Services zur Kommunikation71
4.1.3 Zusammenspiel von Modulen und Services73
4.1.4 Kohäsion73
4.1.5 Modulare Laufzeitsysteme im Vergleich77
4.1.6 Modularity Patterns in diesem Kapitel81
4.2 Umsetzung der Grundkonzepte am Beispiel OSGi81
4.2.1 Moduldefinition82
4.2.2 Sichtbarkeit von Klassen83
4.2.3 Services87
4.2.4 Versionierung von Bundles89
4.3 Auswirkungen eines modularen Laufzeitsystems auf Patterns90
4.3.1 Facade91
4.3.2 Adapter93
4.4 Umsetzung von Modularität in verschiedenen Laufzeitumgebungen95
4.4.1 Eingebettete OSGi-Container96
4.4.2 Eigenständiger OSGi-Container98
4.4.3 Vergleich99
4.5 Modularisierung durch Refactoring99
4.5.1 Kohäsion am Refactoring-Beispiel104
4.6 Zusammenfassung106
5 Komponentenarchitektur: Entkopplung109
5.1 Hintergrund modularisierter Software109
5.1.1 Schnittstelle von Modulen109
5.1.2 Dependency Injection110
5.1.3 Modularität ohne Schnittstellen112
5.1.4 Modularity Patterns in diesem Kapitel114
5.2 Grundlagen von Declarative Services114
5.2.1 Declarative Services als Dependency-Injection-Framework116
5.3 Entkopplung in der Beispielanwendung116
5.3.1 Entkopplung der Datenquellen119
5.3.2 Nachstellen des Beispiels122
5.3.3 Laufzeitdynamik von Datenquellen122
5.4 Exkurs: Zwei weitere SOLID-Prinzipien125
5.4.1 Single-Responsibility-Prinzip für Module126
5.4.2 Open-Closed-Prinzip für Module126
5.5 Hierarchien in der Beispielanwendung129
5.6 Schnittstellen in Modulen131
5.7 Zusammenfassung132
6 Systemarchitektur: Schichten135
6.1 Hintergrund von Schichten in der Architektur135
6.1.1 Schichtenarchitektur136
6.1.2 Schichten in den Ebenen der Architektur137
6.1.3 Modularity Patterns in diesem Kapitel138
6.2 Entkoppelte Komponenten in der Beispielanwendung138
6.2.1 Arbeit mit der OSGi Service Registry143
6.2.2 Nachstellen des Beispiels144
6.3 Gruppierung von Bundles144
6.3.1 Eclipse Feature145
6.3.2 Application im Apache-Aries-Projekt145
6.3.3 OSGi-Subsystem-Spezifikation146
6.3.4 Vergleich146
6.4 Schichtenarchitektur mit OSGi147
6.4.1 Arten der Abhängigkeiten zwischen Schichten149
6.4.2 Schichten in der Beispielanwendung152
6.4.3 Data Transfer Objects (DTO) in den Schichten154
6.4.4 Testen der einzelnen Schichten155
6.5 Exkurs: Testbarkeit158
6.5.1 Prinzip: Dependency Injection159
6.5.2 Prinzip: Vermeidung von globalem Zustand160
6.5.3 Prinzip: Law of Demeter161
6.6 Zusammenfassung162
7 Systemarchitektur: Erweiterbarkeit163
7.1 Hintergrund von Schnittstellen163
7.1.1 Schnittstellendesign164
7.1.2 Ersetzbarkeit169
7.1.3 Modularity Patterns in diesem Kapitel169
7.2 Schnittstellen in der Beispielanwendung170
7.2.1 Beispiel des API-Designs172
7.2.2 Anwendung auf OSGi174
7.3 Erweiterung der Schnittstellen176
7.3.1 Abstrakte Klassen177
7.3.2 Data Transfer Object (DTO)179
7.3.3 Schnittstellenevolution180
7.3.4 Unterschiede zwischen API- und SPI-Evolution182
7.4 Erweiterbarkeit mit OSGi182
7.4.1 Design von Schnittstellen in Modulen183
7.5 Ersetzbarkeit von Implementierungen184
7.6 Kohäsion in der Beispielanwendung186
7.7 Zusammenfassung188
8 Systemarchitektur: Wiederverwendbarkeit entkoppelter Komponenten191
8.1 Hintergrund entkoppelter wiederverwendbarer Komponenten191
8.1.1 Abhängigkeiten zu externen Komponenten192
8.1.2 Gemeinsam genutzte Aspekte192
8.1.3 Modularity Patterns in diesem Kapitel196
8.2 Entkopplung von externen Abhängigkeiten196
8.2.1 Ein Adapter für eine externe Komponente in der Beispielanwendung198
8.2.2 Weiterentwicklung mit externen Komponenten201
8.2.3 Nachstellen des Beispiels202
8.3 Gemeinsam genutzte Aspekte203
8.3.1 Validierung204
8.3.2 Transaktionen206
8.4 Zusammenfassung207
9 Systemarchitektur: Funktionale Entkopplung209
9.1 Hintergrund funktionaler Entkopplung209
9.1.1 Parallele Verarbeitung im System210
9.1.2 Versionierung von Modulen216
9.1.3 Modularity Patterns in diesem Kapitel218
9.2 Parallele Verarbeitung in der Beispielanwendung218
9.2.1 Nachrichtenbasierte Verarbeitung219
9.2.2 Nachstellen des Beispiels224
9.2.3 Exkurs: Weitere Konzepte der parallelen Verarbeitung225
9.3 Versionierung in der Beispielanwendung229
9.3.1 Neue Implementierungen230
9.3.2 Änderungen an einer Schnittstelle232
9.3.3 Umsetzung im Projekt238
9.3.4 Vorteile der Versionierung241
9.3.5 Nachstellen des Beispiels241
9.4 Zusammmenfassung242
10 Komponentenarchitektur: Frameworks243
10.1 Hintergrund der Frameworks244
10.1.1 Geschichte der Frameworks244
10.1.2 Frameworks für Dependency Injection246
10.1.3 Java EE247
10.1.4 Maven249
10.1.5 Vergleich der Frameworks bezüglich Modularität250
10.2 Umsetzung der Beispielanwendung mit CDI257
10.2.1 Struktur der Beispielanwendung258
10.2.2 Anpassungen an Weld258
10.3 Umsetzung der Beispielanwendung mit Spring263
10.3.1 Struktur der Beispielanwendung mit Spring263
10.4 Umsetzung der Beispielanwendung mit Maven267
10.5 Nachstellen des Beispiels268
10.6 Exkurs: Verwendung von OSGi269
10.6.1 Eclipse269
10.6.2 JBoss Application Server269
10.6.3 GlassFish269
10.6.4 IBM WebSphere270
10.7 Zusammenfassung270
11 Systemarchitektur: Product Line Engineering273
11.1 Hintergrund zu Product Line Engineering273
11.1.1 Domänen- und Anwendungsentwicklung274
11.1.2 Variabilität275
11.1.3 Variabilität und Schnittstellen276
11.2 Anwendung von PLE auf die Beispielanwendung276
11.2.1 OSGi und PLE278
11.2.2 Core Assets in OSGi279
11.2.3 Variabilität in OSGi – Extension Point280
11.2.4 Variabilität in OSGi – Konfiguration282
11.2.5 Variabilität in OSGi – DSL283
11.3 Mehrere Produkte283
11.4 Nachstellen des Beispiels286
11.5 Zusammenfassung287
12 Systemarchitektur: Repository289
12.1 Hintergrund von Repositories289
12.1.1 Anwendungsfälle für ein Repository290
12.1.2 Modularity Patterns in diesem Kapitel291
12.2 Ein Repository für OSGi291
12.2.1 Verwendung von p2 in Eclipse292
12.3 Das p2-Repository für die Beispielanwendung294
12.3.1 Abhängigkeiten zwischen Features295
12.3.2 Eclipse-Support für Update-Site und Features297
12.4 Verschiedene Einsatzmöglichkeiten298
12.4.1 Verwendung von p2 per API299
12.5 Maven-Repository301
12.6 Zusammenfassung302
13 Schlusswort305
13.1 Zusammenfassung305
13.1.1 Anwendung der Modularitätsstufen306
13.1.2 Einordnung von OSGi bezüglich Produktivität308
13.2 Ausblick309
A Appendix A: Tools zur Architekturvalidierung311
A.1 Korrektheit311
A.1.1 FindBugs312
A.1.2 PMD312
A.2 Metriken312
A.2.1 Eclipse Metrics313
A.3 Redundanz313
A.3.1 CPD313
B Appendix B: Projekt Jigsaw315
B.1 Designprinzipien315
B.2 Definitionen316
B.2.1 Modul316
B.2.2 Auflösung316
B.2.3 Phasen316
B.3 Moduldeklaration316
B.3.1 Exports317
B.3.2 Abhängigkeiten318
B.3.3 Services318
B.4 Vergleich mit OSGi319
C Appendix C: OSGi in der Praxis321
C.1 Lifecycle von Bundles321
C.2 Statusinformationen eines OSGi-Laufzeitsystems323
Referenzen325
Index329
A329
B329
C329
D329
E329
F329
G330
I330
J330
K330
L330
M330
N330
O330
P330
R331
S331
T331
V331
www.dpunkt.de0

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

AUTOCAD & Inventor Magazin

AUTOCAD & Inventor Magazin

FÜHREND - Das AUTOCAD & Inventor Magazin berichtet seinen Lesern seit 30 Jahren ausführlich über die Lösungsvielfalt der SoftwareLösungen des Herstellers Autodesk. Die Produkte gehören zu ...

Card-Forum

Card-Forum

Card-Forum ist das marktführende Magazin im Themenbereich der kartengestützten Systeme für Zahlung und Identifikation, Telekommunikation und Kundenbindung sowie der damit verwandten und ...

CE-Markt

CE-Markt

CE-Markt ist Pflichtlektüre in der Unterhaltungselektronik-Branche. Die Vermarktung von Home und Mobile Electronics mit den besten Verkaufsargumenten und Verkaufsstrategien gehören ebenso zum ...

dental:spiegel

dental:spiegel

dental:spiegel - Das Magazin für das erfolgreiche Praxisteam. Der dental:spiegel gehört zu den Top 5 der reichweitenstärksten Fachzeitschriften für Zahnärzte in Deutschland (laut LA-DENT 2011 ...

DULV info

DULV info

UL-Technik, UL-Flugbetrieb, Luftrecht, Reiseberichte, Verbandsinte. Der Deutsche Ultraleichtflugverband e. V. - oder kurz DULV - wurde 1982 von ein paar Enthusiasten gegründet. Wegen der hohen ...

EineWelt

EineWelt

Lebendige Reportagen, spannende Interviews, interessante Meldungen, informative Hintergrundberichte. Lesen Sie in der Zeitschrift „EineWelt“, was Menschen in Mission und Kirche bewegt Man kann ...

FileMaker Magazin

FileMaker Magazin

Das unabhängige Magazin für Anwender und Entwickler, die mit dem Datenbankprogramm Claris FileMaker Pro arbeiten. In jeder Ausgabe finden Sie von kompletten Lösungsschritten bis zu ...