Software modular bauen



Ähnliche Dokumente
Michael Kurz Martin Marinschek

Nicolai Josuttis. SOA in der Praxis. System-Design für verteilte Geschäftsprozesse

Dominik Schadow. Java-Web-Security. Sichere Webanwendungen mit Java entwickeln

IT-Servicemanagement mit ITIL V3

Cloud-Computing für Unternehmen

Über die Herausgeber

IT-Service-Management mit ITIL 2011 Edition


Die Computerwerkstatt

Praxisbuch BI Reporting

Konfigurationsmanagement mit Subversion, Ant und Maven

Mike Burrows Übersetzer: Florian Eisenberg Wolfgang Wiedenroth

IT-Servicemanagement mit ITIL V3

VMware vrealize Automation Das Praxisbuch

Basiswissen Medizinische Software

Tilman Beitter Thomas Kärgel André Nähring Andreas Steil Sebastian Zielenski

Professionell blitzen mit dem Nikon Creative Lighting System

CNC-Fräsen für Maker und Modellbauer

Dr. Carola Lilienthal

Continuous Delivery. Der pragmatische Einstieg. von Eberhard Wolff. 1. Auflage. dpunkt.verlag 2014

Im Rahmen seiner Beratertätigkeit veröffentlicht er Artikel und hält Vorträge und Schulungen zu diesen und weiteren Themen.

Dipl.-Inform. Sven Röpstorff Dipl.-Kaufm. Robert Wiechmann

Praxiswissen TYPO3 CMS 7 LTS

Basiswissen Medizinische Software

Dr. Michael Hahne

Uwe Vigenschow Andrea Grass Alexandra Augstin Dr. Michael Hofmann

Maik Schmidt arbeitet seit beinahe 20 Jahren als Softwareentwickler für mittelständische und Großunternehmen. Er schreibt seit einigen Jahren

Basiswissen Software-Projektmanagement

JavaScript kinderleicht!

München 2014) und»uml2 glasklar«(carl Hanser Verlag München

IT-Projektverträge: Erfolgreiches Management

arbeitete im Max-Planck-Institut und an der Uni Köln. Von ihm sind bereits mehrere Bücher zu Webthemen erschienen.

Martina Seidl Marion Brandsteidl Christian Huemer Gerti Kappel. Classroom. Eine Einführung in die objektorientierte Modellierung

Prof. Dr. Matthias Knoll

Web-Apps mit jquery Mobile

dpunkt.lehrbuch Bücher und Teachware für die moderne Informatikausbildung

Maik Schmidt

er auch mit dem 3D-Programm Blender in Kontakt, über das er bisher zahlreiche Vorträge hielt und Artikel in Fachzeitschriften veröffentlichte.

Fotografieren lernen Band 2

Software entwickeln mit Verstand

Kim Nena Duggen ist Vorstand und Trainerin der oose Innovative Informatik eg. Ihre thematischen Schwerpunkte sind das Geschäftsprozessmanagement,

Agile Softwareentwicklung in großen Projekten

IT-Controlling für die Praxis

Über die Autoren.

Helge Dohle Rainer Schmidt Frank Zielke Thomas Schürmann ISO Eine Einführung für Manager und Projektleiter

Leitfaden Web-Usability

Datawarehousing mit SAP BW 7

Managementsysteme für IT-Serviceorganisationen

Agile Softwareentwicklung in großen Projekten

Soft Skills für Softwareentwickler

Basiswissen Software- Projektmanagement

Dipl.-Inform. Henning Wolf Prof. Dr. ir. Rini van Solingen Eelco Rustenburg

Abenteuer Softwarequalität

Joachim Baumann Daniel Arndt Frank Engelen Frank Hardy Carsten Mjartan. Vaadin. Der kompakte Einstieg für Java-Entwickler

Basiswissen Geschäftsprozessmanagement

Abenteuer Softwarequalität

Geschichten vom Scrum

IT-Unternehmensarchitektur

Microsoft Office:mac 2011 Das Grundlagenbuch: Home and Student

Der Autor ist seit dem Jahr 2001 bei der Firma GeNUA mbh als Security Consultant und gegenwärtig als Koordinator für Intrusion Detection tätig.

Elisabeth Hendrickson Übersetzerin: Meike Mertsch

ipad Air und ipad mini Retina

Social Media Analytics & Monitoring

Jens Jacobsen. Website-Konzeption. Erfolgreiche Websites planen, umsetzen und betreiben. 7., überarbeitete und erweiterte Auflage

Rüdiger Zarnekow Lutz Kolbe. Green IT. Erkenntnisse und Best Practices aus Fallstudien

Die Kunst der JavaScript- Programmierung

Unit-Tests mit ABAP Unit

Heinrich Hemme, Der Mathe-Jogger 2

Tanja Hartwig genannt Harbsmeier. Up- und Cross-Selling

Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung. von Eduard Glatz. 1. Auflage

Der Einfluss von Product Placement in Fashion Blogs auf das Kaufverhalten

Digitale Naturfotografie

Jochen Bartlau. List & Label. schnell + kompakt

LEGO bauen. Das»inoffizielle«Handbuch. von Allan Bedford. 1. Auflage

Konfigurationsmanagement mit Subversion, Maven und Redmine

Kompakt Edition: Immobilienfinanzierung

Geschichten vom Scrum

Adobe Flash CS4. Herbert A. Mitschke. inklusive DVD-ROM. Von den Programmier-Grundlagen zur professionellen Webentwicklung

InDesign automatisieren

Basiswissen Softwaretest

Basiswissen Softwaretest

Kennzahlen in der IT

Grundmann Rathner Abschlussprüfungen Bankwirtschaft, Rechnungswesen und Steuerung, Wirtschafts- und Sozialkunde

Versorgungskonzepte für Menschen mit Demenz

und -implementierungstechniken, Datenbanken & Java.

Vorlesung Hochschule Esslingen IT-Winter School 2013

Nicholas C. Zakas, JavaScript objektorientiert, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Vladimir Simovic Thordis Bonfranchi-Simovic. Werkzeuge fürs Web. Nützliche Tools für Webdesigner, Webentwickler, Blogger und Online-Redakteure

Einfluss von Unternehmenskultur auf Performance

Psychologie der Fotografie: Kopf oder Bauch?

3D-Architektur-Visualisierung

K.-H. Bichler Das urologische Gutachten

Andreas Spillner / Ulrich Breymann, Lean Testing für C++-Programmierer, dpunkt.verlag, ISBN

Gradle. Ein kompakter Einstieg in modernes Build-Management. Joachim Baumann. Joachim Baumann, Gradle, dpunkt.verlag, ISBN

Transkript:

Software modular bauen Architektur von langlebigen Softwaresystemen Grundlagen und Anwendung mit OSGi und Java von Ulf Fildebrandt 1. Auflage Software modular bauen Fildebrandt schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG dpunkt.verlag 2012 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 86490 019 8

Ulf Fildebrandt Software modular bauen Architektur von langlebigen Softwaresystemen Grundlagen und Anwendung mit OSGi und Java

Ulf Fildebrandt E-Mail: ulffildebrandt@aol.com Lektorat: Dr. Michael Barabas Copy Editing: Ursula Zimpfer, Herrenberg Herstellung: Nadine Thiele Umschlaggestaltung: Helmut Kraus, www.exclam.de Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. ISBN 978-3-86490-019-8 1. Auflage 2012 Copyright 2012 dpunkt.verlag GmbH Ringstraße 19B 69115 Heidelberg Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen. Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen. 5 4 3 2 1 0

Für meinen Vater

vii Inhaltsverzeichnis 1 Einleitung 1 1.1 Über dieses Buch........................................ 2 1.2 Motivation............................................. 4 1.3 Nachstellen der Beispiele.................................. 6 1.4 Regeln................................................ 8 2 Grundlagen 11 2.1 Definitionen........................................... 11 2.2 Grundthese............................................ 12 2.3 Prinzipien und Konzepte.................................. 16 2.4 Modularity Patterns..................................... 21 2.5 Vorgehen zur Definition modularer Architektur................ 25 2.6 Modularitätsmodell (Modularity Maturity Model)............. 29 3 Coding-Architektur: Erweiterbarkeit 33 3.1 Hintergrund von Coding Best Practices...................... 33 3.2 Beschreibung des Anwendungsbeispiels...................... 36 3.3 Factory Pattern......................................... 40 3.4 Decision Map.......................................... 45 3.5 Single Responsibility..................................... 49 3.6 Nachstellen des Beispiels................................. 51 3.7 Exkurs: Adapter und Facade.............................. 51 3.8 Zusammenfassung...................................... 57

viii Inhaltsverzeichnis 4 Komponentenarchitektur: Grundlagen 59 4.1 Hintergrund eines modularen Laufzeitsystems.................. 59 4.2 Umsetzung der Grundkonzepte am Beispiel OSGi............... 71 4.3 Auswirkungen eines modularen Laufzeitsystems auf Patterns...... 80 4.4 Umsetzung von Modularität in verschiedenen Laufzeitumgebungen. 85 4.5 Modularisierung durch Refactoring.......................... 89 4.6 Zusammenfassung....................................... 96 5 Komponentenarchitektur: Entkopplung 99 5.1 Hintergrund modularisierter Software........................ 99 5.2 Grundlagen von Declarative Services........................ 104 5.3 Entkopplung in der Beispielanwendung...................... 106 5.4 Exkurs: Zwei weitere SOLID-Prinzipien..................... 115 5.5 Hierarchien in der Beispielanwendung....................... 119 5.6 Schnittstellen in Modulen................................ 121 5.7 Zusammenfassung...................................... 122 6 Systemarchitektur: Schichten 125 6.1 Hintergrund von Schichten in der Architektur................. 125 6.2 Entkoppelte Komponenten in der Beispielanwendung........... 128 6.3 Gruppierung von Bundles................................ 134 6.4 Schichtenarchitektur mit OSGi............................ 137 6.5 Exkurs: Testbarkeit..................................... 148 6.6 Zusammenfassung...................................... 152 7 Systemarchitektur: Erweiterbarkeit 153 7.1 Hintergrund von Schnittstellen............................ 153 7.2 Schnittstellen in der Beispielanwendung...................... 160 7.3 Erweiterung der Schnittstellen............................. 166 7.4 Erweiterbarkeit mit OSGi................................ 172 7.5 Ersetzbarkeit von Implementierungen....................... 174 7.6 Kohäsion in der Beispielanwendung........................ 176 7.7 Zusammenfassung...................................... 178

Inhaltsverzeichnis ix 8 Systemarchitektur: Wiederverwendbarkeit entkoppelter Komponenten 181 8.1 Hintergrund entkoppelter wiederverwendbarer Komponenten.... 181 8.2 Entkopplung von externen Abhängigkeiten.................. 186 8.3 Gemeinsam genutzte Aspekte............................. 193 8.4 Zusammenfassung..................................... 197 9 Systemarchitektur: Funktionale Entkopplung 199 9.1 Hintergrund funktionaler Entkopplung..................... 199 9.2 Parallele Verarbeitung in der Beispielanwendung.............. 208 9.3 Versionierung in der Beispielanwendung.................... 219 9.4 Zusammmenfassung.................................... 232 10 Komponentenarchitektur: Frameworks 233 10.1 Hintergrund der Frameworks............................. 234 10.2 Umsetzung der Beispielanwendung mit CDI.................. 247 10.3 Umsetzung der Beispielanwendung mit Spring................ 253 10.4 Umsetzung der Beispielanwendung mit Maven................ 257 10.5 Nachstellen des Beispiels................................ 258 10.6 Exkurs: Verwendung von OSGi........................... 259 10.7 Zusammenfassung..................................... 260 11 Systemarchitektur: Product Line Engineering 263 11.1 Hintergrund zu Product Line Engineering................... 263 11.2 Anwendung von PLE auf die Beispielanwendung.............. 266 11.3 Mehrere Produkte..................................... 273 11.4 Nachstellen des Beispiels................................ 276 11.5 Zusammenfassung..................................... 277 12 Systemarchitektur: Repository 279 12.1 Hintergrund von Repositories............................ 279 12.2 Ein Repository für OSGi................................ 281 12.3 Das p2-repository für die Beispielanwendung................ 284 12.4 Verschiedene Einsatzmöglichkeiten........................ 288 12.5 Maven-Repository..................................... 291 12.6 Zusammenfassung..................................... 292

x Inhaltsverzeichnis 13 Schlusswort 295 13.1 Zusammenfassung...................................... 295 13.2 Ausblick............................................. 299 A Appendix A: Tools zur Architekturvalidierung 301 A.1 Korrektheit........................................... 301 A.2 Metriken............................................. 302 A.3 Redundanz........................................... 303 B Appendix B: Projekt Jigsaw 305 B.1 Designprinzipien....................................... 305 B.2 Definitionen.......................................... 306 B.3 Moduldeklaration...................................... 306 B.4 Vergleich mit OSGi..................................... 309 C Appendix C: OSGi in der Praxis 311 C.1 Lifecycle von Bundles................................... 311 C.2 Statusinformationen eines OSGi-Laufzeitsystems............... 313 Referenzen 315 Index 319