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

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

Leben 3.0

E-Book Leben 3.0
Mensch sein im Zeitalter Künstlicher Intelligenz Format: ePUB

Die Nobelpreis-Schmiede Massachusetts Institute of Technology ist der bedeutendste technologische Think Tank der USA. Dort arbeitet Professor Max Tegmark mit den weltweit führenden Entwicklern k…

Kombination aus Produkt und Dienstleistung

E-Book Kombination aus Produkt und Dienstleistung
Potentiale für Unternehmen aus der Unterhaltungselektronikbranche Format: PDF

Inhaltsangabe:Einleitung: Für Unternehmen des produzierenden Gewerbes wird es immer schwieriger nachhaltige Wettbewerbsvorteile allein über Produkte zu erzielen. Wettbewerbsvorteile ergeben sich aus…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Python 3 - Intensivkurs

E-Book Python 3 - Intensivkurs
Projekte erfolgreich realisieren Format: PDF

Python ist eine vollwertige Programmiersprache, mit der sich auch größere Anwendungen entwickeln lassen. In den letzten Jahren hat sie an Beliebtheit gewonnen, und mit Python 3 steht eine stark…

Fundiert entscheiden

E-Book Fundiert entscheiden
Ein kleines Handbuch für alle Lebenslagen Format: PDF

Orientierungshilfe in postfaktischen Zeiten Dieses Buch ist ein Rettungsanker in der Flut der Informationen, die ununterbrochen auf uns einströmen. Tag für Tag müssen Sie sich Meinungen bilden, sei…

Informatik

E-Book Informatik
Anwendungsorientierte Einführung in die allgemeine Wirtschaftsinformatik Format: PDF

Das einführende Informatik-Lehrbuch wendet sich nicht nur an Informatik-Studenten, sondern sogar in erster Linie an Studierende und Praktiker solcher Disziplinen, in denen Informatik zur…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Weitere Zeitschriften

FESTIVAL Christmas

FESTIVAL Christmas

Fachzeitschriften für Weihnachtsartikel, Geschenke, Floristik, Papeterie und vieles mehr! FESTIVAL Christmas: Die erste und einzige internationale Weihnachts-Fachzeitschrift seit 1994 auf dem ...

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 International

Card Forum International

Card Forum International, Magazine for Card Technologies and Applications, is a leading source for information in the field of card-based payment systems, related technologies, and required reading ...

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 ...

Der Steuerzahler

Der Steuerzahler

Der Steuerzahler ist das monatliche Wirtschafts- und Mitgliedermagazin des Bundes der Steuerzahler und erreicht mit fast 230.000 Abonnenten einen weitesten Leserkreis von 1 ...

dima

dima

Bau und Einsatz von Werkzeugmaschinen für spangebende und spanlose sowie abtragende und umformende Fertigungsverfahren. dima - die maschine - bietet als Fachzeitschrift die Kommunikationsplattform ...

rfe-Elektrohändler

rfe-Elektrohändler

rfe-Elektrohändler ist die Fachzeitschrift für die CE- und Hausgeräte-Branche. Wichtige Themen sind: Aktuelle Entwicklungen in beiden Branchen, Waren- und Verkaufskunde, Reportagen über ...