: Volker Stiehl
: Prozessgesteuerte Anwendungen entwickeln und ausführen mit BPMN Wie flexible Anwendungsarchitekturen wirklich erreicht werden können
: dpunkt
: 9783864912306
: 1
: CHF 26.50
:
: Informatik
: German
: 412
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF/ePUB
Die effiziente Entwicklung neuer, differenzierender fachlicher Prozesse in heterogenen Systemlandschaften ist seit jeher eine der größten Herausforderungen für Unternehmen. Denn die neuen Lösungen müssen ...- ... über lange Zeiträume hinweg wartbar bleiben,- ... flexibel auf neue fachliche Anforderungen reagieren können,- ... unabhängig von der vorhandenen IT-Landschaft sein.Dieses Buch vermittelt Ihnen, wie Sie ausgehend von Ihren fachlichen Prozessen und unter Verwendung der BPMN eine nachhaltige Softwarearchitektur entwickeln können, die den genannten Anforderungen gerecht wird.

Dr. Volker Stiehl studierte Informatik an der Universität Erlangen-Nürnberg. Nach 12 Jahren als Entwickler und Berater bei Siemens begann er im Jahre 2004 seine Arbeit bei der SAP AG in Walldorf. Er ist heute als Chief Product Expert Teil des Produktmanagement-teams für SAP NetWeaver Process Integration, SAP's SOA Middlewareprodukt für Systemintegrationen. Im Jahre 2011 promovierte er an der TU Darmstadt über die systematische Konstruktion von Anwendungen unter Verwendung von BPMN.

Vorwort


Der Beginn meiner Reise in die Welt der Anwendungsentwicklung unter Berücksichtigung komplexer verteilter Systemlandschaften liegt mehr als 10 Jahre zurück: Ich arbeitete seinerzeit bei Siemens Business Services (SBS) in einer Abteilung zur Entwicklung Java-basierter Anwendungen und konnte mitverfolgen, wie unser Entwicklungsteam an einer neuen Software zur Umsetzung neuer Geschäftsprozesse für die Verwaltung von Softwarelizenzen arbeitete. Es ging darum, die in einem Unternehmen eingesetzten Lizenzen zentral in einem Lizenz-Pool zu sammeln. Beim Kauf neuer Rechner installierte die IT-Abteilung entsprechend der Rolle des Mitarbeiters, für den der Rechner vorgesehen war, passende Software und entnahm sie dazu dem Lizenz-Pool. Im umgekehrten Fall, also immer dann, wenn ein Computer ausgemustert wurde oder ein Mitarbeiter das Unternehmen verließ, wanderte die Lizenz in den Pool zurück und stand folglich für weitere Installationen wieder zur Verfügung. Die neu zu entwickelnde Anwendung musste zudem mit einer Vielzahl bestehender Systeme interagieren: Die Bestellung neuer Lizenzen wickelten wir beispielsweise über ein SAP-System ab, die Informationen über Mitarbeiter steckten in einem LDAP-System (Lightweight Directory Access Protocol), der Versand der Workflow-Benachrichtigungen erfolgte über einen E-Mail-Server. Abgerundet wurde die Applikation um eine eigene JDBC-basierte Persistenz zur Speicherung der Informationen, welcher Benutzer welchen Rechner besitzt und welche Software sich auf dem Rechner befindet. Letztendlich handelte es sich also um eine klassische verteilte, webbasierte Anwendung, die neue Prozesse implementierte, die sich über mehrere Systeme hinweg erstreckte.

Das Team entwickelte die Lösung nach allen Regeln der damals bekannten JavaEE-Kunst: Session Beans, Entity Beans, Message-driven Beans, Servlets, Java Server Pages, Apache Struts als Web-Framework, Webservices, die gesamte Palette also. Zudem legte unser Architekt sehr viel Wert auf eine moderne Softwarearchitektur: Ich erinnere mich noch gut an den Tag, als er bei mir an meinem Schreibtisch vorbeikam und mir voller Stolz berichtete, wie viele Pattern der »Gang of Four« [Gamma et al. 1995] er in der erstellten Software sinnvoll einbringen konnte (obwohl aus der Anzahl der verwendeten Pattern allein natürlich nicht auf die Qualität einer Software geschlossen werden kann). Die Software lief auf einem BEA Weblogic Server und fand schließlich auch ihren Weg auf einen SAP Web Application Server [Stiehl 2004]. Die Kundenresonanz auf die neue Lösung war äußerst positiv, doch es stellte sich alsbald heraus, dass potenzielle Kunden ihre Daten in anderen als den von uns bei der Erstellung der Software vorgesehenen Systemen ablegten. Wie sollten wir aber mit diesem Problem umgehen, wenn unsere Software weiterhin für einen möglichst großen Kundenkreis attraktiv sein sollte? Für jeden Kunden eine neue Variante erstellen? Bei der Anzahl möglicher Kombinationen von Backend-Systemen ist das sicherlich kein vielversprechender Ansatz. Die Anfälligkeit der Lösung bezüglich der Änderungen an der Systemlandschaft war offensichtlich, oder, um es mit anderen Worten auszudrücken, wir hatten uns zu sehr von einer konkreten IT-Landschaft abhängig gemacht. Sie werden sich jetzt vielleicht fragen, wie es dazu kommen konnte und warum die Lösung nicht von vornherein mehr von den Backend-Systemen abstrahierte? Aber wie setzt man eine solche Abstraktion konkret um? Wie weit geht die Abstraktion? Wie werden die Aufgaben auf die Abstraktionsebenen verteilt? Und überhaupt: Sollte die serviceorientierte Architektur nicht genau diese Probleme lösen? Letztendlich gipfeln all diese Fragestellungen in der einen zentralen Frage: Wie erstelle ich robuste Anwendungen für verteilte IT-Landschaften, die zukünftig durch die steigende Zahl von On-Demand- und Cloud-Angeboten sogar noch fragmentierter werden?

Je mehr ich mich damit auseinandersetzte, Projekte analysierte, Fachartikel las und auf Konferenzen Vorträge über ähnlich geartete Problemstellungen hörte, umso mehr musste ich feststellen, dass die dort vorgestellten Architekturen mit ähnlichen Unzulänglichkeiten zu kämpfen hatten. In Gesprächen mit den Projektverantwortlichen wurden oft weitere Gründe genannt, die zu derartigen Abhängigkeiten führten: Ein hoher Projektdruck verbunden mit fehlender Zeit bei einem knapp bemessenen Budget verhinderten die Ausarbeitung einer robusten Softwarearchitektur, obwohl wider besseren Wissens die Folgen eines derartigen Vorgehens hinlänglich bekannt sind: Die kurzfristig schnellere und damit kostengünstigere Entwicklung verschlingt später, auf lange Sicht betrachtet, ein wesentlich höheres Budget für die Wartung, Betreuung und Weiterentwicklung, als dies notwendig gewesen wäre. Ein langfristiges Ziel wurde also einem kurzfristigen geopfert! So dürfen wir uns nicht wundern, wenn allseits eine fehlende Agilität bei der Anpassung der Software an die vom Management vorgegebene Geschäftsstrategie beklagt wird, da niemand mehr in der Lage ist, die Verflechtungen aufgrund der gewachsenen Abhängigkeiten zwischen Endanwendungen und Systemlandschaft auseinanderzudividieren.

In diesem Buch stelle ich daher einen Ansatz zur Umsetzung einer Architektur für Endanwendungen vor, die eine vernünftige Balance zwischen Entwicklungs-und Wartungskosten, Nachhaltigkeit, Skalierbarkeit, Fehlertoleranz sowie die Erfüllung von Flexibilitätsanforderungen bei gleichzeitiger moderater Komplexität anstrebt und auf eine weitestgehende Unabhängigkeit der Endanwendung gegenüber der Systemlandschaft, gegen die sie operiert, setzt. Auf der Suche nach einer solchen Lösung bin ich überraschenderweise bei dem Prozessmodellierungsstandard BPMN (Business Process Model and Notation) fündig geworden: Gestartet als eine grafische Notation zur Modellierung von Geschäftsprozessen, entpuppte sie sich als geradezu vorzügliches Mittel für dieImplementierung einer Anwendungsarchitektur, wie sie mir vorschwebte. Dabei verstehe ich unterAnwendungsarchitektur eine Lösung für Endanwendungen auf Basis heterogener IT-Landschaften, die sowohl fachliche als auch integrationszentrische Prozesse unterscheidet. Da mit der neuesten Version 2.0 des BPMN-Standards zudem die Ausführbarkeit derart erstellter Prozessmodelle aufgrund semantischer Erweiterungen gewährleistet wurde, begann ich damit, komplette Anwendungsarchitekturen mithilfe der BPMN zu entwerfen und ablaufen zu lassen. Dabei verwende ich die BPMN eben nicht nur zur Modellierung der fachlichen Prozesse der Endanwendung, wie das »B« in BPMN ja suggeriert, sondern ich nutze sie auch zur Modellierung und Ausführung der systemnahen Integrationsprozesse. Wie diese auf den ersten Blick widersprüchliche Verwendung der BPMN zusammen-passt, erfahren Sie ebenfalls in diesem Buch.

Mit der vorgeschlagenen Anwendungsarchitektur verfolge ich das Ziel, Architekten und Softwareentwicklern eine möglichst detaillierte Architektur-Blaupause in die Hand zu geben, nach deren Prinzipien zukünftig verteilte Anwendungen in den Unternehmen geplant und implementiert werden können. Wird die Anwendungsentwicklung vermehrt nach dieser Vorlage umgesetzt, trägt jede dieser Lösungen dazu bei, dass sich Unternehmen ganz allmählich aus dem eingangs erwähnten Würgegriff der Abhängigkeiten und Systemverbindungen lösen können. Von daher sehe ich die prozessgesteuerten Anwendungen als einen Beitrag zum Unternehmensarchitekturmanagement (Enterprise Architecture Management, EAM) an, womit auch gleichzeitig gesagt ist, dass dieses Buch sich vom großen Feld des EAM unterscheidet und EAM selbst nicht zum Gegenstand macht.

Das Buch richtet sich an Softwarearchitekten, technisch interessierte Manager, IT-Leiter, Softwareentwickler, Projektleiter, aber auch an Studenten der Informatik und Wirtschaftsinformatik. Ich setze Grundkenntnisse der BPMN voraus. Ich führe zwar kurz in die Notation ein, beschreibe allerdings nicht jedes BPMN-Element im Detail. Auch im Hinblick auf serviceorientierte Architekturen bin ich von einem grundlegenden Wissen bei meinen Lesern ausgegangen, da ich natürlich bei meinem Ansatz ebenfalls auf wiederverwendbare Dienste in den Backend-Systemen angewiesen bin.

Danksagungen


Ein solches Buch entwickelt sich über einen sehr langen Zeitraum, während dessen eine Vielzahl von Personen involviert ist. Ich möchte mich ganz herzlich bei all den Menschen bedanken, die mich auf diesem Weg begleitet haben: bei meinem Doktorvater Prof. Dr. Erich Ortner, bei meinen Gutachtern Prof. Em. Dr. Dr.-Ing. E.h. Hartmut Wedekind und Prof. Dr. Mathias Weske. Bei meinen Vorgesetzten Gunther Rothermel, Dr. Achim Kraiss und Sindhu Gangadharan sowie meinen Kollegen Dr. Udo Paltzer, Dr. Alexander Bundschuh und Waldemar Befort. Zudem bin ich folgenden Personen sehr zu Dank verpflichtet (in alphabetischer Reihenfolge): Sascha Alber, Prof. Dr. Thomas Allweyer, Dr. Dirk Ammermann, Sascha Bertsch, Dr. Gero Decker, Marcus Elzenheimer, Matthias Fischer, Prof. Dr. Elisabeth Heinemann, Nicolai Josuttis, Holger Koschek, Marco Link, Dr. Daniel Lübke, Christoph Neumann, Prof. Dr. Gunther Piller, Peter Schwab sowie Nicole Zeise.

Ein besonderer Dank geht an das Team vom dpunkt.verlag, vor allem an Christa Preisendanz. Doch all dies wäre undenkbar gewesen, gäbe es...

Geleitwort von Sascha Bertsch5
Geleitwort von Prof. Dr. Erich Ortner9
Vorwort11
Inhaltsverzeichnis15
1 Einleitung19
1.1 Unternehmenssoftware im Zeitalter der Globalisierung19
1.2 SOA und prozessgesteuerte Anwendungen28
2 Definition von prozessgesteuerten Anwendungen35
2.1 Historischer Abriss: von xApps zu prozessgesteuerten Anwendungen35
2.2 Prozessgesteuerte Anwendungen im Vergleich mit alternativen Anwendungskategorien39
2.3 Definition und Eigenschaften prozessgesteuerter Anwendungen42
2.4 Die Rolle der BPMN (Business Process Model and Notation) für prozessgesteuerte Anwendungen – Grundlagen47
2.4.1 BPMN-Kernelemente51
2.4.2 Prozessablauf erläutert an einem vereinfachten Bestellprozess55
2.5 Beispielprozesse für prozessgesteuerte Anwendungen58
2.5.1 Stammdatenbearbeitung59
2.5.2 Problembehandlung im Projektmanagement61
2.5.3 Einsatzplanung bei Schichtarbeitern63
2.5.4 Schadensmeldung im öffentlichen Bereich66
3 Architektur von prozessgesteuerten Anwendungen69
3.1 Methodisches Vorgehen: Top-down-Ansatz70
3.2 Spezifikation von prozessgesteuerten Anwendungen76
3.2.1 Allgemeine Informationen über die prozessgesteuerte Anwendung78
3.2.2 Prozessinformationen79
3.2.3 Ausnahmebehandlung85
3.2.4 Geschäftsobjekte87
3.2.5 Benutzeroberflächen88
3.2.6 Services90
3.2.7 Bedeutung des kanonischen Datenmodells94
3.2.8 Fach- und IT-Experten im Zusammenspiel98
3.3 Einführung in die Grundarchitektur von prozessgesteuerten Anwendungen99
3.3.1 Evolution eines Fachmodells zum ausführbaren Prozess100
3.3.2 Vor- und Nachteile einer prozessgesteuerten Architektur108
3.3.3 Trennung zwischen Fachprozessen und technischen Prozessen110
3.3.4 Lose Kopplung112
3.3.5 Aufgabenteilung und Zusammenspiel zwischen prozessgesteuerter Anwendung und Servicevertrag-Implementierungsschicht121
3.4 Service Repositories und prozessgesteuerte Anwendungen147
4 Implementierung der Grundarchitektur von prozessgesteuerten Anwendungen153
4.1 Besondere Bedeutung der BPMN für die Implementierung der Servicevertrag-Implementierungsschicht153
4.1.1 Ereignisse154
4.1.2 Parallelverarbeitung155
4.1.3 Ausnahmebehandlung160
4.1.4 Kollaborationen und Nachrichtenaustausch167
4.1.5 Transaktionen und Kompensation169
4.2 Beispielimplementierung der Grundarchitektur einer prozessgesteuerten Anwendung als Proof-of-Concept173
4.2.1 SAP NetWeaver Process Orchestration173
4.2.2 Implementierungsszenario: vereinfachter Bestellprozess176
4.2.3 Grundlegende Entwicklungsschritte179
4.2.4 Laufzeitverhalten des Beispielszenarios203
4.2.5 Rolle der modellgetriebenen Entwicklung214
4.3 Bedeutung der BPMN-Implementierung verschiedener Hersteller214
4.4 Versionsmanagement217
5 Ergänzende Konzepte zur Unterstützung der Architektur von prozessgesteuerten Anwendungen219
5.1 Locking-Verhalten der angeschlossenen Systeme219
5.2 Idempotenz223
5.3 Ereignisse224
5.4 Fehlerbehandlung227
5.5 Wizard-UIs vs. UI-Verwendung in Prozessschritten230
5.6 Pattern234
5.6.1 Composition Pattern236
5.6.2 Integrationszentrische Pattern245
5.6.3 Erweiterungsvorschlag für BPMN zur dedizierten Modellierung von Integrationsprozessen260
5.7 Flexibilitätsgewinn durch die Verwendung von Regelwerken in Kombination mit analytischen Anwendungen288
5.7.1 Einsatz von Geschäftsregeln zur Steigerung der Flexibilität289
5.7.2 Einsatz von Geschäftsregeln in technischen Prozessen304
5.7.3 Steigerung des Automatisierungsgrades durch Kombination von Geschäftsregeln und analytischen Anwendungen312
5.8 Prozessgesteuerte Anwendungen und unvorhersehbare Prozessabläufe314
6 Fazit und Ausblick335
6.1 Flexibilitätssteigerung durch modifikationsfreie Erweiterungen336
6.2 Was ist mit Cloud- und On-Demand-Computing, Software as a Service, mobilen Anwendungen sowie Hauptspeicher- Datenbanken?339
6.2.1 Software as a Service, On-Demand- und Cloud-Computing340
6.2.2 Mobile Anwendungen341
6.2.3 Hauptspeicher-Datenbanken342
6.3 Hat REST Auswirkungen auf prozessgesteuerte Anwendungen?344
A Anhang347
A.1 Kernelemente der BPMN347
A.2 Ereignisse351
A.3 Gateways352
A.4 Aufgabentypen355
A.5 Exkurs Service-Management: unterschiedliche Ansätze im Vergleich357
A.6 Exkurs: Komponenten als Voraussetzung für prozessgesteuerte Anwendungen – die Rolle von Varianten-Komponenten-Diagrammen362
A.7 Exkurs: Bedeutung operativer und dispositiver Aspekte bei der Umsetzung von prozessgesteuerten Anwendungen366
B Abkürzungsverzeichnis371
C Glossar375
D Literaturverzeichnis391
Index399