08.07.2014 Aufrufe

schwerpunkt: moderne programmierpraktiken - SIGS DATACOM

schwerpunkt: moderne programmierpraktiken - SIGS DATACOM

schwerpunkt: moderne programmierpraktiken - SIGS DATACOM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Mit Sonderbeilage<br />

Quality Management<br />

Januar / Februar 2012 • Nr. 1<br />

€ 8,90 Österreich 9,90 Schweiz sfr 16,50<br />

www.OBJEKTspektrum.de<br />

SCHWERPUNKT MODERNE PROGRAMMIERPRAKTIKEN<br />

Die Zeitschrift für Software-Engineering und -Management<br />

SCHWERPUNKT:<br />

MODERNE PROGRAMMIERPRAKTIKEN<br />

DI und AOP: Eine Bilanz<br />

Steve, Gregg und<br />

Duke im Gespräch<br />

SPECIAL<br />

Mit Diana Larsen,<br />

Johanna Rothman und<br />

Matthias Bohlen<br />

Flow in Lean –<br />

Flow im Team<br />

FACHTHEMEN<br />

G 6540F<br />

Sicherer Smartphone-<br />

Einsatz<br />

Betrieb von SOAbasierten<br />

Lösungen


editorial – ordnung im chaos<br />

„Compilerbau ist die am besten durchdrungene<br />

Disziplin in der ansonsten<br />

chefredakteur<br />

doch noch recht unreifen Informatik!“<br />

So oder so ähnlich hat sich mein<br />

Doktorvater Prof. Nagl gern ausgedrückt,<br />

um seine Freude über diese gereifte<br />

Mischung aus Theoretischer Informatik,<br />

Programmiersprachen konzep ten und<br />

Best Practices in der technischen<br />

Umsetzung auszudrücken. Und daran<br />

muss te ich während der Entstehung dieser Ausgabe von<br />

OBJEKTspektrum immer wieder denken.<br />

Wenn wir hier und heute über <strong>moderne</strong> Program -<br />

mierpraktiken sprechen, dann sind wir in genau dieser guten<br />

Tradition des Compilerbaus, nur 25 Jahre nach dem oben<br />

genannten Zitat meines Lehrers. Heute wird nicht mehr über<br />

die Vor- und Nachteile modularer Programmier sprachen -<br />

konzepte diskutiert und auch die Welle objektorientierter<br />

Sprachen wie C++ und Smalltalk ist über uns hinweg<br />

geschwappt. Und wenn auch in der heutigen kommerziellen<br />

Anwendungsentwicklungswelt eher über Ruby, Java und<br />

ObjectiveC diskutiert wird, wie in dem unterhaltsamen<br />

Artikel von Holger Bohlmann, Manuel Küblböck und<br />

Henning Spille, so hat doch jede dieser vergangenen Wellen<br />

deutliche Spuren bei den <strong>moderne</strong>n Praktiken hinterlassen.<br />

Erich Gamma war beispielsweise mit seinen Design Patterns<br />

auch der Pate für deren kleine Brüder, die Idiome, die André<br />

Janus und Jens Jäger ebenso beschreiben wie die schmutzigen<br />

kleinen Brüder der Anti-Pattern, die Code Smells.<br />

Der wesentliche Sinn vieler <strong>moderne</strong>n Praktiken liegt wie der<br />

vieler Konzepte aus der Vergangenheit in der losen Kopplung<br />

von Komponenten und der sauberer Kapselungen. Aber es<br />

geht eben auch um mehr als eine logische Strukturierung: Es<br />

geht um immer mehr Flexibilität in der Konstruktion von<br />

Software, selbst bei sehr komplexen Anwendungsstrukturen.<br />

Und Flexibilität bedeutet eben auch, dass man sich von einer<br />

zentralen Steuerung endgültig verabschiedet und Kontrolle<br />

zunehmend dezentralisiert, wie Eberhard Wolff in seiner<br />

Bilanz über die Dependency Injection und aspektorientierte<br />

Programmierung herleitet.<br />

Und damit bilden die Praktiken ein praktisches Hilfsmittel für<br />

eine konkrete Umsetzung flexibler Services in einer sauberen<br />

Architektur im Sinne der SOA-Evangelisten früherer Jahre.<br />

Auch Veit Köppen und Liane Will beschreiben übrigens in<br />

ihrem Artikel über die praktische Umsetzung beim professionellen<br />

ITIL-basierten Betrieb von SOA-Anwendungen eine<br />

besondere Herausforderung beim Einsatz von SOA.<br />

Komme ich aber zurück auf die „neue Flexibilität“ unserer<br />

Programmierpraktiken. Sie bildet auch die Basis <strong>moderne</strong>r flexibler<br />

Management-Disziplinen. Marko Schulz und Andreas<br />

Havenstein betonen daher in ihrem Artikel über den Certified<br />

Scrum Developer: „Scrum erfordert flexible Strukturen, damit<br />

das Team jederzeit auf geänderte Anforderungen reagieren<br />

kann, die der Product Owner (PO) einbringt. Ein CSD muss<br />

Entwurfsprinzipien kennen und anwenden können, die zu entkoppelten<br />

Strukturen führen.“ Aber auch der CSD ist mit dem<br />

Drang nach Flexibilität immer in der Gefahr, eine saubere<br />

Architektur zu vernachlässigen.<br />

Damit haben wir auch schon den Bogen gespannt von den<br />

Programmierpraktiken zu den Programmierern und den anderen<br />

Menschen im Entwicklungsprozess, die allen meinen<br />

Gesprächs partner im OOP-Special dieses Heftes so sehr am<br />

Herzen liegen. Matthias Bohlen zieht die Parallelen zwischen<br />

dem „Flow im Lean“ und dem „Flow im Team“, Johanna<br />

Rothman gibt Tipps, um die richtigen Leute einzustellen und<br />

wie man mit Hilfe dieser Menschen seine Arbeit erledigt<br />

bekommt. Diana Larsen umschreibt die Softwareentwicklung<br />

als einen komplexen Tanz von dem Ganzen (dem organisatorischen<br />

System) und seinen Teilen (den betroffenen<br />

Menschen).<br />

Ich finde es wirklich auffällig, dass so viele Technik-Freaks<br />

irgendwann den Weg hin zur Arbeitsorganisation finden, die<br />

einen über Kanban, die anderen über systemische<br />

Betrachtungen von Teams. Oft hatte ich ja den Verdacht, dass<br />

der Grund darin zu suchen ist, dass man mit zunehmendem<br />

Alter nicht mehr der doch sehr schnellen technischen<br />

Entwicklung standhält (Autoren und Leser des<br />

OBJEKTspektrums sind hier natürlich ausgenommen. ☺) Aber<br />

in diesem Heft ist mir der Zusammenhang zwischen diesen<br />

scheinbar weichen Themen und den eher technischen Themen<br />

wieder so richtig bewusst geworden: Wir bauen immer komplexere<br />

Systeme und merken, dass eine zentrale Kontrolle dieser<br />

Komplexität nicht mehr Herr wird. Sowohl die<br />

Programmierpraktiken als auch die Managementpraktiken<br />

versuchen, Ordnung im Chaos zu halten, indem sie Kontrolle<br />

dezentralisieren. Oder wie Diana Larsen sagt: „Es ist eigentlich<br />

paradox, dass wir erst dadurch mehr Kontrolle über komplexe<br />

Ergebnisse bekommen, dass wir auf Kontrolle über die<br />

Teile verzichten.”<br />

Ihr Thorsten Janning<br />

Meet the Editor @ OOP 2012<br />

am <strong>SIGS</strong> <strong>DATACOM</strong>-Stand<br />

Di, 24.01.2012 15.45–16.15 Uhr<br />

Mi, 25.01.2012 10.30–11.00 Uhr<br />

1/2012


CHWERPUNKT: MODERNE PROGRAMMIERPRAKTIKEN<br />

SCHWERPUNKT:<br />

MODERNE PROGRAMMIERPRAKTIKEN<br />

Holger Bohlmann<br />

Manuel Küblböck<br />

Henning Spille<br />

EIN KAFFEE NACH DEM MITTAG:<br />

AUS DEM ALLTAG VON<br />

DREI ENTWICKLERN · · · · · · · · · · · · · · · · · · · 10<br />

Moderne Programmierpraktiken haben sich mit Java schon vor<br />

Jahren verbreitet. Mittlerweile arbeiten viele Java-Entwickler mit<br />

aktuellen Plattformen, wie z. B. der App-Entwicklung fürs iPhone.<br />

Die Autoren zeigen in einem kleinen Spiel auf, wie sich <strong>moderne</strong><br />

Programmier praktiken in verschiedenen Plattformen gemausert<br />

haben. Hierzu treffen sich der Apple-iOS-Entwickler Steve, der<br />

Rubyist Gregg und Duke, der in Java entwickelt, auf einen Kaffee<br />

in der Mittagspause und berichten von ihren Erfahrungen.<br />

EDITORIAL · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 3<br />

AKTUELLES · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 6<br />

PRODUKTNEUHEITEN · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 8<br />

LESERBRIEF · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 9<br />

BUCHBESPRECHUNG: YVES STALGIES REZENSIERT:<br />

THE LEAN STARTUP · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 40<br />

BUCHBESPRECHUNG: MICHAEL STAL REZENSIERT:<br />

BASISWISSEN SOFTWAREARCHITEKTUR · · · · · · · · · · 74<br />

STELLENMARKT · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 46<br />

IMPRESSUM · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 57<br />

SEMINARE & VERANSTALTUNGEN · · · · · · · · · · · · · · · 77<br />

THEMENVORSCHAU & INSERENTENVERZEICHNIS · · 79<br />

<strong>schwerpunkt</strong><br />

Holger Bohlmann<br />

Manuel Küblböck<br />

Henning Spille<br />

EIN KAFFEE NACH DEM MITTAG:<br />

AUS DEM ALLTAG VON DREI ENTWICKLERN · · · · · · 10<br />

Der IDE-Glaubenskrieg visualisiert.<br />

André Janus<br />

Jens Jäger<br />

CODE-FLAVOURS:<br />

NÜTZLICHE JAVA-IDIOME · · · · · · · · · · · · · · 20<br />

Während Anti-Pattern das negative Gegenstück zu den bekannten<br />

Design-Pattern bzw. Entwurfsmustern sind, gibt es auf niedriger<br />

Abstraktionsebene die Code-Smells als Gegensatz zu den<br />

weniger bekannten Idiomen. Die Autoren stellen in diesem<br />

Artikel einige alt bekannte und auch neue Java-Idiome vor.<br />

Andreas Havenstein<br />

Marko Schulz<br />

CERTIFIED SCRUM DEVELOPER:<br />

DER GANZHEITLICHE ENTWICKLER · · · · · · · · · · · · · · · 16<br />

André Janus<br />

Jens Jäger<br />

CODE-FLAVOURS:<br />

NÜTZLICHE JAVA-IDIOME · · · · · · · · · · · · · · · · · · · · · · · · 20<br />

Eberhard Wolff<br />

DI UND AOP:<br />

EINE BILANZ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 24<br />

4 5 www.objektspektrum.de


Das OBJEKTspektrum-Team<br />

wünscht Ihnen<br />

frohe Weihnachten und<br />

einen guten Rutsch ins neue Jahr.<br />

ausblick auf die OOP 2012<br />

Johanna Rothman<br />

SECHS VERHALTENSWEISEN …<br />

… DIE MITARBEITER EINES<br />

AGILEN TEAMS BESITZEN SOLLTEN · · · · · · · · · · · · · · 27<br />

Matthias Bohlen<br />

FLOW IN LEAN, FLOW IM TEAM:<br />

WAS LEAN MIT DEM PERSÖNLICHEN<br />

ERLEBEN ZU TUN HAT · · · · · · · · · · · · · · · · · · · · · · · · · · · · 30<br />

Diana Larsen<br />

WAS UNS ZU ERFOLGREICHEN PROJEKTEN FÜHRT …<br />

… UND MANCHMAL AUCH DAVON ABHÄLT · · · · · · 38<br />

Matthias Bohlen<br />

FLOW IN LEAN, FLOW IM TEAM:<br />

WAS LEAN MIT DEM PERSÖNLICHEN<br />

ERLEBEN ZU TUN HAT · · · · · · · · · · · · · · · · · · 30<br />

Flow herrscht in der Arbeit, wenn Bedarf und Lieferfähigkeit<br />

gegeneinander ausbalanciert sind, z. B. durch den Einsatz<br />

von Lean-Verfahren in der Produktentwicklung. Flow gibt es<br />

auch in der Psyche, wenn vom Einzelnen soviel gefordert<br />

wird, wie er auch leisten kann. Im Flow-Zustand entstehen<br />

die besten Ergebnisse, die Arbeit ist angenehm, man vergisst<br />

die Zeit. Dass man für Flow im Sinne von „Lean<br />

Product Development” dasselbe Wort verwendet wie in der<br />

Psycholo gie, ist kein Zufall. In dem Artikel geht es darum, die<br />

Beziehung zwischen Flow in Lean und Flow in der Psyche<br />

herzustellen und zu erforschen.<br />

fachartikel<br />

Veit Köppen<br />

Liane Will<br />

LIVING SOA:<br />

EVOLUTION DES BETRIEBS VON<br />

SOA-BASIERTEN LÖSUNGEN · · · · · · · · · · · · · · · · · · · · · 42<br />

Albert Zündorf<br />

GEH MIR AUS DEM WEG!<br />

WAS MODELLIERUNGSWERKZEUGE VON<br />

WHITE-BOARDS LERNEN KÖNNEN · · · · · · · · · · · · · · · 52<br />

Eldar Sultanow<br />

MIGRATIONSMANAGEMENT:<br />

FALLSTUDIE ZUR MIGRATION EINER<br />

INDUSTRIELLEN RICH-CLIENT-ANWENDUNG · · · · · · 58<br />

Albert Zündorf<br />

GEH MIR AUS DEM WEG!<br />

WAS MODELLIERUNGSWERKZEUGE VON<br />

WHITE-BOARDS LERNEN KÖNNEN · · · · · · 52<br />

Viele grafische Editoren unterbrechen den Benutzer bei seiner<br />

Arbeit. Insbesondere UML-Modellierungswerkzeuge<br />

stören den Arbeitsfluss des Entwicklers mit Pop-Ups und<br />

der Notwendigkeit, in Werkzeugleisten herumzusuchen.<br />

Gleichwohl werden Softwarearchitekten nicht in<br />

Mausmetern bezahlt. Um die Bedienbarkeit von grafischen<br />

Benutzungsoberflächen zu verbessern, muss man die<br />

Menschen dabei beobachten, wie sie arbeiten. Die daraus<br />

resultierenden Erkenntnisse können den Arbeitsablauf<br />

erheblich beschleunigen.<br />

Bernd Körner<br />

ABGRENZUNG ALS METHODE DER<br />

ANFORDERUNGSANALYSE:<br />

TEIL 2: ABGRENZUNGEN HERAUSARBEITEN · · · · · · · 66<br />

Isabel Münch<br />

TECHNIK PLUS SENSIBILITÄT:<br />

SICHERER SMARTPHONE-EINSATZ<br />

IN UNTERNEHMEN · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 75<br />

Klassendiagramm am Whiteboard.<br />

1/2012 www.sigs-datacom.de


<strong>schwerpunkt</strong><br />

mehr zum thema:<br />

http://www.it-agile.de/agile-entwicklung.html<br />

die autoren<br />

EIN KAFFEE NACH DEM MITTAG:<br />

AUS DEM ALLTAG VON DREI<br />

ENTWICKLERN<br />

Moderne Programmierpraktiken haben sich mit Java schon vor Jahren verbreitet. Mittlerweile<br />

arbeiten viele Java-Entwickler mit aktuellen Plattformen, wie z. B. der App-Entwicklung fürs<br />

iPhone. Wir möchten in einem kleinen Spiel aufzeigen, wie sich <strong>moderne</strong> Programmier -<br />

praktiken in verschiedenen Plattformen gemausert haben. Hierzu treffen sich der Apple-iOS-<br />

Entwickler Steve, der Rubyist Gregg und Duke, der in Java entwickelt, auf einen Kaffee in der<br />

Mittagspause und berichten von ihren Erfahrungen.<br />

Holger Bohlmann<br />

(E-Mail: holger.bohlmann@it-agile.de)<br />

arbeitet seit fast 10 Jahren als Softwareentwickler<br />

in verschiedenen Projekten. Ursprünglich im<br />

Java/J2EE-Bereich, dann auch mit Ruby on Rails<br />

und seit kurzem auch in der iPhone-Entwicklung.<br />

Thema: Entwicklungsumgebungen<br />

(IDE)<br />

Duke: In der Java-Welt gibt es eine Vielzahl<br />

ziemlich guter IDEs. Die Frage, welche<br />

davon die beste ist, artet schon mal gerne in<br />

einen Glaubenskrieg aus (Duke zeichnet<br />

dabei Abbildung 1). Dabei bekämpfen sich<br />

gleich mehrere große Lager aus Eclipse-,<br />

IntelliJ IDEA-, NetBeans- und JDeveloper-<br />

An hä ngern. Es ist eine Schlacht auf sehr<br />

hohem Niveau, die auch insgesamt die<br />

Reife und Vielfalt an Java-Tools widerspiegelt.<br />

Alle genannten IDEs bieten automatische<br />

Refaktorisierungen, Syntax prüfung<br />

und gute Debugging-Unterstüt zung. Ich<br />

persönlich benutze am liebsten Eclipse<br />

wegen der schier unendlichen Anzahl an<br />

Plug-Ins. Egal, was man machen möchte,<br />

mit sehr hoher Wahrscheinlichkeit gibt es<br />

schon ein Eclipse-Plug-In dafür.<br />

Gregg: Die IDE-Glaubenskriege sind<br />

schon legendär. Insgesamt sind aber mittlerweile<br />

alle Entwicklungsumgebungen im<br />

Java-Bereich so gut, dass sie für den<br />

Entwickler eine echte Hilfe in der täglichen<br />

Arbeit darstellen. Vor zehn Jahren habe ich<br />

noch Java-Code mit einem Texteditor<br />

namens Ultra-Edit geschrieben. Wenn ich<br />

jetzt auf Ruby schaue, könnte ich etwas<br />

bösartig sagen, ich bin wieder bei Ultra-<br />

Edit angekommen. Okay, ich habe auch<br />

viel mit Textmate und Rubymine von<br />

JetBrains gemacht. Letztere haben ja auch<br />

schon IntelliJ IDEA gebaut. Textmate sieht<br />

erst einmal wie ein einfacher Editor aus,<br />

hat aber dazu eine riesige Sammlung von<br />

so genannten Bundles, die einen, wenn man<br />

sie denn kennt, auch effektiv unterstützen.<br />

Was ich ein wenig vermisse, sind die<br />

Refaktorisierungsmöglichkeiten aus<br />

Manuel Küblböck<br />

(E-Mail: manuel.kueblboeck@it-agile.de)<br />

interessiert sich für alles, was das Entwickeln von<br />

qualitativ hochwertiger Software einfacher und<br />

effektiver macht. Aktuell befasst er sich mit objektfunktionalen<br />

Sprachen und Continuous Delivery.<br />

Henning Spille<br />

(E-Mail: henning.spille@it-agile.de)<br />

arbeitet seit einigen Jahren bei der it-agile GmbH.<br />

Ursprünglich entwickelte er mit Java und schreibt<br />

heute native iPhone-Anwendungen.<br />

Abb. 1: Der IDE-Glaubenskrieg visualisiert.<br />

Ec lipse. Hier ist man leider noch viel auf<br />

Textersetzung angewiesen, eine automatische<br />

Refaktorisierung ist nicht in der Art<br />

und Weise möglich wie bei einer statischen<br />

Programmiersprache, auch wenn sich<br />

Entwicklungsumgebungen wie Rubymine<br />

da große Mühe geben. Insgesamt bleibt<br />

aber das Gefühl, dass man wieder wie früher<br />

entwi ckelt.<br />

Steve: Als iOS-Entwickler habe ich nicht<br />

viel Auswahl. Es bleibt mir eigentlich nur<br />

eins: Xcode zu verwenden. Die Entwick -<br />

lungsumgebung aus dem Hause Apple ist<br />

seit OS X für fast jegliche Software für Mac<br />

oder iOS der Ursprung. Erweiterungen zur<br />

IDE wie für Eclipse gibt es keine. Apple<br />

gibt den Weg strikt vor. Refaktori -<br />

10 11


<strong>schwerpunkt</strong><br />

sierungshilfen, wie z. B. Extrahieren, Um -<br />

benennen, Verschieben oder automatisches<br />

Einfügen von Boilerplate-Code, den es in<br />

Objective-C viel gibt, existieren leider<br />

nicht. Syntax-Checks des gerade getippten<br />

Codes kann Xcode auch nicht – das liegt<br />

aber vielleicht auch mit an der dynamisch<br />

typisierten Sprache Objective-C. Dafür<br />

kommt Xcode mit einigen Entwicklungs -<br />

werkzeugen daher. Diese beinhalten beispielsweise<br />

den Interface Builder – ein<br />

WYSIWYG-Editor für die Oberflächen der<br />

Apps. Dieser ist zwar selbst auf aktuellen<br />

Mac-Notebooks eher langsam, funktioniert<br />

aber halbwegs zuverlässig. Interessant ist<br />

auch der eingebaute Profiler Instruments.<br />

In Kombination mit dem iPhone-Simulator<br />

kann man hier zuverlässig nach Speicher -<br />

löchern, Zombis (freigegebenen, aber noch<br />

im Zugriff befindlichen Objekten) und<br />

Zeitfressern in der Anwendung fahnden. In<br />

der neuesten Version wird sogar die Ver -<br />

sionsverwaltung Git unterstützt.<br />

Abb. 2: Dependency Injection.<br />

Thema: Dependency-<br />

Injection (DI)<br />

Duke: Auch bei DI profitiert man als Java-<br />

Ent wickler von der Fülle und Reife an Ent -<br />

wicklerwerkzeugen. Die ersten Berührun -<br />

gen mit DI hatte ich mit Struts, das Anfang<br />

des neuen Jahrtausends das vorherrschende<br />

MVC-Framework für die Web-Entwick lung<br />

war. Da es ziemlich konfigurationslastig<br />

war, wurde ihm aber bald durch Spring der<br />

Rang abgelaufen. Obwohl beide<br />

Frameworks mittlerweile auch andere<br />

Optionen anbieten, findet das Zusammen -<br />

bauen von Applikationen aus Komponen -<br />

ten meistens in XML-Konfigurations -<br />

dateien statt. Das ist ungünstig, weil<br />

da durch die Fehlererkennung zur Kompi -<br />

lierzeit – einer der großen Vorteile von statisch<br />

getypten Sprachen – verloren geht.<br />

Außerdem werden diese Konfigurations -<br />

dateien leicht unübersichtlich und sind nicht<br />

Debugger-freundlich. Mittlerweile geht der<br />

Trend daher weg von schwergewichtigen<br />

Frameworks hin zu „Convention over<br />

Configuration” und spezialisierten Biblio -<br />

theken. Nicht zuletzt, weil wir uns da einiges<br />

von Ruby & Rails abgeschaut haben<br />

(Gregg nickt und lächelt). Google Juice<br />

erfreut sich hierbei großer Beliebtheit. Es<br />

kommen aber auch immer mehr und mehr<br />

Stimmen auf, die generell anzweifeln, ob DI<br />

überhaupt einem Framework oder einer<br />

Bibliothek überlassen werden soll. Der<br />

Einfachheit und Verständlichkeit wegen setzen<br />

viele daher auf eine Imple mentierung<br />

von DI in einfachen Assembler-Klassen.<br />

Gregg: Als ich mit Ruby & Rails angefangen<br />

habe, habe ich mich schon gewundert:<br />

Wie macht man hier eigentlich DI? In Java<br />

fand ich es sehr hilfreich, wenn einem die<br />

(technischen) Abhängigkeiten von außen<br />

gegeben wurden. Damit wurde das Testen einzelner<br />

Teile meiner Anwendung erst möglich<br />

(Gregg zeichnet Abbildung 2). Sonst konnte<br />

ich da keinen Schnitt ansetzen und hatte sofort<br />

alle möglichen technischen Systeme an der<br />

Backe. Mittlerweile habe ich gemerkt, dass<br />

das bei Ruby eigentlich völlig unnötig ist.<br />

Nein, jetzt nicht das Testen, sondern das<br />

Problem mit den Abhängigkeiten. Es ist zum<br />

Beispiel möglich, eine Methode an einer<br />

Klasse dynamisch neu zu definieren und durch<br />

einen Mock zu ersetzen. Den Mock schreibe<br />

ich ganz einfach, my_mock = mock(), und mit<br />

meinem aktuellen Mock-Framework, (zum<br />

Beispiel my_mock.should_receive(:my_method).<br />

Es ist nicht nötig, dafür extra irgendwelche<br />

Interfaces zu definieren. Und nebenbei: Der<br />

Klassiker Datenbank ist so eng an meinem<br />

Modell dran, da möchte ich vielleicht auch<br />

nichts abkoppeln. Das lässt sich alles so einfach<br />

und schnell testen, wozu sollte man da<br />

nicht direkt gegen eine In-Memory-Daten -<br />

bank Tests fahren?<br />

Steve: Bislang ist mir für DI auch nichts<br />

Brauchbares untergekommen. Gefühlt<br />

habe ich es aber auch noch nicht vermisst,<br />

was vielleicht daran liegt, dass die iPhone-<br />

Apps eher spezialisiert und klein sind. Die<br />

Oberfläche kann über den Interface-<br />

Builder zusammengebaut werden und man<br />

konfiguriert die Abhängigkeiten graphisch.<br />

Obwohl: Unsere Controller sind schon<br />

recht groß und mehr oder minder fest an<br />

die GUI und an das Datenmodell geknüpft.<br />

Wenn man Daten lokal speichert, dann<br />

muss man Core-Data von Apple benutzen,<br />

das sehr fest an das Modell geknüpft ist.<br />

Ich wüsste nicht, wie ich da die Abhän -<br />

gigkeit zur Persistenz entkoppeln könnte<br />

(Steve blickt fragend in die Runde).<br />

Thema: Release-Prozess<br />

Duke: Die meisten Anwendungen laufen ja<br />

in irgendeinem Applikationsserver, wie<br />

z. B. Tomcat. Die Integration mit Buildund<br />

CI-Werkzeugen ist da recht gut, sodass<br />

das auf Knopfdruck passieren kann. Mit<br />

den richtigen Tools (z. B. [JRe], [Liv]) entfällt<br />

auch das lästige neu Kompilieren und<br />

ein neues Deployment. Das zeitaufwändige<br />

Hoch- und Runterfahren des Servers kann<br />

einem schon ziemlich auf den Geist gehen,<br />

wenn man erst einmal erlebt hat, wie viel<br />

schneller man bei dynamischen Sprachen<br />

vom Schreiben des Codes zur laufenden<br />

Anwendung wechseln kann. Alle Java-<br />

Anwendungen laufen auf der Java Virtual<br />

Machine (JVM) und sind somit selbstverständlich<br />

plattformunabhängig. Diese ist<br />

mittlerweile auch richtig schnell. Teilweise<br />

ist ja JRuby sogar schneller als Ruby selbst.<br />

Gregg: Und bald ist JRuby bestimmt<br />

auch noch schneller als Java (Gregg lacht).<br />

Ja, wenn ich da an klassische Client/Server-<br />

Anwendungen denke, das war schon<br />

schlimm, ein Release auszurollen. Mit den<br />

Web-Anwendungen ist es ja viel einfacher<br />

1/2012


Thema: Continuous<br />

Integration (CI)<br />

Duke: Ich würde behaupten, dass fast alle<br />

Java-Projekte zumindest rudimentärer CI<br />

einsetzen. Die Bandbreite ist hier aber<br />

ziemlich hoch. Einen CI-Server zu haben,<br />

der bei jedem Check-in die Anwendung<br />

baut und testet, ist hier bei Weitem noch<br />

nicht das Ende der Fahnenstange. Dabei ist<br />

CI nicht nur eine Tool-, sondern vielmehr<br />

eine Kulturfrage. Wer seinen Code nicht<br />

mehrmals täglich integriert und Build-<br />

Fehler sofort behebt, macht kein CI. Uns<br />

hat es CI ermöglicht, die Release-Zyklen<br />

von Monaten auf Wochen bzw. Tage zu<br />

verkürzen. Wir sind zwar noch nicht bei<br />

Continuous Deployment, also dem auto<strong>schwerpunkt</strong><br />

geworden, ich tippe nur einen einzigen<br />

Befehl und schon ist meine Anwendung<br />

live, die Datenbank ist migriert und alles<br />

läuft rund. Das kann über mehrere Server,<br />

z. B. mit Capistrano (vgl. [Cap]), erfolgen.<br />

Sehr hilfreich ist natürlich die Tatsache,<br />

dass es keinen klassischen Build-Prozess<br />

gibt, der einem viel Kopfschmerzen bereiten<br />

könnte. Ich bin sehr froh, dass ich mich<br />

damit nicht mehr herumschlagen muss. Ich<br />

habe zu viel Zeit in Werkzeuge wie Ant<br />

oder später dann Maven investiert, die beide<br />

einen ganz einfachen Build-Prozess versprochen<br />

haben. Es ist besser geworden,<br />

aber ich finde, das Thema ist nie zufriedenstellend<br />

gelöst worden. Dann lieber Skript-<br />

Sprachen benutzen, die sich damit noch nie<br />

wirklich herumärgern muss ten.<br />

Steve: Der Release einer App über den<br />

Appstore gestaltet sich relativ einfach. In<br />

Xcode erzeugt man ein Binary, das direkt<br />

über Xcode in den Appstore geladen werden<br />

kann. Nach einer circa einwöchigen<br />

Prüfung durch Apple, ob die Anwendung<br />

reif für den Appstore ist, wird die App je<br />

nach Wunsch automatisch oder per Maus -<br />

klick in der App-Verwaltung bei Apple freigegeben.<br />

Vorher muss man sich allerdings<br />

bei Apple als Entwickler oder Firma regis -<br />

trieren, um Anwendungen in den Appstore<br />

laden zu dürfen. Der Nachteil ist natürlich<br />

die nicht vorhandene Vorhersag barkeit:<br />

zum Einen, wann das Update zur<br />

Verfügung steht, und zum anderen, wann<br />

der Anwender die Applikation tatsächlich<br />

aktualisiert. Da verhält es sich mit Apps<br />

eher so, wie mit klassischen Client/Server-<br />

Anwendungen: Wenn man dem Benutzer<br />

nicht mit Fehlermeldungen oder Fehlfunk -<br />

tionen nerven möchte, muss die App<br />

abwärtskompatibel bleiben.<br />

Abb. 3: Der TDD-Zyklus.<br />

matischen Ausliefern in der Produktion bei<br />

jedem Commit, angelangt, aber wir haben<br />

zumindest jederzeit eine lauffähige Version,<br />

die wir ausliefern könnten.<br />

Gregg: Build-Fehler? Nun, einen Build<br />

kenne ich ja nicht (zwinkert). Bei uns ist es<br />

so, dass die Tests auf den lokalen Rechnern<br />

schon eine Weile brauchen, da fühlt sich<br />

das kontinuierliche Testen nicht immer so<br />

gut an. Am schlimmsten sind unsere Ober -<br />

flächentests, die mit Hilfe von Cucumber<br />

und RSpec laufen. Diese testen gegen eine<br />

laufende Web-Applikation (vgl. [Che10]).<br />

Gut, aber auch langsam. Und das alte<br />

Problem haben wir auch: Eine große<br />

Anwendung mit einer komplexen Daten -<br />

struktur erfordert schon ein wenig Setup an<br />

Daten – und es dauert, das für jeden Test<br />

wieder und wieder aufzubauen. Es gibt<br />

technische Tricks und Hilfsmittel, aber das<br />

Problem ist nicht gelöst. Ein echter Fort -<br />

schritt sind übrigens Multi-Core-Systeme.<br />

Da sich Tests in Ruby leicht parallel ausführen<br />

lassen, kann man auf einem<br />

Rechner mit vielen Rechnerkernen auch<br />

eine deutliche Geschwindigkeits stei gerung<br />

erleben. Damit haben wir auch unserem<br />

CI-Server so richtig Beine ge macht. Auf<br />

dem läuft auch das CI-System der Wahl:<br />

Jenkins, oder wie es früher hieß, Hudson.<br />

Steve: Als CI-Server nutzen wir natürlich<br />

auch einen Mac. Auf einer anderen<br />

Plattform könnten wir den Objective-C-<br />

Code für eine iPhone-App gar nicht kompilieren.<br />

Dieser wird über den Konsolen -<br />

befehl xcodebuild gestartet. Das wiederum<br />

setzt auf der Konfiguration in Xcode auf,<br />

welche nur für OSX zu haben ist. Zum<br />

Glück kann man Jenkins direkt von der<br />

Konsole aus starten und auch zuverlässig in<br />

OSX integrieren, sodass Jenkins auch nach<br />

einem ungewolltem Neustart des Rechners<br />

wieder hochfährt. Mit ein wenig Kenntnis<br />

der Konsole und dem Tool Betabuilder (vgl.<br />

[Han10]) oder Testflight (vgl. [Tes]) ist es<br />

auch möglich, direkt eine Betaversion zum<br />

Download zur Verfügung zu stellen. Diese<br />

können sich der Product Owner und die<br />

Tester direkt auf ihrem iOS-Gerät installieren,<br />

sofern sie eine halbwegs aktuelle<br />

Version des Betriebs systems haben. Über<br />

den App-Store lässt sich ja nichts schnell<br />

aktualisieren, schon gar nicht für einen eingeschränkten<br />

Benutzerkreis (Gregg und<br />

Duke schütteln den Kopf). Vorher führt<br />

unser CI-Server Tests mit einem Akzep -<br />

tanztest-Framework namens Frank (vgl.<br />

[Fra]) durch. Diese dauern zwar inzwischen<br />

eine halbe Stunde, haben sich aber schon<br />

mehrfach als Regressionstests bewährt.<br />

Frank benutzt den iPhone-Simulator für<br />

Akzeptanztests, der nur einmal gestartet<br />

werden kann. Darum ist es trotz Mehrkern-<br />

Rechner und Cucumber nicht möglich,<br />

mehrere Tests gleichzeitig auszuführen.<br />

Thema: Test-Driven<br />

Development (TDD)<br />

Duke: Der Vater von TDD, Kent Beck, ist<br />

auch der Macher von JUnit, dem TDD-<br />

12 13


<strong>schwerpunkt</strong><br />

Abb. 4: Auszug der Entwicklung von Programmiersprachen.<br />

Framework für Java. Damit sollte doch<br />

wohl klar sein, dass TDD zu Java gehört<br />

wie zu keiner anderen Sprache. Man kann<br />

mit Java auch tatsächlich richtig gut TDD-<br />

Style programmieren. Das Problem liegt<br />

eher darin, dass man in Java meist an<br />

Legacy-Code rumschraubt, der eben nicht<br />

mit TDD erstellt wurde, und daher meist<br />

kein testbares und damit gutes Design aufweist.<br />

Da kann es dann schon mal etwas<br />

schwieriger werden.<br />

Gregg: Klar machen wir auch TDD, wer<br />

nicht? Ich muss auch sagen, dass es bei<br />

Ruby on Rails noch viel wichtiger ist, Tests<br />

zu haben. Das hilft, die vielen kleinen<br />

Flüchtigkeitsfehler auszumerzen, die man<br />

ganz schnell mal macht. Schließlich haut<br />

einem ja nicht ständig ein Compiler oder<br />

eine Entwicklungsumgebung auf die Finger.<br />

Aber ich fühle im Team doch einen gewissen<br />

Druck, mehr und mehr Richtung<br />

Akzeptanztests der Web-Seiten zu gehen,<br />

denn die testen ja dann alles im Zusam -<br />

menspiel durch. Damit verlässt man jedoch<br />

TDD-Zyklen (Gregg zeichnet dabei Abbil -<br />

dung 3). Ich selbst würde die Unit-Tests, mit<br />

denen das Thema Testen erst richtig anfing,<br />

nicht vernachlässigen. Akzeptanz tests sind<br />

aufwändiger zu schreiben: So kann ich zum<br />

Beispiel für eine Anwendung mit 100<br />

Suchoptionen entsprechend viele, langsame<br />

Akzeptanztests schreiben oder aber die<br />

Suche an sich testen und tiefer im System<br />

dann die 100 Suchoptionen, die sich nur in<br />

Datenbankzugriffen unterscheiden.<br />

Eins habe ich fast vergessen: Testen soll<br />

das Design treiben. Man kann natürlich<br />

dagegen halten, dass Rails einem ein festes<br />

Rahmenwerk vorgibt und es nicht so viel<br />

Design zu steuern gibt. Ich kann jedem<br />

auch empfehlen, im großen weiten Netz<br />

nachzuschauen, wie es andere so machen.<br />

Das gehört bei Ruby on Rails zum guten<br />

Ton (vgl. [Rai]).<br />

Steve: Die Anwendung ist insgesamt sehr<br />

eng mit dem SDK verwoben, was TDD<br />

nicht leicht macht. Zum Beispiel ist genau<br />

festgelegt, wie eine View sich beim zugehörigen<br />

View-Controller zu melden hat. Eine<br />

Table-View (wie z. B. in Kontakte) ruft<br />

beim Berühren eines Kontakts die Methode<br />

(void)tableView:(UITableView*)tableView<br />

didSelectRowAtIndexPath:(NSIndexPath*)indexPath<br />

auf und der entsprechende View-Controller<br />

entscheidet dann anhand des IndexPaths, was<br />

zu tun ist. Gelegentlich schafft man es dennoch,<br />

die Fachlogik – die ja eigentlich ohnehin<br />

nicht in der App, sondern im Server bleiben<br />

sollte – von der View und dem<br />

allgegenwärtigen ManagedObjectContext zu<br />

trennen und vernünftig zu testen. Während<br />

des Projekt alltags neigen wir dazu, nach der<br />

Imple mentierung Akzeptanztests zu schreiben,<br />

um Regression vorzubeugen.<br />

Thema: Programmiersprache<br />

Duke: Java ist weit verbreitet und man findet<br />

Java-Entwickler sprichwörtlich an jeder<br />

Ecke. Das macht sie sehr attraktiv für viele<br />

Firmen. Leider entwickelt sich die Sprache<br />

nur sehr langsam weiter und daher schiele<br />

ich schon öfter mal neidisch auf neuere<br />

Sprachen, die mit Features wie Closures<br />

und Higher-Order-Functions aufwarten.<br />

Die können zwar oft auch auf der JVM laufen,<br />

sind aber meist zu instabil oder komplex,<br />

um sich gegen den Platzhirsch durchzusetzen.<br />

Viele kolportieren ja schon das<br />

Ende der Java-Vormachtstellung, können<br />

sich aber noch nicht darauf einigen, wer<br />

denn gegen Java antreten soll.<br />

Gregg: Wenn Leute von Ruby sprechen,<br />

bekomme ich immer wieder zu hören: „Das<br />

ist doch nur eine Skriptsprache”. Da kann<br />

ich nur müde lächeln. Früher fand ich statisch<br />

typisierte Sprachen auch toll. Alles<br />

wird überprüft, alles ist festgezurrt. Und<br />

das ist auch das Problem: Einige Dinge sind<br />

einfach so simpel zu machen, wenn man<br />

keine statischen Typen hat. Versuch doch<br />

einmal, in einer statisch getypten Sprache<br />

eine Methode an eine bestehende Klasse<br />

zur Laufzeit hinzuzufügen oder gar zu<br />

ändern! Die statische Typisierung ist auch<br />

der Grund für all die Interfaces, Delegates<br />

und was auch immer, die man sich schaffen<br />

muss, um ein System flexibel zu gestalten.<br />

Das macht es aber auch unübersichtlicher<br />

und aufgeblähter. In Ruby ist es oft deutlich<br />

einfacher, kürzer und damit eleganter möglich<br />

sich auszudrücken. Apropos kurz: In<br />

Ruby on Rails hat das DRY-Prinzip (Don’t<br />

repeat yourself) einen sehr hohen<br />

Stellenwert. Wiederholungen werden geradezu<br />

gehasst und auch durch die<br />

Möglichkeiten, die Ruby bietet, sehr effektiv<br />

vermieden.<br />

Steve: Objective-C ist eine Erweiterung<br />

von C (Steve zeichnet zusammen mit den<br />

anderen nebenbei Abbildung 4). Einsatz -<br />

gebiet von Objective-C ist Mac-OS und<br />

iOS von Apple. Wer für die Geräte von<br />

Apple Software schreiben will, kommt nur<br />

schwer um Objective-C herum. Als Apple-<br />

Jünger merkt man sehr schnell, wenn das<br />

typische Look & Feel einer Mac-Anwen -<br />

dungen nicht gegeben ist. Ein Versuch von<br />

Apple, in Xcode eine Cocoa-Java-Bridge<br />

einzubauen, wurde schnell wieder unterlassen.<br />

Die Lernkurve für Objective-C empfinden<br />

viele Java-Entwickler als steil wie<br />

eine Wand. Verwöhnt von der JVM, die<br />

brav jedes Objekt wegräumt, das nicht<br />

mehr benötigt wird, muss man sich stark<br />

umgewöhnen, um jedes erzeugte Objekt<br />

von Hand wieder aufzuräumen. Beim<br />

Weiterreichen von Instanzen können<br />

Anfänger schnell den Überblick verlieren,<br />

1/2012


<strong>schwerpunkt</strong><br />

wer da gerade welche Instanz eines Objekts<br />

hält (retain) und wann diese freigegeben<br />

(released) werden darf. Beim Implemen -<br />

tieren einer Klasse und seiner Properties<br />

(Instanzvariablen in Java) muss man sich<br />

hierüber auch schon Gedanken machen.<br />

Die Allgegenwärtigkeit des Umstands führt<br />

nach kurzer Übung zum speicherschonenden<br />

Entwickeln. Als dynamisch typisierte<br />

Sprache kann man zur Laufzeit mittels<br />

Kategorien bestehende Klassen um Metho -<br />

den erweitern. Dies gilt auch für Klassen<br />

des SDKs, wie etwa NSString, die nicht als<br />

Quellcode vorliegen.<br />

Thema: Externe Systeme<br />

Duke: Hier wurde früher viel mit RMI und<br />

– falls man zu einem nicht-Java-System<br />

sprechen wollte – CORBA gearbeitet.<br />

Danach waren Web-Services für eine Weile<br />

sehr populär. Wie immer findet man dafür<br />

jeweils leicht entsprechende Bibliotheken.<br />

Wobei man bei den vielen APIs in Sachen<br />

Web-Services schon mal den Überblick verlieren<br />

kann. Nicht umsonst gibt es bei<br />

Oracle einen eigenen Web-Services-Kurs,<br />

um bei JAX-RPC, JAXB, JAXR, SAAJ, etc.<br />

(Gregg und Steve schauen sich fragend an)<br />

nicht den Über- und Durchblick zu verlieren.<br />

Heutzutage machen wir das natürlich<br />

auch gerne mit REST-Schnittstellen.<br />

Gregg: Heute gibt es immer mehr externe<br />

Systeme, die angebunden werden. Mittler -<br />

weile geht das ja glücklicherweise nicht<br />

mehr über proprietäre Schnittstellen, sondern<br />

in meinem Bereich einfach über eine<br />

passende REST-Schnittstelle. Die Daten<br />

werden über XML oder besser noch über<br />

JSON übertragen. Damit ist der Zugriff<br />

offen, leicht anzubinden und auch von<br />

allen System aus möglich. Rails bietet hierfür<br />

eine geradezu natürliche Unterstüt zung.<br />

Das ist ein deutlicher Schritt nach vorne.<br />

Dazu gibt es über Ruby-Gems noch die<br />

Möglichkeit, sich Bibliotheken jeglicher<br />

Art in seine Anwendung zu holen.<br />

Softwareverteilung ist ja eigentlich ein alter<br />

Hut, wenn man auf UNIX-Paketverwal -<br />

tungswerkzeuge schaut. Aber es hat eine<br />

Weile gedauert, bis es das auch für<br />

Software-Frameworks gab. Jedenfalls ist es<br />

damit heutzutage möglich, sich auch noch<br />

für alle möglichen Fremdsysteme passende<br />

Bibliotheken zu installieren.<br />

Steve: Apps für mobile Geräte sind die<br />

Endpunkte in den Systemlandschaften.<br />

Leistungsfähig genug, um als eigenständiger<br />

Client zu agieren, versuchen native<br />

Literatur & Links<br />

Apps, eine möglichst flüssige Bedienung zu<br />

erzeugen. Auf dem iPhone können dazu in<br />

der SqLite-Datenbank alle nötigen Daten<br />

abgespeichert werden. Datenaustausch<br />

sollte möglichst viel im Hintergrund stattfinden,<br />

um dem Benutzer bei langsamen<br />

Verbindungen nicht unnötig warten zu lassen<br />

– was viele Apps leider falsch machen.<br />

Häufig werden bereits vorhandene<br />

Schnittstellen an Systemen mitbenutzt. Oft<br />

sind das nicht die <strong>moderne</strong>n, leichtgewichtigen<br />

Schnittstellen, die für langsame<br />

Verbindungen vonnöten wären. Optimal<br />

sind zustandslose Protokolle, wie JSON<br />

über eine REST Schnittstelle. So können<br />

viele Daten auch bei langsamen Verbin -<br />

dungen schnell und zuverlässig in beide<br />

Richtungen wechseln und die View mit<br />

Inhalt füllen.<br />

■<br />

[Cap] Capistrano, Utility and framework for executing commands, siehe:<br />

https://github.com/capistrano/capistrano/<br />

[Che10] D. Chelimsky, D. Astels, Z. Dennis, A. Hellesøy, B. Helmkamp, D. North, The RSpec<br />

Book: Behaviour Driven Development with RSpec, Cucumber, and Friends, The Pragmatic<br />

Programmers 2010<br />

[Fow04] M. Fowler, Inversion of Control Containers and the Dependency Injection pattern, 2004,<br />

siehe: http://martinfowler.com/articles/injection.html<br />

[Fra] Frank, siehe: http://blog.thepete.net/2010/07/frank-automated-acceptance-tests-for.html<br />

[Han10] Hanchor LLC, Introducing iOS Beta Builder, 2010, siehe:<br />

http://www.hanchorllc.com/2010/08/24/introducing-ios-beta-builder/<br />

[Inf11] InfoWorld, Review: Top Java programming tools, 2011, siehe:<br />

http://www.infoworld.com/d/developer-world/infoworld-review-top-java-programming-tools-191<br />

[JRe] JRebel, What does JRebel do?, http://www.zeroturnaround.com/jrebel/<br />

[Liv] LiveRebel siehe: http://www.zeroturnaround.com/liverebel/<br />

[Rai] Ruby on Rails Screencasts, siehe: http://railscasts.com/<br />

[Tes] Testflight, siehe: http://testflightapp.com<br />

14 15


<strong>schwerpunkt</strong><br />

mehr zum thema:<br />

http://scrumalliance.org/CSD<br />

http://www.it-agile.de/csd.html<br />

die autoren<br />

CERTIFIED SCRUM DEVELOPER:<br />

DER GANZHEITLICHE<br />

ENTWICKLER<br />

Scrum trat einst als allgemeines Projekt-Rahmenwerk an, mit dem sich nicht nur Softwareent -<br />

wicklung betreiben lässt, sondern beispielsweise auch Marketing und Projektmanagement. In<br />

der Praxis merkten viele Teams jedoch, dass es schwer ist, mit Scrum zu arbeiten, wenn man<br />

nicht auch <strong>moderne</strong> Programmierpraktiken benutzt. Diesem Umstand zollte die Scrum<br />

Alliance Tribut und führte den „Certified Scrum Developer” ein. So finden Teams noch besser zu<br />

einem runden Vorgehen nach Scrum. In diesem Artikel zeigen wir, welche Praktiken die Scrum<br />

Alliance für Softwareentwickler empfiehlt, welche Gefahren drohen, falls sie sie nicht beherrschen,<br />

und welchen Nutzen sie daraus ziehen, wenn sie sie erlernen und einsetzen.<br />

Andreas Havenstein<br />

(E-Mail: andreas.havenstein@it-agile.de)<br />

ist bei der it-agile GmbH Trainer, Senior-<br />

Softwareentwickler und Architekt. Sein<br />

Schwerpunkte sind flexible Architekturen und die<br />

Anwendungsentwicklung unter Einsatz agiler<br />

Methoden, insbesondere von XP.<br />

Als Mitte der Neunziger Jahre schwergewichtige,<br />

dokumentenlastige Prozesse den<br />

Markt dominierten, gab es eine Gruppe<br />

von Softwareentwicklern und Projekt -<br />

managern, die der Trägheit der Wasserfall-<br />

Prozesse eine leichtgewichtige Alternative<br />

entgegenstellen wollten. Kent Beck beispielsweise<br />

erkannte, dass die bis zum<br />

Maximum gesteigerte Anwendung bewährter<br />

Engineering-Praktiken in Kombination<br />

mit vielen kurzen Feedback-Schleifen ein<br />

Softwareprojekt zum Erfolg führen kann.<br />

Er fasste Entwicklungspraktiken zum<br />

eXtreme Programming (XP) zusammen<br />

und schuf und beschrieb in [Bec00] den<br />

ersten großen Vertreter dessen, was später<br />

als agile Softwareentwicklung bezeichnet<br />

wurde.<br />

Scrum entstand zu einer ähnlichen Zeit<br />

wie XP und wurde Anfang des neuen<br />

Jahrtausends bekannter, als Ken Schwaber<br />

ein erstes Buch hierzu veröffentlichte (vgl.<br />

[Sch01]). In den darauf folgenden Jahren<br />

setzte ein so großer Scrum-Boom ein, dass<br />

Marko Schulz<br />

(E-Mail: marko.schulz@it-agile.de)<br />

unterstützt Teams dabei, agile Softwareentwick -<br />

lungs praktiken umzusetzen. Neben Schulungen<br />

legt er bevorzugt selber mit Hand an und programmiert<br />

mit. Insbesondere beachtet er technische<br />

Grundlagen wie TDD und evolutionäres Design.<br />

agile Softwareentwicklung und Scrum für<br />

viele synonym wurden. Entwicklungs -<br />

praktiken, in XP noch dominierender<br />

Bestandteil, rückten in den Hintergrund.<br />

Scrum ist ein Methodenrahmen, der prinzipiell<br />

unabhängig von der Software erstel -<br />

lung angewandt werden kann und der keine<br />

Aussage darüber trifft, mit welchen<br />

Mitteln Anforderungen in Software umgesetzt<br />

werden sollen.<br />

Abb. 1: Der ganzheitliche Mensch, wie Leonardo da Vinci ihn sah.<br />

Scrum ohne Unterbau<br />

Die Erfahrung der letzten Jahre hat gezeigt,<br />

dass es vielen Scrum-Teams nicht gelingt,<br />

Sprint-Ergebnisse mit ausreichend hoher<br />

Qualität zu erstellen. Martin Fowler<br />

bezeichnete dies in [Fow09] als Flaccid<br />

Scrum und auch Ken Schwaber gestand in<br />

einem Interview ein, dass viele Entwick -<br />

lungsteams nicht ausreichend mit <strong>moderne</strong>n<br />

Entwicklungspraktiken vertraut sind<br />

(vgl. [Inf]).<br />

Auch die Scrum Alliance hat diesen Miss -<br />

stand erkannt und eine neue Zertifizierung,<br />

den Certified Scrum Developer (CSD), de -<br />

finiert. Zusätzlich zu der Kenntnis des<br />

Scrum-Prozesses muss ein CSD auch weitere<br />

technischen Fähigkeiten zur Erstellung<br />

von Software erlernen.<br />

16 17


Continuous Integration<br />

Um permanentes Feedback über den Ent wicklungsstand zu<br />

bekommen, muss ein gemeinsames Quellcode-Repository vor<strong>schwerpunkt</strong><br />

Grundsätzlicher Nutzen und Schaden von Zertifizierungen<br />

wurden unter anderem in [Col09] diskutiert, ohne dass wir es<br />

hier wiederholen wollen. Ob die CSD-Zertifizierung als<br />

Werbe-Etikett sinnvoll ist, sollte jeder für sich selbst entscheiden.<br />

Unseren Erfahrungen nach ist die mit dem CSD-<br />

Zertifikat verbundene Schu lung aber so wertvoll, dass wir<br />

sie jedem Entwickler – gerade im Scrum-Kontext – ans Herz<br />

legen.<br />

Kasten 1: Braucht die Welt eine weitere<br />

Zertifizierung?<br />

Praktiken eines<br />

Scrum-Entwicklers<br />

Insbesondere Fähigkeiten und Kenntnisse in den im Folgenden<br />

beschriebenen Be reichen sind notwendig, um als CSD im<br />

Scrum-Kontext qualitativ hochwertige Soft ware erstellen zu<br />

können.<br />

Architektur und Design<br />

Scrum erfordert flexible Strukturen, damit das Team jederzeit<br />

auf geänderte Anfor derungen reagieren kann, die der Product<br />

Owner (PO) einbringt. Ohne flexible Strukturen kommt es zu<br />

der gefürchteten steilen Aufwandskurve, bei der Änderungen<br />

und komplett neue Features mit dem Fortschritt der<br />

Entwicklung so teuer werden, dass sie schließlich nicht mehr<br />

vertretbar umzusetzen sind. Ein CSD muss Entwurfsprinzipien<br />

kennen und anwenden können, die zu entkoppelten Strukturen<br />

führen.<br />

Test Driven Development<br />

Die Grundregeln von TDD sind sehr einfach Bob Martin hat sie<br />

in [Mar] auf nur drei Gesetze heruntergebrochen:<br />

■ Schreibe keinen Produktivcode ohne einen fehlschlagenden<br />

Test.<br />

■ Schreibe nur soviel Testcode, bis du einen fehlschlagenden<br />

Test hast.<br />

■ Du darfst nur genau so viel Pro duktivcode schreiben, wie<br />

gerade notwendig ist, um den einen fehlschlagenden Test zu<br />

erfüllen.<br />

Jeder, der versucht hat, konsequent TDD zu betreiben, hat<br />

jedoch gemerkt, wie herausfordernd diese Regeln sind. So setzen<br />

viele Teams nur ansatzweise TDD um und kommen nicht<br />

dazu, sein eigentliches Potenzial auszuschöpfen. Die konsequente<br />

Anwendung von TDD-Praktiken führt zu flexiblem<br />

Design und erzeugt ein Sicher heitsnetz für Refaktorisierungen<br />

und funktionale Umstrukturierungen.<br />

handen sein. Darauf basierend müssen auto matisierte, getestete<br />

Builds mit hoher Geschwindigkeit erstellt werden können.<br />

Das ist der erste, fundamentale Schritt, um letztendlich zu<br />

Continuous Deployment (vgl. [Rie09]) zu gelangen, wie es von<br />

im mer mehr Entwicklungsteams betrieben wird.<br />

Collaboration<br />

Scrum fordert und fördert eine enge Zu sam menarbeit – sowohl<br />

innerhalb des Ent wicklerteams, als auch mit dem PO und<br />

Stakeholdern. Wie dies geschehen kann, ist jedoch nicht näher<br />

festgehalten. So kommt es im oder kurz vor dem Sprint-Review<br />

immer wieder zu Überraschungen, was implizit angenommen<br />

und nicht klar kommuniziert wurde.<br />

Ein CSD muss dagegen in der Lage sein, kommunikativ<br />

sowohl innerhalb des Teams (z. B. mit Pair-Programming) als<br />

auch mit dem Kunden (z. B. durch das Schreiben von automatisierten<br />

Akzeptanz tests) zusammenzuarbeiten.<br />

Refaktorisierung<br />

So, wie der PO erst mit der Zeit eine Vor stellung davon<br />

gewinnt, welches die wertvollsten Features einer Software sind,<br />

bekommt auch das Entwicklungsteam erst mit der Zeit eine<br />

Vorstellung davon, welches die passende Architektur ist, um<br />

diese Features bestmöglich umzusetzen.<br />

Viele Entwickler schieben die Fortent wick lung der<br />

Architektur vor sich her – und das vor allem aus zwei Gründen:<br />

■ Es fällt ihnen schwer zu entscheiden, wann eine<br />

Refaktorisierung angebracht ist.<br />

■ Es fällt ihnen schwer, einen sicheren, zügigen Weg zu einer<br />

besseren Architektur zu finden, insbesondere falls dieser<br />

den begrenzten Rahmen der in integrierten<br />

Entwicklungsumge bungen eingebauten Refaktorisierungs -<br />

möglichkeiten sprengt.<br />

Ein CSD muss wissen, wann und wie Refaktorisierungen<br />

durchgeführt werden sollen, um die Architektur zu gestalten<br />

und fortzuentwickeln.<br />

Für die Zertifizierung als CSD fordert die Scrum Alliance,<br />

dass ein Entwickler sowohl den Scrum-Prozess, als auch agile<br />

Entwicklungspraktiken kennt (vgl. [Scr]). Ein verbreiteter<br />

Weg zur CSD-Zertifizierung besteht darin, die Scrum-<br />

Grundlagen über einen CSM-Kurs und die<br />

Entwicklungspraktiken über einen AEP-Kurs (Agile<br />

Entwicklungsprak tiken) zu lernen.<br />

Alternativ zum CSM-Kurs kann ein Entwickler auch einen<br />

CSPO-Kurs (Certified Scrum Product Owner) oder eine<br />

Einführung in die Scrum-Grundlagen (SG) sowie eine zusätzliche<br />

Wahlpflichtvertiefung (WV) besuchen, wie in<br />

Abbildung 2 zu sehen ist. Viele Entwickler haben jedoch<br />

schon einen CSM-Kurs besucht, um die Scrum-Grundlagen<br />

kennenzulernen, selbst wenn sie nicht als Scrum-Master<br />

arbeiten.<br />

Kasten 2: Die CSD-Zertifizierung.<br />

1/2012


<strong>schwerpunkt</strong><br />

Abb. 2: Das CSD-Zertifizierungsschema.<br />

Der ganzheitliche Entwickler<br />

Ein CSD ist damit ein „ganzheitlicher”<br />

Entwickler. Er kennt den Scrum-Prozess<br />

und die XP-Entwicklungspraktiken und<br />

kann damit qualitativ hochwertige Sprint-<br />

Inkremente erstellen.<br />

Damit wurde für Scrum nicht wirklich<br />

etwas Neues gefunden, sondern – wie schon<br />

XP – entdeckt der CSD bereits bekannte<br />

Praktiken neu. Warum? Weil wir merken,<br />

was für große Probleme wir haben, wenn wir<br />

diese Praktiken nicht verfolgen. Und weil wir<br />

wieder merken, dass dies kein Selbstläufer ist,<br />

sondern wir uns als Entwickler mit diesen<br />

Praktiken allein und im Team immer wieder<br />

auseinandersetzen müssen.<br />

■<br />

Literatur & Links<br />

[Bec00] K. Beck, Extreme Programming Explained, Addison-Wesley 2000<br />

[Col09] J. Coldewey, J. Link, Die Ent-Zertifizierung des Fortschritts, in: OBJEKTspektrum<br />

03/2009<br />

[Fow09] M. Fowler, Flaccid Scrum, 2009, siehe: http://martinfowler.com/bliki/FlaccidScrum.html<br />

[Inf] InfoQ, Interview with Ken Schwaber – Part 3, siehe:<br />

http://www.infoq.com/news/2010/09/kenschwaber-interview-part3<br />

[Mar] B. Martin, The Three Laws of TDD, siehe:<br />

http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd<br />

[Rie09] E. Ries, Continuous deployment in 5 easy steps, 2009, siehe:<br />

http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html<br />

[Sch01] K. Schwaber, M. Beedle, Agile Software Development with Scrum, Prentice Hall 2001<br />

[Scr] Scrum Alliance, Certified Scrum Developer, siehe: http://www.scrumalliance.org/CSD<br />

18 19


<strong>schwerpunkt</strong><br />

die autoren<br />

CODE-FLAVOURS:<br />

NÜTZLICHE JAVA-IDIOME<br />

Während Anti-Pattern das negative Gegenstück zu den bekannten Design-Pattern bzw.<br />

Entwurfsmustern sind, gibt es auf niedriger Abstraktionsebene die Code-Smells als Gegensatz<br />

zu den weniger bekannten Idiomen. Wir stellen in diesem Artikel einige alt bekannte und auch<br />

neue Java-Idiome vor. Denn man verbessert sich und lernt besser durch positive statt durch<br />

negative Beispiele.<br />

In der Begriffswelt der Softwaretechnik<br />

begegnen einem Design-Pattern, Anti-<br />

Pattern sowie Code-Smells und Idiome in<br />

vielen Zusammenhängen. Die genaue<br />

Bedeutung der Begriffe ist oft aber nicht<br />

explizit erklärt oder wird einfach vorausgesetzt.<br />

Dabei sind die Definitionen keineswegs<br />

einfach oder eindeutig.<br />

Pattern und Anti-Pattern<br />

Nachdem sich Entwurfsmuster (Design<br />

Pattern, vgl. [Gam96]) als nützliche<br />

Lösungen für wiederkehrende Probleme in<br />

der objektorientierten Softwareentwick -<br />

lung etabliert haben, wurden bald darauf<br />

ihre negativen Gegenstücke, die Anti-<br />

Pattern (vgl. [Bro07]), beschrieben. Anti-<br />

Pattern schildern schlechte Lösungen und<br />

Beispiele, wie sie oft in der Praxis anzutreffen<br />

sind. Im Gegensatz zu den Entwurfs -<br />

mustern bezieht sich der Begriff Anti-<br />

Pattern nicht nur auf den Entwurf<br />

ob jekt orientierter Software, sondern auch<br />

Abb. 1: Sprachspezifität vs. Abstraktion.<br />

auf Architektur-, Prozess- und Mana -<br />

gement probleme.<br />

Idiome und Code-Smells<br />

Neben den Anti-Pattern gab es auch deren<br />

„kleine Brüder”, die Code-Smells (vgl.<br />

[Fow01]). Diese „schlechten Gerüche”<br />

beschreiben schlechten Stil oder ungünstige<br />

Lösungen auf der Ebene weniger oder zum<br />

Teil nur einer Codezeile (Beispiel: „Magic<br />

Number”). Das Gegenstück sind die<br />

Idiome (vgl. [Wik-a]), die zwar für „echte”<br />

Entwurfsmuster zu klein sind bzw. sich auf<br />

einer zu niedrigen Abstraktionsebene befinden,<br />

aber dennoch in vielen Kontexten einsetzbar<br />

sind.<br />

Zielsetzung und Abgrenzung<br />

Genau wie die Entwurfsmuster passen<br />

Idiome nicht immer. Und eine übertriebene<br />

oder erzwungene Anwendung verwirrt<br />

eher, als dass sie hilft. Der Hintergrund der<br />

André Janus<br />

(E-Mail: mail@andre-janus.de)<br />

ist freiberuflicher Software Engineer/Consultant<br />

und Doktorand der AG Softwaretechnik an der Uni<br />

Magdeburg. Er beschäftigt sich mit Systeminte -<br />

gration, Web-Anwendungen auf Basis von Java-<br />

Technologien und Qualitätssicherung im Kontext<br />

agiler Softwareentwicklung.<br />

Jens Jäger<br />

(E-Mail: mail@jensjaeger.com)<br />

ist freiberuflicher Software-Engineer. Er beschäftige<br />

sich mit agiler Softwareentwicklung und<br />

Usability sowie der Analyse, Modellierung und<br />

Implementierung komplexer datenbankgestützter<br />

Systeme mit den Technologien JavaEE und Ruby on<br />

Rails.<br />

Pattern und Idiome ist es nämlich nicht nur,<br />

gelungene Lösungen wiederzuverwenden,<br />

sondern auch Strukturen zu schaffen, die<br />

für alle am Code schreibenden Entwickler<br />

zu verstehen sind – und damit eine Basis für<br />

Architektur- und Design-Diskussionen zu<br />

schaffen.<br />

Die Grenze zwischen Entwurfsmuster<br />

und Idiom ist zudem nicht eindeutig zu ziehen.<br />

In der Regel sind Idiome sprachspezifisch<br />

(vgl. [Idi]), weswegen wir in diesem<br />

Artikel von „Java-Idiomen” sprechen. Es<br />

gibt sogar Java-EE-Pattern (vgl. [Ora10]),<br />

die noch spezifischer nur für die Java-EE-<br />

Plattform gelten. Die Code-Smells andererseits<br />

werden wieder als sprachunabhängig<br />

angesehen. Die Terminologie im Bereich<br />

Pattern und Idiome ist also alles andere als<br />

eindeutig. Wir haben daher versucht, die<br />

Situation in Abbildung 1 anschaulich darzustellen.<br />

Nützliche Java-Idiome<br />

Im Folgenden werden wir auf einige be -<br />

kannte Java-Idiome eingehen, aber auch<br />

20 21


<strong>schwerpunkt</strong><br />

public class Singleton<br />

{<br />

/**<br />

* Privater Konstruktor verhindert externe Instanzierung<br />

*/<br />

private Singleton()<br />

{<br />

}<br />

/**<br />

* Innere statische Holder-Klasse<br />

*/<br />

private static class Holder<br />

{<br />

private static final Singleton INSTANCE = new Singleton();<br />

private Holder()<br />

{<br />

}<br />

}<br />

/**<br />

* Statische Factory-Methode<br />

*/<br />

public static Singleton getInstance()<br />

{<br />

return Holder.INSTANCE;<br />

}<br />

}<br />

Listing 1: Singleton-Implementierung mit<br />

dem Holder-Idiom.<br />

eher unbekanntere „Code Flavours” vorstellen.<br />

Quellen für Idiome gibt es im Web<br />

viele, besonders umfangreich ist beispielsweise<br />

[Jav], neu und innovativ, aber auch<br />

streitbar ist aus unserer Sicht etwa [Cod].<br />

Holder-Idiom<br />

Das Holder-Idiom – auch Holder Pattern<br />

genannt – dient der thread-sicheren Imple -<br />

mentierung von Singletons in Java. Das<br />

Singleton-Pattern (vgl. [Gam96]) ist eines<br />

der bekanntesten Entwurfsmuster. Es wird<br />

verwendet, wenn nur eine Instanz einer<br />

Klasse existieren darf. Singletons haben bei<br />

falscher Verwendung einige Nachteile. Sie<br />

ermöglichen z. B. die Verwendung als globale<br />

Variable, um prozedural statt objektorientiert<br />

zu programmieren. Unter anderem<br />

sind Singletons nur schwer zu testen. Das<br />

Entwurfsmuster Singleton sollte also nur<br />

sehr sparsam verwendet werden. In<br />

Legacy-Code wird man jedoch sehr wahrscheinlich<br />

auf einige Singletons treffen, die<br />

im schlimmsten Fall nicht thread-sicher<br />

implementiert sind.<br />

Das Holder Idiom (vgl. [Jen]) gewährleis -<br />

tet die Thread-Sicherheit durch die<br />

Verwendung einer inneren statischen Klasse.<br />

Die Initialisierungsphase einer Klasse ist<br />

durch die Java Language Specification (vgl.<br />

[Sun]) garantiert nicht nebenläufig. Ein weiterer<br />

Vorteil ist, dass die Initialisierung erst so<br />

spät wie möglich – bei der ersten<br />

Verwendung – stattfindet (siehe Listing 1).<br />

Localized-Instance-Idiom<br />

Das Localized-Instance-Idiom eignet sich<br />

zum dynamischen Verwenden länderspezifischer<br />

Klassen – daher wird es auch<br />

Localized Class genannt. Auch in Zeiten<br />

von Dependency Injection (DI) und<br />

Inversion of Control gibt es sinnvolle<br />

Anwendungen für dieses Idiom, gerade<br />

wenn in älteren Anwendungen keine DI-<br />

Frameworks zur Verfügung stehen oder<br />

deren Einsatz aus irgendwelchen Gründen<br />

nicht möglich ist.<br />

Zu einer Basisklasse MyBusinessClass exis -<br />

tieren auch länderspezifische Varianten,<br />

wie z. B. MyBusinessClass_DE oder<br />

MyBusinessClass_US, die von der Basisklasse<br />

erben und Methoden mit länderspezifischer<br />

Logik überschreiben. In der Basisklasse findet<br />

sich eine Methode, die automatisch die<br />

jeweilige Klasse instanziiert und – in dieser<br />

Variante des Idioms – als Fallback ein<br />

Objekt der Basisklasse zurückgibt. Die<br />

Vorteile liegen auf der Hand: Länder -<br />

spezifische Logiken können voneinander<br />

getrennt implementiert werden – gleichzeitig<br />

kann der Aufruf der entsprechenden<br />

Logik völlig transparent und einheitlich<br />

erfolgen. Beim Aufruf muss man nicht einmal<br />

wissen, ob es eine länderspezifische<br />

Logik gibt (siehe Listing 2).<br />

Dieses Idiom ist relativ komplex und<br />

kann auch schon zu den Entwurfsmustern<br />

gezählt werden. Dennoch ist es sprachspezifisch<br />

(und damit ein Idiom), da das<br />

Instanziieren der Klasse so nicht in allen<br />

Sprachen möglich ist.<br />

Transfer-Container<br />

Aktuelle Anwendungen stehen nicht allein<br />

im luftleeren Raum – heutzutage ist es<br />

üblich, verschiedene Systeme über unterschiedliche<br />

Schnittstellen zu verbinden. Die<br />

genaue technische Umsetzung kann durch<br />

Web-Services (SOAP, REST) oder mit<br />

Message Queueing (z. B. mit „MQSeries”)<br />

public class MyBusinessClass<br />

{<br />

protected MyBusinessClass()<br />

{<br />

}<br />

public static MyBusinessClass localizedInstance()<br />

{<br />

Class< ? > myClass = MyBusinessClass.class;<br />

String context = … // get context from somewhere, for<br />

example "DE”<br />

String myClassName = myClass.getName() + context;<br />

Class< ? > myLocalizedClass;<br />

try<br />

{<br />

myLocalizedClass = Class.forName(myClassName);<br />

}<br />

catch (ClassNotFoundException e)<br />

{<br />

myLocalizedClass = myClass;<br />

}<br />

MyBusinessClass myInstance;<br />

try<br />

{<br />

myInstance = (MyBusinessClass)<br />

myLocalizedClass.newInstance();<br />

}<br />

catch (InstantiationException e)<br />

{<br />

myInstance = new MyBusinessClass ();<br />

} catch (IllegalAccessException e)<br />

{<br />

myInstance = new MyBusinessClass ();<br />

}<br />

return myInstance;<br />

}<br />

public doBusinessLogic()<br />

{<br />

// implement the standard behaviour here<br />

}<br />

}<br />

public class MyBusinessClass_DE extends MyBusinessClass<br />

{<br />

@Override<br />

public doBusinessLogic()<br />

{<br />

// implement the country-specific behaviour here<br />

}<br />

}<br />

// usage of localized instances<br />

MyBusinessClass.localizedInstance().doBusinessLogic();<br />

Listing 2: Basis-Implementierung des<br />

Localized-Instance-Idioms.<br />

1/2012


<strong>schwerpunkt</strong><br />

public class TransferContainer()<br />

{<br />

private Status status;<br />

private Object buisnessObject;<br />

public enum Status { OK,<br />

NOT_SUPPORTED_IN_THIS_COUNTRY }<br />

…<br />

}<br />

StringBuilder sql = new StringBuilder();<br />

sql.append("SELECT *");<br />

sql.append(" FROM table1");<br />

sql.append(" WHERE column1 = "value"");<br />

sql.append(" AND column2 = "uelav"");<br />

Listing 4: Mit StringBuilder-<br />

Concatenation in Java eingebettetes SQL.<br />

final Bar bar;<br />

public void doCalulation(final Foo foo)<br />

{<br />

bar = calculate(foo);<br />

}<br />

Listing 5: Finale Variablen als lokale<br />

Variable und als Methoden-Parameter.<br />

Listing 3: Einfaches Beispiel für einen<br />

Transfer-Container.<br />

Enum Business Constants<br />

In fast jedem Projekt, das fachliche Pro -<br />

zesse abbildet, gibt es Konstanten für vererfolgen.<br />

Die entsprechenden Bibliotheken<br />

abstrahieren die Transportschicht und sorgen<br />

für eine Fehlerbehandlung bei Kom -<br />

muni kationsfehlern.<br />

Es gibt jedoch zahlreiche Anwendungs -<br />

fälle, bei denen eine Fehlerbehandlung nicht<br />

sinnvoll in der Transportschicht abgehandelt<br />

werden kann. Beispielsweise sei ein System<br />

genannt, das für mehrere Länder in<br />

Produktion ist, aber bestimmte Schnitt -<br />

stellen nicht in allen Ländern zur Verfügung<br />

stellt. Hier ist es sinnvoll, nach dem Vorbild<br />

der Internet-Protokolle (vgl. [Int91]) eine<br />

weitere Schicht zwischen Transportschicht<br />

und fachlicher Logik einzuziehen: den<br />

Transfer-Container. Im einfachsten Fall ist<br />

dieser ein „Umschlag” um das fachliche<br />

Objekt mit einer Variable, die den<br />

Rückgabestatus enthält (siehe Listing 3).<br />

Der Transfer-Container sorgt für eine<br />

Separation of Concerns, indem Dinge, die<br />

nicht wirklich technisch sind, aber auch<br />

nicht in ein fachliches Objekt gehören, klar<br />

gekapselt sind. Je nach Implementierung<br />

bekommt der Aufrufer des Transfer-<br />

Containers eine genaue Rückmeldung, was<br />

eigentlich passiert, statt eines wenig aussagekräftigen<br />

http-500-Fehlers (Internal<br />

Server Error).<br />

StringBuilder-Concatenation<br />

Da es in Java nicht, wie in JRuby, die so<br />

genannten Multiline Strings gibt und<br />

zudem ältere Versionen des Java-Compilers<br />

beim Konkatenieren von Strings jedes Mal<br />

ein neues String-Objekt erzeugen, werden<br />

in Java oft StringBuilder als Notlösung verwendet.<br />

Diese werden benutzt, um größere<br />

Strings – z. B. eingebettetes SQL für JDBC<br />

oder JavaScript – zusammenzusetzen und<br />

dabei trotzdem noch die Lesbarkeit zu<br />

erhalten. Auch wenn es sich hier um ein<br />

recht naives Idiom handelt, ist die Lösung<br />

dennoch häufig anzutreffen und sowohl<br />

hilfreich als auch übersichtlich (siehe<br />

Listing 4).<br />

Bei der StringBuilder-Concatenation<br />

handelt es sich eindeutig um ein Idiom, da<br />

es sowohl zu klein für ein Entwurfsmuster<br />

als auch zu spezifisch für die Sprache Java<br />

ist. Auch wenn <strong>moderne</strong>re Compiler den +-<br />

Operator wie beispielsweise in Java 1.4<br />

durch den StringBuffer und seit Java 5 durch<br />

den StringBuilder ersetzen, gibt es dennoch<br />

Fälle, in denen die automatische Umset -<br />

zung nicht optimal ist (vgl. [Cap11]).<br />

Außerdem kann man durch eine manuelles<br />

Verwenden des StringBuilder zum Beispiel<br />

SQL gut lesbar im Java-Code einbetten.<br />

Finale Variablen<br />

Alle lokalen Variablen und Variablen in der<br />

Parameterliste einer Methode sollten mit<br />

dem Schlüsselwort final versehen sein. Zur<br />

Erinnerung: Finale Variablen können nur<br />

einmalig initialisiert werden. Die Initia li -<br />

sierung muss nicht mit der Deklaration<br />

erfolgen (siehe Listing 5).<br />

Auf den ersten Blick sieht es etwas ungewohnt<br />

aus, jede Variable mit final zu versehen.<br />

Es führt jedoch zu weniger Fehlern und<br />

erzwingt einen sauberen Program mierstil.<br />

Wenn eine Variable ein zweites Mal beschrieben<br />

wird, ist dies eine Mehrfachverwendung,<br />

die man eigentlich vermeiden sollte (vgl.<br />

[Mar08]). Code analyse-Tools, wie<br />

„Findbugs” (vgl. [Sou-a]) oder „PMD” (vgl.<br />

[Sou-b]), werten dies daher auch als Fehler.<br />

Mit dem Schlüssel wort final kann man so mit<br />

Mitteln der Sprache Java logische Fehler und<br />

Schreib fehler effektiv verhindern, die im<br />

Zweifel erst durch Codeanalyse-Werkzeuge<br />

und im schlechtesten Fall gar nicht gefunden<br />

würden.<br />

schiedenste Dinge. Sobald jedoch mehr als<br />

eine Konstante des gleichen fachlichen Typs<br />

existiert, sollten Enums bevorzugt werden.<br />

Dadurch ist der fachliche Kontext zusam -<br />

mengehörender Werte im Code abgebildet.<br />

Da Enum-Typen wie vollwertige Klassen<br />

behandelt werden, können sie beliebig<br />

komplex entworfen werden (vgl. [Kra06]).<br />

Dies kann man sich geschickt zu Nutze<br />

machen, um Geschäftslogik abzubilden<br />

(siehe Listing 6). In dem Beispiel werden<br />

drei Fabriken angelegt und für jede Fabrik<br />

werden die dort hergestellten Produkte im<br />

Konstruktor übergeben. Somit ist für jeden<br />

Programmierer sofort klar, welche Pro -<br />

dukte aus welcher Fabrik kommen.<br />

Das Enum-Business-Constants-Idiom<br />

hilft, Logik an einer Stelle zu halten, und<br />

vereinfacht so den Code und hilft Fehler zu<br />

vermeiden.<br />

Fazit<br />

Durch Code-Flavours bzw. Idiome können<br />

allgemein bekannte und gute Lösungen<br />

wiederverwendet werden. Code-Flavours<br />

machen den Code damit lesbar und wartbar.<br />

Entwickler haben Begriffe, die die<br />

Struktur des Codes beschreiben und damit<br />

Design-Diskussionen vereinfachen.<br />

Da aber die Abstraktionsebene niedriger<br />

und die Lösungen (sprach-)spezifischer<br />

sind als bei den Pattern, ist die Gefahr auch<br />

größer, hier durch ein Over-Engineering,<br />

also das übertriebene oder falsche Nutzen<br />

der Idiome, den Code komplexer zu<br />

machen als notwendig. Außerdem sind einzelne<br />

Pattern und Idiome durchaus umstritten:<br />

So gilt Singleton in Zeiten von DI vielen<br />

als Anti-Pattern. Und auch der<br />

StringBuilder wird von vielen nicht<br />

genutzt, da der Compiler dies in den meis -<br />

ten Fällen erledigt. Auch andere Idiome<br />

und Pattern – gerade solche, die wir hier<br />

vorgestellt haben – finden sicher nicht bei<br />

22 23


<strong>schwerpunkt</strong><br />

public enum Factory<br />

{<br />

STUTTGART, NEW_YORK(Product.P2, Product.P3), TOKIO;<br />

private final Product[] products;<br />

Factory(Product … products)<br />

{<br />

this.products = products;<br />

}<br />

public Product[] getProducts()<br />

{<br />

return this.products;<br />

}<br />

}<br />

Listing 6: Fabrik-Beispiel für Enum-<br />

Business-Constants.<br />

allen Gefallen. Wir freuen uns daher über<br />

kritisches Feedback – natürlich auch über<br />

positives.<br />

Trotz aller Kritik sind Code-Flavours<br />

eine gute Wahl, um die Entwicklung von<br />

Software und deren Qualität weiter zu verbessern.<br />

Für bestimmte Probleme in<br />

bestimmten Kontexten stellen sie genau die<br />

richtige Lösung dar. Daher sollten angehende<br />

Entwickler, auch im Sinne eines besseren<br />

Lernens, eher die guten Beispiele als<br />

die schlechten Beispiele kennen und verstehen.<br />

■<br />

Literatur & Links<br />

[Bro07] W.J. Brown, R.C. Malveau, H.W. McCormick III, T.J. Mowbray, Anti Patterns:<br />

Entwurfsfehler erkennen und vermeiden, mitp 2007<br />

[Cap11] M. Caprari, Java bytecode, string concatenation and StringBuilder, 2011, siehe:<br />

http://caprazzi.net/posts/java-bytecode-string-concatenation-and-stringbuilder/<br />

[Cod] Code Monkeyism, siehe: http://codemonkeyism.com/generation-java-programming-style/<br />

[Fow01] M. Fowler, K. Beck, J. Brant, W. Opdyke, Refactoring, Improving the Design of Existing<br />

Code, Addison-Wesley 2001<br />

[Gam96] E. Gamma, R. Helm, R. Johnson, J. Vlissides, Entwurfsmuster: Elemente wieder verwendbarer<br />

objektorientierter Software, Addison-Wesley 1996<br />

[Idi] Idiom or Pattern, siehe: http://c2.com/ppr/wiki/JavaIdioms/IdiomOrPattern.html<br />

[Int91] Internet Protocol, 1991, siehe: http://tools.ietf.org/html/rfc791<br />

[Jav] Java Idioms, siehe: http://c2.com/ppr/wiki/JavaIdioms/JavaIdioms.html<br />

[Jen] jensjaeger.com, Singletons in Java mit dem Holder-Pattern, siehe:<br />

http://www.jensjaeger.com/2010/04/singletons-in-java-mit-dem-holder-pattern<br />

[Kra06] K. Kreft, A. Langer, Effective Java: Neue Sprachmittel für Java 5.0 - Teil 1: Einführung<br />

in Aufzählungstypen, in:JavaSpektrum 6/2006<br />

[Mar08] R.C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Prentice Hall<br />

2008<br />

[Ora10] Oracle, Java EE Pattern, 2010, siehe: http://java.sun.com/developer/technicalArticles/J2EE/patterns/<br />

[Sou-a] Sourceforge.net, Find Bugs in Java Programs, siehe: http://findbugs.sourceforge.net/<br />

[Sou-b] Sourceforge.net, PMD, siehe: http://pmd.sourceforge.net/<br />

[Sun] Sun, Java Language Specification, Kap. 12.4, siehe:<br />

http://java.sun.com/docs/books/jls/third_edition/html/execution.html#44557<br />

[Wik-a] Wikipedia, Idiom, siehe: http://de.wikipedia.org/wiki/Idiom_%28Softwaretechnik%29<br />

1/2012


Vorteile von DI<br />

DI weist eine ganze Reihe von Vorteilen auf:<br />

Die Softwarestruktur wird verbessert.<br />

Der Bestellservice weiß nicht mehr, welche<br />

Klasse die Kundenverwaltung konkret<br />

implementiert. Natürlich muss er noch die<br />

Schnittstelle kennen, aber mehr nicht.<br />

Dadurch werden die Abhängigkeiten der<br />

einzelnen Objekte reduziert. Ohne DI können<br />

die Objekte zum Beispiel Factories nut<strong>schwerpunkt</strong><br />

der autor<br />

DI UND AOP:<br />

EINE BILANZ<br />

„Dependency Injection” (DI) und Aspektorientierte Programmierung (AOP) sind seit Jahren<br />

wesentliche Grundlage für Enterprise-Java-Anwendungen im Java-EE- und Spring-Umfeld. Es ist<br />

an der Zeit, Bilanz zu ziehen, den bisherigen Erfolg in der Praxis und die Vorteile dieser Ansätze<br />

darzustellen und einen Blick in die Zukunft beider Technologien zu wagen.<br />

Normalerweise muss jedes Objekt in einem<br />

System sich die anderen Objekte, deren<br />

Methoden es aufrufen will, zusammensuchen.<br />

Bei Dependency Injection (DI) werden<br />

die Objekte von außen zugewiesen,<br />

also, metaphorisch gesprochen, „injiziert”.<br />

Neben der Zuweisung der abhängigen<br />

Objekte werden diese Objekte meistens<br />

auch erzeugt. Daher gehört DI zur<br />

Kategorie der Ent wurfs muster, die sich um<br />

das Erzeugen von Objekten kümmern, wie<br />

z. B. Factory Method, Singleton oder<br />

Abstract Factory (vgl. [Gam94]). Ähnlich<br />

wie DI beschreiben diese Patterns nicht nur,<br />

wie die Objekte erzeugt werden, sondern<br />

auch, wie auf sie zugegriffen werden kann.<br />

So gibt es beim Singleton meistens eine<br />

Methode, die Zugriff auf die einzige<br />

Instanz gewährt. Im Extremfall muss das<br />

Objekt noch nicht einmal erzeugt werden,<br />

sondern es kann bereits vorhanden sein.<br />

DI hat hier aber eine andere Vorgehens -<br />

weise als Singleton oder Factory Method<br />

entsprechend der Inversion of Control: Der<br />

eigene Code sucht sich keine Objekte<br />

zusammen und erzeugt auch keine, sondern<br />

sie werden von außen in den Code injiziert.<br />

Nehmen wir als Beispiel einen Service für<br />

die Verarbeitung von Bestellungen: Dieser<br />

bekommt abhängige Objekte, wie z. B. die<br />

Kundenverwaltung, „injiziert”. Konkret:<br />

Eine Set-Methode wird aufgerufen oder der<br />

Service wird dem Konstruktor als Para -<br />

meter übergeben. Um dies zu erreichen,<br />

kann der Entwickler selbst Code schreiben<br />

– dieser wird jedoch schnell unübersichtlich,<br />

sodass sich in der Praxis DI-Container<br />

wie Spring oder Java EE durchgesetzt<br />

haben.<br />

zen, um Abhängigkeiten aufzulösen. Ins -<br />

besondere dieses Vorgehen führt zu<br />

Problemen in der Architektur: Jedes Objekt<br />

nutzt die Factory, die wiederum jedes<br />

Objekt erzeugen kann (siehe Abbildung 1).<br />

Also hängt jedes Objekt über die Factory<br />

von jedem anderen Objekt im System ab.<br />

Möglichst wenige Abhängigkeiten sind<br />

aber Voraussetzung für die leichte Änderbarkeit<br />

von Software. Mit DI hängt jedes<br />

Objekt nur von den genutzten Schnittstel -<br />

len ab. Die Implementierung der Schnitt -<br />

stelle ist nur dem DI-Container bekannt, zu<br />

dem die Objekte aber keine Abhängigkeit<br />

haben. (siehe Abbildung 2)<br />

Das Testen wird vereinfacht. Dem<br />

Bestell service kann sehr einfach eine<br />

Kundenverwaltung injiziert werden, die<br />

immer einen bestimmten Kunden zurück -<br />

gibt, der zum Testen eines bestimmten<br />

Szenarios nützlich ist. Dieser Ansatz ist für<br />

Unit-Tests sinnvoll. Dabei wird eine einzelne<br />

Klasse getestet und alle abhängigen<br />

Objekte werden durch entsprechende einfachere<br />

Versionen (so genannte Mocks oder<br />

Stubs) ersetzt, die entsprechende konstante<br />

Testdaten zurückliefern. Durch DI kann<br />

man solche Mocks oder Stubs sehr einfach<br />

Eberhard Wolff<br />

(E-Mail: eberhard.wolff@adesso.de)<br />

arbeitet als Architektur- und Technologie-Manager<br />

für die adesso AG in Berlin. Er wurde von Oracle in<br />

die Gruppe der Java-Champions aufgenommen, ist<br />

Autor einiger Fachbücher und spricht regelmäßiger<br />

auf verschiedenen Konferenzen.<br />

injizieren: Man erzeugt das zu testende<br />

Objekt, ohne den sonst üblichen DI-<br />

Mecha nismus zu nutzen. Dann injiziert<br />

man die entsprechenden Mocks oder Stubs.<br />

Oft wird die Konfigurierbarkeit der<br />

Kompo nenten als weiterer Vorteil von DI<br />

übersehen. Neben abhängigen Objekten<br />

wie der Kundenverwaltung können für den<br />

Bestellservice auch Einstellungen wie der<br />

Mindestbestellwert durch DI konfiguriert<br />

werden. Bei Spring beispielsweise können<br />

Einstellungen aus Properties-Dateien oder<br />

System-Properties genutzt werden und<br />

natürlich ist der Mechanismus auch<br />

erweiterbar, sodass Einstellungen aus praktisch<br />

jeder Quelle ausgelesen werden können.<br />

Das ist von Vorteil, weil so Fehler –<br />

wie nicht vorhandene Konfigurations -<br />

einstellungen oder Konfigurationsdateien –<br />

durch den DI-Container behandelt werden.<br />

Das reduziert den rein technischen<br />

Infrastruktur-Code in den Anwendungen.<br />

Auf den ersten Blick ist DI eine Erfolgs -<br />

geschichte: Ursprünglich in Spring und<br />

Abb. 1: Ohne DI nutzen Services häufig Factories, um Referenzen auf andere Services<br />

zu erzeugen. So entsteht eine Struktur, in der jeder Service die Factory kennt und die<br />

Factory dann jeden Service. Letztendlich hängt das gesamte System voneinander ab,<br />

was Wiederverwendbarkeit behindert und ein Zeichen für eine schlechte Architektur ist.<br />

24 25


<strong>schwerpunkt</strong><br />

Abb. 2: Mit DI werden die Services durch den DI-Container erzeugt. Dadurch haben<br />

sie weniger Abhängigkeiten und können leicht in einem anderen Kontext eingesetzt<br />

werden oder für Tests mit anderen Abhängigkeiten versehen werden.<br />

anderen Projekten, wie z. B. „PicoCon -<br />

tainer” (vgl. [Pic]), implementiert, hat es<br />

über EJB 3.0, JSR 299 (CDI) und JSR 330<br />

Einzug in Java EE gefunden und mittlerweile<br />

kommt keine Java-EE-Anwendung<br />

mehr ohne diesen Ansatz aus. Dadurch<br />

sollte sich zumindest die Strukturver bes -<br />

serung tatsächlich auch in den meisten<br />

Projekten manifestiert haben. Bei den anderen<br />

beiden Punkten ist ein solcher Opti -<br />

mismus nicht angebracht:<br />

DI vereinfacht, wie bereits dargestellt,<br />

Unit-Tests. Neben diesen Tests bieten DI-<br />

Container wie Spring oder EJB 3.1 als<br />

Alternative die Flexibilität, auch außerhalb<br />

eines Applikationsservers komplexe Infra -<br />

strukturen zu starten. Dort können die echten<br />

Implementierungen des Kundenservice<br />

mit allen abhängigen Objekten ablaufen,<br />

um damit Tests durchzuführen. Diese Tests<br />

decken Fehler im Zusammenspiel der<br />

Komponenten auf, zählen also zu den<br />

Integrationstests. Vorteil der DI bei<br />

Integrationstests ist die Flexi bilität, den<br />

Code in unterschiedlichen Umgebungen<br />

laufen zu lassen, also auch außerhalb eines<br />

Applikationsservers. Die zunehmende<br />

Popularität von Tools wie „Arquilian” (vgl.<br />

[JBo-a]) zeigt aber, dass Tests in<br />

Applikationsservern zunehmend genutzt<br />

werden. Die Vorteile von DI werden also<br />

nur teilweise realisiert.<br />

Die Konfiguration von Objekten ist leider<br />

nicht bei allen DI-Containern gegeben.<br />

Abb. 3: Mit AOP wird die Logik für die Behandlung der Transaktionen zentral implementiert<br />

und dann an die passenden Stellen in der Geschäftslogik integriert.<br />

Viele Projekte laden immer noch ihre<br />

Konfigurationen selbst – mit manchmal<br />

erheblichen Aufwand und nicht immer fehlerfrei.<br />

Hier werden die Möglichkeiten der<br />

DI-Lösungen immer noch zu wenig<br />

genutzt.<br />

Lange wurde gegen DI auch ins Feld<br />

geführt, dass DI „Programmierung in<br />

XML” sei. Durch die Möglichkeit zur<br />

Nutzung von Java-Annotationen hat sich<br />

dieses Problem mittlerweile erledigt. Aber<br />

die Annotation haben auch Nachteile:<br />

Änderungen an der Konfiguration können<br />

oft nur durch Änderungen im Programm -<br />

code erreicht werden. Das bedeutet auch<br />

ein erneutes Kompilieren und Installieren<br />

der Anwendung. Bei XML reichen eine<br />

Änderung an einer Konfigurationsdatei<br />

und ein Neustart. Dadurch sind die<br />

Systeme mit XML flexibler anpassbar.<br />

Wie sieht die Nutzung von DI in neuen<br />

Sprachen aus? Für DI in Scala wird das<br />

Cake Pattern (vgl. [Ode08]) empfohlen.<br />

Dieses beschreibt die Umsetzung von DI in<br />

Scala mit bestimmten Codestrukturen.<br />

Beim Scala-Framework „Lift” sind die<br />

Konfiguration und die benötigten<br />

Abhängigkeiten der Objekte vollständig im<br />

Code implementiert. Dieser Ansatz benötigt<br />

sehr viel (siehe oben). Trotz der<br />

Unterstützung von DI in Lift nannte der<br />

Entwickler des Frameworks Dave Pollack<br />

den größten Teil von DI einen „load of horse<br />

poop” (vgl. [Osd]). Vielleicht baut Lift<br />

deswegen nicht auf den Erfahrungen der<br />

etablierten DI-Frameworks auf. Zusam -<br />

men fassend kann man sagen, dass sich DI<br />

mittlerweile in den Frameworks und in der<br />

Infrastruktur etabliert hat, auch wenn nicht<br />

der volle Wert dieser Ansätze genutzt wird.<br />

Aspektorientierte<br />

Programmierung<br />

Ideen zur Aspektorientierten Program -<br />

mierung (AOP) lassen sich bis in die 1990er<br />

Jahre zurückverfolgen. Der Aspekt wird in<br />

den eigentlichen Code „eingewebt”, um<br />

dadurch so genannte Cross Cutting<br />

Concerns zentral an einer Stelle zu implementieren<br />

(siehe Abbildung 3), statt dies<br />

ständig im Code zu tun (siehe Abbildung 4).<br />

Eine zentrale Implementierung von einigen<br />

speziellen Cross Cutting Concern – wie<br />

Sicherheit und Transaktionen in Enterprise-<br />

Anwendungen – wurde bereits in EJB 1.0<br />

angeboten. EJB enthielt damals aber kein<br />

AOP-System, mit dem ein Entwickler ähnliche<br />

Erweiterungen implementieren könnte.<br />

Um eine solche Basis zu schaffen, wurde<br />

1/2012


<strong>schwerpunkt</strong><br />

Abb. 4: Ohne AOP muss in jedem<br />

Service in jeder Methode Code – zum<br />

Beispiel für die Behandlung von<br />

Transaktionen – geschrieben werden.<br />

AOP plötzlich interessant und es entstanden<br />

Projekte wie das mäßig erfolgreiche JBoss<br />

AOP (vgl. [JBo-b]) oder Spring mit der AOP-<br />

Unterstützung. Spring AOP führte später<br />

eine Kompatibilität mit AspectJ ein.<br />

Dadurch hatten Entwickler ein sehr<br />

mächtiges Werkzeug, um selbst Erwei -<br />

terungen analog zu Transaktionen und<br />

Sicherheit zu implementieren. Spring bietet<br />

auch einige Aspekte an, die über<br />

Transaktionen und Sicherheit hinaus<br />

gehen. Aber AOP hatte dann irgendwann<br />

den Ruf, komplex zu sein, vielleicht, weil<br />

der Entwickler eine neue Sprache für die<br />

Definition der Stellen im Code lernen muss -<br />

te, an denen die Aspekte ansetzen sollen:<br />

die Pointcut Expressions. Ein typischer<br />

Entwickler nutzt diese Sprache nicht sehr<br />

häufig, was das Erlernen nicht erleichtert.<br />

Eine andere Befürchtung ist oft, dass der<br />

Code an irgendwelchen Stellen erweitert<br />

wird und so die Entwickler den Überblick<br />

verlieren, was wo passiert. Wenn aber technische<br />

Dienste, wie die Behandlung von<br />

Exceptions durch AOP, getrennt von der<br />

Hauptlogik implementiert werden, sind die<br />

Aufgaben klar getrennt – wie das bei anderen<br />

technischen Services auch der Fall ist.<br />

Durch die konsequente Nutzung von<br />

AOP können also viele Anwendungen vereinfacht<br />

und viele technische Elemente zentral<br />

implementiert werden. Diese Möglich -<br />

keiten werden bei Spring leider nur selten<br />

genutzt. In der Java-EE-Welt hat sich inzwischen<br />

ein Ansatz etabliert, in dem nur<br />

Interceptoren implementiert werden und<br />

keine vollständige Sprache für Pointcuts<br />

wie in der Spring/AspectJ-Welt.<br />

Noch ein Blick auf neuere Sprache: Scala<br />

unterstützt AOP gar nicht. Es ist allerdings<br />

möglich, einzelne Methoden mit Trans -<br />

aktionen oder Sicherheitsabfragen zu versehen.<br />

Dafür nutzt man Funktionen, denen<br />

man die ursprüngliche Methode übergibt.<br />

Die Funktion führt dann vor und nach der<br />

Methode Logik für Transaktionen oder<br />

Sicherheit aus. Dazu nutzt man das Scala-<br />

Literatur & Links<br />

Feature der Higher Order Functions. Das<br />

sind Funktionen, die selber Funktionen bzw.<br />

Methoden als Parameter akzeptieren. Mit<br />

Scala ist es aber nicht möglich, alle<br />

Methoden einer Klasse oder gar aller Klas -<br />

sen mit einer bestimmten Annotation mit<br />

solcher Funktionalität auszustatten. Das ist<br />

erstaunlich, denn ein solches Feature ist für<br />

Enterprise-Anwendungen sehr hilfreich. Bei<br />

dynamischen Sprachen wie Groovy sind im<br />

Gegensatz zu Scala ähnliche Features durch<br />

Meta-Progamming elegant implementierbar.<br />

Fazit<br />

Bei AOP nutzt Java EE einfachere, aber<br />

auch weit weniger mächtige Ansätze. Die<br />

vollständige Mächtigkeit von AOP wird<br />

nur in wenigen Projekten realisiert. Bei DI<br />

ist die Situation besser, aber sicher gibt es<br />

auch dort Optimierungspotenzial. Haupt -<br />

problem ist, dass die Nutzungsmöglich -<br />

keiten von DI und AOP vielen Entwicklern<br />

nicht vollständig bekannt sind. Diese<br />

Werkzeuge sind recht mächtig, sodass sich<br />

eine intensive Auseinandersetzung auf<br />

jeden Fall lohnt. Schade ist, dass die<br />

Entwickler neuer Technologien nicht<br />

immer auf den Erfahrungen mit dem<br />

Einsatz der vorhandenen Frameworks aufbauen.<br />

■<br />

[Gam94] E. Gamma, R. Helm, R.E. Johnson, Design Patterns. Elements of Reusable Object-<br />

Oriented Software, Addison-Wesley 1994<br />

[JBo-a] JBoss, Arquillian, siehe: http://www.jboss.org/arquillian<br />

[JBo-b] JBoss, AOP, siehe: http://www.jboss.org/jbossaop<br />

[Ode08] Martin Odersky, Lex Spoon, Bill V.: Programming in Scala, artima Press, 2008<br />

[Osd] Osdir.com, Liftweb, siehe: http://osdir.com/ml/liftweb/2011-07/msg00048.html<br />

[Pic] PicoContainer, siehe: http://picocontainer.org/<br />

26 27


ausblick auf die<br />

die autorin<br />

mehr zum thema:<br />

www.stickyminds.com<br />

SECHS VERHALTENSWEISEN …<br />

… DIE MITARBEITER EINES<br />

AGILEN TEAMS BESITZEN SOLLTEN<br />

Wenn man mit der Bildung eines agilen Teams beauftragt wird, sollte man zunächst überlegen,<br />

was ein agiles Team von einem nicht-agilen unterscheidet. In diesem Artikel stelle ich sechs<br />

Verhaltensweisen vor, die Bewerber für ein erfolgreiches agiles Team besitzen sollten.<br />

Johanna Rothman<br />

(E-Mail: jr@jrothman.com)<br />

hilft Firmen dabei, das Management ihrer<br />

Produktentwicklung zu verbessern. Sie ist Autorin<br />

zahlreicher Bücher und gilt als zentrale Figur der<br />

agilen Bewegung.<br />

Unterscheiden sich Mitglieder agiler Teams<br />

von Personen in anderen Teams? Ja und<br />

nein. Ja, weil einige der Verhaltensweisen,<br />

die wir bei agilen Teams beobachten,<br />

betonter sind als die Verhaltensweisen in<br />

nicht-agilen Teams. Und nein, weil wir über<br />

Menschen reden.<br />

Erfolgreiche Mitglieder agiler Teams zeigen<br />

bestimmte Verhaltensweisen häufiger<br />

als Teammitglieder von nicht-agilen<br />

Projekten, weil Agilität diese Verhaltens -<br />

weisen voraussetzt, um ein erfolgreiches<br />

Team und Produkt zu erhalten. Wenn Sie<br />

damit beauftragt werden, ein agiles Team<br />

zu bilden, nach welchen Eigenschaften sollten<br />

Sie dann suchen? Im Folgenden<br />

beschreibe ich sechs wesentliche Verhal -<br />

tens weisen, über die Personen in erfolgreichen<br />

agilen Teams verfügen sollten. Ich<br />

habe außerdem einige Interview-Fragen<br />

eingefügt, mit denen Sie herausfinden können,<br />

ob ein Bewerber für ein agiles Team<br />

die notwendigen Voraussetzungen erfüllt.<br />

1. Menschen,<br />

die zusammenarbeiten<br />

Menschen, die zusammenarbeiten können,<br />

also mit Schulterschluss kollaborieren, sind<br />

viel nützlicher als solche, die allein arbeiten<br />

müssen. Aber was bedeutet es, richtig<br />

zusammenzuarbeiten?<br />

Das erste, was man bei agilen Teams beobachten<br />

kann, ist die Tatsache, dass die<br />

Mitarbeiter gemeinsam an Features arbeiten.<br />

In nicht-agilen Teams ist es üblich, dass die<br />

Mitglieder Features oder Vorausset zungen<br />

übernehmen und allein daran arbeiten – in<br />

einem gut funktionierenden agilen Team hingegen<br />

nicht. Hier arbeiten mehrere<br />

Entwickler und ein bis zwei Tester zusammen<br />

und stellen sicher, dass sie als Team eine<br />

„Geschichte” vollständig abschließen. Man<br />

kann beobachten, dass mehrere Tester<br />

zusammenarbeiten, um Tests zu entwickeln,<br />

oder (einer meiner Favoriten) Entwickler und<br />

Tester arbeiten gemeinsam an der<br />

Entwicklung des Testautomatisierungs-<br />

Frameworks für das Projekt.<br />

Das gesamte Team arbeitet zusammen,<br />

um Features zu definieren, mit deren<br />

Entwicklung zu beginnen und diese zu<br />

beenden. Erfolgreiche agile Teams vermeiden<br />

das Problem, viele Features zu beginnen,<br />

sie aber am Ende des Entwick lungs -<br />

schritts nicht zu beenden, denn sie wirken<br />

zusammen und schließen die Features ab.<br />

Eine Frage, die man einem Bewerber stellen<br />

kann, ist in diesem Zusammenhang:<br />

„Denken sie an ein zurück liegendes<br />

Projekt. Geben Sie mir ein Beispiel für eine<br />

Zeit, wo sie mit anderen zusammen arbeiten<br />

mussten, um sicherzustellen, etwas<br />

beenden zu können. Was passierte?”<br />

2. Menschen, die um Hilfe bitten<br />

Vielen Menschen fällt es nicht leicht, andere<br />

um Hilfe zu bitten. In vielen<br />

Unternehmen ist es nicht einmal erlaubt,<br />

um Hilfe zu bitten. Aber Personen, die um<br />

Hilfe bitten können, sind genau die, die wir<br />

in einem agilen Team haben möchten.<br />

Warum ist es so wichtig, um Hilfe bitten<br />

zu können? Wir wissen alle etwas über das<br />

Projekt, aber niemand von uns weiß alles,<br />

was wir wissen müssen. Also müssen wir in<br />

der Lage sein, um Hilfe zu bitten, und wir<br />

müssen dies aus einer Position der Stärke<br />

heraus tun, nicht der Schwäche. In einem<br />

agilen Team ist es kein Problem, um Hilfe<br />

zu bitten. Bei der Agilität wollen wir keine<br />

Verzögerung dadurch erleiden, dass eine<br />

Person fest steckt, bevor sie um Hilfe bittet.<br />

Es ist wichtiger, dass das Team alle verein-<br />

barten Features rechtzeitig ausliefert, als<br />

dass einer als Held dasteht.<br />

In diesem Zusammenhang können Sie<br />

einem Bewerber zu seiner Fähigkeit, um<br />

Hilfe zu bitten, die folgende Frage stellen:<br />

„Denken Sie an Ihr letztes Projekt. Erzählen<br />

Sie von einer Situation, in der Sie etwas nicht<br />

verstanden haben. Was haben Sie getan?”<br />

3. Menschen, die kleine<br />

Schritte gehen und Feedback<br />

bekommen wollen<br />

Agilität besteht hauptsächlich aus Feedback.<br />

Wir benutzen Entwicklungs schritte, um<br />

etwas zu tun und Feedback zu bekommen.<br />

Wir entwickeln schrittweise, sodass unsere<br />

Kunden die Gelegenheit haben, ihr Feedback<br />

zu unserer derzeitigen Arbeit abzugeben.<br />

Eine Verhaltensweise, nach der man bei<br />

einem Bewerber suchen möchte, ist die<br />

Fähigkeit, kleine Schritte zu gehen und<br />

Feedback zu erhalten – egal welche Arbeit<br />

sie oder er ausgeführt hat. Menschen (egal<br />

ob es sich um Entwickler, Tester, Autoren<br />

oder andere handelt), die ein Feature<br />

augenscheinlich perfekt beenden müssen,<br />

bevor jemand anders es sieht, sind für ein<br />

agiles Team nicht geeignet.<br />

Fragen, die Sie hierzu stellen können,<br />

sind: „Erzählen Sie mir, wie sie arbeiten<br />

wollen. Denken Sie an das letzte Feature,<br />

an dem Sie gearbeitet haben. Haben Sie<br />

versucht, das Ganze zu vervollständigen,<br />

bevor Sie um Feedback gesucht haben?”<br />

Warten Sie auf die Antwort. Dann fragen<br />

Sie: „Warum?” Vielleicht sagt der<br />

Bewerber, er habe einmal versucht, Feed -<br />

back zu erhalten. Oder er sagt, von ihm sei<br />

erwartet worden, alles perfekt zu vervollständigen.<br />

Nun können sie fragen: „Wenn<br />

Sie außerhalb der Arbeit an ihrem Projekt<br />

arbeiten, wie gehen Sie da vor?”<br />

1/2012


ausblick auf die<br />

4. Menschen, die bereit sind,<br />

etwas „gut genug für den<br />

Moment” zu machen<br />

Menschen, die in der Lage sind, kleine<br />

Schritte zu gehen und Feedback zu<br />

bekommen, sind wahrscheinlich ebenso in<br />

der Lage, etwas „gut genug für den<br />

Moment” zu machen. Eines der Probleme<br />

bei der Agilität ist, dass wir nicht genügend<br />

Zeit haben, alles auf einmal perfekt zu<br />

machen. Deshalb benutzen wir Zeitfenster.<br />

Wir tun, was gerade benötigt wird, und<br />

entscheiden auf Grundlage des Feedbacks,<br />

ob oder wann wir darauf wieder zurück -<br />

kommen.<br />

Die Fähigkeit, etwas gerade gut genug zu<br />

machen und darauf zurückzukommen, wenn<br />

es mehr Nutzen für das Geschäft bringt, ist<br />

kein übliches Verhalten. Man kann das bei<br />

Testern sehen, die das absolut beste<br />

Testsystem am Beginn eines Projekts haben<br />

wollen. Man kann es auch bei Architekten<br />

sehen, die die Architektur zu Beginn des<br />

Projekts vollständig definieren wollen.<br />

Eines der Probleme der Agilität besteht<br />

darin, dass wir zu Beginn eines Projekts<br />

nicht sagen können, was perfekt ist.<br />

Manchmal können wir es nicht einmal in<br />

der Mitte sagen. Also müssen wir es gut<br />

genug für den Moment machen und später<br />

darauf zurückkommen, wenn wir mehr<br />

Nutzen daraus ziehen können, wenn wir<br />

uns darauf konzentrieren.<br />

Um sagen zu können, ob ein Bewerber<br />

diese Fähigkeit besitzt, etwas gut genug für<br />

den Moment zu machen und den perfekten<br />

Abschluss auf später verschieben kann, fragen<br />

Sie: „Erzählen Sie mir vom letzten Mal,<br />

als Sie zu Beginn eines Projekts überhaupt<br />

nichts wussten? Was haben Sie getan?”<br />

5. Anpassungsfähige<br />

Menschen<br />

In agilen Projekten sind, wie in allen Arten<br />

von Projekten, die Bedingungen nicht<br />

immer perfekt. Beispielsweise kann es vorkommen,<br />

dass wir keinen Teamraum<br />

haben, dass es keine Kriterien für die<br />

Auswahl von Features gibt oder dass wir<br />

vielleicht nicht einmal in der Lage sind,<br />

Hindernisse zu beseitigen. Und trotzdem<br />

müssen wir die Arbeit fertig bekommen<br />

Wir suchen nicht nach Heiligen. Wir<br />

suchen nach Menschen, die sich an die<br />

herrschenden Bedingungen anpassen können.<br />

Wir wollen, dass die Mitarbeiter ihre<br />

Arbeit tun, auch wenn die Bedingungen<br />

unzureichend sind.<br />

Aufgrund der Antwort, die Sie auf die<br />

folgende Frage erhalten, werden Sie wissen,<br />

ob Sie einen anpassungsfähigen Menschen<br />

Warum es so wichtig ist, die richtigen Leute einzustellen<br />

Interview mit Johanna Rothman.<br />

■■? Sie haben ein bekanntes Buch über pragmatisches<br />

Projektmanagement ge schrie ben und Sie favorisieren agile<br />

Systeme. Was halten Sie vom klassischen PMI und seinem<br />

Wert für den Software-Entwicklungsprozess?<br />

■■! Das ursprüngliche PMBOK beinhaltete keine Vorgabe für<br />

den Projektmanager bezüglich des zu verwendenden Lebens -<br />

zyklus. Ich mochte das. Auch wenn ich vor Kurzem das<br />

PMBOK falsch interpretiert haben sollte, macht es für den<br />

Projekt manager immer noch keine strenge Vorgabe, welcher<br />

Lebenszyklus zu verwenden ist. Auf der anderen Seite ist das<br />

PMBOK sehr wasserfallartig ausgelegt, sodass man leicht im<br />

klassischen Lebenszyklus-Denken verhaftet bleibt. Das<br />

PMBOK leitet die Projektmanager nicht einmal an, über den<br />

für sie geeigneten Lebenszyklus nachzudenken – und das ist<br />

eine Schande. Die Wahl des Lebenszyklus, der auf die Risiken<br />

deines Projekts und deines Teams am besten passt, ist die<br />

schnellste und billigste Art, wie ein Projekt manager von Beginn<br />

an die Projektrisiken managen kann. Also, warum nicht?<br />

■■? In Ihrem OOP-Tutorial „Influence and Authority: Using<br />

Your Personal Power to Get Things Done” legen Sie den<br />

Schwer punkt auf die Menschen, nicht auf irgendeine<br />

Managementdisziplin. Ist der Mensch der eigentliche kritische<br />

Erfolgsfaktor in der Softwareentwicklung?<br />

■■! Software ist eine menschenintensive Disziplin. Das ist der<br />

Grund, warum es so wichtig ist, die richtigen Leute einzustellen<br />

(das ist der Inhalt meines Vortrags) und zu wissen, wie<br />

man mit Hilfe dieser Menschen seine Arbeit erledigt bekommt<br />

(Inhalt meines Tutorials). Das gilt für Projektmanager,<br />

Softwareentwickler, Tester, Produktmana ger, Marketingleute<br />

und alle anderen gleichermaßen.<br />

■■? Vor Kurzem waren Sie auf der AYE-Konferenz. Was war<br />

Ihr Eindruck?<br />

■■! Ich hat eine großartige Zeit – ich denke, alle Teilnehmer<br />

hatten das. Bis jetzt haben wir von mehr als einem Dutzend<br />

Leute Feedback bekommen. Wir haben Vorschläge für die<br />

Zukunft bekommen, was immer gut ist. Aber die meisten<br />

Kommentare waren in der Art wie: „Was für eine wundervolle<br />

Umgebung, um zu lernen, und was für eine großartige<br />

Gruppe von Teilnehmern!”<br />

■■? Worauf freuen Sie sich am meisten auf der kommenden<br />

OOP?<br />

■■! Ich liebe es, neue Menschen zu treffen. Deshalb ist das ein<br />

Punkt, auf den ich mich auf jeden Fall freue. Ich vermute, dass<br />

es kulturelle Unterschiede zwischen dem gibt, was ich normalerweise<br />

in US-Firmen sehe, und deutschen Firmen. Diesem<br />

Unter schied möchte ich in meinem Tutorial auf den Grund<br />

gehen. Wenn du solche kulturellen Probleme nicht beachtest,<br />

kannst du sie auch nicht wirksam beeinflussen.<br />

28 29


ausblick auf die oop 2012<br />

vor sich haben: „Erzählen Sie mir von einer<br />

Situation, in der Sie nicht die Bedingungen<br />

vorgefunden haben, die Sie sich für Ihr Pro -<br />

jekt gewünscht haben. Was haben Sie<br />

getan?”<br />

6. Menschen, die bereit sind,<br />

außerhalb ihres Erfahrungsbereichs<br />

zu arbeiten<br />

Ein Zeichen für Anpassungsfähigkeit ist die<br />

Bereitschaft eines Menschen, auch außerhalb<br />

seines Erfahrungsbereichs zu arbeiten.<br />

Ich schlage nicht vor, dass jemand etwas<br />

tun soll, von dem er keine Ahnung hat –<br />

z. B. sollte sich ein Entwickler nicht in einen<br />

Vermarkter verwandeln (es sei denn, er<br />

möchte es). Ich schlage aber vor, dass<br />

jemand, der sich sehr gut mit Datenbanken<br />

auskennt, auch versuchen sollte, sich ein<br />

bisschen mit der GUI zu befassen. Wenn<br />

jemand mit der Middleware vertraut ist,<br />

würde er vielleicht auch gerne auf Be -<br />

triebssystem-Ebene oder auf dem oberen<br />

Level einer Anwendung arbeiten. Wenn<br />

jemand die ganze Test-Karriere lang eine<br />

For schungstesterin war, möchte sie vielleicht<br />

ein wenig Skripting versuchen. Wenn<br />

sie ein „Automatisierungs-Würstchen” ist<br />

(also die arme Person, die immer wieder die<br />

gleichen Tests durchführen muss), ist es<br />

vielleicht an der Zeit, es mit ein wenig For -<br />

schungstests zu versuchen.<br />

Wir sehen diese Bereitschaft zur Arbeit<br />

außerhalb des eigenen Erfahrungsbereichs<br />

in agilen Teams, wenn Menschen zusam -<br />

menarbeiten und sich um ein Feature drän-<br />

Johanna Rothman<br />

Increase Your Capacity and<br />

Finish More Projects<br />

O'Reilly 2009<br />

250 Seiten (auf englisch)<br />

32,00 €<br />

ISBN 978-1-934356-29-6<br />

geln. Menschen sind bereit, außerhalb ihres<br />

Erfahrungsbereichs zu arbeiten, aber nicht<br />

zu weit davon entfernt. Um etwas über diese<br />

Fähigkeit zu erfahren, fragen Sie:<br />

„Erzählen Sie mir von einer Situation, in<br />

der Sie eine Arbeit übernommen haben, um<br />

dem Team zu helfen. Wie war das?”<br />

Ein Bewerber kann unter Umständen diese<br />

Frage nicht beantworten. Sie können<br />

dann einen Kontext vorgeben, wie z. B. den<br />

Folgenden: „Wir arbeiten an Dingen, mit<br />

denen wir vielleicht nicht vertraut sind, um<br />

ein Feature für eine Iteration fertigzustellen.<br />

Waren Sie jemals in dieser Situation?”<br />

Wenn der Bewerber nicht ja sagt, müssen<br />

Sie die Frage anders stellen. Zum Beispiel<br />

hatte ich mit folgender Frage Erfolg:<br />

„Erzählen Sie mir von einer Situation, in<br />

der Sie etwas taten, was Ihrer Meinung<br />

nach nicht zu Ihrer Jobbeschreibung<br />

gehört. Was haben Sie getan?”<br />

Zusammenfassung<br />

Dies sind wahrscheinlich nicht die einzigen<br />

Verhaltensweisen, die man für ein agiles<br />

Team benötigt. Führen Sie auf jeden Fall<br />

eine Jobanalyse durch, um zu sehen, wie<br />

sich Ihr agiles Team von anderen unterscheidet.<br />

Dann werden Sie die Art von<br />

Bewerbern erkennen, die zu berücksichtigen<br />

sind.<br />

Aus dem Englischen von Elke Niedermair.<br />

1/2012


ausblick auf die<br />

der autor<br />

mehr zum thema:<br />

www.sigs-datacom.de/OOP2012/konferenz<br />

FLOW IN LEAN, FLOW IM TEAM:<br />

WAS LEAN MIT DEM PERSÖN-<br />

LICHEN ERLEBEN ZU TUN HAT<br />

Flow herrscht in der Arbeit, wenn Bedarf und Lieferfähigkeit gegeneinander ausbalanciert sind,<br />

z. B. durch den Einsatz von Lean-Verfahren in der Produktentwicklung. Flow gibt es auch in der<br />

Psyche, wenn vom Einzelnen soviel gefordert wird, wie er auch leisten kann. Im Flow-Zustand<br />

entstehen die besten Ergebnisse, die Arbeit ist angenehm, man vergisst die Zeit. Dass man für<br />

Flow im Sinne von „Lean Product Development” dasselbe Wort verwendet wie in der Psycholo -<br />

gie, ist nach meiner Ansicht kein Zufall. In diesem Artikel geht es darum, die Beziehung zwischen<br />

Flow in Lean und Flow in der Psyche herzustellen und zu erforschen.<br />

Matthias Bohlen<br />

(E-Mail: mbohlen@mbohlen.de)<br />

ist unabhängiger Coach für effektive Produkt -<br />

entwicklung. Teams und Manager arbeiten mit seiner<br />

Hilfe bewusster, flüssiger und effektiver. Er ist<br />

Mitglied des OBJEKTspektrum-Redaktionsteams.<br />

Der Begriff Flow wurde von dem ungarischen<br />

Psychologen Mihaly Csikszent -<br />

mihalyi für einen bestimmten Zustand der<br />

menschlichen Psyche verwendet (vgl.<br />

[Csi08]). Er meint damit die optimale<br />

Erfahrung der Wirklichkeit – ein Zustand,<br />

der sich unter bestimmten Bedingungen<br />

einstellt. Der Mensch im Flow-Zustand ist<br />

in seiner ganzen Person gefordert. Seine<br />

Aufmerksamkeit und die Aktivität, die er<br />

gerade ausführt (z. B. entwickeln oder entwerfen),<br />

sind eins miteinander. Das geht<br />

nur mit klaren Zielen und einem zeitnahen<br />

Feedback. Dadurch wird es ihm ermöglicht,<br />

sich ganz auf das zu konzentrieren,<br />

was er gerade tut. Er hat das Gefühl, das,<br />

womit er sich beschäftigt, unter Kontrolle<br />

zu haben. Schließlich wird die Aktivität zu<br />

ihrem eigenen Ziel – Flow wird zur autotelischen<br />

Erfahrung.<br />

Produktentwicklung ist eine Tätigkeit,<br />

die kreatives Problemlösen erfordert. Sie ist<br />

nicht mit der Fertigung zu vergleichen, bei<br />

der das gewünschte Endergebnis im<br />

Vorhinein feststeht. Deshalb kann der Weg<br />

zu diesem Ergebnis auch nicht im Voraus<br />

beschrieben, sondern muss im Gegenteil<br />

erst gefunden werden, während man ihn<br />

geht. Dennoch hat Produktentwicklung ein<br />

klares Ziel, nämlich das Finden dieser<br />

guten und allseits akzeptierten Lösung: das<br />

funktionierende Produkt.<br />

Produktentwicklung fordert uns dazu<br />

heraus, unsere gesamten Fähigkeiten einzusetzen.<br />

Die einzelnen Aktivitäten führen zu<br />

Zwischenzielen hin, z. B. eine Funktion, die<br />

endlich so arbeitet, wie sie soll, eine Farbe,<br />

die endlich so aussieht, wie sie soll, oder<br />

eine Produktgestaltung, die den Benutzer<br />

begeistert. Gleichzeitig gelten Regeln für<br />

jede einzelne Aktivität, die man nicht ohne<br />

die richtigen Fähigkeiten einhalten kann.<br />

Das Produkt wird sich „weigern”, das zu<br />

tun, was gefordert ist, wenn man nicht alle<br />

Fähigkeiten einsetzt, um es dazu zu bringen.<br />

Flow in der Psyche<br />

Wenn eine Person alle ihre Fähigkeiten einsetzen<br />

kann oder muss, um in der<br />

Produktentwicklung zu einem Ziel zu<br />

gelangen, dann wird sie durch die Aktivität<br />

völlig aufgesogen. Als Architekt, Ent -<br />

wickler, Designer oder Tester achtet man<br />

nicht mehr auf sich selbst, auf den Stuhl,<br />

auf dem man sitzt, auf die Computermaus,<br />

die man in der Hand hält, auf die Umge -<br />

bungs geräusche und alles andere. Wichtig<br />

ist nur noch die Arbeit an dem aktuellen<br />

Teil des Produkts, den man in Händen hält<br />

oder auf dem Bildschirm vor sich sieht.<br />

Es ergibt sich insgesamt eine Erfahrung,<br />

die sonst von Tänzern, Musikern, Berg -<br />

steigern, Schach- oder Go-Spielern, Mara -<br />

thonläufern oder Börsenhändlern beschrie-<br />

ben wird: Das ist Flow in der Psyche. Die<br />

Aktivität wird so spontan, fast automatisch<br />

ausgeführt, dass Person und Tat nicht mehr<br />

getrennt, sondern eins miteinander sind.<br />

Csikszentmihalyi 1 ), emeritierter Profes -<br />

sor für Psychologie an der Universität von<br />

Chicago, bezeichnet Flow auch als „die<br />

optimale Erfahrung der Wirklichkeit”. Auf<br />

Deutsch würde man sagen „Schaffens- oder<br />

Tätigkeitsrausch”. Der deutsche Pädagoge<br />

Kurt Hahn bezeichnete diesen Zustand als<br />

„schöpferische Leidenschaft”. Maria Mon -<br />

tes sori, italienische Ärztin und Reform -<br />

päda gogin, beschrieb etwas ähnliches, das<br />

sie „Polarisation der Aufmerksamkeit”<br />

nannte.<br />

Als Softwareentwickler sind wir vielleicht<br />

geneigt, eine andere Definition zu<br />

Rate zu ziehen. Sie stammt aus dem<br />

1<br />

) Er soll angeblich selbst gesagt haben, dass man seinen<br />

Namen ausspricht wie „chicks sent me high”.<br />

www.pixelio.de – Heike<br />

30 31


ausblick auf die oop 2012<br />

Wörterbuch für Hacker von Eric S. Ray -<br />

mond. Er nennt den Zustand, der hier<br />

gemeint ist, hack mode und beschreibt ihn<br />

als „einen Zen-artigen Zustand mit totalem<br />

Fokus auf das [zu lösende] Problem, der<br />

erreicht werden kann, indem man hackt”.<br />

Für einen außenstehenden Beobachter, der<br />

diesen Zustand nicht kennt, kann das sehr<br />

seltsam aussehen. Wenn beispielsweise<br />

jemand an Ihrer Tür erscheint, und Sie sich<br />

gerade im hack mode befinden, so ist es<br />

nach der Hacker-Etikette völlig okay, wenn<br />

Sie Ihre Hand hochhalten und den Blick<br />

nicht vom Bildschirm nehmen, um einer<br />

Unterbrechung des hack mode vorzubeugen.<br />

Dann können Sie unter Umständen<br />

noch lange lesen, tippen, mit der Maus<br />

klicken, bis Sie Ihre Hand senken. Der<br />

Mensch an der Tür kann sich aussuchen,<br />

ob er so lange warten oder inzwischen<br />

wortlos gehen will. Das Verständnis dahinter<br />

ist, dass Sie im hack mode eine Menge<br />

an zerbrechlichem Zustand halten – wie bei<br />

einem zustandsbehafteten Server, der seinen<br />

Kontext nicht wechseln möchte, bis er<br />

den Zustand gesichert und einen guten<br />

Punkt zum Pausieren gefunden hat.<br />

Csikszentmihalyi erforschte, wie der<br />

Flow-Zustand bei verschiedenen Menschen<br />

aussieht (vgl. [Csi08]). Er führte Befragun -<br />

gen in unterschiedlichen sozialen Gruppen<br />

und in unterschiedlichen Berufen durch. Zu<br />

seinem Erstaunen fand er heraus, dass<br />

Menschen über dieselben acht Grundeigen -<br />

schaften berichteten – unabhängig von<br />

ihrer Kultur, dem Stand der Moderni -<br />

sierung, der sozialen Klasse sowie Alter<br />

und Geschlecht:<br />

■ G1: Das Erlebnis entsteht, wenn wir<br />

mit Aufgaben konfrontiert sind, die wir<br />

auch vollenden können.<br />

■ G2: Wir müssen uns auf das, was wir<br />

tun, konzentrieren können.<br />

■ G3: Die Aufgabe hat klare Ziele.<br />

■ G4: Die Aufgabe bringt uns sofortiges<br />

Feedback.<br />

■ G5:Man agiert in tiefem und gleichzeitig<br />

anstrengungslosem Beteiligtsein, das<br />

die Sorgen und Frustrationen des All -<br />

tags aus dem Bewusstsein verdrängt.<br />

■ G6: Das Erleben erlaubt es den Men -<br />

schen, ein Gefühl von Kontrolle über<br />

ihr Tun zu haben.<br />

■ G7: Interesse am eigenen Selbst (und<br />

zugehörige Bedenken) verschwinden,<br />

doch nach Ende der Flow-Erfahrung<br />

bildet sich das Selbstgefühl paradoxerweise<br />

stärker heraus als je zuvor.<br />

■ G8: Das Zeitgefühl verändert sich:<br />

von Matthias Bohlen<br />

gibt<br />

es auch<br />

bei<br />

Flow in der Produktentwicklung<br />

Produktentwicklung planen,<br />

durchführen und genießen!<br />

28.<br />

– 29.<br />

Feb.<br />

2012, Köln<br />

1.590,-<br />

€ zzgl. MwSt.<br />

Kontakt:<br />

<strong>SIGS</strong> <strong>DATACOM</strong> ACOM GmbH<br />

Anja Keß,<br />

Tel. +49 (0)2241/2341-20141-201<br />

Email:<br />

anja.kesssigs-datacom.de<br />

www.sigs-datacom.de<br />

de<br />

Stunden vergehen in Minuten und<br />

Minuten können sich ausdehnen wie<br />

Stunden.<br />

G1 bis G4 sind Bedingungen, die gelten<br />

müssen, damit Flow entstehen kann. G5 bis<br />

G8 sind Beobachtungen, die man regelmäßig<br />

machen kann, wenn Flow entsteht.<br />

Lean Software Development<br />

Mary und Tom Poppendieck haben Er -<br />

kennt nisse aus dem Lean Manufacturing in<br />

die Softwareentwicklung übertragen und<br />

den Begriff Lean Software Development<br />

geprägt (vgl. [Pop03]). In der Gedanken -<br />

welt von Lean liegt der Fokus auf dem<br />

Wert, der für den Kunden erzeugt wird. Ein<br />

grundlegendes Lean-Prinzip lautet: „Füge<br />

nichts außer Wert hinzu”, auch bekannt als<br />

„Eliminiere Verschwendung”. Verschwen -<br />

dung erkennen wir in der Softwareent -<br />

wicklung hinter verschiedenen Masken: zu<br />

viele Features, die keiner benutzt, zu viele<br />

im voraus erhobene Anforderungen, die<br />

Suche nach Personen, die einem Entwickler<br />

eine fehlende Information geben können,<br />

Übergaben von einem Spezialisten zum<br />

anderen und vieles mehr.<br />

Lean hat es sich deshalb auf die Fahne<br />

geschrieben, immer auf die Menschen zu<br />

achten, die den Wert produzieren. Wert,<br />

das ist das lauffähige System und angemessene<br />

Dokumentation, um das System warten<br />

und betreiben zu können. Den<br />

Menschen, die diesen Wert schaffen, gibt<br />

man Ressourcen, Informationen, die Ho -<br />

heit über ihren eigenen Prozess, Entschei -<br />

dungsgewalt, so weit es sie betrifft, und<br />

Energie, so viel sie brauchen. Man stellt<br />

Teams zusammen, die ihren eigenen<br />

Prozess leben und die in sich geschlossene<br />

Probleme lösen – und nicht solche, die<br />

jemand anders für sie in Einzelaufgaben<br />

aufgeteilt hat. Nicht stumpfes Coding ist<br />

Trumpf, sondern intelligentes Engineering.<br />

Flow in Lean<br />

In Lean gibt es eine Grundidee, die man dort<br />

ebenfalls Flow nennt. Wenn man als Ziel<br />

hat, nichts anderes zu tun, außer Wert hinzuzufügen,<br />

sollte man versuchen, diesen<br />

Wert in einem Fluss zu erschaffen, der so<br />

schnell fließt, wie es geht. Es beginnt mit den<br />

Produktideen, die reichlich entstehen und<br />

gar nicht so schnell abgearbeitet werden<br />

können. Hier ist der Ansatz, die Ideen nur<br />

grob zu beschreiben, um nicht zu viel<br />

Zwischenergebnisse auf Halde zu legen. Die<br />

Ideen, die tatsächlich in die Ent wicklung<br />

gehen, untersucht man „just in time”, möglichst<br />

spät und trotzdem rechtzeitig.<br />

Aus den Ideen werden Anforderungen an<br />

das zukünftige System, beispielsweise in<br />

Form von Benutzergeschichten und<br />

Qualitätseigenschaften. Auch von diesen<br />

Anforderungen spezifiziert man nur so viele,<br />

wie sofort in die Software- und System -<br />

architektur einfließen können – wiederum<br />

keine Produktion auf Halde, sondern ein<br />

gleichmäßiger Fluss in die nächsten<br />

Prozessschritte. Und es geht so weiter: Nur<br />

so viel Architektur entwerfen wie nötig,<br />

nur so viel Code schreiben, wie man auch<br />

testen kann, nur so viel testen, wie man in<br />

Betrieb nehmen kann (und natürlich nur<br />

soviel in Betrieb nehmen, wie der Kunde<br />

bezahlen kann).<br />

Flow in Lean bedeutet: Die Arbeit muss<br />

fließen. Flow bedeutet nicht, dass die<br />

Arbeiter ausgelastet sein müssen. Überhaupt<br />

verlagert sich der Blick des<br />

Managements: Er richtet sich auf die einzelnen<br />

Arbeitspakete, nicht mehr so sehr<br />

auf die Personen, die die Arbeit tun, nicht<br />

mehr auf das Geld, das die Personen<br />

kosten, und nicht mehr auf deren Aus -<br />

lastung. Wäre die Produktentwicklung eine<br />

Autobahn, würde man es so zusammenfassen:<br />

Es kommt darauf an, eine möglichst<br />

gleichmäßig hohe Zahl von Autos pro<br />

Stunde durchzubringen, und nicht darauf,<br />

die Autobahn mit Autos zuzupflastern.<br />

Flow in Lean ist kostengünstig<br />

Warum sollte das Management sich für<br />

Flow interessieren? Weil Flow die Pro -<br />

duktentwicklung sowohl kostengünstig als<br />

auch angenehm gestaltet. Wenn Sie in der<br />

Produktentwicklung ohne Flow arbeiten,<br />

1/2012


ausblick auf die<br />

Wie Flow in Lean entsteht<br />

Flow entsteht dann, wenn Nachfrage und<br />

Durchsatz gegeneinander ausbalanciert sind.<br />

Nachfrage ist das, was vom Kunden gefordert<br />

wird. Durchsatz ist das, was die Teams<br />

an Ergebnissen pro Zeiteinheit erzeugen<br />

können. Gibt man den Teams das Recht,<br />

sich Nachfrage auf den Schreibtisch zu ziesind<br />

Ihre Mitarbeiter traditionell hoch ausgelastet.<br />

Die To-Do-Listen, die Backlogs<br />

und Taskboards, die Projektpläne – was<br />

immer auch zur Planung und Verfolgung<br />

benutzt wird – es ist voll von noch nicht<br />

getaner Arbeit. Das kollektive Gedächtnis<br />

der Teams ist mit der Zukunft beschäftigt,<br />

nicht mit der Gegenwart. Überall bilden<br />

sich Warteschlangen, Termine können nicht<br />

gehalten werden und man fragt sich:<br />

Warum geht es bei uns nicht vorwärts?<br />

Lange Warteschlangen mit gestapelter<br />

Arbeit kosten viel Geld. Ein Feature, das in<br />

das lauffähige System eingebaut werden<br />

soll, kann erst Geld einbringen, wenn der<br />

erste Kunde dafür bezahlt. Je später man<br />

mit einem Feature (oder Feature-Paket) auf<br />

den Markt kommt, desto eher kann die<br />

Konkurrenz den Markt besetzen. Die Zeit,<br />

die die Entwickler für ein Feature benötigen,<br />

hängt nicht nur davon ab, wie lange<br />

sie dafür arbeiten, sondern ebenso stark<br />

davon, wie viele Features sie noch gleichzeitig<br />

entwickeln: je mehr davon gleichzeitig,<br />

desto länger dauert jedes einzelne<br />

Feature. Führt man Flow ein, wird diese<br />

Menge klein, die Warteschlangen verkürzen<br />

sich und man investiert die Arbeitszeit<br />

nur dort, wo es sich lohnt.<br />

Die Kosten für die Zeit, die die Arbeit in<br />

Warteschlangen verbringt, sind kaufmännisch<br />

wie Abschreibungskosten auf Inventar<br />

zu behandeln, über die in der Software -<br />

entwicklung selten nachgedacht wird.<br />

Hier ein Beispiel aus [Boh10]: Man<br />

schreibt ein Anforderungsdokument und<br />

investiert dafür 60.000 Euro. Dann ist das<br />

Dokument ein Inventar im Wert von<br />

60.000 Euro. Das Wissen über die Inhalte<br />

und Zusammenhänge des Dokuments<br />

beginnt zu verfallen, weil Projektbeteiligte<br />

Menschen sind, die im Laufe der Zeit<br />

Dinge vergessen. Es dauert etwa drei<br />

Monate, bis keiner mehr weiß, was mit<br />

dem Dokument gemeint war. Danach hat<br />

das Dokument also einen Wert von 0 Euro.<br />

Wir kommen bei einem Wertverlust von<br />

60.000 Euro in drei Monaten auf eine<br />

Abschreibung von 20.000 Euro pro<br />

Monat. Demnach trägt dieses Dokument<br />

ab Fertigstellung mit knapp 1.000 Euro pro<br />

Arbeitstag zu den operativen Ausgaben des<br />

Projekts bei. Es wäre also gut, wenn die<br />

Teams das Dokument vor Ablauf des<br />

Mindesthaltbarkeitsdatums in lauffähigen<br />

Code verwandelten.<br />

Die Lean-Alternative dazu sieht so aus:<br />

Man investiert in die Anforderungen erst<br />

einmal nur 10.000 Euro. Danach entstehen<br />

Kosten von 10.000 Euro für Code und<br />

20.000 Euro für Tests. Schließlich bringt<br />

man das Ganze für 20.000 Euro in<br />

Produktion. Die Kunden zahlen für die<br />

neuen Features 75.000 Euro Lizenz -<br />

gebühren. Damit ergibt sich folgender<br />

Return on Investment: (Einnahmen-Ausga -<br />

ben)/Anfangsinvestitionen = (75.000-<br />

60.000)/10.000 = 150 %. Anstatt ein<br />

Dokument in einer Warteschlange verderben<br />

zu lassen, führt man es lean schnell und<br />

in kleinen Schritten der Realisierung zu,<br />

ehe man in neues Inventar (z. B. weitere<br />

Anforderungen) investiert.<br />

Das Management müsste an Flow höchst<br />

interessiert sein, weil es Kosten spart und<br />

Wert schnell realisiert.<br />

Flow in der Psyche macht<br />

Arbeit angenehm<br />

In Deutschland fehlen Fachkräfte, heißt es.<br />

Firmen beginnen zu verstehen, dass sie auf<br />

das Umfeld achten müssen, das sie ihren<br />

Mitarbeitern bieten, wenn sie möchten,<br />

dass diese über lange Zeit zufrieden bei<br />

ihnen arbeiten. In einer Firma, in der es beide<br />

Arten von Flow gibt, ist die Situation für<br />

den einzelnen Mitarbeiter optimal. Er ist<br />

genau im richtigen Maße gefordert, mit<br />

interessanten Problemstellungen konfrontiert,<br />

ohne jedoch den Überblick zu verlieren.<br />

Die Teams sind autonom, weil sie<br />

selbst entscheiden können, wie viel Arbeit<br />

sie sich auf die Schreibtische ziehen. Sie<br />

können zu Meistern ihres Fachs werden,<br />

wenn die Firmenkultur von ihnen verlangt,<br />

sich ständig zu verbessern. Und: Wenn die<br />

Führungskräfte ihren Job gut machen,<br />

erkennen die Mitarbeiter, was der Sinn und<br />

Zweck ihrer Arbeit ist, welche Strategie<br />

damit verfolgt wird und wo der Nutzen für<br />

den Kunden liegt. Autonomie und<br />

Meisterschaft, gerichtet auf Sinn und<br />

Zweck – das sind die besten Zutaten für<br />

eine intrinsische, also eine von innen kommende<br />

Motivation der Mitarbeiter.<br />

Wenn solche Bedingungen gegeben sind,<br />

werden gute Leute dazu tendieren, in dieser<br />

Firma zu bleiben. Es wird sich eine Kultur<br />

von vertrauensvoller Zusammenarbeit entwickeln.<br />

Man sagt auch: Es entsteht „soziales<br />

Kapital”.<br />

hen (Pull-Prinzip) und durch Ent wick lung in<br />

Durchsatz zu verwandeln, stellt sich dieses<br />

günstige Gleichgewicht ein. Es wird dann<br />

niemals etwas analysiert, was nicht auch<br />

gleich entwickelt werden kann. Es wird<br />

nichts entwickelt, was nicht getestet werden<br />

kann. Es wird nur so viel getestet, wie auch<br />

in Produktion genommen werden kann.<br />

Jeder Prozessschritt wird nur durchgeführt,<br />

wenn auch ein Abnehmer für das Ergebnis<br />

frei ist. Der letzte solche Abnehmer in der<br />

Kette ist der Kunde.<br />

Um Flow im Sinne von Lean erreichen zu<br />

können, gibt es verschiedene Methoden.<br />

Eine davon ist Kanban, wie es von David<br />

Anderson definiert wurde (vgl. [And10]).<br />

In OBJEKTspektrum wurde schon häufig<br />

über Kanban berichtet (z. B. in Ausgabe<br />

2/2010), sodass es ausreicht, wenn wir hier<br />

noch einmal die fünf Kerneigenschaften<br />

von Kanban in Erinnerung rufen:<br />

■ Visualisieren Sie den Workflow: An der<br />

Wand hängt man eine Tafel auf, die in<br />

Spalten eingeteilt ist (siehe Abbildung 1).<br />

Jede Spalte repräsentiert einen Work -<br />

flow-Zustand. In den Spalten bewegen<br />

sich Klebezettel, auf denen die<br />

Bezeichnung eines Arbeits pakets steht.<br />

So ist jederzeit sichtbar, welches Arbeits -<br />

paket in welchem Zustand ist.<br />

■ Limitieren Sie Work-in-Progress: Pro<br />

Spalte oder Zeile auf der Tafel dürfen<br />

sich nur so viele Arbeitspakete befinden,<br />

wie das Team auch sinnvoll bearbeiten<br />

kann.<br />

■ Messen Sie den Flow und optimieren sie<br />

ihn: Wann immer die Arbeit stockt<br />

(erkennbar an einem Zettel, der sich<br />

nicht bewegt), finden Sie die Ursache<br />

heraus und beseitigen Sie diese.<br />

■ Machen Sie Prozessregeln explizit:<br />

Werden Sie sich klar, warum Sie so<br />

arbeiten, wie Sie arbeiten.<br />

■ Verwenden Sie Modelle, um Verbes -<br />

serungs möglichkeiten zu erkennen: Bei -<br />

spiele hierfür sind systemisches Denken<br />

(vgl. [Sen10]), Theory of Constraints<br />

(vgl. [Gol90]) oder Demings Ideen (vgl.<br />

[Dem00]).<br />

Flow im Sinne von Lean können Sie also<br />

mit Hilfe von Kanban entstehen lassen.<br />

Kommen wir jetzt zu Flow in der Psyche.<br />

Wie Flow in der<br />

Organisation entsteht<br />

Flow in der Organisation zu erzeugen, ist<br />

Aufgabe des Managements. Manager müs-<br />

32 33


ausblick auf die oop 2012<br />

Mission, Zweck und Ziele<br />

Für die Mitarbeiter ist es schwer, sich auf<br />

die Ziele der Firma zu konzentrieren, wenn<br />

sie diese Ziele nicht verstehen oder sie missverstehen.<br />

Für alle – angefangen beim<br />

CEO, über das mittlere Management, bis<br />

hin zu den Teammitgliedern – sollte klar<br />

sein:<br />

■ Warum tun wir diesen Job?<br />

■ Warum führen wir diesen Feldzug?<br />

■ Was ist der Zweck dieses Unterneh -<br />

mens?<br />

■ Was ist mein spezieller Beitrag zu diesem<br />

Zweck?<br />

Abb. 1: Von Flow in Lean zu Flow in der Psyche.<br />

sen sich in erster Linie darauf konzentrieren,<br />

eine Organisation zu bauen. Diese<br />

Organisation kann dann Produkte bauen,<br />

die den Markt überraschen und weiteres<br />

Wachstum der Organisation ermöglichen.<br />

Die beste Strategie dafür ist es, Bedin -<br />

gungen zu schaffen und eine Atmosphäre<br />

herzustellen, in der Flow in den Menschen<br />

entstehen kann. Realistisch betrachtet hat<br />

ein Mensch – in dem Fall der Manager –<br />

keinen direkten Einfluss darauf, ob ein<br />

anderer Mensch (z. B. ein Teammitglied) in<br />

den Flow kommt. Er kann jedoch die<br />

Umgebung so gestalten, dass die Wahr -<br />

schein lichkeit dafür hoch wird.<br />

Es fängt mit einem Ort und einer Zeit an.<br />

Der Ort, an dem die Menschen arbeiten,<br />

sollte angenehm und besonders gestaltet<br />

sein. Saubere Räume, genügend Licht und<br />

Luft, Sichtbarkeit der Teams untereinander,<br />

Plätze zur Kommunikation (z. B. Espresso -<br />

maschine), und Plätze zum Halten des<br />

gemeinsamen Gedächtnisses (z. B. Kanban-<br />

Tafeln) sind Grundbedingungen. Darüber<br />

hinaus können ein Betriebskindergarten,<br />

eine schöne Kantine oder Räume zum<br />

Tischfußball-Spielen förderlich sein.<br />

Natürlich kann man Software auch in<br />

einer Geek-Wohngemeinschaft oder einer<br />

Garage entwickeln (nicht selten haben erfolgreiche<br />

Firmen so angefangen). Doch die<br />

Erfahrung zeigt, dass Entwickler in solchen<br />

Umgebungen nur vorübergehend wie eine<br />

Larve überwintern. Für gewisse Zeit wird<br />

Hacken wichtiger als Essen, Geschirr abwaschen<br />

oder Freunde treffen. Flow wird im<br />

Hack Mode erlebt. Dieser Zustand dauert<br />

jedoch nicht ewig – Entwickler schlüpfen aus<br />

der Hacker-Larve und wollen Profis werden,<br />

der eine früher, der andere später.<br />

Csikszentmihalyi hat in [Csi04] beschrieben,<br />

welche Bedingungen nach diesem<br />

Zeitpunkt geeignet sind, um den persönlichen<br />

Flow in der Organisation zu ermöglichen<br />

und zu fördern (siehe auch Abbil -<br />

dung 2):<br />

■<br />

■<br />

■<br />

Klare Ziele: Jeder Mitarbeiter sollte<br />

wissen, was die Mission der Organi -<br />

sation und der Zweck des Produkts ist,<br />

das entwickelt wird.<br />

Gutes, zeitnahes Feedback: Mitar bei ter<br />

sollten jederzeit erkennen können, ob<br />

sie auf dem richtigen Weg sind.<br />

Inkrementelle Herausforderungen: Das<br />

steigert die Fähigkeiten der Mitarbeiter<br />

und vermeidet Langeweile.<br />

In manchen Organisationen kommt es vor,<br />

dass sich noch nicht einmal der CEO oder<br />

Vorstandsmitglieder die Mühe gemacht<br />

haben, den Zweck der Firma näher zu definieren.<br />

In diesem Fall liegt es in der<br />

Verantwortung der darunter liegenden<br />

Führungsebene, das auf den Tisch zu bringen<br />

und mit den Vorgesetzten zu klären.<br />

Geschäftsgrundlage und Kernwerte der<br />

Firma müssen im Verhalten der Führung<br />

sichtbar werden. Führen bedeutet, die<br />

Aufmerksamkeit auf die Ziele zu lenken,<br />

die zu verfolgen sind. Daher müssen<br />

Führungskräfte stark in der Kommunika -<br />

tion sein, die zur Lenkung der Aufmerk -<br />

samkeit dient.<br />

In anderen Organisationen sind der<br />

Zweck und die Mission bei der mittleren<br />

Führungsebene unklar, aber diese Men -<br />

schen trauen sich nicht nachzufragen, um<br />

nicht als uninformiert dazustehen. Es gibt<br />

mehrere Wege, wie man seinem Team oder<br />

seiner Abteilung die Ziele klarmachen<br />

kann. Dazu gehört intensives Nachdenken,<br />

bei dem man allein ist, und intensive<br />

Gespräche mit Kollegen, Vorgesetzten und<br />

Untergebenen zur Ideenfindung und als<br />

Realitätscheck.<br />

Schließlich kann es sein, dass die Mission<br />

den Untergebenen nicht klar ist. Das<br />

kommt am häufigsten vor, ist jedoch nicht<br />

unbedingt den Mitarbeitern geschuldet,<br />

sondern kann mehrere Ursachen haben.<br />

Meist liegt es daran, dass Führungskräfte<br />

glauben, die Mitarbeiter verstehen eine<br />

Situation dann, wenn die Führungskraft sie<br />

verstanden hat. Das ist jedoch nicht der<br />

Fall. Als Führungskraft müssen Sie durch<br />

häufige Gespräche sicherstellen, dass alle<br />

dasselbe Bild sehen. Schließlich kommen<br />

ständig neue Mitarbeiter hinzu und die<br />

Grundbedingungen des Geschäfts ändern<br />

sich ständig.<br />

1/2012


ausblick auf die<br />

Zeitnahes Feedback<br />

Es reicht nicht aus, wenn ein Mitarbeiter<br />

genau weiß, was zu tun ist. Er muss bei<br />

jedem Schritt, den er geht, auch wissen, ob<br />

er mit diesem dem Ziel näher kommt oder<br />

ob er sich davon entfernt. Darüber informiert<br />

er sich am besten durch Feedback,<br />

das aus drei wichtigen Quellen stammt:<br />

■<br />

■<br />

■<br />

Feedback von anderen Menschen.<br />

Feedback aus der Arbeit selbst.<br />

Feedback aus eigenen persönlichen<br />

Standards.<br />

Manager haben das Gefühl, dass Kom -<br />

muni kation zu ihren wichtigsten Aufgaben<br />

gehört und dass es davon in ihrer Orga -<br />

nisation immer noch zu wenig gibt. Das<br />

stimmt in vielen Fällen: Feedback von<br />

anderen Menschen zu bekommen, ist<br />

immer noch selten. Es ist wichtig, mit den<br />

eigenen Leuten in wirklichen Kontakt zu<br />

kommen, ihnen zuzuhören und Gelegen -<br />

heiten zu guter Arbeit für sie zu schaffen.<br />

Alle zu kennen, mit ihnen zu sprechen, sie<br />

um Rat zu fragen und ihnen zu berichten,<br />

was daraus geworden ist, sind gute<br />

Möglichkeiten, um ein Umfeld für Feed -<br />

back zu schaffen. Feedback gibt den<br />

Teammitgliedern die Möglichkeit, ihre<br />

Arbeit mit Freude zu machen und im Laufe<br />

des Prozesses zu wachsen. Auch das erfordert<br />

natürlich, dass der Manager sich einen<br />

Teil seiner psychischen Energie (auch<br />

Aufmerksamkeit genannt) für diesen<br />

Prozess reserviert.<br />

Dem Kunden oder den Benutzern die<br />

Zwischenergebnisse der Softwareentwick -<br />

lung zu zeigen, ist auch eine Form, um<br />

Feedback von anderen Menschen einzuholen.<br />

Dabei ist es wichtig, mit den<br />

Stakeholdern ein gemeinsames Gedächtnis<br />

aufzubauen: „Vor zwei Wochen hatten wir<br />

versprochen, Feature X einzubauen. Sie<br />

hatten es sich so und so gewünscht – heute<br />

können Sie es anschauen und uns sagen, ob<br />

wir es richtig implementiert haben.”<br />

Feedback kann auch aus dem Arbeits -<br />

prozess selbst kommen. Gerade die<br />

Softwareentwicklung hat eingebaute<br />

Indika toren dafür, ob man sich in die richtige<br />

Richtung bewegt oder nicht. Man kann<br />

die Anzahl der Features messen, die man<br />

ausliefert, die Anzahl der Fehler, die man<br />

dabei macht, die Zykluszeit, die man vom<br />

Beginn bis zum Ende einer Entwicklung<br />

braucht, die Länge von Warteschlangen vor<br />

einem Workflow-Schritt und vieles mehr.<br />

Quantitatives Management hat Teams<br />

geholfen, sich das Feedback zu holen, das<br />

Abb. 2: Wie entsteht Flow in der Organisation?<br />

sie brauchen, um sich selbst zu organisieren.<br />

Die eben genannten Metriken verändern<br />

im Alltag dadurch ihren Charakter:<br />

Sie werden nicht mehr als Kontrolle von<br />

oben erlebt, sondern als Mechanismus der<br />

Selbstbeobachtung und Verbesserung.<br />

Schließlich gibt es noch das Feedback, das<br />

von innen aus der eigenen Person und ihren<br />

Standards kommt. Ein guter Entwickler hat<br />

intuitiv ein Gefühl dafür, wie guter Code<br />

aussieht. Die Technik des Refaktorisierens<br />

ba siert auf „Code-Gerüchen”, die nichts<br />

anderes sind als persönliche Standards, die<br />

man aus Erfahrung gewonnen hat: „Diese<br />

Stelle im Code sieht aber kompliziert aus –<br />

muss diese Klasse das wirklich alles können<br />

oder sollten wir sie besser aufspalten?” oder<br />

„Die se Stelle im Code hat noch nie richtig<br />

funktioniert, komm lass uns sie endlich einmal<br />

aufräumen, so kann das einfach nicht<br />

bleiben!”, sind Feedback-Aussagen, die von<br />

innen kommen.<br />

Solche Überzeugungen gründen sich auf<br />

Erfahrung, werden aber manchmal so sehr<br />

zur zweiten Natur, dass sie wie ein intuitives,<br />

selbstverständliches Urteil daherkommen.<br />

Für Führungskräfte, wie Architekten<br />

zum Beispiel, ist es schwierig, in den<br />

Kollegen einen Sinn für so etwas zu wecken,<br />

denn meist können sie selbst nicht erklären,<br />

wie sie zu dieser Ansicht gekommen sind.<br />

Das Beste ist, Sie machen sich zunächst Ihre<br />

eigenen Standards explizit klar und nutzen<br />

anschließend jede Gelegenheit, um sie im<br />

Job anzuwenden und darüber zu sprechen.<br />

So können auch andere die Standards<br />

erkennen und daraus lernen.<br />

Inkrementelle<br />

Herausforderungen<br />

Lean strebt einen gleichmäßigen Arbeits -<br />

fluss an. Jedes Arbeitspaket braucht seine<br />

Zeit, um einmal durch den Workflow zu<br />

gehen. Der Workflow ist teamspezifisch,<br />

typische Stationen können z. B. so heißen:<br />

Backlog, ausgewählt, Verstehen, Umsetzen,<br />

Bereitstellen, Akzeptanz testen, Fertig. Den<br />

Durchlauf eines Arbeitspakets durch diesen<br />

Workflow nennt man einen Zyklus. Die<br />

Zeit, die dafür benötigt wird, nennt man<br />

die Zykluszeit (Cycle Time). In Lean versuchen<br />

Teams, diese Zykluszeit kontinuierlich<br />

zu reduzieren, um den Anteil an<br />

Verschwendung, der darin steckt, zu verringern<br />

und den Anteil des geschaffenen<br />

Wertes zu maximieren.<br />

Die zweite Verbesserung gilt dem Service,<br />

der für den Kunden geboten wird. Zum<br />

Beispiel misst das Team die Zykluszeiten<br />

für typische Arbeitspakete und versucht,<br />

daraus eine Gesetzmäßigkeit zu erkennen.<br />

Diese kann das Team dem Kunden dann als<br />

Service-Vereinbarung anbieten: „Wenn du<br />

Kunde uns ein Arbeitspaket der und der<br />

Größe und Art gibst, liefern wir dir die<br />

34 35


ausblick auf die oop 2012<br />

■ Das Pull-Prinzip in Lean erlaubt es den<br />

Mitarbeitern, sich nur so viel Arbeit zu<br />

ziehen, wie sie gleichzeitig erledigen<br />

(G2) und auch vollenden können (G1).<br />

■ Der Fokus auf den Wert, der für den Kun -<br />

den erzeugt wird, liefert die klaren Ziele<br />

(G3) und ermöglicht Konzen tration (G2).<br />

Tabelle 1: Einfluss der vier Lean-Praktiken auf den Flow in der Psyche.<br />

Lösung in typischerweise 40 Tagen, inklusive<br />

Deployment und aller Tests.” Das<br />

Team misst dann, in wie viel Prozent der<br />

Fälle es diese Vereinbarung einhalten konnte,<br />

und versucht, diesen Prozentsatz ständig<br />

zu verbessern.<br />

Entwickler, Software- oder Systemarchi -<br />

tek ten und Oberflächen-Designer – sie alle<br />

versuchen, ihre Fähigkeiten immer weiter<br />

zu perfektionieren. Meisterschaft ist ein<br />

wesentlicher Treiber von Flow. Damit stellt<br />

sich das Team selbst eine inkrementelle<br />

Herausforderung im Sinne des Flow-<br />

Begriffs von Csikszentmihalyi. Flow in<br />

Lean und Flow in der Psyche wachsen<br />

zusammen – das eine führt zum jeweils<br />

anderen (siehe Abbildung 1).<br />

Gegenwart oder Zukunft<br />

Flow zeigt sich auch bei der Planung und<br />

Fortschrittsverfolgung. Der Kunde fragt das<br />

Team möglicherweise: „Wann werdet ihr<br />

mit dem fertig sein, was ich fordere?”. In<br />

traditionellen Projektmanagement-Verfah -<br />

ren (und in manchen agilen Verfah ren ebenso)<br />

versucht das Team, eine Schätzung nach<br />

bestem Wissen und Gewis sen abzugeben<br />

und zum Endtermin, der aus dieser Schät -<br />

zung resultiert, fertig zu sein. Unterwegs<br />

vergleicht es die Abweichungen von<br />

Schätzung und Realität. Die Menschen<br />

befinden sich mit ihren Gedanken dabei fast<br />

immer in der Vergangenheit („Was haben<br />

wir neulich versprochen?”) oder in der<br />

Zukunft („Oh, der vorausgesagte Termin<br />

naht!”). Das Gefühl für die vergehende Zeit<br />

tritt stark in den Vordergrund, und es entsteht<br />

eine Kultur des Schätzens und<br />

Verschätzens, des Verhandelns und Nach -<br />

verhandelns. Diese Kultur steht im direkten<br />

Widerspruch zu Flow, ja sie verhindert Flow<br />

in der Psyche fast sofort. Je wichtiger die<br />

vergehende Zeit wird, desto weniger wichtig<br />

wird die Software, die man schreibt.<br />

In Lean versucht man, mit seinen<br />

Gedanken in der Gegenwart zu sein. Das<br />

Team hört auf, zu schätzen und das zu<br />

betrachten, was in der Zukunft liegt. Es<br />

beginnt, das zu messen, was gerade im<br />

Moment stattfindet und ist deshalb mit den<br />

Gedanken in der Gegenwart. Das Gefühl<br />

für die vergehende Zeit tritt in den<br />

Hintergrund, so kann Flow in der Psyche<br />

entstehen. Der Kunde bekommt dieselbe<br />

Auskunft, die er in den traditionellen<br />

Verfahren auch bekam, nur basiert diese in<br />

einem Fall auf Schätzen, im Lean-Fall auf<br />

Messen und Extrapolieren. „Lieber Kunde,<br />

du forderst zehn kleine und acht große<br />

Arbeitspakete. Die Messungen für kleine<br />

Pakete haben eine durchschnittliche<br />

Zyklus zeit von 5 Tagen ergeben, die für<br />

große Pakete eine von 15 Tagen. Wir bearbeiten<br />

immer 3 Pakete gleichzeitig, also<br />

werden wir deinen Stapel voraussichtlich in<br />

(10*5+8*15)/3=57 Tagen fertig haben.”<br />

Flow in Lean fördert Flow<br />

in der Psyche<br />

In diesem Beitrag habe ich gezeigt, dass es<br />

zwei Arten von Flow gibt: Flow in Lean<br />

und Flow in der Psyche. Ich behaupte nun:<br />

Flow in Lean ist geeignet, bei der Arbeit<br />

Flow in der Psyche hervorzurufen, weil<br />

Lean Eigen schaften hat, die die am Anfang<br />

des Artikels genannten Bedingungen G1 bis<br />

G4 erfüllen, unter denen Flow in der<br />

Psyche entstehen kann (siehe Tabelle 1):<br />

Visualisieren und Messen liefern das sofortige<br />

Feedback (G4).<br />

Das Pull-Prinzip fördert außerdem das<br />

Gefühl, dass man Kontrolle über die eigene<br />

Arbeit hat (G6). Wenn die Firmenkultur<br />

(wie in Lean üblich) auf Stockungen im<br />

Fluss und nicht so sehr auf den Schuldigen<br />

achtet, kann das bei den Mitarbeitern dazu<br />

führen, weniger besorgt um die eigene<br />

Zulänglichkeit zu sein – paradoxerweise<br />

steigt diese gerade mit den Fähigkeiten, die<br />

man im Flow erwirbt, an (G7). Die besondere<br />

Art von Messen und Planen in Lean<br />

bringt die Gedanken in die Gegenwart, die<br />

man sonst an die Zukunft verschwendet.<br />

Das reduziert die mentale Anstrengung und<br />

verändert das Zeitgefühl (G5, G8).<br />

Als Manager einer Produktentwicklungs -<br />

orga nisation sind Sie also im Vorteil, wenn<br />

Sie Flow explizit fördern. Sie reduzieren<br />

Kosten (durch Flow in Lean) und erzeugen<br />

ein Klima, in dem Mitarbeiter gern arbeiten<br />

(durch Flow in der Psyche) – ein Weg zur<br />

nachhaltigen Stärkung Ihrer Firma. ■<br />

Literatur<br />

[And10] D.J. Anderson, Kanban, Blue Hole<br />

Press 2010<br />

[Boh10] M. Bohlen, Softwareprojekte quantitativ<br />

managen: Ein Weg zum performanten<br />

Team, in: OBJEKTspektrum 4/2010<br />

[Csi04] M. Csikszentmihalyi, Good business:<br />

leadership, flow, and the making of meaning<br />

(Reprint), Penguin Books 2004<br />

[Csi08] M. Csikszentmihalyi, Flow : The<br />

Psychology of Optimal Experience, Harper<br />

Collins 2008<br />

[Dem00] W.E. Deming, Out of the crisis, MIT<br />

Press 2000<br />

[Gol90] E.M. Goldratt, What is this thing called<br />

theory of constraints and how should it be<br />

implemented?, North River Press 1990<br />

[Pop03] M. Poppendieck, T. Poppendieck,<br />

Lean software development: an agile toolkit,<br />

Addison-Wesley Professional 2003<br />

[Sen10] P.M. Senge, The Fifth Discipline: The<br />

Art and Practice of the Learning Organization,<br />

Random House 2010<br />

1/2012


ausblick auf die<br />

„ICH HABE TEAMS<br />

BUCHSTÄBLICH VERRÜCKT WERDEN SEHEN”<br />

Interview mit Matthias Bohlen<br />

■■? Matthias, du bist verantwortlich für<br />

den diesjährigen OOP-Track „People &<br />

Soft Skills”. Ich habe dich als<br />

Softwarearchitekten kennen gelernt. Bist<br />

du der Technologie untreu geworden, da<br />

du dich nun den „weichen” Themen widmest?<br />

■■! (Lacht) Untreu auf keinen Fall, doch<br />

ich habe gesehen, wie viel technisches<br />

Know-how, wie viel Gehirnschmalz und<br />

Motivation wirklich guter Software -<br />

architekten im Dickicht der Unternehmens -<br />

organisation verschwinden kann. Architek -<br />

ten sind notorisch überlastete Menschen,<br />

laufen von Meeting zu Meeting und sind<br />

mit der Architekturdokumentation doch<br />

ständig im Hintertreffen. Später habe ich<br />

gesehen, dass dieses Phänomen nicht nur<br />

bei Architekten auftritt, sondern bei allen,<br />

die in der Softwareentwicklung tätig sind.<br />

Das möchte ich ändern. Ich habe mich deshalb<br />

verstärkt damit beschäftigt, wie<br />

Menschen arbeiten, wie sie ihre Zusam -<br />

men arbeit organisieren und was sich dabei<br />

im Hirn und Gemüt der Leute abspielt.<br />

■■? Glaubst du, dass in der Beherrschung<br />

der weichen Themen ein größerer Hebel<br />

für den Erfolg bei der Softwareentwicklung<br />

liegt als in den technischen Themen, wie<br />

Architektur oder Datenbank-Design?<br />

■■! Das kommt auf die Situation an, in der<br />

die Leute stecken. Ein typisches Beispiel:<br />

Ein Team entwickelt ein Produkt, das<br />

bereits bei einigen Kunden im Einsatz ist.<br />

Von diesen Kunden kommen Bugs und<br />

Change-Requests, die von den Consultants<br />

aufgenommen und ins Team getragen werden.<br />

Gleichzeitig arbeitet der Vertrieb an<br />

neuen Interessenten und versucht, sie zu<br />

Kunden für dasselbe Produkt zu machen,<br />

indem er die Bedürfnisse der Interessenten<br />

in Features des Produkts verwandelt.<br />

Schließlich gibt es noch den Unternehmens -<br />

gründer, der eine strategische Vorstellung<br />

davon hat, wohin er mit dem Produkt kommen<br />

will. Er stellt also auch Anforderungen<br />

für neue Features.<br />

Was macht jetzt das Team, das dieses<br />

Produkt entwickelt? Folgt es dem Chef,<br />

dem Vertrieb oder den Consultants? Und<br />

zu wie viel Prozent folgt es wem? Ich habe<br />

Teams buchstäblich verrückt werden sehen<br />

(und war auch selbst schon Mitglied solcher<br />

Teams, allerdings nicht als der Coach,<br />

der ich jetzt bin). Im Alltag hat man gerade<br />

ein neues Feature angefangen, da kommt<br />

plötzlich ein dringender Bug dazwischen,<br />

also Griffel fallen lassen und erst den Bug<br />

beseitigen, dann am Feature weitermachen<br />

und nach drei Monaten fragt der Chef,<br />

warum seine Strategie noch keinen Deut<br />

weitergekommen ist.<br />

Ich hatte einfach das Gefühl: Da kann ich<br />

als Architekt, Entwickler, QA-Mensch oder<br />

Betreiber technisch noch so gut sein, ich<br />

werde in solch einer Organisation für den<br />

Kunden keinen Blumentopf gewinnen können.<br />

Seit 2001 hatte ich mich mit agilen<br />

Methoden wie XP und Scrum beschäftigt,<br />

in 2009 hörte ich von Kanban, und da hat<br />

es „klick” gemacht. Endlich ein Ansatz -<br />

punkt, um zu verstehen, wie Menschen ti -<br />

cken und wie man die Arbeit so gestalten<br />

kann, dass sie dem auch wirklich entspricht.<br />

Lean und Kanban brachten in meinem<br />

Kopf die Ideen zusammen, die ich vorher<br />

schon gesammelt hatte: systemisches<br />

Denken, komplexe adaptive Systeme und<br />

Kognitionswissenschaft.<br />

■■? In deinem Artikel „Flow in Lean, Flow<br />

im Team” ziehst du den Vergleich zwischen<br />

dem Fluss in der Arbeit und dem Fluss in<br />

der Seele. Was sind deine persönlichen<br />

Erfahrungen damit?<br />

■■! Ich hatte einen serverbasierten Kalen -<br />

der, in dem ich meine Termine verwaltete.<br />

Leute schickten mir Anfragen, die ich<br />

annahm oder ablehnte. Vor Jahren hatte<br />

ich als Architekt die Angewohnheit, die<br />

Termine dicht zu legen, also von 09:00 bis<br />

10:00, dann von 10:15 bis 11:15, dann von<br />

13:00 bis 15:00, dann von 15:15 bis …<br />

usw. Du weißt, was ich meine. Ich merkte<br />

bald, dass das nicht funktioniert. Ich konnte<br />

zwar an Meetings teilnehmen, aber ich<br />

konnte die Themen nicht mehr sauber vorund<br />

nachbereiten. Fast keines der Themen<br />

kam richtig zu einem Abschluss – ich wuss -<br />

te jedoch nicht, woran das liegt. Also ließ<br />

ich mir größere Abstände zwischen den<br />

Meetings, doch auch das funktionierte<br />

nicht wirklich gut.<br />

„Es ist wie auf einer Autobahn,<br />

die du nach Autos pro Quadratmeter<br />

(Kapazität) belegst, anstatt nach<br />

Autos pro Stunde (Flow)”.<br />

Hinter dem Ganzen steckte ein Denkfehler.<br />

Ich hatte das falsche mentale Modell.<br />

Wissensarbeit ist ein Flow-Problem, kein<br />

Kapazitätsproblem. Ich hatte mit meinem<br />

Kalender versucht, die Nachfrage gegen<br />

meine Zeitkapazität auszubalancieren. Das<br />

taugte nichts, weil jede nachgefragte<br />

Tätigkeit in sich Variabilität enthält, die<br />

sich bei Ketten voneinander abhängiger<br />

Tätigkeiten so aufaddiert, dass die verplante<br />

Kapazität plötzlich durch andere Dinge<br />

belegt wird. Es ist wie auf einer Autobahn,<br />

die du nach Autos pro Quadratmeter<br />

(Kapazität) belegst anstatt nach Autos pro<br />

Stunde (Flow). Also habe ich umgestellt. Es<br />

geht mir heute nicht mehr darum, die<br />

Stunden möglichst effizient zu belegen,<br />

sondern möglichst ein bis zwei Themen pro<br />

Woche wirklich durchzubringen. Ich lehne<br />

heute ein Meeting nicht mehr ab, wenn die<br />

Stunden belegt sind, sondern wenn in meinem<br />

Kopf noch ein bis zwei weitere<br />

Themen sind, die erst weiterfließen wollen,<br />

bevor der Kopf ein neues angehen kann.<br />

Kommt ein Meeting zum selben Thema,<br />

nehme ich es trotzdem an. Und siehe da:<br />

Ich habe mehr Freude an der Arbeit, bin<br />

mit den Gedanken mehr in der Gegenwart,<br />

habe das Gefühl, endlich mal etwas fertig<br />

zu kriegen und dadurch Wert für meine<br />

Kunden und für mich zu schaffen.<br />

■■? Damit hast du dann ja deine persönlichen<br />

Zielkoordinaten für die Arbeit der<br />

nächsten Zeit. Schauen wir uns aber einmal<br />

in der IT-Welt um uns herum um: Was sind<br />

36 37


ausblick auf die oop 2012<br />

deiner Meinung nach die einflussreichsten<br />

IT-Trends der nächsten Jahre?<br />

■■! Wechseln wir also mal in den Glas -<br />

kugelmodus (lacht). Das Denken in Flow<br />

und in Systemen wird der Trend werden.<br />

Ideen bewegen sich in einem System wie<br />

Agenten, die miteinander und mit dem<br />

System interagieren und das System<br />

dadurch verändern. Das Ganze gehorcht<br />

Regeln, die neu entstehen, sich bewähren<br />

und wieder sterben. Das Business läuft heute<br />

schon so – nichts ist mehr fest, alles fließt<br />

und verändert sich. Jetzt müssen wir in der<br />

IT noch hinterher, dasselbe Verständnis<br />

aufbauen und uns geeignet verhalten. Hier<br />

ein paar Beispiele: Die Lean-Startup-Szene<br />

macht uns das gerade explizit vor – von<br />

denen können wir viel lernen. DevOps wird<br />

auch so ein Trend werden, denn es macht<br />

uns aktionsfähig. Im Verhältnis von<br />

Kunden zu Entwicklungsorganisationen<br />

wird sich einiges verschieben: Man wird<br />

von großen „One-Shot”-Projekten zu längerfristiger,<br />

vertrauensvoller Zusammen -<br />

arbeit kommen und den Blick mehr und<br />

mehr von den Kosten auf den Wert lenken<br />

können. One-Shots werden weiter scheitern.<br />

Es wird jedoch bestimmt noch 20<br />

Jahre dauern, bis endlich auch der öffentliche<br />

Sektor mit One-Shots aufhört, die er<br />

per europaweiter Ausschreibung an den<br />

billigsten Anbieter vergibt. Das wird so lange<br />

dauern, weil der Gesetzgeber erst mitmachen<br />

muss.<br />

■■? Auf was freust du dich am meisten,<br />

wenn du auf das Programm der OOP<br />

schaust?<br />

■■! Auf den Austausch der kreativen Leute<br />

untereinander. Wir haben in diesem Jahr<br />

Sprecher aus so vielen verschiedenen<br />

Richtungen dabei, die etwas komplett<br />

Neues schaffen können, indem sie sich<br />

zusammentun. In London z. B. bringt man<br />

Softwareleute, Künstler, Juristen und<br />

Wirtschaftswissenschaftler in einem neuen<br />

Studiengang zusammen, in dem Kreativität<br />

explizit gefördert wird. Neil Maiden ist<br />

Professor dort und kommt als Sprecher auf<br />

die OOP. Seine Kollegin Bianca Hollis und<br />

er werden uns davon berichten, wie man<br />

Kreativtechniken in agilen Projekten nutzen<br />

kann, um Anforderungen besser zu<br />

beschreiben. Johanna Rothman, Diana<br />

Larsen und alle, die ich gar nicht so schnell<br />

aufzählen kann, bringen Wissen darüber<br />

mit, wie man kreative Menschen erkennt<br />

und einstellt, mit ihnen innovative und<br />

komplexe Vorhaben startet, darin die<br />

Konflikte löst, in den Flow kommt, durch<br />

Selbstorganisation eine Verantwortungs -<br />

kultur aufbaut und seinen Einfluss ausübt,<br />

um mit diesen Menschen Dinge erledigt zu<br />

bekommen. Ich hoffe, dass die Teilnehmer<br />

und Sprecher auch die Open-Arena rege<br />

nutzen werden. Dort kann man eigene<br />

Themen angehen, die heute noch nicht im<br />

Konferenzprogramm stehen. Ich bin<br />

gespannt, wie das klappt, und freue mich<br />

darauf.<br />

■<br />

1/2012


ausblick auf die<br />

interview mit ...<br />

WAS UNS ZU ERFOLGREICHEN<br />

PROJEKTEN FÜHRT …<br />

… UND MANCHMAL<br />

AUCH DAVON ABHÄLT<br />

… Diana Larsen,<br />

die als Partner und Senior Consultant der Firma<br />

Future Works Consulting an der Schaffung von<br />

Arbeitsplätzen beteiligt ist, wo Teams in Ruhe hochproduktive<br />

Softwarelösungen entwickeln können.<br />

Unter anderem coacht sie Teamleiter in Change-<br />

Mangement-Prozessen.<br />

■■? In Ihrem OOP-Tutorial sprechen Sie<br />

über Verhaltensweisen, die drei Hinder -<br />

nisse für ein effektives Management eines<br />

Agilen Unternehmens verursachen: 1) ma -<br />

gi sches Denken, 2) die Illusion von Kon -<br />

trolle, 3) die Phantasie von individueller<br />

Schuld. Welches sind Ihre persönlich wichtigsten<br />

Erfahrungen damit?<br />

■■! Alle drei üben starke Kräfte aus, die die<br />

Organisationen davon abhalten, die<br />

Ergebnisse zu erreichen, die sie eigentlich<br />

wollen, obwohl das konventionelle Denken<br />

uns (Managern und dem Rest von uns) suggeriert,<br />

dass sie der Pfad zum Erfolg sind.<br />

Das übergreifende und sie zusammenfassende<br />

Prinzip fokussiert auf die verschiedenen<br />

Teile (ein Termin, ein Mitarbeiter, ein<br />

Plan), anstatt die Aufmerksamkeit auf das<br />

ganze System (ein Team, eine Abteilung, ein<br />

„Es ist eigentlich paradox, dass<br />

wir erst dadurch mehr Kontrolle<br />

über komplexe Ergebnisse<br />

bekommen, dass wir auf die Kontrolle<br />

über die Teile verzichten.”<br />

Unternehmen) oder das große Ganze<br />

(Industrie, Markt, Wirtschaft) zu richten.<br />

Wenn meine Kunden beginnen, systemisch<br />

zu denken, eröffnen sie neue Möglichkeiten<br />

für sich selbst und kommen den Er -<br />

gebnissen näher, die sie wirklich wollen. Es<br />

ist eigentlich paradox, dass wir erst<br />

dadurch mehr Kontrolle über komplexe<br />

Ergebnisse bekommen, dass wir auf die<br />

Kontrolle über die Teile verzichten.<br />

■■? Sie sind Software-Engineering-Bera -<br />

terin. Was ist für Sie der wesentliche Unter -<br />

schied zwischen der Arbeit mit Entwicklern<br />

und der mit Managern?<br />

■■! Der Unterschied liegt in der Pers -<br />

pektive. Jede Gruppe hat unterschiedliche<br />

Informationen und ein unterschiedliches<br />

Gefühl für den Kontext, der uns zu Kom -<br />

munikationsproblemen und Missver -<br />

ständnis sen von Handlungen, aber auch zu<br />

unverständlichen Verhaltensweisen und<br />

Entscheidungen führt. Ich habe viel Spaß<br />

daran, jedem mehr Klarheit über die Sicht<br />

des anderen zu verschaffen, ihn verstehen<br />

zu lassen, welchen Wert das schafft, und<br />

ihn lernen zu lassen, um seine<br />

Wahrnehmungslücken zu schließen. In der<br />

Softwareentwicklung ist die „universelle<br />

Sprache”, über die Eric Evans in seinem<br />

Domain Driven Design schreibt, ein Schritt<br />

in die richtige Richtung.<br />

■■? In Ihrem neuen Buch „Liftoff: Laun -<br />

ching Agile Teams and Projects” betonen<br />

Sie auch die Bedeutung von Zielbildung für<br />

den Projekterfolg. Ist das nicht der wich -<br />

tigs te kritische Erfolgsfaktor in der Soft -<br />

wareentwicklung?<br />

„Wenn die Menschen verstehen, zu welchem<br />

Gesamtergebnis ihre Arbeit beitragen<br />

soll, blüht ihre Performance auf.”<br />

■■! In unserem Buch diskutieren wir viele<br />

Aspekte, wie man mit seinem Projekt gut<br />

aus den Startlöchern kommt, und eben<br />

auch den vielleicht wirkungsvollsten<br />

Aspekt in unserem Agile-Chartering-Mo -<br />

dell: das Element Zielbildung. Daniel Pink<br />

beschreibt in seinem Buch „Drive” die<br />

Motivationskraft von Selbstbestimmung,<br />

Macht und Ziel. Wenn die Leute verstehen,<br />

zu welchem Gesamtergebnis ihre Arbeit<br />

beitragen soll und wie diese Arbeit andere<br />

positiv beeinflussen kann, blüht ihre<br />

Performance auf – mit durch Studien belegten<br />

Steigerungen, bis hin zur Verdoppelung<br />

gegenüber vorher.<br />

Ich habe immer wieder gemerkt, dass die<br />

frühzeitige Definition des Ziels – bereits zu<br />

Beginn des Projekts – und insbesondere die<br />

Möglichkeit für Teammitglieder, dieses Ziel<br />

mit dem Produktmanager zu diskutieren, es<br />

gründlich zu verstehen und nach Mög -<br />

lichkeit zu beeinflussen, wesentlich zur<br />

Motivation des Teams beiträgt und die mit<br />

neuen Projekten verbundene Lernkurve<br />

beschleunigt. Ein definiertes Ziel hilft, das<br />

Bewusstsein für die Erwartungen, das<br />

Potenzial und die Intention des Projekts<br />

schon zu Beginn zu fassen. Deshalb haben<br />

wir (neben Alignment und Kontext)<br />

Zielbildung als eines der der drei Elemente<br />

des Agile Chartering aufgenommen. Wenn<br />

wir bei der Arbeit ein Bewusstsein für die<br />

Zielbildung haben, vertieft sich unser<br />

Commitment, unser Antrieb wächst und<br />

die Performance steigt.<br />

■■? Mit dieser Einschätzung stehen Sie<br />

aber nicht allein da, oder?<br />

■■! Stimmt. Jeffrey Katzenbach und<br />

Douglas Smith nennen in „Wisdom of<br />

Teams” die gemeinsame Zielbildung als<br />

wichtigste Charakteristik von effektiven<br />

Teams. Diesen Standpunkt unterstützen<br />

38 39


ausblick auf die oop 2012<br />

auch Geoffrey Bellman und Kathleen Ryan<br />

in ihrem Modell von den Bedürfnissen<br />

außerordentlicher Teams: „Die gemeinsame<br />

Zielbildung ist der Grund, warum wir<br />

zusammen kommen […], wo gebündelte<br />

Energie und Fähigkeit eine gemeinsame<br />

Basis dafür sind, etwas zu erreichen, das<br />

von einzelnen Individuen nicht erreichbar<br />

wäre”.<br />

Zielbildung verleiht auch die notwendige<br />

Kraft im Angesicht von widrigen oder sich<br />

ändernden Bedingungen. John Baldoni<br />

schreibt in einem CNN-Artikel: „Gerade in<br />

schwierigen Zeiten ist die Zielbildung<br />

besonders notwendig. Und auch der<br />

Präsident der University of Central Okla -<br />

homa sagte in einem Interview: „Wenn die<br />

Menschen die Zielbildung nicht fühlen und<br />

wissen, dass sie Dinge zu dieser Zielbildung<br />

beitragen und damit die Sache voranbringen,<br />

können schlechte Nachrichten sie<br />

wirklich runterziehen.” Folglich verlangsamen<br />

schlechte Nachrichten – egal welcher<br />

Art – die Produktivität, während das<br />

Verständnis der Zielbildung das Team<br />

gewissermaßen dagegen immunisiert.<br />

■■? Was genau verstehen Sie denn unter<br />

Zielbildung?<br />

■■! In unserem Modell beinhaltet die<br />

Zielbildung drei Komponenten: die<br />

Produktvision, die Projektziele und Ziel-<br />

Tests. Die Produktvision beschreibt in groben<br />

Zügen den angestrebten Geschäftsund<br />

Kundennutzen, Unterscheidungsmerk -<br />

male und Features, die die Idee und den<br />

Sinn des Produkts widerspiegeln. Die<br />

Projektziele beschreiben den eindeutigen<br />

Beitrag dieses Projekts und dieses Teams<br />

auf dem Weg zur Realisierung der<br />

Produktvision. Zur Produktvision tragen<br />

mehrere Projekte und Teams bei und jedes<br />

braucht das Verständnis für seinen Platz.<br />

Die Abnahmekriterien ermöglichen es uns,<br />

das erfolgreiche Projektergebnis zu erkennen.<br />

Zusammen mit ihnen hält man wenige<br />

kritische qualitative und quantitative<br />

„Definitions of Done” in seinem Projekt<br />

fest. Sie verändern sich aber im Laufe eines<br />

Projekts durchaus auch einmal, wenn das<br />

Team besser versteht, was wirklich<br />

gewünscht wird und erreichbar ist.<br />

Ich treffe immer wieder auf hoch talentierte<br />

Teams – egal ob agil oder nicht –, die<br />

daran scheitern, die richtigen Ergebnisse zu<br />

produzieren, weil ihre Produktmanager<br />

oder Product Owner nicht in de Lage sind,<br />

„Ich bin immer wieder auf hoch<br />

talentierte Teams getroffen,<br />

die daran scheitern, die richtigen<br />

Ergebnisse zu produzieren, weil ihre<br />

Produktmanager nicht in der Lage<br />

sind, eine klare Produktvision und ein<br />

klares Projektziel zu vermitteln.”<br />

eine klare Produktvision und ein klares<br />

Projektziel zu vermitteln. Indem wir uns die<br />

Zeit nehmen, die Vision zu formulieren,<br />

schaffen wir bessere Standards zur<br />

Priorisierung der Bewertung der Backlog-<br />

Einträge.<br />

■■? Diana, auch auf der OOP halten Sie<br />

einen Vortrag darüber, wie man Teams und<br />

Projekt zum Erfolg führt. Glauben Sie, dass<br />

die Menschen der kritische Faktor für den<br />

Projekterfolg sind? Und wie groß ist der<br />

Einfluss von Prozessen und Werkzeugen?<br />

■■! Das sind jetzt zwei Fragen! Natürlich<br />

sind die Menschen der kritische Erfolgs -<br />

faktor und natürlich machen gute Men -<br />

schen in einem schlecht geführten System<br />

schlechte Arbeit oder verbrennen. Schlecht<br />

oder falsch vorbereitete Menschen können<br />

in einem an Ergebnissen orientierten<br />

System die Produktivitätsstandards nicht<br />

erreichen. Es ist ein komplexer Tanz von<br />

dem Ganzen (dem organisatorischen<br />

System) und seinen Teilen (den betroffenen<br />

Menschen). Im Übrigen sind Manager ja<br />

auch Menschen, also beeinflusst auch ihr<br />

Verhalten das Gesamtergebnis. Definierte<br />

Prozesse und Werkzeuge können die Arbeit<br />

unterstützen und auf den Weg bringen. Es<br />

lohnt sich, das Arbeitssystem als Ganzes<br />

und die angestrebten Ergebnisse sorgfältig<br />

zu überdenken und die Menschen mit ihrer<br />

Arbeit einzubeziehen, wenn man über<br />

Prozesse und Werkzeuge nachdenkt. Also:<br />

Es sind die Individuen und die Inter -<br />

aktionen durch Prozesse und Werkzeuge.<br />

■■? Worauf freuen Sie sich am meisten auf<br />

der kommenden OOP?<br />

■■! Ich freue mich auf das, was in den<br />

Open-Area-Sessions entstehen wird, wenn<br />

neue Kollegen und alte Bekannte sich treffen<br />

und gegenseitig Ideen austauschen –<br />

sowohl über meine Session als auch über<br />

mein oben genanntes Buch, das ich gemeinsam<br />

mit Ainsley Nies geschrieben habe,<br />

und natürlich auf die neuen Erkenntnisse<br />

und Arbeiten der anderen. Ich liebe es, agile<br />

Praxiserfahrungen zu hören, sowohl die<br />

guten als auch die schlechten, denn jede<br />

gute Sache braucht eine gute Krise. ■<br />

1/2012


uchbesprechung für sie gelesen von ...<br />

mehr zum thema:<br />

http://www.theleanstartup.com<br />

THE LEAN STARTUP<br />

Die Zielgruppe des Buchs „The Lean Startup” von Eric Ries ergibt sich aus dessen Definition<br />

des Begriffs „Startup”: Ein Startup ist eine Unternehmung, die mit dem Ziel gegründet wurde,<br />

in einem hoch dynamischen und dadurch unsicheren Marktumfeld innovative Produkte und<br />

Dienstleistungen zum Erfolg zu bringen. Dieses Buch richtet sich also nicht nur an kleine<br />

Garagenfirmen, sondern genauso an die Produktentwicklungsbereiche großer Konzerne.<br />

... Dr. Yves Stalgies,<br />

(E-Mail: stalgies@etracker.com),<br />

PMP, Direktor IT bei der etracker GmbH in Hamburg.<br />

Mit der The Lean Startup-Methode, die<br />

Eric Ries in seinem Buch vorstellt, möchte<br />

er die Erfolgsrate dieser Unternehmungen<br />

deutlich steigern.<br />

Der Schlüssel ist die Erkenntnis, dass<br />

auch ein Startup systematisch gemanagt<br />

werden kann (und muss) und daher Entre -<br />

preneurship nicht Heldentum ist, sondern<br />

eine Management-Disziplin und dass der<br />

Entrepreneur derjenige ist, der dafür sorgt,<br />

dass die richtige Balance zwischen „just do<br />

it” und monatelanger Business-Planung<br />

gefunden wird. Auch wenn Innovationen<br />

schwer vorhersagbar sind, können sie<br />

gemanagt werden. Das Motto ist: „Work<br />

smarter, not harder”. Eric Ries beschreibt<br />

in seinem englischsprachigen Buch auf 336<br />

Seiten, wie das geht.<br />

Das Buch gliedert sich in drei Teile:<br />

■ Vision: Im ersten Teil werden die Be -<br />

griffe „Startup” und „Entrepreneur”<br />

definiert. Außerdem werden die<br />

Kernelemente der Methode, die Pro -<br />

zess kette „Build-Measure-Learn” und<br />

„Validated Learning” eingeführt.<br />

■ Steer: Basierend auf der grundlegenden<br />

Methodik werden in diesem Kapitel<br />

Werkzeuge vorgestellt, mit denen<br />

sichergestellt werden kann, dass die<br />

Unternehmung die richtige Richtung<br />

einschlägt. Dazu werden die Konzepte<br />

des „Minimal Viable Products” und<br />

das „Innovation Accounting” erläutert.<br />

■ Accelerate: Wenn die richtige Richtung<br />

eingeschlagen ist, geht es darum, die<br />

Geschwindigkeit zu erhöhen. In diesem<br />

Kapitel wird beschrieben, an welchen<br />

Stellschrauben gedreht werden kann.<br />

Teil 1: Die Vision<br />

Der Entrepreneur ist verantwortlich für die<br />

Vision der Unternehmung und leitet daraus<br />

eine Strategie ab, aus der sich wiederum die<br />

Produktdefinition ergibt. Er hat die Auf -<br />

gabe, die Unternehmung durch Chaos und<br />

Unsicherheit zu lenken, indem er zum richtigen<br />

Zeitpunkt Entscheidungen trifft, die<br />

messbar und nachvollziehbar sind. Diese<br />

Eric Ries<br />

The Lean<br />

Startup:<br />

How Today's<br />

Entrepreneurs<br />

Use Continuous<br />

Innovation to<br />

Create Radically<br />

Successful Businesses<br />

ACrown Business, September 2011<br />

336 Seiten (auf englisch)<br />

18,80 € (Kindle 13,32 €)<br />

ISBN-13: 978-0307887894<br />

Entscheidungen sind im Modell des Autors<br />

entweder Pivots, d. h. radikale und mutige<br />

Änderungen in der Strategie (während die<br />

Vision beibehalten wird), oder aber die<br />

Erkenntnis, die aktuelle Richtung beizubehalten<br />

und nur am Produkt zu tunen<br />

(Preserve).<br />

Die Entscheidung wird am Ende der<br />

Feedback-Schleife Build-Measure-Learn<br />

getroffen (ein Durchlauf durch die BML-<br />

Schleife wird im Folgenden auch als<br />

Experiment bezeichnet). Der Lernerfolg<br />

muss sich dabei in Metriken widerspiegeln,<br />

die demonstrieren, dass das Team wertvolle<br />

Erkenntnisse über die aktuelle Lage des<br />

Startups und dessen Fortschritt herausgefunden<br />

hat. Ries nennt das „Validated<br />

Learning” – für ihn handelt es sich dabei<br />

um das wichtigste Fortschritt-Messgerät<br />

des Startups. Analog zum Lean-<br />

Management geht es auch beim Lean-<br />

Startup-Modell um die Vermeidung von<br />

Verschwendung: Es geht darum, dass alles,<br />

was zu keinem nachvollziehbaren<br />

Lerneffekt führt, Ver schwendung ist.<br />

Um einen Lerneffekt erreichen zu können,<br />

muss ein Build – das Minimal Viable<br />

Product (MVP) – erstellt und potenziellen<br />

Kunden zur Verfügung gestellt werden.<br />

Gemeint ist dasjenige Produkt, mit dem in<br />

minimaler Zeit die komplette BML-Schleife<br />

durchlaufen werden kann und das minimale<br />

Zeit zur Herstellung gekostet hat – jedes<br />

Feature zu viel ist Verschwendung. Es muss<br />

dabei für den Kunden natürlich einen<br />

Mehrwert schaffen.<br />

Teil 2: Der Weg<br />

Der zweite Teil beschäftigt sich mit der<br />

Frage, wie die Unternehmung in die richtige<br />

Richtung gesteuert werden kann. Die<br />

Vision und damit auch die Strategie werden<br />

auf Grundlage einiger weniger Grund -<br />

voraussetzungen abgeleitet. Die Grund -<br />

voraussetzungen werden in Hypo thesen<br />

zerlegt, um sie dann in der Build-Measure-<br />

Learn-Schleife mit Hilfe eines MVPs zu<br />

testen.<br />

Von der Vision bis zur Auslieferung an<br />

den Kunden sind viele Abteilungen oder<br />

Teams eines Unterneh mens beteiligt. Eine<br />

Optimierung lokal in einer Abteilung führt<br />

in der Regel nicht dazu, dass die Schleife<br />

insgesamt schneller durchlaufen werden<br />

kann. Es ist daher essentiell, das System als<br />

Ganzes zu be trachten. Ries schlägt die<br />

Verwendung eines Kanban-Systems vor. In<br />

dem System wird eine beschränkte Menge<br />

von gleichzeitigen Experimenten durchgeführt,<br />

diese dann aber konsequent vom<br />

Anfang bis zum Ende, bis der Lerneffekt<br />

sichergestellt ist. Auf diese Weise werden<br />

der Fortschritt und der Erfolg an den<br />

Lernprozess gehängt und nicht an das<br />

Erstellen von Features.<br />

Bevor das MVP gebaut wird, muss festgelegt<br />

werden, wie eine mögliche Metrik<br />

zum validierten Lernen aussehen soll,<br />

damit diese im Rahmen des Innovations-<br />

Controllings kontinuierlich gemessen werden<br />

kann. Ziel dieses Controllings ist es,<br />

Transparenz im Unternehmen zu schaffen<br />

und dem Entrepreneur eine Ent schei -<br />

dungsgrundlage für eine grundlegende<br />

Richtungsänderung (Pivot) bzw. für das<br />

Beibehalten der eingeschlagenen Richtung<br />

zu geben.<br />

Bei der Erstellung der Metriken muss<br />

darauf geachtet werden, keine kosmetischen<br />

Zahlen (Vanity Metrics) zu verfolgen,<br />

40 41


uchbesprechung<br />

Experimente initialisiert werden. Die<br />

Plattform muss dafür sorgen, dass die<br />

Gesamtun terneh mung geschützt bleibt,<br />

auch wenn ein MVP ausgespielt wird, das<br />

qualitativ nicht der Firmenkultur entspricht.<br />

Zudem muss sie sicherstellen, dass<br />

Ergebnisse und Inno vationen offen (im<br />

Unternehmen) kommuniziert werden und<br />

nicht der Eindruck entsteht, dass niemand<br />

wissen darf, was dort passiert. Eris Ries<br />

listet im Detail auf, wie eine solche<br />

„Innovation Sandbox” aussehen könnte.<br />

Abb. 1: Build-Measure-Learn-Continuous-Innovation (Abdruck mit freundlicher<br />

Genehmigung von Dan Martell).<br />

sondern Metriken, die vollständig verstanden,<br />

für jeden einsehbar und möglichst einfach<br />

verständlich sowie nachprüfbar und<br />

nachvollziehbar sind. Die Ergebnisse des<br />

Innovations-Controllings werden schließlich<br />

für den Abschluss der BML-Schleife<br />

verwendet. Zu diesem Zweck werden<br />

regelmäßig Pivot-or-Preserve-Meetings<br />

abge halten, in denen anhand der aktuellen<br />

Metriken die entsprechende Entscheidung<br />

getroffen wird.<br />

Teil 3: Das Tempo<br />

Sobald das Startup in die richtige Richtung<br />

läuft, geht es darum, die Geschwindigkeit<br />

kontinuierlich zu erhöhen. Die Beschleu -<br />

nigung wird durch vier Elemente erreicht:<br />

■ Geringe Paketgrößen: Die BML-<br />

Feedback-Schleife wird umso schneller<br />

durchlaufen, je kleiner das Experiment<br />

ist. Aus der Kanban-Methode ist zudem<br />

bekannt, dass Tasks eine Prozesskette<br />

schneller durchlaufen, wenn der<br />

Prozess nicht nach dem Push- sondern<br />

nach dem Pull-Prinzip funktioniert.<br />

Beim Lean-Startup-Modell steht am<br />

Anfang die aus der Strategie abgeleitete<br />

Hypothese, die es zu überprüfen gilt.<br />

Dazu wird zunächst festgelegt, was<br />

beim Experiment gelernt werden soll<br />

(Learn), wie der Lernerfolg gemessen<br />

wird (Measure) und welches MVP aus<br />

diesem Zweck gebaut werden muss<br />

(Build).<br />

■ Identifikation und Tuning des Wachs -<br />

tums motors: Damit der Entrepreneur<br />

durch seine Entscheidungen Wachstum<br />

herbeiführen kann, müssen die Wachs -<br />

tumsmotoren identifiziert werden. Ries<br />

führt beispielhaft einige Wachstums -<br />

motoren auf und erläutert, aus welchen<br />

Quellen diese gespeist werden. Um die<br />

Komplexität gering zu halten, ist es<br />

günstig, sich auf einen Motor zu konzentrieren<br />

und die Priorisierungen auf<br />

das Tuning dieses Motors abzustimmen.<br />

■ Aufbau einer adaptiven Organisation:<br />

Die größte Herausforderung stellt die<br />

Notwendigkeit dar, das Lean-Startup-<br />

Modell abteilungsübergreifend zu<br />

implementieren. Dies erfordert ein<br />

generelles Umdenken aller Beteiligten,<br />

weshalb Ries in diesem Zusammen -<br />

hang entsprechende Trainings pro -<br />

gramme empfiehlt.<br />

■ Bereitstellung einer Innovationsum -<br />

gebung für das Team: Ein Team benötigt<br />

drei Dinge, um Innovationen vorantreiben<br />

zu können: Beschränkte, aber<br />

gesicherte Ressourcen (ein Überfluss an<br />

Mitteln ist ebenso wenig hilfreich, wie<br />

ein Mangel). Die Unabhängigkeit,<br />

Entscheidungen treffen zu können und<br />

das Business voranzutreiben (wenn<br />

ständig Approvals der Geschäfts -<br />

führung eingeholt werden müssen, wird<br />

Kreativität erstickt). Ein persönliches<br />

Interesse am Ergebnis (die beteiligten<br />

Personen müssen sichtbar mit dem<br />

Erfolg der Unternehmung verbunden<br />

sein).<br />

Ist dieser Rahmen aufgespannt, kann eine<br />

Plattform („Sandbox”) für die innovativen<br />

Epilog<br />

Der Autor fasst im vorletzten Kapitel zu -<br />

sammen, worum es ihm neben der<br />

Steigerung der Erfolgsrate innovativer<br />

Produktentwicklung in seinem Lean-<br />

Startup-Movement geht: um die Vermei -<br />

dung von Zeitverschwendung. „Es gibt<br />

nichts nutzloseres, als mit großartiger<br />

Effizienz Dinge zu tun, die überhaupt nicht<br />

getan werden brauchen”, zitiert er Peter<br />

Drucker. Lokale Effizienzsteigerung ist<br />

nahezu sinnlos, wenn nicht das Gesamt -<br />

system optimiert wird. Ein Produkt zu bauen,<br />

ohne sich vorher zu überlegen, wie man<br />

den Erfolg messen will bzw. was man daraus<br />

lernen möchte, ist Zeitver schwen dung.<br />

Fazit<br />

Der Aufbau des Buchs erschließt sich dem<br />

Leser erst auf den zweiten Blick. Durch die<br />

Zahl an kurzweiligen Fallstudien (beispielsweise<br />

Groupon und Dropbox) geht auf der<br />

einen Seite häufiger der rote Faden verloren.<br />

Auf der anderen Seite führt das dazu,<br />

dass immer wieder Bezug genommen werden<br />

muss auf Methoden und Artefakte, die<br />

erst im Laufe des Buchs im Detail erläutert<br />

werden. Hier wäre eventuell eine Trennung<br />

zwischen Methodik und Fallstudien gut<br />

gewesen.<br />

Die Stärken der Lean-Startup-Methode<br />

liegen darin, bekannte und bewährte<br />

Verfahren (Lean Thinking, Systemtheorie,<br />

minimale Produktinkremente usw.) so zu<br />

bündeln, dass sich ein Framework zur<br />

systematischen und kontinuierlichen Inno -<br />

vationsentwicklung ergibt. Das hilft auf der<br />

einen Seite den kreativsten Innovatoren<br />

dabei, ein nachhaltiges Business aufzubauen,<br />

und gibt auf der anderen Seite den<br />

Konzernabteilungen die Hoffnung, dass<br />

auch dort wieder Entrepreneur-Wind<br />

wehen kann. Vorausgesetzt man begibt sich<br />

auf den Weg, eine adaptive Organisation zu<br />

entwickeln, in der gemeinsam abteilungsübergreifend<br />

innovative Experimente<br />

gestartet werden.<br />

■<br />

1/2012


fachartikel<br />

mehr zum thema:<br />

www.oasis-open.org<br />

die autoren<br />

LIVING SOA:<br />

EVOLUTION DES BETRIEBS VON<br />

SOA-BASIERTEN LÖSUNGEN<br />

Als vor einigen Jahren die Evolution hin zu serviceorientierten Architekturen (SOAs) begann,<br />

war eines der wesentlichen Argumente die höhere Flexibilität von Lösungen auf dieser Basis. In<br />

diesem Artikel wird aufgezeigt, welche Auswirkungen die versprochene Flexibilität von SOA auf<br />

den IT-Betrieb hat und ob die Flexibilität tatsächlich ausgenutzt werden kann. Werden Services<br />

mit gleicher Leistung, aber z. B. auf der Basis unterschiedlicher Technologien ausgetauscht,<br />

kann dies auch den Wechsel der Werkzeuge erfordern, was einen erhöhten Aufwand beim<br />

Betrieb von SOA-basierten Lösungen zur Folge hat. In dem Artikel wird gezeigt, welchen neuen<br />

Anforderungen Betriebswerkzeuge und Services gerecht werden müssen<br />

Dr. Veit Köppen<br />

(E-Mail: veit.koeppen@ovgu.de)<br />

ist geschäftsführender Leiter des Center for Digital<br />

Engineering an der Otto-von-Guericke-Universität<br />

Magdeburg und Assistent im Institut für<br />

Technische und Betriebliche Informationssysteme.<br />

SOA und Flexibilität<br />

Mit der Umsetzung des Konzepts service -<br />

orientierter Architekturen (SOA) ergeben<br />

sich für den Betrieb derartiger IT-Lösungen<br />

neue Herausforderungen. Während Client/<br />

Server-basierte IT-Lösungen in ihrem technischen<br />

Aufbau und ihrer Implementierung<br />

eher stabil und systemorientiert sind, erfordert<br />

die Serviceorientierung neue Werk -<br />

zeuge und Ansätze für den Betrieb der IT-<br />

Lösungen. Anders als beim Übergang von<br />

monolithischen Systemen zu Client/Server-<br />

Architekturen ist die Entwicklung zu SOA<br />

evolutionär. Die Entscheidung, ob eine vorliegende<br />

Architektur bereits den SOA-<br />

Prinzipien genügt, ist daher nicht immer<br />

eindeutig. Gleichzeitig entwickelt sich auch<br />

die Definition von SOA weiter. Während<br />

man anfangs die Definition von SOA eher<br />

mittels der zugehörigen technischen Be -<br />

stand teile herausstellte, werden inzwischen<br />

dafür die Eigenschaften der Architektur<br />

herangezogen.<br />

Unter einer SOA versteht man eine<br />

Systemarchitektur, die vielfältige, verschiedene<br />

und eventuell inkompatible Metho -<br />

den oder Applikationen als wiederverwendbare<br />

und offen zugreifbare Dienste<br />

(Services) repräsentiert und dadurch eine<br />

plattform- und sprachunabhängige Nut -<br />

zung und Wiederverwertung ermöglicht.<br />

Die Organization for the Advancement of<br />

Structured Information Standards (OASIS)<br />

definiert den Begriff Services als einen<br />

Mechanismus, der den Zugang zu einer<br />

oder mehreren Leistungen ermöglicht,<br />

wobei der Anschluss der Services durch<br />

vorbestimmte Schnittstellen unterstützt<br />

und konsistent mit den Bedingungen und<br />

Methoden gemäß der Spezifikation in der<br />

Service-Beschreibung ausgeführt wird (vgl.<br />

[Oas06]). Die folgenden vier Bestandteile<br />

sind für SOA charakteristisch:<br />

■ das Applikations-Frontend<br />

■ die Services<br />

■ das Service-Repository<br />

■ der Service-Bus<br />

Ein Service besteht aus einem Auftrag, einem<br />

oder mehreren Interfaces und der<br />

Implementierung. Das Service-Repository<br />

umfasst alle Informationen, die benötigt werden,<br />

um Services entsprechend den geänderten<br />

Anforderungen auszuwählen oder durch<br />

gleichwertige Services auszutauschen. Der<br />

Service-Bus dient dem Datenaustausch zwischen<br />

Services. Gegen über dem direkten<br />

Datenaustausch zwischen Services hat der<br />

Service-Bus den Vorteil, dass er heterogene<br />

Technologien in Schnittstellen und Kom -<br />

munikation integrieren kann. Daten können<br />

servicespezifisch und zentralisiert im Service-<br />

Bus aufbereitet und verteilt werden. Dadurch<br />

reduziert sich eine Mehrfachbear beitung<br />

gleicher Daten.<br />

Nicht zuletzt dient das einheitliche<br />

Appli kations-Frontend als Benutzerzugang<br />

zu der SOA-Lösung. Komplexität und<br />

Technik der Realisierung bleiben dem<br />

Benutzer verborgen. Auf technische oder<br />

inhaltliche Erfordernisse kann durch den<br />

Austausch von Services reagiert werden,<br />

ohne dass diese Änderungen für den<br />

Benutzer in der Oberfläche oder Hand -<br />

habung sichtbar werden.<br />

Ein Service kann aus einer Aktivität<br />

bestehen oder sich aus mehreren<br />

Aktivitäten zusammensetzen. Ausschlagge -<br />

bendes Kriterium ist letztlich die Definition<br />

von Services, die sich insbesondere auf die<br />

Austauschbarkeit und Wiederverwend -<br />

barkeit der Dienste bezieht. Der Umfang<br />

eines Services wird als Granularität<br />

bezeichnet (vgl. [Mel08]). Es gibt keine<br />

zwingende Granularität von Services, aus<br />

denen ein Prozess zusammengesetzt wird.<br />

Liane Will<br />

(E-Mail: liane.will@sap.com)<br />

ist Chief Service Architect im Support der SAP AG.<br />

Zu ihren Schwerpunkten gehört die Optimierung<br />

von Systembetrieb und Applikationslebenszyklus.<br />

Als Promotionsstudentin befasst sie sich mit neuen<br />

Herausforderungen im IT-Betrieb und deren<br />

Bewältigung beim Einsatz von SOA.<br />

Der Umfang eines Service wird beim<br />

Entwurf der SOA-basierten Lösung festgelegt.<br />

Werden Services zu fein granular<br />

gewählt, erhält man eine hohe Anzahl von<br />

Services, was die Verwaltung und Übersicht<br />

erschwert. Wird ein Service dagegen zu<br />

umfassend gefasst, erschwert dies die<br />

Austauschbarkeit. Die Granularität ist so<br />

zu wählen, dass der fachliche Zusam men -<br />

hang zu den Teilaktivitäten eines Ge -<br />

schäfts prozesses erkennbar ist.<br />

Um Services austauschen zu können,<br />

müssen zusätzliche Informationen verfügbar<br />

sein. Im Laufe der Entwicklung hat sich<br />

bereits gezeigt, dass Services auch nichtfunktionalen<br />

Anforderungen gerecht werden<br />

müssen, um insbesondere Service-Bus<br />

und -Repository entsprechend zu bedienen.<br />

Bisher unzureichend untersucht ist, welche<br />

Anforderungen sich für den laufenden<br />

Betrieb an SOA ergeben, wenn die viel<br />

beschriebene Flexibilität SOA-basierter<br />

Lösungen wirklich in Anspruch genommen<br />

wird. Durch die Möglichkeit, Services und<br />

die Zusammensetzung eines Prozesses aus<br />

Services zu verändern, ohne die Benutzer<br />

mit diesen Änderungen zu konfrontieren,<br />

kann die Flexibilität der Lösung maßgeblich<br />

erhöht werden. Für den Begriff<br />

42 43


fachartikel<br />

„Flexibilität” gibt es jedoch keine einheitliche<br />

Definition. J.S. Evans hat die verschiedenen<br />

Begriffe und Verwendungen in Bezug<br />

auf Flexibilität in der Literatur zusammengetragen,<br />

normiert und als Matrix zusam -<br />

mengestellt (vgl. [Eva91]). Er unterscheidet<br />

drei Kriterien der Flexibilität:<br />

Unternehmensschicht<br />

Benutzer<br />

RFID Mobile Geräte Webbrowser<br />

Rendering<br />

Office<br />

Werkzeuge<br />

■ Yielding to pressure – als Fähigkeit, auf<br />

externen Druck zu reagieren und sich<br />

anzupassen.<br />

■ Capacity for new situation – als die<br />

Menge von möglichen Anpassungen<br />

auf bevorstehende sich ändernde Be -<br />

dingungen und Wünsche.<br />

■ Suspectibility – als Schwierigkeitsgrad,<br />

Modifikationen durchzuführen.<br />

In diesen Kriterien zeigen SOA-basierte<br />

Lösungen ihre Stärken. Die Flexibilität<br />

SOA-basierter Lösungen beruht auf ihrem<br />

Potenzial, Services während der Laufzeit<br />

auszutauschen oder anzupassen, um auf veränderte<br />

Anforderungen aus der Umwelt zu<br />

reagieren. Darauf richten Software hersteller<br />

ihre Produkte aus. Vorteile ergeben sich insbesondere<br />

für die Nutzer einer SOA durch<br />

die schnellere Anpassungs fähigkeit auf<br />

Veränderungen und die Wiederver wend -<br />

barkeit von Services (vgl. [Sof10]). Tat -<br />

sächlich wird dieses Potenzial von den<br />

Betreibern und Anwendern von SOA nur<br />

verhalten genutzt. Es gilt das alte Prinzip:<br />

„Never touch a running system”. Im Folgen -<br />

den zeigen wir, welche Anfor derungen sich<br />

für den Betrieb ergeben, wenn die Flexi -<br />

bilität durch den Austausch von Services<br />

wirklich ausgeschöpft werden soll.<br />

Systembetrieb versus<br />

Lösungsbetrieb<br />

Wenn man einen Service in einer komplexen<br />

SOA-basierten Lösung ändern oder ersetzen<br />

will, müssen bestimmte Vorausset zungen<br />

erfüllt sein. Zwei Services können nur dann<br />

gegeneinander ausgetauscht werden – ohne<br />

einen bestehenden Geschäfts prozess zu stören<br />

–, wenn sie hinsichtlich der<br />

Geschäftslogik, der Funktionalität, des<br />

Datenein- und -ausgangs sowie der Inter -<br />

faces identisch sind. Ähnlich verhält es sich,<br />

wenn ein bereits genutzter und innerhalb<br />

eines Geschäftsprozesses integrierter Service<br />

geändert werden soll. Der Prozess ablauf<br />

muss erhalten werden. Um den Ablauf zu<br />

gewährleisten, können Änderungen nur im<br />

Rahmen gleicher Eingangs daten und eines<br />

gleichen Ausgangs datenformats erfolgen.<br />

Andernfalls würde dies auch Änderungen an<br />

Prozessschicht<br />

Zwischenschicht- Unterstützende Services wie Technologie Gateways, Adapter<br />

Basisschicht- Grundlagen der SOA Business Logik und Datenmanagement<br />

Abb. 1: Aufbau einer SOA-basierten Lösung am Beispiel eines<br />

Kundenauftragsprozesses.<br />

Vorgänger- und Nachfolge-Services erfordern,<br />

was den Aufwand erhöht.<br />

Die Geschäftsprozesslogik muss in jedem<br />

Fall gewahrt bleiben bzw. darf nur im<br />

Rahmen der Vorgaben verändert werden.<br />

Ein Service kann aber auch innerhalb weiterer,<br />

anderer Geschäftsprozesse genutzt<br />

werden. Hier spielt die bereits erwähnte<br />

Granularität eines Service eine Rolle. Ist ein<br />

Service zu komplex bzw. leistet er extrem<br />

unterschiedliche Aktivitäten, wird man<br />

kaum einen Service mit vergleichbaren<br />

Leistungsparametern finden. Somit ist der<br />

Service faktisch nicht austauschbar. Genau<br />

diese Situation findet sich heute häufig in<br />

der Praxis. Es stellt sich die Frage, inwieweit<br />

Softwarehersteller überhaupt interessiert<br />

sind, ihre Services austauschbar zu<br />

halten. Dadurch werden jedoch Rahmen -<br />

bedingungen geschaffen, die die Flexibilität<br />

von SOA-basierten Lösungen ungerechtfertigt<br />

einschränken. Ebenso darf es, z. B. für<br />

die verwendete Technologie eines Service,<br />

keine Beschränkungen geben, d. h. ein<br />

Service in einer SOA-basierten Lösung<br />

kann durch einen anderen Service mit<br />

anderer Technologie ausgetauscht werden.<br />

Administrative Aufgaben sind bei heutigen<br />

Lösungen herstellerspezifisch geprägt. Die<br />

aktuell beim Betrieb verwendeten Werk -<br />

zeuge sind zudem noch häufig den<br />

Client/Server-basierten Lösungen verhaftet.<br />

Das heißt, der Betrieb basiert auf:<br />

■ Kunden- bzw. Outsource-Verantwor -<br />

tung für den Betrieb<br />

Service<br />

Repository<br />

Metadaten zu<br />

Services<br />

Service Bus<br />

Interface<br />

Management<br />

zwischen<br />

heterogenen<br />

Services<br />

■ system- und technologiespezifischen<br />

administrativen Werkzeugen,<br />

■ system- und technologiespezifischen<br />

Aktionen und Qualitätskennzahlen,<br />

■ system- und technologiespezifischem<br />

Wis sen und Erfahrungen, um erstes<br />

und zweites einzusetzen und erfüllen zu<br />

können.<br />

Mit dem Übergang zu SOA muss sich der<br />

systemorientierte Ansatz hin zu einem<br />

lösungsorientierten Ansatz verschieben.<br />

Unterschiede zwischen Client/Server- und<br />

SOA-basiertem Betrieb<br />

Jeder Service innerhalb der SOA muss die<br />

Anforderungen von Service-Repository und<br />

Service-Bus bedienen. Ein wesentlicher<br />

Vorteil für die Endbenutzer solcher SOAbasierten<br />

Lösungen ist die Entkopplung<br />

von technischer Implementierung und<br />

Geschäftsfunktionalität. Es besteht keine<br />

Notwendigkeit für den Benutzer, die eingesetzten<br />

technischen Komponenten oder die<br />

Hardware zu kennen. Das kann aus<br />

Betriebssicht ein Nachteil sein. Wenn der<br />

Endbenutzer eine Störung seines Geschäfts -<br />

prozesses feststellt, ist er nicht in der Lage,<br />

technische Informationen zur Unterstüt -<br />

zung der Ursachenanalyse zu geben.<br />

Abbildung 1 zeigt am Beispiel eines<br />

Kundenauftragsprozesses in ARIS-No -<br />

tation den Aufbau einer SOA-Lösung. Der<br />

Benutzer berichtet über einen Ausfall des<br />

Prozesses oder über Probleme beim Anle -<br />

gen der Verkaufsorder. In Client/Server-<br />

1/2012


fachartikel<br />

basierten Lösungen wird mit einer<br />

Systemanalyse begonnen, um die verursachende<br />

technische Komponente zu ermitteln.<br />

Das ist praktikabel, weil die Anzahl<br />

der technischen Komponenten in Client/-<br />

Server-Architekturen eher niedrig ist. In<br />

vielen Fällen benennt der Benutzer bereits<br />

das technisch fehlerhaft arbeitende System.<br />

SOA-basierte Lösungen unterscheiden sich<br />

von dieser Vorgehensweise maßgeblich.<br />

Dem Benutzer sind der technische Aufbau<br />

und insbesondere technische Komponenten<br />

und Systeme verborgen. Er kann die verursachende<br />

Komponente nicht benennen.<br />

Versucht man, die aus Client/Serverbasierten<br />

Lösungen bekannten systemorientierten<br />

Methoden zu übertragen, geht<br />

der lösungsorientierte Ansatz von SOA verloren.<br />

Würde man dies dennoch versuchen,<br />

müsste in einem ersten Schritt analysiert<br />

werden, welche technische Komponente<br />

die Störung verursacht, bevor überhaupt<br />

mit der Analyse der Störungsursache be -<br />

gonnen werden kann. Das führt in der<br />

Praxis dazu, dass nach dem Ausschluss -<br />

verfahren gearbeitet wird. Es werden die<br />

Experten der jeweiligen technischen<br />

Komponenten herangezogen und jeder<br />

analysiert seine technische Komponente,<br />

um eine Störung auszuschließen. Je mehr<br />

Technologien in der SOA-basierten Lösung<br />

eingesetzt werden, desto höher ist die<br />

Anzahl der benötigten Experten und der<br />

Aufwand steigt. Zudem werden häufige<br />

Wechsel der Bearbeiter eine Störung wahrnehmen,<br />

da das Ausschlussverfahren häufig<br />

nicht zweifelsfrei funktioniert. Die<br />

Störung wird langsam „eingekreist”.<br />

Um das zu vermeiden, muss die systemorientierte<br />

Analyse durch einen lösungsund<br />

serviceorientierten Ansatz mit entsprechenden<br />

Werkzeugen zur Analyse abgelöst<br />

werden. In unserem Beispiel muss die<br />

Bearbeitung des Kundenauftrags als<br />

Prozess in seiner Gesamtheit erfasst und<br />

analysiert sein. Davon ausgehend muss in<br />

einem ersten Schritt der für die Störung verantwortliche<br />

Service innerhalb des Pro -<br />

zesses ermittelt werden. Nicht das System<br />

oder die technische Komponente ist die zu<br />

analysierende Einheit, sondern der Service.<br />

Dafür werden neue Werkzeuge benötigt.<br />

Wenn SOA-basierte Lösungen analog zu<br />

Client/Server-basierten Lösungen betrieben<br />

werden, hat das weitreichende Folgen:<br />

■ Verlust der Vorteile von SOA.<br />

■ Steigende Betriebskosten mit der An zahl<br />

integrierter Services und Tech nologien.<br />

■ Gefährdung allgemeiner Qualitäts -<br />

Systemadministration in Client/-<br />

Server-basierten Lösungen<br />

Technologie- und systemorientierte Werkzeuge.<br />

Systemorientierte Aktionen, Einheiten und Begriffe.<br />

Einsatz der Werkzeuge und Durchführung<br />

der Aktivitäten erfordern systemund<br />

technologiespezifisches Know-how .<br />

kriterien, wie Stabilität, Verfügbarkeit<br />

und Performance.<br />

Tabelle 1 stellt den Client/Server-basierten<br />

und den SOA-basiertem Ansatz aus Be -<br />

triebssicht einander gegenüber.<br />

Anforderungen des IT Service-<br />

Managements<br />

Welche Anforderungen und Prozesse für den<br />

IT-Service und -Support bestehen und wie sie<br />

geeignet, aber herstellerunabhängig zu implementieren<br />

sind, beschreibt die IT<br />

Infrastructure Library (ITIL) (vgl. [Off07]).<br />

ITIL formuliert Good Practices bei der<br />

Etablierung und Durchführung von IT-<br />

Service-Prozessen. Es ist darauf zu achten,<br />

dass ein Service im ITIL-Sinne als Dienst -<br />

leistung zu verstehen ist und nicht gleichzusetzen<br />

ist mit Services als Teil der SOA. ITIL<br />

definiert eine Dienstleistung als einen Service,<br />

durch den ein Kunde einen Wert erlangt, in<br />

dem ihm Ergebnisse bereitgestellt werden,<br />

die der Kunde erreichen will, ohne selbst<br />

Eigentümer der spezifischen Kosten und<br />

Risiken der Erbringung zu sein. Das an dieser<br />

Stelle im Mittelpunkt stehende tägliche<br />

Betriebsgeschäft wird in ITIL in der Phase<br />

„Operation” allgemein beschrieben. Zum<br />

Lebenszyklus gehört auch das permanente<br />

Streben nach Optimierung, sodass sich an die<br />

Phase „Operation” die Phase „Continual<br />

Service Improvement” anschließt, die zum<br />

erneuten Beginn des Lebenszyklus führen<br />

kann. Die im letzten Abschnitt beschriebene<br />

Situation einer Störung und deren<br />

Ursachenanalyse wären dem „Incident and<br />

Problem Management” zuzurechnen.<br />

Change-Management<br />

Anhand des Prozesses Change-Manage -<br />

ment aus der Transitionsphase zeigen wir,<br />

wie sich die Anforderungen an diesen<br />

Lösungsadministration in SOA-basierten<br />

Lösungen<br />

Vereinheitlichte zentrale Werkzeuge<br />

mit Fokus auf der Lösung.<br />

Service- und lösungsorientierte Aktivitäten,<br />

Einheiten und Begriffe.<br />

Vereinheitlichung der lösungs- und serviceorientierten<br />

Administration gestattet den Betrieb ohne<br />

tiefgreifende Kenntnis von Service-Technologie<br />

und -Spezifika.<br />

Tabelle 1: Gegenüberstellung der Anforderungen in Client/Server- und SOA-basierten<br />

Lösungen.<br />

Prozess beim Betrieb von SOA-basierten<br />

Lösungen ändern. Aus Sicht von ITIL<br />

bezieht sich ein Change auf jegliche Art von<br />

Änderungen an der Dienstleistung eines<br />

Providers, was auch Änderungen an Pro -<br />

grammen, technischen Komponenten oder<br />

auch Systemkonfigurationen beinhaltet.<br />

Abbildung 2 zeigt den Change-Manage -<br />

ment-Process, wie er für eine Standard -<br />

änderung von ITIL vorgeschlagen wird.<br />

Die Qualität des Change-Management-<br />

Process ist von wesentlicher Bedeutung für<br />

die kontinuierliche Evolution einer Lösung.<br />

Die in ITIL beschriebenen Good Practices<br />

für diesen Prozess können auf SOA-basierte<br />

Lösungen übertragen werden. Der Prozess an<br />

sich bleibt erhalten – inklusive seiner<br />

Qualitätskriterien. Die eigentliche Heraus -<br />

forderung entsteht bei der technischen<br />

Umsetzung einer Änderung, da diese selbst<br />

aus mehreren Änderungen bestehen kann,<br />

die mehrere, abhängige Services gleichzeitig<br />

betreffen. Damit sind eine Synchronisation<br />

der einzelnen Änderungen und eine serviceübergreifende<br />

Protokol lierung erforderlich.<br />

Es ergeben sich drei wesentliche neue<br />

Anforderungen im SOA-Umfeld:<br />

■<br />

■<br />

■<br />

Zentrale Kontrolle und Auswertung des<br />

Change-Management-Process (lösungs-<br />

orientierte Protokollierung).<br />

Lösungsorientiertes Deployment von<br />

Changes (Synchronisation von Changes<br />

über Services hinweg).<br />

Deployment von Changes, unabhängig<br />

von der eigentlichen Technologie eines<br />

Service.<br />

Bisher ist es noch immer üblich, dass technische<br />

Systeme und Services mit einem eigenen<br />

und häufig herstellerspezifischen De -<br />

ployment-Werkzeug einhergehen. Dadurch<br />

ist es kaum möglich, komplexe Changes zu<br />

realisieren, die die Synchronisation der dar-<br />

44 45


fachartikel<br />

Request for<br />

Change<br />

Dokumentation<br />

&Review<br />

Auswirkungen&<br />

Risiken bewerten<br />

Priorisieren<br />

Planung der<br />

Durchführung<br />

Genehmigung<br />

Implementierung<br />

überwachen<br />

Review&<br />

Abschluss<br />

in enthaltenden Changes an mehr als einem<br />

Service verschiedener Hersteller erfordern.<br />

Tatsächlich ist ein einheitliches Interface<br />

erforderlich, das alle Services einer SOA<br />

entsprechend unterstützt. Nur so kann mit<br />

Hilfe eines zentralen Werkzeugs, einem<br />

Cockpit, der Change-Management-Process<br />

lösungsorientiert gesteuert und realisiert<br />

werden. Wird ein Service ausgetauscht,<br />

muss die Unterstützung dieses Cockpits<br />

gewährleistet sein, um den Change-<br />

Management-Process nicht zu stören.<br />

Analyse der aktuellen Situation<br />

In der Praxis wurde der Bedarf neuer Werk -<br />

zeuge zum Teil erkannt. Einige Hersteller<br />

von Softwarebausteinen haben für SOAbasierte<br />

Lösungen eigene Konzepte entwi -<br />

ckelt, wie zum Beispiel „HP OpenView”<br />

oder „HP Quality Center”, „IBM Tivoli”<br />

oder „SAP Solution Manager 7.x”. Allen<br />

gemeinsam ist der Ansatz, verschiedene<br />

technische Komponenten oder Services zentral<br />

zu überwachen und zu administrieren.<br />

Allerdings wird dazu jeweils ein spezielles<br />

Interface entwickelt, um neue Services auf<br />

Basis neuer Technologien zu integrieren.<br />

Somit kann eine andere Technologie nur<br />

eingebunden werden, wenn zuvor ein<br />

Interface entwickelt wurde.<br />

Jedes Werkzeug hat seine Stärken, insbesondere<br />

beim Management der herstellereigenen<br />

Produkte. Bisher wird jedoch ein<br />

eher reaktiver Ansatz verfolgt. Erst wenn<br />

eine Komponente oder ein Service eingesetzt<br />

wird oder eine hinreichend große<br />

Arbeitsaufträge<br />

Arbeitsaufträge<br />

Change Schedule<br />

Abb. 2: Good Practices für den Standard-Change-Management-Process in ITIL.<br />

Verbreitung zu erwarten ist, werden<br />

Schnittstellen für die Überwachungs- und<br />

Administrationswerkzeuge entwickelt, um<br />

die komponenten- oder servicespezifischen<br />

Techniken, Protokolle, Kennzahlen und<br />

deren Messwerte in das Werkzeug einzubinden.<br />

Dabei bleibt es den technischen<br />

Komponenten selbst überlassen, was sie<br />

bereitstellen. Welche der bereitgestellten<br />

Methoden dann vom Administrations -<br />

werkzeug übernommen werden, ist eine<br />

weitere freie Entscheidung des Herstellers.<br />

Die Interpretation von Messwerten oder<br />

Protokollen und mögliche Reaktionen darauf<br />

erfordern jeweils Spezialkenntnisse des<br />

Administrators. Dadurch ist es unmöglich,<br />

eine SOA-basierte Lösung in ihrer Ge -<br />

samtheit zu analysieren und zu betreiben.<br />

Stattdessen wird dem Betreiber eine werkzeug-<br />

bzw. technologieorientierte Arbeits -<br />

weise aufgezwungen. Um jedoch von der<br />

Flexibilität von SOA profitieren zu können,<br />

muss der Betrieb weitestgehend unbeeinflusst<br />

von der verwendeten Technologie<br />

einzelner Services bleiben. Dies ist nur<br />

durch ein zentrales Betriebscockpit auf<br />

Basis einheitlicher Methoden, Messwerte,<br />

Aktionen usw. möglich. Für einige der<br />

Anforderungen kann man allgemeine<br />

Adapter entwickeln, die jeder Service<br />

bedienen kann. Andere Anforderungen<br />

werden nur erfüllt, wenn eine Art Standard<br />

für nicht-funktionale Eigenschaf ten entwickelt<br />

wird, die jeder Service erfüllen<br />

muss. Abbildung 3 skizziert die Inte gration<br />

eines Services aus unserem Kun den -<br />

auftragsprozess, inklusive seiner Erwei -<br />

terung um nicht-funktionale Eige nschaften<br />

zur Unterstützung des zentralen Betriebs -<br />

cockpits.<br />

Bereits in die Service-Entwicklung muss<br />

ein solches Regelwerk einbezogen werden.<br />

Ziel muss es sein, eine Beschreibung eines<br />

zentralen Administrationswerkzeugs auf<br />

Basis der Standardisierung der nicht-funktionalen<br />

Eigenschaften von Services zu liefern.<br />

Zusammenfassung und<br />

Ausblick<br />

Der allgemeine Ansatz und die Qualitäts -<br />

kriterien im IT-Betrieb bleiben beim Übergang<br />

zu SOA-Lösungen identisch, jedoch<br />

muss die Umsetzung lösungs- und service -<br />

orientiert, statt system- und technologieorientiert<br />

erfolgen. Für jede Lösung können<br />

Qualitätskriterien unabhängig von ihrer<br />

Architektur definiert werden. ITIL liefert<br />

wiederverwendbare, allgemein gültige Be -<br />

schreibungen der Prozesse in der Gover -<br />

nance. ITIL kann somit auch weiterhin als<br />

Stan dardwerk dienen. Die Realisierung dieser<br />

Good Practices für SOA-basierte<br />

Lösungen und deren gewünschter Flexi -<br />

bilität erfordern jedoch eine Umstellung<br />

und Ent wicklung von lösungs- und serviceorientierten<br />

Werkzeugen zum Betrieb.<br />

Die lose Koppelung von Services innerhalb<br />

von SOA ist ein wesentlicher Unter -<br />

Standardisierte<br />

Bereitstellung von<br />

Informationen und<br />

Aktionen für den<br />

Betrieb<br />

Zentrales Betriebscockpit<br />

Abb. 3: Schematische Darstellung der Integration von Services mit dem zentralen<br />

Betriebscockpit.<br />

1/2012


fachartikel<br />

schied zum fixierten Aufbau von<br />

Client/Server-basierten Lösungen. Um das<br />

Potenzial der Flexibilität von SOA wirklich<br />

nutzen zu können, wird innerhalb von SOA<br />

ein weiterer Baustein – das zentrale<br />

Betriebs cockpit – benötigt. Dies erfordert<br />

auf Seite der Services eine Standardisierung<br />

von nicht-funktionalen Eigenschaften, die<br />

jeder Service aufweisen muss, um in eine<br />

SOA integriert zu werden. Diese<br />

Vereinheitlichung und Normalisierung ist<br />

erforderlich, um das erforderliche servicespezifische<br />

Wissen zu reduzieren.<br />

In diesem Artikel haben wir neue An -<br />

forderungen und Probleme angedeutet, um<br />

zu zeigen, dass neue Methoden erforderlich<br />

sind, um den Betrieb SOA-basierter<br />

Lösungen zu gewährleisten. Eine einfache<br />

Weiterentwicklung Client/Server-basierter<br />

Techniken ist nicht ausreichend. ■<br />

Literatur & Links<br />

[Eva91] J.S. Evans, Strategic Flexibility for<br />

high technology manoeuvres, in: Journal of<br />

Management Studies 1991<br />

[Mel08] I. Melzer, S. Eberhard, Service-orientierte<br />

Architekturen mit Web Services. Kon -<br />

zepte – Standards – Praxis, Spektrum Aka de -<br />

mischer Verlag 2008<br />

[Oas06] OASIS, Reference Model for Service<br />

Oriented Architecture, 2006, siehe:<br />

http://docs.oasis-open.org/soa-rm/v1.0/<br />

[Off07] Office of Governance Commerce,<br />

Information Technology Infrastructure Library<br />

Version 3 Core, Liwi Verlag 2007<br />

[Sof10] Software AG, What is the Business<br />

Value of SOA? Show It with KPIs, 2010, siehe:<br />

http://www.softwareag.com/de/images/SAG_SOA-<br />

KPI_WP_Oct10-web_tcm17-56981.pdf<br />

46 47


fachartikel<br />

mehr zum thema:<br />

http://www.hessen-it.de/mm/Hessen-IT_NEWS_0310.pdf<br />

der autor<br />

GEH MIR AUS DEM WEG!<br />

WAS MODELLIERUNGS-<br />

WERKZEUGE VON WHITE-<br />

BOARDS LERNEN KÖNNEN<br />

Viele grafische Editoren unterbrechen den Benutzer bei seiner Arbeit. Insbesondere UML-<br />

Modellierungswerkzeuge stören den Arbeitsfluss des Entwicklers mit Pop-Ups und der<br />

Notwendigkeit, in Werkzeugleisten herumzusuchen. Gleichwohl werden Softwarearchitekten<br />

nicht in Mausmetern bezahlt. Um die Bedienbarkeit von grafischen Benutzungsoberflächen zu<br />

verbessern, muss man die Menschen dabei beobachten, wie sie arbeiten. Die daraus resultierenden<br />

Erkenntnisse können den Arbeitsablauf dann aber auch erheblich beschleunigen.<br />

Prof. Albert Zündorf<br />

(E-Mail: zuendorf@cs.uni-kassel.de)<br />

leitet das Fachgebiet Softwaretechnik der<br />

Universität Kassel. Ausgehend vom Forschungs -<br />

projekt Fujaba unternimmt er seit über 15 Jahren<br />

Ausflüge in verschiedenste Bereiche der Software -<br />

technik, immer basierend auf modellgetriebener<br />

Softwareentwicklung.<br />

„Und wer soll das lesen können?”, ist der<br />

häufigste Kommentar, nachdem wir ein<br />

Klassendiagramm am Whiteboard entworfen<br />

haben. Trotzdem ist das Arbeiten am<br />

Whiteboard angenehmer als die Ver wen -<br />

dung eines Modellierungswerkzeugs: Man<br />

hat zwar viel Platz und kann das<br />

Endergebnis fotografieren und an alle verschicken<br />

oder einchecken – aber das macht<br />

die Diagramme nicht unbedingt leserlicher<br />

(siehe Abbildung 1).<br />

Wenn die Diagramme in irgendeiner<br />

Dokumentation verwendet werden sollen,<br />

lassen wir sie von jemandem nachzeichnen,<br />

frei nach dem Motto: „Make it fancy!”<br />

„Wie heißt denn die Kante da?” „Welche<br />

Kardinalität soll die Assoziation da unten<br />

haben?”<br />

Bei einer Whiteboard-Skizze fehlen häufig<br />

auch einige Details. Der Kollege, der das<br />

Ganze „rein zeichnen” oder später umsetzen<br />

soll, muss dann häufig noch einmal<br />

nachfragen, was Zeit kostet, oder er<br />

ergänzt selbstständig, was nicht immer<br />

richtig sein muss. Da wünscht man sich<br />

gelegentlich doch ein Werkzeug, das einen<br />

auf fehlende Details hinweist.<br />

Abb. 1: Klassendiagramm am<br />

Whiteboard.<br />

Abb. 2: PowerPoint-„Klassendiagramm” ohne Kardinalitäten.<br />

Unabhängig davon benötigen manche<br />

Kollegen oder Kolleginnen für dasselbe<br />

Diagramm viel länger als andere. Das kann<br />

natürlich an der jeweiligen Person liegen.<br />

Oder liegt es am verwendeten Werkzeug?<br />

Um diese Frage zu klären, haben wir eine<br />

(leider nicht öffentliche) Untersuchung verschiedener<br />

Modellierungswerkzeuge durchgeführt,<br />

deren Ergebnisse von der Hessen-<br />

IT, der Aktionslinie des Hessischen<br />

Wirt schaftsministeriums für den gesamten<br />

Informations- und Telekommunikations -<br />

markt in Hessen, veröffentlicht wurde (vgl.<br />

[Hes10]). Dabei haben wir sowohl die<br />

jeweils benötigte Zeit, die Anzahl der<br />

Mausklicks und Tastaturanschläge, die<br />

zurück gelegten Mausmeter als auch die<br />

Häufigkeit der Wechsel zwischen Tastatur<br />

und Maus gemessen.<br />

Vielleicht schon einmal einige Beobach -<br />

tungen vorweg: Es gibt Unterschiede zwischen<br />

den Personen, aber diese sind beim<br />

reinen Abzeichnen nicht so dramatisch.<br />

Viel dramatischer ist die Lernkurve: Je häufiger<br />

die Kandidaten ein und dasselbe<br />

Diagramm gezeichnet haben, desto schneller<br />

wurden sie. Irgendwann kannten sie das<br />

Diagramm auswendig und sparten die Zeit,<br />

die Details auf der Vorlage nachzuschauen.<br />

Dieser Effekt war praktisch unabhängig<br />

davon, welches Werkzeug die Kandidaten<br />

in welcher Reihenfolge verwendeten. Bei<br />

der Anzahl der Maus- und Tastaturaktion<br />

war dagegen kaum eine Lernkurve zu<br />

beobachten – diese Zahlen sind eher werkzeugspezifisch.<br />

Allgemeine Zeichenwerkzeuge<br />

„Ich hab das eben mit PowerPoint ge -<br />

macht.” Nicht nur Heimwerker erfinden<br />

neue Anwendungen für ihr Werkzeug.<br />

Auch junge Studenten missbrauchen Tools<br />

– wie „MS PowerPoint” oder „LibreOffice<br />

Draw” – für das Erstellen von Klassen -<br />

52 53


fachartikel<br />

Abb. 3: Dia verdeckt das Diagramm mit Dialogen.<br />

diagrammen (oder sogar Excel). In der Tat<br />

lassen sich Klassen durch einfaches<br />

Gruppieren von drei Kästchen darstellen<br />

und Assoziationen durch Verbindungen<br />

abbilden (siehe Abbildung 2).<br />

Assoziations- und Rollennamen sowie<br />

Kardinalitäten fügen sie als Textfelder ein.<br />

Leider müssen sie sich dann auch selbst um<br />

das Layout und die korrekte Syntax von<br />

Attributen, Methoden und Parametern<br />

kümmern. „Hm, ich glaub 'Magazin' oben<br />

links und 'Autor' unten rechts sieht besser<br />

aus.” – „Wie lange brauchst du denn für<br />

das ganze Layouten?” – „Ist 'erstellt'<br />

eigentlich eine Zu-Eins- oder eine Zu-N-<br />

Assoziation?” Den Studenten in unserem<br />

Beispiel wird langsam deutlich, dass allgemeine<br />

Zeichenwerkzeuge zwar einfach zu<br />

bedienen sind, ihnen aber keine inhaltliche<br />

Arbeit abnehmen können: Die Bedeutung<br />

von Formen, Linien, und Text bleibt den<br />

Programmen wie einem Whiteboard verschlossen.<br />

UML-Zeichenwerkzeuge<br />

„Nimm Dia oder yuml.me, mit denen kann<br />

man Klassendiagramme zeichnen!” Beides<br />

sind völlig unterschiedliche Werkzeuge,<br />

deren Diagramme uns aber regelmäßig wieder<br />

unterkommen. Dia kennt die einzelnen<br />

Artefakte eines Klassen diagramms, aber<br />

zum Bearbeiten der Elemente müssen die<br />

Studenten sich durch Dialoge kämpfen, die<br />

das Klassendiagramm verdecken. Das fühlt<br />

sich ungefähr so an, als müsse man ein<br />

Formular ausfüllen, das das Whiteboard<br />

verdeckt, bloß weil man eine Klasse umbenennen<br />

möchte (siehe Abbildung 3).<br />

Der Web-Dienst yuml.me geht einen völlig<br />

anderen Weg. Klassendiagramme werden<br />

in einer DSL auf einer Web-Seite formuliert<br />

und lassen sich anschließend über<br />

eine URL im PNG-, SVG- oder PDF-<br />

Format abrufen oder direkt in eine Web-<br />

Seite einbinden. Auf das Layout hat man so<br />

gut wie keinen Einfluss, aber die Dia -<br />

gramme sind optisch relativ ansprechend<br />

und ohne das Starten eines Extra-Tools<br />

schnell zu erstellen (siehe Abbildung 4).<br />

Die gemeinsame Schwäche der beiden<br />

Tools wird den Studenten bewusst, wenn<br />

sie anfangen, Klassen umzubenennen.<br />

Dann müssen sie jedes Vorkommen von<br />

Hand ändern. „Bei der Klasse, die du<br />

umbenannt hast, hast du vergessen, die<br />

Verwendungen als Parametertyp auch<br />

umzubenennen!” Punktabzug für Inkonsis -<br />

tenz.<br />

Mit Dialogen zum Modell<br />

„Bei Visio kann mir das nicht passieren:<br />

Das baut ein Modell zum Diagramm auf.”<br />

Das ist ein großer Schritt nach vorne, denn<br />

Visio stellt die Diagrammelemente in einem<br />

Modell-Explorer als Baum dar. Diagramme<br />

sind Sichten, die Teile des Modells visualisieren.<br />

Benennt man Elemente um, werden<br />

alle Vorkommnisse in Diagrammen entsprechend<br />

aktualisiert. Mit Ausnahme des<br />

Klassennamens lassen sie sich allerdings<br />

nur mit Dialogen bearbeiten.<br />

Abb. 4: Von yuml.me generiertes Klassendiagramm.<br />

Bei der Auswahl von Klassen als Typ<br />

müssen sich die Studenten leider mit einer<br />

einfachen Liste zufrieden geben. Je größer<br />

das Modell wird, desto länger dauert das<br />

Heraussuchen. Und wer sich unglücklich<br />

durch die Eigenschaften der Elemente klickt,<br />

hat schnell drei Dialoge gleichzeitig geöffnet<br />

(siehe Abbildung 5). „Ich sehe das<br />

Diagramm vor lauter Dialogen nicht.”<br />

Der Mehrwert von Modellen<br />

„Müsst ihr immer so lange Namen nehmen,<br />

ich tippe mir ja die Finger blutig.” –<br />

„Versuch es doch einmal mit 'Sparx<br />

Systems Enterprise Architect', da kriegt<br />

man mit + Completion.”<br />

Die meisten Softwareentwickler kennen<br />

diese Tastenkombination aus ihrer Ent -<br />

wicklungsumgebung. Bei Enterprise<br />

Architect kann man damit in Dialogen<br />

nach Klassen suchen. Noch gewohnter ist<br />

die Kombination, wenn man eine Methode<br />

oder ein Attribut im Diagramm mit <br />

bearbeitet und den Typ aus einer Liste mit<br />

Vervollständigungen aussuchen kann (siehe<br />

Abbildung 6). Auf diese Art lassen sich<br />

ganze Methodensignaturen überarbeiten.<br />

Studenten, die diese magischen Tasten<br />

kennen, kommen so fast um jeden Dialog<br />

herum. „Wau, das geht ja wie Brezeln ba -<br />

cken.” Unsere kleine Werkzeug-Vergleichs -<br />

studie ergab, dass Completion die Zahl der<br />

benötigten Tastatureingaben dramatisch –<br />

d. h. um bis zu 30 % – verringern kann.<br />

Studenten, die die Tastenkürzel nicht nutzten,<br />

konnten zwar noch von der Ver -<br />

vollständigung profitieren, mussten aber<br />

ähnlich wie bei Visio mit Dialogen arbeiten.<br />

Das Diagramm wieder im<br />

Vordergrund<br />

„Rational hat sämtliche Dialoge wegoptimiert!”<br />

Wer mit den älteren Versionen von<br />

Rational Rose bereits in Kontakt gekommen<br />

ist, wird sich kaum vorstellen können,<br />

dass IBM den jüngeren Produkten einen<br />

komplett überarbeiteten Editor spendiert<br />

hat. Auf Dialoge wird konsequent verzichtet.<br />

1/2012


fachartikel<br />

Abb. 5: Visio legt sogar mehrere Dialoge übereinander.<br />

Klassen, Attribute und Methoden werden<br />

direkt im Diagramm editiert (siehe<br />

Abbildung 7). „Wow, die sind weit gekommen!”<br />

– „Naja, nach der dritten Klasse bin<br />

ich ziemlich genervt. Ich muss jedes Mal<br />

zwei Sekunden warten, wenn ich auf die<br />

Diagrammfläche klicke, um eine neue<br />

Klasse anzulegen.” Wie bereits einleitend<br />

erwähnt, ist die Lernkurve bei den einzelnen<br />

Werkzeugen relativ konstant. Dafür<br />

baut sich eine Erwartungshaltung auf: Mit<br />

der Zeit gewöhnt sich der Benutzer an<br />

Mauswege und Abläufe. Er lernt, wo er<br />

hinklicken muss. Im schlimmsten Fall muss<br />

er dadurch auf das Tool warten, statt<br />

anders herum.<br />

Ein Whiteboard mit Modell<br />

„Mit UML Lab kannst du wirklich wie an<br />

einem Whiteboard arbeiten.” Bei Yatta<br />

Solutions wurde ein Klassendiagramm-<br />

Editor entwickelt, mit dem man seine<br />

Klassen wie auf einem Whiteboard zeichnet<br />

und dabei mit Vervollständigung aus<br />

dem Modell unterstützt wird. Das Anlegen<br />

von Klassen geschieht durch das Aufziehen<br />

eines Rechtecks auf dem Diagramm.<br />

Danach ist die Klasse selektiert und man<br />

kann damit beginnen, Klassenname sowie<br />

Attribut- und Methodensignaturen einzutippen.<br />

Ähnlich wie bei Rational Software<br />

Architect wird eine Vervollständigung<br />

angeboten, die aber zwischen Klassen im<br />

Diagramm und Modell unterscheiden<br />

kann. Verbindungen zwischen den Klassen<br />

werden mit der rechten Maustaste von<br />

Klasse zu Klasse gezogen.<br />

Diagrammelemente können überarbeitet<br />

werden, indem man sie selektiert und einfach<br />

anfängt zu tippen (siehe Abbildung 8).<br />

„Beim Aufziehen von Klassen hat man wieder<br />

das Gefühl, selbst ein Diagramm zu<br />

zeichnen, aber warum muss ich das noch<br />

selbst machen, wenn die Informationen<br />

doch schon im Quellcode vorliegen?”<br />

Agiles Reverse-Engineering<br />

„Hast du einmal versucht, Code wieder<br />

ein zu lesen?” Hier beginnt eine weitere Lei -<br />

densgeschichte unserer Studenten. Sobald<br />

Quellcode vorliegt, will niemand mehr die<br />

Abb. 6: Enterprise Architect blendet passende Modellelemente ein.<br />

54 55


fachartikel<br />

Abb. 7: Rational Software Architect verzichtet vollständig auf<br />

Dialoge.<br />

Abb. 8: Vervollständigung und Arbeiten im Diagramm bei UML<br />

Lab.<br />

Klassendiagramme dafür selbst zeichnen. Alle professionellen<br />

Modellierungswerk zeuge bieten das Einlesen von Quellcode an,<br />

aber von den Ergebnissen sind die Studenten mehr als enttäuscht.<br />

„Warum hat er die Assoziation jetzt nicht erkannt?” – „Warum<br />

hat er die Getter und Setter für den Namen ausgeblendet, aber für<br />

die Adresse nicht?” –„Na toll, die Klasse passt ja nicht mal auf den<br />

Bildschirm!”<br />

Technisch arbeiten die meisten Tools mit einer Heuristik, die versucht,<br />

zusammengehörige Artefakte wieder zusammenzufassen. Bei<br />

Zugriffsmethoden für JavaBean-Properties funktioniert das noch<br />

relativ gut. Heuristiken versagen allerdings bei angepassten<br />

Zugriffsmethoden oder Asso ziationsimplementierungen.<br />

UML Lab beschreitet hier einen interessanten neuen Ansatz, bei<br />

dem Imple mentierungsdetails über ein template-basiertes Reverse-<br />

Engineering vor dem Modell verborgen werden. Je mehr<br />

Implementierungsdetails man in Templates beschreibt, desto übersichtlicher<br />

werden die Klassendiagramme. „Ich hab ein eigenes<br />

Template für unseren PropertyChange-Mechanismus geschrieben.<br />

Jetzt zeigt er das als Stereotyp für das Attribut an, anstatt Getter<br />

und Setter im Diagramm zu zeigen. Die sind ja ohnehin überall<br />

gleich implementiert.”<br />

Kontextbezogene Diagramme<br />

„Mich interessiert so einiges nicht, was ich im Klassendiagramm<br />

sehe. Kann man nicht nur die Elemente anzeigen, an denen man<br />

gearbeitet hat, wie bei Mylyn?” Wer schon einmal die Übersicht<br />

über den eigenen Quellcode verloren hat, sollte sich mit den<br />

Produkten von Tasktop beschäftigen. Mittlerweile gehört Mylyn<br />

zum Bestandteil der Eclipse-IDE und auch eine Visual-Studio-<br />

Integration ist verfügbar. Mylyn lernt, welche Methoden in einem<br />

bestimmten Kontext, z. B. bei der Arbeit an einem Ticket, aus<br />

einem Bug-Tracker verwendet wurden. Alle anderen Elemente werden<br />

ausgeblendet: Im Project Explorer verschwinden nicht berührte<br />

Klassen und Packages, nicht relevante Break-Points werden ausgeblendet<br />

und lediglich der relevante Kontext bleibt übrig.<br />

Yatta Solutions hat dieses Konzept in UML Lab auch auf<br />

Klassendiagramme übertragen. Mit der Mylyn-Integration wird es<br />

möglich, sich ein Klassendiagramm anzeigen zu lassen, in dem nur<br />

die für einen Task relevanten Klassen, Attribute und Methoden<br />

sichtbar sind, ohne dass man selbst zeichnen muss. Die Übersichtlichkeit<br />

von Klassendiagrammen wird so auch in agilen Projekten<br />

auf Knopfdruck nutzbar.<br />

Verteiltes Arbeiten<br />

„Super, wir haben jetzt das grobe Modell zusammen. Am besten<br />

macht jeder von euch die Feinmodellierung für sich und wir treffen<br />

uns morgen wieder, um das zusammenzuführen.” Eigentlich ist das<br />

eine Horrorvorstellung für jeden, der schon eimal versucht hat,<br />

Modellinformationen zu mischen. Woran liegt das?<br />

Wenn mehrere Leute an dem gleichen Modell arbeiten wollen,<br />

gibt es im Wesentlichen zwei Möglichkeiten: Entwe der hat man ein<br />

mehrbenutzer-fähiges Tool, wie zum Beispiel TeamViewer oder<br />

Google Docs, oder ein altes CASE-Tool, das die Modelle in einer<br />

zentralen Datenbank editiert. Das heißt: Eigentlich arbeiten alle<br />

auf dem gleichen Modell, nur mit vielen Mäusen und Tastaturen –<br />

oder jeder hat seine eigene Modellkopie. Jeweils eigene Kopien der<br />

Modelle zu haben, entkoppelt die einzelnen Modellierer. Jeder<br />

kann seine Änderungen in Ruhe ausprobieren, ohne von den Änderungen<br />

der anderen gestört zu werden. Aber wenn jeder seine eigene<br />

Modellkopie hat, muss man die verschiedenen Änderungen<br />

nachher wieder in eine gemeinsame Version zusammenführen. Bei<br />

Quelltext macht man das mit Versions verwaltungssystemen wie<br />

Subversion oder Git, wo das auch prima klappt. Bei Modelldateien<br />

klappt das normalerweise gar nicht. Nach dem Merge sind die<br />

Modelldateien nicht mehr ladbar und man muss mühsam in den<br />

XML-Formaten herumbasteln, damit man überhaupt weiter arbeiten<br />

kann. Abhilfe schaffen hier nur meist sehr teure<br />

Modellierungswerkzeuge, die die Modelle selbst versionieren können.<br />

Oder man nimmt einen universitären Prototyp wie Fujaba<br />

oder SiDiff.<br />

Neuerdings gibt es hier eine dritte Alternative durch Werkzeuge<br />

mit guter Round-Trip-Engineering-Funktionalität. Jeder generiert<br />

aus seiner Modellkopie einfach Quelltext, der dann versioniert und<br />

gemerged wird. Nach dem Merge lädt man den Quelltext wieder<br />

ins Model lierungswerkzeug – voila. Merge-Konflikte muss man<br />

zwar auf der Quelltext-Ebene behandeln, aber das ist allemal besser<br />

als in den XML-Modell-Dateien. Insgesamt funktioniert das bei<br />

unseren Studenten mit UML Lab schon ganz gut. Man verliert<br />

1/2012


fachartikel<br />

Whiteboard<br />

PowerPoint/<br />

Libre Draw<br />

Dia<br />

yuml.me<br />

Visio<br />

Enterprise<br />

Architect<br />

Software<br />

Architect<br />

UML Lab<br />

und Yatta Solutions haben für die<br />

Werkzeuge „Papyrus” respektive „UML<br />

Lab” bereits Prototypen für einen grafischen<br />

Merge gezeigt, mit denen sie dieses<br />

Problem angehen wollen.<br />

Grafischer Editor ● ● ● ○ ● ● ● ●<br />

Layout anpassbar ● ● ● ○ ● ● ● ●<br />

Autolayout ○ ○ ○ ● ● ● ● ●<br />

Modell ○ ○ ○ ○ ● ● ● ●<br />

Views ○ ○ ○ ○ ● ● ● ●<br />

Layers/Filter ○ ○ ○ ○ ● ● ● ○<br />

Auto-Completion ○ ○ ○ ○ ○ ● ● ●<br />

Dialogfrei ○ ● ○ ● ○ ○ ● ●<br />

Wartezeitfrei ○ ● ● ○ ● ● ○ ●<br />

Gestenerkennung ○ ○ ○ ○ ○ ○ ○ ●<br />

Anpassbare Codegenerierung ○ ○ ○ ○ ○ ● ○ ●<br />

Templates zum<br />

Reverse-Engineering ○ ○ ○ ○ ○ ○ ○ ●<br />

Round-Trip-Engineering ○ ○ ○ ○ ○ ○ ○ ●<br />

Kontextbasierte Diagramme<br />

(Mylyn Integration) ○ ○ ○ ○ ○ ○ ○ ●<br />

Alle 14 UML-Diagrammarten ● ○ ○ ○ ● ● ● ○<br />

Gemeinsames Modellieren ● ○ ○ ○ ○ ○ ○ ●<br />

Verteiltes Arbeiten ○ ○ ○ ○ ○ ○ ○ ●<br />

Geeignet für<br />

[Hes10] Hessisches Ministerium für<br />

Wirtschaft, Verkehr und Landesentwicklung,<br />

Hessen-IT News, 2010, siehe: http://www.hessen-it.de/mm/Hessen-IT_NEWS_0310.pdf<br />

Teambesprechung<br />

Präsentationen<br />

–<br />

Darstellung von Reverse<br />

Engineering Webseiten<br />

Vermischen von<br />

Diagrammarten<br />

Design<br />

Design<br />

Round Trip,<br />

Agiles Arbeiten<br />

Fazit<br />

Einfache Modellierungswerkzeuge wie Dia<br />

oder Visio stehen dem Entwickler häufig im<br />

Weg, da sie Teile des Diagramms unter<br />

Dialogen begraben. Die professionellen<br />

Werkzeuge von Sparx Systems und IBM<br />

haben dieses Stadium größtenteils hinter<br />

sich gelassen. Sie bieten die Möglichkeit, im<br />

Diagramm zu arbeiten, und beschleunigen<br />

die Arbeit, indem sie eine Vervoll ständi -<br />

gung basierend auf dem Modell anbieten.<br />

UML Lab ging aufgrund der neuen<br />

Eingabemöglichkeiten im Klassendia -<br />

gramm-Editor bereits in unserer Studie als<br />

Sieger hervor. Die damals erreichten 16 %<br />

Zeitersparnis kann es mit template-basiertem<br />

Reverse-Engineering und kontextbasierten<br />

Klassendiagrammen noch weiter<br />

steigern. Die in diesem Artikel angesprochenen<br />

Werkzeuge, Bewertungskriterien<br />

und Einsatzzwecke fasst Tabelle 1 zusammen.<br />

Viel wichtiger ist jedoch, dass Model -<br />

lierungswerkzeuge nicht mehr nur Pro -<br />

bleme am Anfang des Entwicklungs -<br />

prozesses lösen. Sie dringen in die<br />

Implementierungsphase vor, werden selbst<br />

flexibler und helfen so, auch bei agilem<br />

Vorgehen den Überblick über große<br />

Software zu behalten.<br />

Der Trend geht endlich in die richtige<br />

Richtung. Es wird Zeit, dass Software -<br />

entwickler sich nicht mehr mit umständlichen<br />

Werkzeugen selbst quälen. Auf<br />

meinem Tablet kann ich jetzt Klassen -<br />

diagramme entwerfen, als wäre es ein intelligentes<br />

Blatt Papier. Fehlt nur noch ein sechs<br />

Quadratmeter großer Touchscreen. ■<br />

Tabelle 1: Werkzeuge, Bewertungskriterien und Einsatzzwecke.<br />

Link<br />

zwar manchmal etwas Layout, aber die<br />

logischen Dinge kriegt man ganz gut<br />

zusammen.<br />

Neben dem Merge möchte man manchmal<br />

auch die Änderungen, also das Diff auf<br />

Modellebene, angezeigt bekommen. OBEO<br />

56 57


fachartikel<br />

der autor<br />

MIGRATIONSMANAGEMENT:<br />

FALLSTUDIE ZUR MIGRATION<br />

EINER INDUSTRIELLEN<br />

RICH-CLIENT-ANWENDUNG<br />

Die IT-Welt ist in einem ständigen Wandel begriffen. Softwaresysteme, die heute konstruiert<br />

werden, sind sehr wahrscheinlich schon bald Altsysteme und müssen migriert werden. Das<br />

bestätigt auch ein aktuelles Migrationsprojekt aus der Pharmaindustrie, dessen technologischer<br />

Stand eher als „State of the art” bezeichnet werden kann. Am Beispiel dieses Projekts<br />

geht der Artikel den Fragen nach, warum und wie migriert wurde. Konkret handelt es sich um<br />

eine Rich-Client-Anwendung, die auf die OSGi-Plattform Eclipse migriert wurde, um modular zu<br />

sein, was nicht zuletzt mit dem Ziel der Auslagerung einer Modulentwicklung nach China<br />

zusammenhängt.<br />

Eldar Sultanow<br />

(E-Mail: sultanow@xqs-service.com)<br />

ist CIO der XQS-Service GmbH, die zur in Hof ansässigen<br />

Firmengruppe Max Service International AG<br />

gehört. Er ist verantwortlich für internationale<br />

Projekte mit Schwerpunkt auf JEE-Architekturen,<br />

Web-Technologien und RFID-Anwendungen.<br />

Bei dem in diesem Artikel beschriebenen<br />

Beispiel handelt es sich um ein Pharma -<br />

industrieprojekt, mit dem eine Infrastruk -<br />

tur für die Fälschungs- und Qualitäts -<br />

sicherheit von Arzneimitteln aufgebaut<br />

wurde. Die Pharmaindustrie ist ein spezielles<br />

Umfeld, das sich mit wenigen Beispiel -<br />

ereignissen treffend beschreiben lässt.<br />

Innerhalb von nur zwei Monaten konfiszierte<br />

die EU bei gezielten Zollkontrollen in<br />

allen Mitgliedsländern 34 Millionen ge -<br />

fälschte Tabletten (vgl. [Schl09]). Laut<br />

Weltgesundheitsorganisation (WHO) enthalten<br />

60 % der gefälschten Arzneien keinen<br />

Wirkstoff, 19 % enthalten eine falsche<br />

Wirkstoffmenge und 16 % komplett falsche<br />

Wirkstoffe (vgl. [Schw07]). Hierbei<br />

tauchen 70 % der Arzneimittelfälschungen<br />

in den Entwicklungsländern auf. Das jährliche<br />

Umsatzvolumen mit Arzneimittel -<br />

fälschungen wird auf 100 Milliarden US-<br />

Dollar geschätzt. Im Jahr 2009 wurden<br />

Chargen von HIV-Medikamenten aus deutschen<br />

Apotheken zurückgerufen und im<br />

selben Jahr gab es Chargenrückrufe, die<br />

sich auf (gesundheitsgefährdende) Quali -<br />

täts mängel wie z. B. bakterielle Konta -<br />

minierung beziehen. Letztes Jahr starben<br />

drei Säuglinge an einer verunreinigten<br />

Infusion in der Klinik Mainz. Zu Beginn<br />

dieses Jahres hat die Integrierte Ermitt -<br />

lungseinheit Sachsen (INES) Ermittlungen<br />

wegen banden- oder gewerbsmäßiger<br />

Bestechung von Ärzten durch einen Leip -<br />

ziger Parenteral-Hersteller 1 ) und Apotheker<br />

eingeleitet.<br />

1<br />

) Ein Parenteral-Hersteller ist ein Hersteller von sterilen<br />

Zubereitungen, die zur Injektion, Infusion oder<br />

Implantation bestimmt sind.<br />

Abb. 1: Infrastruktur für Fälschungs- und Qualitätssicherheit in der Pharmaindustrie.<br />

58 59


fachartikel<br />

Abbildung 1 zeigt schematisch die technische<br />

Infrastruktur für Fälschungs- und<br />

Qualitätssicherheit von Arzneimitteln. Sie<br />

liegt dem Track & Trace – von der Medi -<br />

kamentenherstellung bis hin zur -abgabe –<br />

zu Grunde und wird derzeit im onkologischen<br />

Bereich eingesetzt. Hersteller senden<br />

ihre Originalprodukte an das Pharma-<br />

Trust-Center, das diese mit RFID kennzeichnet<br />

und in einer zentralen Datenbank<br />

serialisiert. Die gesicherten Produkte gelangen<br />

weiter in den Großhandel, in<br />

Apotheken und Kliniken. Diese besitzen<br />

jeweils ein oder mehrere Terminals zur<br />

Verifizierung von Arzneimittelpackungen<br />

und zur Überprüfung der Temperaturen.<br />

Lieferungen sind hierzu mit einem RFIDbasierten<br />

Temperatur-Logger ausgestattet.<br />

Die Herkunft und der Distributionsweg<br />

von Arzneien sowie die während Lagerung<br />

und Transport gemessene Temperatur werden<br />

damit nachvollzogen. Das ist wichtig,<br />

weil das Verletzen des vorgeschriebenen<br />

Temperaturintervalls (2–8 °C) kühlpflichtiger<br />

Zytostatika zu Wirksamkeitsverlust<br />

und schließlich zum Behandlungsmisserfolg<br />

von schwer kranken Patienten führt.<br />

Das Softwaresystem<br />

Um sich ein genaueres Bild von der Art und<br />

Größe der migrierten Anwendung machen<br />

zu können, beschreibe ich im Folgenden<br />

das Softwaresystem und charakterisiere seine<br />

wesentlichen Bestandteile anhand von<br />

Codezeilen (LoC).<br />

In Abbildung 2 sind die Systemarchi -<br />

tektur und -komponenten dargestellt. Die<br />

eingesetzte Hardware umfasst RFID-<br />

Lesegeräte. Der Tunnel-Reader ist ein Pulk-<br />

Lesegerät, das mehrere 100 gekennzeichnete<br />

Packungen in einem Schritt binnen<br />

Millisekunden liest. Die Terminals enthalten<br />

Einzel-Lesegeräte für das Steuern und<br />

Auslesen der Temperatur-Logger sowie für<br />

die Erfassung und Verifikation einzelner<br />

Packungen und Infusionsbeutel.<br />

Auf jedem Terminal ist eine Rich-Client-<br />

Anwendung installiert, die über die (in<br />

C/C++ geschriebene) XQS-Edgeware sämtliche<br />

RFID-Lesegeräte ansteuert und über<br />

XML-RPC/SOAP-Services Daten zur Arz -<br />

neimittel-Verifikation aus der zentralen<br />

Pharma-Datenbank abfragt und Tempera -<br />

tur-Messreihen in der Datenbank speichert.<br />

Diese Rich-Client-Anwendung steuert<br />

ebenfalls (über die Edgeware) Pulk-Lese -<br />

geräte an und serialisiert massenweise<br />

Arzneimittelpackungen. Bei dem hier thematisierten<br />

Migrationsprojekt handelt es<br />

Abb. 2: Systemarchitektur und Komponenten der XQS-Infrastruktur (XQS =<br />

Maximale Qualitätssicherheit).<br />

sich genau um diese Rich-Client-Anwen dung. Die Art und Größe der genannten<br />

Komponenten fasse ich hier kurz zusammen:<br />

■ Edgeware (9.476 LoC): Die Edgeware umfasst in der Programmiersprache C/C++ entwickelte<br />

Werkzeuge für Linux, Windows und Windows CE zur Ansteuerung der<br />

RFID-Lesegeräte: Pulk-Lesegeräte (Tunnel-Reader), Ein zel-Lese geräte (Terminals) und<br />

mobile Lesegeräte in Handhelds.<br />

■ Web-Portal (16.726 LoC): Das Portal ist eine Web-Anwendung für den auf OSGi<br />

(Open Services Gateway initiative) basierenden Applikationsserver „Virgo” (vgl.<br />

[Sul10a]). Es umfasst: „Spring Controller”, „Java Server Pages”, „Cascading Style<br />

Sheets”, „Java Scripts” und das „Object Relational Mapping” (ORM), basierend auf<br />

dem JPA-Standard und der Referenzimplementierung „Eclips eLink”.<br />

■ Rich-Client-Anwendung (23.324 LoC, 20.030 LoC nach Migration): Die<br />

Ausgangsversion basiert auf Swing im Frontend und JPA (Java Persistence API) mit<br />

Hibernate im Backend. Das Transaktionsmanagement übernahm „Atomikos”, weil es<br />

in selbstständigen Desktop-Applikationen einsetzbar ist. Die gesamte Anwendung verwendete<br />

das Spring-Framework, das ihren strukturellen Aufbau auf deklarative Weise<br />

beschreibt.<br />

■ Web-Dienste (4.842 LoC): Die Web-Dienste sind ein Sammelsurium unabhängiger<br />

XML-RPC- und SOAP-Ser vices.<br />

Die Rich-Client-Anwendung wird aktuell an 12 Lesestationen eines Pharmagroß handels,<br />

an 8 Lesestationen in Apotheken und auch mittlerweile in der Lebensmittel industrie eingesetzt.<br />

Insbesondere stellt die Temperatur-Sensorik (siehe Abbildung 3) eine interessante<br />

Anwendung für den Lebensmittelgroßhandel dar. Bevor die Temperatur-Logger dem<br />

Arzneimittel-Paket hinzugefügt werden, müssen sie scharf geschaltet werden (links). Nach<br />

ihrer Ankunft in der Klinik oder Apotheke werden die Temperaturen ausgelesen (rechts).<br />

Warum die Software technologie wechseln?<br />

Die eingesetzten Frameworks sind nicht obsolet und gehören eher der neuen Generation<br />

an. Was führte dennoch zu dem Gedanken, einen Technologiewechsel im Rahmen eines<br />

umfangreichen Migrations projekts durchzuführen?<br />

1/2012


Nicht geplante Produktderivate brachten das Spring-Framework<br />

schnell an seine Grenzen und waren sicher der Hauptgrund für die<br />

Migration. Funktionen bei Bedarf zu ergänzen, anzupassen oder zu<br />

entfernen, gestaltet sich ohne den Einsatz eines Plug-In- bzw.<br />

Modul-Systems als schwierig. Eine nicht ohne Weiteres abzubildende<br />

Anforderung bestand beispielsweise darin, neben<br />

Temperatur- auch Schock-Sensoren zu integrieren und eine<br />

Administrator-Version mit erweiterten Funk tionen zu erstellen –<br />

und dies in jeder möglichen Kombination. Das richtige Stich wortet<br />

hierfür lautet „Produktlinien-Architektur” und ein etablierter<br />

Standard ist OSGi, der dazu dient, Software zu modularisieren und<br />

über ihren gesamten Lebenszyklus hinweg zu verwalten (vgl.<br />

[Lie08]). Das der Modularisierung zu Grunde liegende<br />

Komponentenmodell besteht aus so genannten Bundles (auch als<br />

Services bezeichnet), deren Lebenszyklus die Service-Registry verwaltet.<br />

Wie wurde das Plug-In-Problem vorerst mit dem Spring-<br />

Framework gelöst? Für jeden Anwendungsfall wurde je eine entsprechende<br />

Spring-Kontextdatei angelegt. Diese Lösung ist jedoch<br />

ungeschickt, weil im Quellcode manuell geprüft werden muss, ob<br />

optionale Komponenten vorliegen oder nicht, die dann auf proprietäre<br />

Weise eingebunden und in der graphischen Benutzungs -<br />

oberfläche verfügbar gemacht werden.<br />

Begrenzungen des Umfangs und der Performance von Swing<br />

bekräftigten die Entscheidung für eine Migration. Die Swingfachartikel<br />

Abb. 3: Temperatur-Sensorik und Pulk-Lesen mit der ursprünglichen<br />

Anwendung.<br />

Oberfläche ist langsam, nicht son derlich schön und wenig umfangreich.<br />

So ist beispielsweise keine Task-Leiste standardmäßig<br />

enthalten, die zusätzlich aus SwingX, ein offenes Swing-Er -<br />

weiterungs paket, übernommen wurde.<br />

Die externe Entwicklung funktionaler Bausteine lässt sich auf<br />

einfache Weise bewerkstelligen, wenn Schnittstellen für die zu entwickelnde<br />

Anwendung definierbar und öffentlich sind. Der<br />

Projektinhaber gründete ein deutsch-chinesisches Joint-Venture<br />

HEMSN in der chinesischen Hafen stadt Dalian mit zwei Zustän -<br />

dig keiten: Pharma und IT. Einen Großteil der Entwicklung sollen<br />

nun die Entwickler in China übernehmen (siehe Abbildung 4).<br />

Auch hier ist OSGi das Stichwort, unter dem das Konzept für die<br />

Modularisierung und unabhängige Entwicklung funktionaler<br />

Bausteine (Plug-Ins) fällt.<br />

Produktlinien-Architektur<br />

Im zuerst genannten der drei obigen Punkte zum Beweggrund des<br />

Softwaretechnologie wechsels fiel das Stichwort „Produktlinien-<br />

Architektur”. Diese ist das Kernstück einer Produktlinie und legt<br />

fest, wie aus den Produktanforderungen das jeweilige Deri vat bzw.<br />

die jeweiligen Produktlinien-Komponenten erstellt werden können<br />

(vgl. [Zac07]). Jedes Produkt derivat muss dabei ein eigenes<br />

Branding und – wie bereits erwähnt – unterschiedliche bestimmte<br />

Features besitzen können. Die Produktlinien-Architektur ermöglicht<br />

es, diverse Brandings anzulegen und einzelne Features wegzu-<br />

Abb. 4: Outsourcing der Komponentenentwicklung für Pharma<br />

& IT veranlasste die Migration der gesamten RFID-Anwendung<br />

zur Fälschungs- und Qualitätssicherung onkologischer<br />

Medikamente. Mittlerweile wurden vier Aufträge entsprechend<br />

den formulierten Anforderungen abgewickelt.<br />

60 61


fachartikel<br />

konfigurieren. Im Fall von OSGI/Eclipse<br />

sind das so genannte Pro duktkon -<br />

figurationen, die in Form von XML-<br />

Dateien vorliegen und genau spezifizieren,<br />

welche Bundles und branding-spezifischen<br />

Elemente beim Produktexport verwendet<br />

werden sollen. Eclipse 4 re prä sentiert hierbei<br />

als Plattform die Referenzarchitektur<br />

mit dem Ziel, dass alle Mitglieder des<br />

Produktlinien-Teams ein gemeinsames<br />

Verständnis vom Aufbau der Komponenten<br />

und Produkte besitzen. Damit einhergehend<br />

stehen während des Produktions -<br />

prozesses die fachliche Archi tektur und die<br />

Diskussion über fachliche Schnittstellen,<br />

Prozesse und Services im Fokus. Die technische<br />

Architektur muss nach einer gewissen<br />

Zeit so selbstverständlich sein, dass sie<br />

intuitiv verwendet wird und nicht wie in<br />

vielen Entwicklungs vorhaben Gegenstand<br />

der typischen Diskussionen, wie etwa<br />

„Sollen wir nicht doch Hibernate anstelle<br />

von EclipseLink verwenden?”, ist (vgl.<br />

[Zac07]).<br />

Die Produktlinien-Architektur setzt eine<br />

stark ausgeprägte Komponentenorien -<br />

tierung voraus, die voneinander unabhängige,<br />

jedoch kombinierbare Module mit<br />

definierten Schnittstellen erzwingt. In OSGi<br />

werden die Module durch Bundles und<br />

Plug-Ins (z. B. für die Temperatur-Sensorik<br />

oder für das Pulk-Lesen) abgebildet, wobei<br />

die Modulschnittstelle auch klar angibt,<br />

von welchen Bundles und Plug-Ins das<br />

Modul wiederum abhängt.<br />

Die zentrale für die gesamte Produktlinie<br />

gültige Referenzarchitektur stellt für alle<br />

Produkte und Produktderivate die Erfül -<br />

lung sämtlicher nicht-funktionaler Anfor -<br />

derungen (Performance, Verfügbarkeit,<br />

Skalierbarkeit, Robustheit usw.) sicher, da<br />

diese Anforderungen durch die Architektur<br />

selbst abgedeckt werden.<br />

Migration und Outsorcing<br />

Ein entscheidender Vorteil von Modu -<br />

larisierung besteht darin, dass sich Module<br />

unabhängig von Teams entwickeln lassen –<br />

und dies an weltweit entfernten Stand -<br />

orten. Ein Großteil des Kommunikationsund<br />

Koordinierungsbedarfs entfällt durch<br />

die erzwungenen Modulschnittstellen. Das<br />

heißt, eine permanente Rückkopplung zwischen<br />

dem die Module entwickelnden<br />

Team und dem Produktverantwortlichen –<br />

also dem, der die Produkte für die Kunden<br />

zusammenstellt und exportiert – ist nicht<br />

mehr notwendig. Dasselbe gilt für die<br />

Vier elementare Ausgangssituationen liegen dem heutigen Migrationsmanagement zu<br />

Grunde und bilden die Basis des in Abbildung 5 dargestellten Situationsmodells. Der<br />

geschilderte Praxisfall trifft passgenau auf Situation 1 zu: Obwohl die Technologie<br />

aktuell ist, erfüllt sie die neuen Anforderungen nicht mehr. Situation 2 stellt den Idealfall<br />

dar: Die eingesetzte Technologie ist aktuell und deckt alle gegenwärtigen und bestenfalls<br />

auch künftigen Anforderungen ab. Dennoch kann Situation 2 mit der Zeit in Situation<br />

3 oder 4 übergehen. Situation 3, also das zunehmende Übergewicht neuer Anforderun -<br />

gen an eine mittlerweile obsolete Technologie, ist derzeit der am weitesten verbreitete<br />

Fall: Etwa 70 % der unternehmerischen Daten und Geschäftsprozesse werden in<br />

Altsystemen abgewickelt (vgl. [Sul10b]). In Situation 4 erfüllen die Altsysteme nach wie<br />

vor alle Anforderungen und müssen nicht unbedingt migriert werden. Dennoch gibt es<br />

mehr oder weniger rationale Beweggründe, trotzdem zu migrieren: Entweder, um sich<br />

vorsorglich gegen einen am Horizont sichtbaren Ansturm neuer Anforderungen mit etablierten<br />

Technologien zu wappnen oder um einfach nur den aktuellen Trend der<br />

Softwareentwicklung zu erfüllen.<br />

Abb. 5: Vier grundlegende Situationen des Migrationsmanagements.<br />

Anforderungs- versus Trenderfüllung<br />

Das Gesetz von Moore [Moo65] beschreibt den IT-Wandel mit einer Verdopplung der<br />

Prozessor-Leistungsfähigkeit alle 18 Monate. Betriebssysteme müssen im Rhythmus von<br />

36 Monaten für jede zweite Prozessorgeneration erneuert werden. Ihre Veränderung<br />

wirkt sich auf Programmumgebung und Datenbanksysteme aus, die alle fünf Jahre angepasst<br />

bzw. neu entwickelt werden müssen, woraus eine fünfjährige Halbwertzeit für<br />

Anwendungssoftware resultiert (vgl. [Sne10]). Der Preisfall des Datentransports nach<br />

dem Gesetz von Metcalfe (vgl. [Met95]) schafft eine Überkapazität an Kommunikations -<br />

einrichtungen, die IT-Nutzer sinnvoll in Anspruch nehmen sollen und hierzu ihre<br />

Anwendungen neu ausrichten müssen. Aus dem wirtschaftlichen Konkurrenzkampf, der<br />

eine Anpassung an die veränderten Wettbewerbsbedingungen verlangt, resultiert zusätzlicher<br />

Druck aus dem Markt: Unternehmen müssen sich geschäftlich anders aufstellen<br />

und schneller, besser und flexibler auf die globale Nachfrage reagieren (vgl. [Sne10]).<br />

Der Anspruch an die Änderbarkeit und Erweiterbarkeit von Anwendungssoftware<br />

bedarf wiederum neuer Sprachen und Entwicklungsumgebungen.<br />

Zu dem Trend der Leistungssteigerung von Hardware und der sich schneller ändernden<br />

Anforderungen kommt ein personeller Trend hinzu: der Rückgang von Experten, die die<br />

Altsysteme entwickeln und warten. Viele Anwendungssysteme sind für die Anwender<br />

ohne geschäftskritische Relevanz und werden von Nicolas Carr (vgl. [Car03]) lediglich<br />

als „Commodity” bezeichnet. Also spielt weniger die Funktionsweise als vielmehr die<br />

Funktionsfähigkeit eine Rolle. Dennoch müssen auch solche Systeme gepflegt werden,<br />

und irgendwann stirbt das „Pflegepersonal” aus, da junge Entwickler kaum bereit sind,<br />

sich in alte Sprachen und Umgebungen einzuarbeiten (vgl. [Sne10]). IT-Manager sehen<br />

sich immer häufiger dem Problem gegenüber, dass sie kein Personal mehr finden, um das<br />

alte System zu pflegen. Ausgerechnet heute, wo die erste Entwicklergeneration die Bühne<br />

verlässt, ist das Thema Migration aktueller denn je und sämtliche Eigenentwicklungen<br />

der 70er- und 80er-Jahre stehen zur Disposition.<br />

Kasten 1: Migrationsmanagement heute.<br />

1/2012


fachartikel<br />

Rückkopplung zwischen Modul- und<br />

Architekturentwicklern. Erstere befassen<br />

sich mit der Abdeckung funktionaler und<br />

letztere mit der der nicht-funktionalen<br />

Anforderungen. Weil die Referenzarchi -<br />

tektur die Softwareentwicklung hinsichtlich<br />

beider Anforderungen strikt trennt,<br />

kann nun nach der Migration die Ent -<br />

wicklung von Features ohne großen<br />

Aufwand an die Entwickler des chinesischen<br />

Partners übergeben werden. Die<br />

Rückintegration bzw. Einbindung der off -<br />

shore entwickelten Module erfolgt gemäß<br />

OSGi automatisch, da die Modulent -<br />

wickler die von der Referenzarchitektur<br />

vorgegebenen und daher nicht umgehbaren<br />

Schnittstellen verwenden müssen.<br />

Mit der ursprünglichen auf dem Spring-<br />

Framework basierenden Anwendung war<br />

dies nicht möglich. Entwickler hätten<br />

„irgendwelche” Klassen entwickeln, diese<br />

an beliebiger Stelle in den Spring-Kontext<br />

einbinden und dabei auch noch (unbewusst)<br />

Eingriff in die gesamte Anwen -<br />

dungsarchitektur nehmen können. Ein<br />

ordentliches gemeinsames Entwickeln an<br />

dem Projekt wäre ohne größeren Aufwand<br />

nicht möglich: Schulungen, Erläuterungen<br />

der proprietären Architektur, Schnitt -<br />

stellen, Programmier-Richtlinien, zu verwendende<br />

Frameworks/Packages usw.<br />

wären erforderlich gewesen.<br />

All dies wird ja bereits mit OSGi vorgegeben.<br />

Letztendlich werden beim Export<br />

der Produktversionen die Module einfach<br />

eingeklinkt, wobei deren „Innereien” völlig<br />

gekapselt sind. Die Praxis hat dennoch<br />

gezeigt: Auch wenn Module nach dem<br />

Black-Box-Prinzip offshore entwickelt und<br />

mühelos in die neue migrierte Anwendung<br />

eingebunden werden können, lohnt sich ab<br />

und zu ein Blick auf das Modul-Innen -<br />

leben.<br />

barkeit” getrieben, der mit den zwei<br />

Hauptzielen, Produktvarianten zu erstellen<br />

und die Entwicklung nach China auszulagern,<br />

im Zusammenhang steht. Deshalb<br />

war für die Analyse der Migrationsnutzen<br />

unbestritten. Die Anforderung an die<br />

Modularisierbarkeit im Hinblick auf das<br />

Erstellen von Produktvarianten und das<br />

Outsourcing standen deutlich im Vorder -<br />

grund:<br />

■ Konfigurierbarkeit von eigenem<br />

Branding: Jede Produktvariante muss<br />

mit einem eigenen Branding (Begrü-<br />

ßungsbildschirm, Titel, Programm-Icon<br />

usw.) ausstattbar sein, damit ein unabhängiger<br />

Vertrieb durch Dritte erfolgen<br />

kann. Man spricht hierbei von einem so<br />

genannten „Weißprodukt” (White-<br />

Label-Produkt).<br />

■ Kombinierbarkeit von Funktionen zu<br />

Funktionsbündeln: Eine Produkt -<br />

varian te definiert sich über das Kombi -<br />

nieren von Funktionen, die sowohl<br />

Standardfunktionen als auch individuelle<br />

Erweiterungen sein können. Das<br />

Bündeln dieser Funktionen muss in<br />

einem simplen Arbeitsschritt durchführbar<br />

sein.<br />

■ Auslagerbarkeit nach dem Black-Box-<br />

Prinzip: Für das Outsourcing der<br />

Entwicklung von Funktionen bzw. von<br />

Funktionsbündeln darf keine Offen -<br />

legung interner Anwendungsbestand -<br />

teile erforderlich sein. Funktionen müssen<br />

autonom, lose gekoppelt und<br />

mittels Schema gemäß einem Vertrag<br />

definiert sein.<br />

Diese drei Hauptanforderungen liegen der<br />

Wahl einer geeigneten Zielplattform zu<br />

Grunde.<br />

Wahl der Zielplattform<br />

Die Kombinierbarkeit von Funktionen und<br />

die Auslagerbarkeit von deren Entwicklung<br />

nach dem Black-Box-Prinzip führten zu<br />

dem Standard OSGi, der speziell zur<br />

Abdeckung dieser Anforderungen entwi -<br />

ckelt wurde. Die Eclipse Rich Client<br />

Platform (RCP) ist eine Implementierung<br />

der OSGi-Spezi fikation und ermöglicht das<br />

Umsetzen modu larer Applikationen, die<br />

aus Plug-Ins bestehen. Damit sich die Wahl<br />

der OSGi-Technologie oder genauer gesagt<br />

Eclipse RCP endgültig treffen ließ, waren<br />

funktionale sowie strukturelle Anfor -<br />

derungen der zu migrierenden Anwendung<br />

abzugleichen. Hierzu zählten eine Dia -<br />

grammfunktion im Frontend, ein Persis -<br />

tenz-/ORM-Frame work im Backend und<br />

die Anwendbarkeit des vom Spring-Frame -<br />

work bekannten Entwurfsmuster<br />

Dependency Injection (DI). Dieser Ab -<br />

gleich konnte schnell vollzogen werden: In<br />

Eclipse ist das freie Werkzeug Business<br />

Intelligence and Reporting Tools (BIRT)<br />

enthalten, das eine umfassende Diagrammund<br />

Report-Erstel lungsfunktion besitzt.<br />

Eclipse liefert weiterhin EclipseLink für das<br />

objekt-relationale Mapping und folgt in<br />

seiner vierten Version auch dem DI-<br />

Entwurfsmuster mittels An no tationen.<br />

Damit fiel die Wahl der Eclipse-RCP als<br />

Zielplattform leicht und man wendete sich<br />

dem nächsten Schritt zu: dem Schätzen des<br />

Aufwands für den Quellcode-Transfer.<br />

Aufwandsschätzung des Transfers<br />

Die eigentliche Umsetzung besteht in dem<br />

Transfer des gesamten Quellcodes. Der<br />

Aufwand wurde in den Systemschichten<br />

Frontend, Backend und übergreifendes<br />

Basissystem geschätzt (siehe Tabelle 1). Das<br />

Fünf Hauptschritte<br />

der Migration<br />

Die Migration des Projekts erfolgte in fünf<br />

wesentlichen Schritten: Migrationsanfor -<br />

derungs analyse, Wahl der Zielplattform,<br />

Aufwandsschätzung, Quellcode-Transfer<br />

(die eigentliche Umsetzung) in die Ziel -<br />

plattform und abschließende Validierung<br />

der neuen Applikation.<br />

Migrationsanforderungsanalyse<br />

Die Migration des Industrieprojekts wurde<br />

primär von dem Aspekt „Modularisier -<br />

Ausgangstechnologie Zieltechnologie Geschätzter Migrationsaufwand<br />

Frontend Swing, SwingX, SWT, JFace Programmierung 20 MT (Mittel)<br />

JGoodies<br />

der GUI<br />

Event-Verwaltung 5 MT (Niedrig)<br />

Backend JPA, Hibernate JPA, EclipseLink 20 MT (Mittel)<br />

Basissystem Springframework E4/RCP Plug-In-Entwicklung 40 MT (Hoch)<br />

und Integration<br />

Produktkonfiguration 5 MT (Niedrig)<br />

und -export<br />

Tabelle 1: Geschätzter Aufwand der eigentlichen Umsetzung.<br />

62 63


fachartikel<br />

Schätzen erfolgte gemäß der Breitband-<br />

Delphi-Methode, zu der die an der Um -<br />

setzung beteiligten Experten (drei Ent -<br />

wickler und ein Architekt) herangezogen<br />

werden.<br />

Die höher geschätzten Aufwände – 20<br />

und 40 Personentage (PT) – weichen in vertretbarer<br />

Weise von den tatsächlich<br />

erbrachten Aufwänden ab: Die Abwei -<br />

chungen liegen jeweils unter einer Woche<br />

(5 PT). Demzufolge war der Transfer des<br />

Basissystems am aufwändigsten, denn hier<br />

war eine Einarbeitung in die neue Tech -<br />

nologie „E4” und das Durchlaufen der<br />

damit verbundenen Lernkurve erforderlich.<br />

Die mit dem Umsetzen des Frontends und<br />

Backends verbundenen Aufwände waren<br />

geringer. Dazu hat insbesondere die (im<br />

Backend gelagerte) standardisierte JPA-<br />

Schnittstelle beigetragen.<br />

Quellcodetransfer auf die Zielplattform<br />

Der Quellcodetransfer – sprich: die Pro -<br />

grammierung an sich – erfolgte reibungslos<br />

und konnte gemäß der Schichtengliederung<br />

in Tabelle 1 parallel durchgeführt werden.<br />

Das heißt, Frontend, Backend und Basis -<br />

system ließen sich unabhängig voneinander<br />

migrieren. Das gilt insbesondere für die<br />

Anfangsphase, die vorwiegend mit Auf -<br />

wand für die Einarbeitung verbunden ist.<br />

Im Zuge der Umprogrammierung von<br />

Frontend und Backend stellte sich keine<br />

Notwendigkeit einer Abstimmung heraus,<br />

die sich keine Schnittstellen geändert<br />

haben, sondern lediglich die JPA-Imple -<br />

mentierung, die von Hibernate auf<br />

Eclipselink umgestellt wurde. Die kausale<br />

Abhängigkeit der Programmierarbeiten<br />

beschränkt sich auf den Gesamttest, in dessen<br />

Rahmen das Zusammenspiel von<br />

Frontend und Backend auf der neuen<br />

Zielplattform validiert wurde.<br />

Validierung der migrierten Applikation<br />

Die Validierung war Bestandteil der<br />

Umsetzung. Das heißt jeder Entwickler<br />

testete die migrierten Bestandteile gegen die<br />

entsprechenden alten, ursprünglichen<br />

Bestandteile. Das funktioniert auch sehr<br />

gut innerhalb einer Systemschicht. Ins -<br />

besondere existierten bereits unabhängige<br />

Unit-Tests für jede Systemschicht. So konnte<br />

etwa der für die Backend-Migration zu -<br />

ständige Entwickler die vorhandenen Unit-<br />

Tests der Hibernate-Datenzugriffsobjekte<br />

für die neuen mit Eclipselink umgesetzten<br />

Datenzugriffsobjekte wiederverwenden.<br />

Diese Leichtgängigkeit beschränkt sich<br />

jedoch leider auf die Validierung innerhalb<br />

einer Systemschicht. Um das Zusammen -<br />

spiel aller Komponenten und – neben den<br />

Funktionstests – vor allem auch die Benutz -<br />

barkeits- und Robustheitstests der gesamten<br />

neuen Applikation testen zu können,<br />

musste ein fertiges Produkt vorliegen. Das<br />

Logistik-Personal bediente bereits die alte<br />

Anwendung für die Temperaturkontrolle<br />

von kühlpflichtigen Arzneien. Nach interner<br />

Veröffentlichung einer migrierten<br />

Produktversion wurde ein Parallelbetrieb<br />

der alten und neuen (migrierten) Appli -<br />

Abb. 6: Migrierte Anwendung – Starten und Auslesen der Temperatur-Logger sowie Pulk-Lesen von Arzneimittelpackungen.<br />

1/2012


fachartikel<br />

kation in der Logistik eingeführt. Innerhalb der ersten zwei<br />

Wochen wurde ausreichend Feedback gesammelt, das sowohl Bug-<br />

Reports als auch Feature-Wünsche enthielt, die voneinander<br />

getrennt wurden.<br />

Die Benutzbarkeit der migrierten Produkt version wurde als<br />

höher angesehen, was wahrscheinlich auf den typischen (Windows-<br />

)Look zurückzuführen ist. Die graphische Swing-Oberfläche der<br />

alten Anwendung stieß auf weniger Gegenliebe. Gleichermaßen<br />

war die Performance der Benutzungsoberfläche höher, die Anwen -<br />

dung startete in spürbar kürzerer Zeit.<br />

Bedeutend für die Validierung waren außerdem die genannten<br />

Hauptgründe des Migrationsprojekts: die Validierung der<br />

Produktderivat-Erstellung und die Aus lagerbarkeit der<br />

Entwicklung funktionaler Bausteine durch externe Geschäftsein -<br />

heiten. Hierzu wurde für drei in einer Stakeholder-Rolle befindliche<br />

Partner jeweils eine individuelle Produktversion mit unterschiedlichen<br />

Funktionen exportiert. So erhielt ein Endkunde aus dem<br />

Lebensmittellogistik-Bereich eine Version, die über keine<br />

Konfigurationsschnittstellen für Branding oder über weitere<br />

Funktionen verfügte, die etwa für einen Weitervertrieb relevant<br />

sind. Ein Vertriebspartner erhielt dagegen eine solche Version mit<br />

Funktio nen, die den Weitervertrieb abbilden.<br />

Die Auslagerbarkeit ließ sich mit einem Auftrag nach Übersee<br />

prüfen, der die Implementierung eines PDF-Exports der gesamten<br />

Temperaturhistorie einschließlich Diagramm umfasste. Dieser verlief<br />

sehr gut und die erstellten Artefakte ließen sich dank der mit<br />

OSGi definierten Schnitt stellen auf triviale Weise rückintegrieren.<br />

Fazit<br />

Entstanden ist ein lauffähiges Produkt, das mittlerweile produktiv<br />

im Pharma- und Lebensmittelumfeld eingesetzt wird. Abbil dung 6<br />

zeigt das Ergebnis.<br />

Grundsätzlich sind IT-Entscheider nicht davor gefeit, ein System<br />

zu migrieren, auch wenn es neuen Standards entspricht, da<br />

Technologien nicht per se vor notwendigen Änderungen durch<br />

neue Anforderungen schützen. In dem hier beschriebenen Fall wurde<br />

die Applikation auf die OSGi-Technologie – genau genommen<br />

auf die Eclipse-Plattform – migriert, damit sich leicht<br />

Produktderivate erstellen und die Entwicklung von Modulen nach<br />

Übersee auslagern lassen. Dies erfüllt die neue migrierte<br />

Applikation. Im Rückblick lassen sich die mit dem<br />

Migrationsprojekt gesammelten Erfahrungen und Lektionen wie<br />

folgt zusammenfassen:<br />

■<br />

■<br />

■<br />

■<br />

Nicht geplante Anforderungen können die Migration eines<br />

bestehenden Systems erzwingen, obwohl es technologisch auf<br />

dem aktuellen Stand ist.<br />

Die Globalisierung der Softwareent wicklung hat einen entscheidenden<br />

Einfluss auf die Architekturanfor derungen, die<br />

eine Migration bedingen können.<br />

Die Trennung von Architektur schich ten und der Einsatz von<br />

bewährten Schnittstellen (z. B. JPA) reduzieren den Migrations -<br />

aufwand immens.<br />

Die Anfangsphase und die Einarbeitung in die Zieltechnologie<br />

machen einen bedeutenden Anteil des gesamten Mi -<br />

grationsaufwands aus.<br />

Die Rich-Client-Anwendung auf der Basis von Eclipse 4 verfügt<br />

über dieselben Funk tionen wie die ursprüngliche zu migrierende<br />

Anwendung. Abbildung 6 zeigt die neue Anwendung für das<br />

Starten und Auslesen der Temperatur-Logger und das Pulk-Lesen<br />

analog zu Abbildung 3.<br />

Sicherlich stellen Sie sich an dieser Stelle die Frage, inwiefern die<br />

Architektur nun konzeptionell tragfähiger ist oder ob in ein paar<br />

Jahren vielleicht eine Fortsetzung dieses Artikels erscheint, der die<br />

Migration der neuen Anwendung wieder mit denselben Pro blemen<br />

darlegt? Unbestritten ist die Plan barkeit des Einsatzes einer neuen<br />

Techno logie weniger trivial. Die rasante Entwick lung von Plattformen<br />

und Frame works macht es IT-Entscheidern nicht gerade einfach.<br />

Die Kernfrage lautet: Inwieweit ist die Zukunft der gewählten<br />

Zielplattform stabil, inwieweit ist also davon auszugehen, dass die<br />

Zielplattform eher immer populärer und weiterentwickelt bzw. verbessert<br />

wird, als dass sie irgendwann veraltet oder gar ausstirbt?<br />

Häufig hilft es zu prüfen, wer die Zielplattform entwickelt bzw. wie<br />

groß die hinter der Zielplattform-Entwicklung stehende<br />

Community ist, ob die Zielplatt form einen verbreiteten Standard<br />

(wie zum Beispiel OSGi) erfüllt oder proprietär ist, ob es einen entgegen<br />

gerichteten Trend bzw. Ansatz gibt und vielleicht sogar dazu<br />

eine entsprechende alternative Lösung, die bereits Einzug in die<br />

Entwick lergemeinde nimmt.<br />

■<br />

Literatur & Links<br />

[Car03] N.G. Carr, IT Doesn't Matter, Harvard Business Review, Mai 2003<br />

[Kro06] P. Kroha, L. Rosenhainer, Textuelle Anforderungen und Software-Migration, in: U. Kaiser, P. Kroha, A. Winter (Hrsg.), Proc. of 3. Workshop<br />

Reengineering Prozesse (RePro 2006) Software Migration, Mainzer Informatik-Berichte, Informatik-Bericht Nr. 2/2006<br />

[Lie08] D. Liebhart et al., Integration Architecture Blueprint: Leitfaden zur Konstruktion von Integrationslösungen., Carl Hanser Verlag 2008<br />

[Met95] R. Metcalfe, A network becomes more valuable as it reaches more users, InfoWorld, Oct. 1995<br />

[Moo65] G. Moore, Cramming more components onto integrated circuits, in: Electronics Magazine, Vol. 38, Number 8, April 1965<br />

[Schl09] C.B. Schiltz, EU warnt vor Boom bei gefälschten Medikamenten, Welt Online, 07.12.2009, siehe:<br />

http://www.welt.de/wirtschaft/article5449188/EU-warnt-vor-Boom-bei-gefaelschten-Medikamenten.html<br />

[Schw07] H.G. Schweim, Gefälschte Arzneimittel – aus der Dritten Welt in die Industrienationen, 2007, siehe: http://www.pharmtech.unibonn.de/dra/hintergrundinformationen<br />

[Sne10] M.H. Sneed, E. Wolf, H. Heilmann, Softwaremigration in der Praxis: Übertragung alter Softwaresysteme in eine <strong>moderne</strong> Umgebung,<br />

dpunkt.verlag 2010<br />

[Sul10a] E. Sultanow, Virgo: Serverseitige Webanwendungen aus Komponenten, in: iX – Magazin für professionelle Informationstechnik 11/2011<br />

[Sul10b] E. Sultanow, Zusammenarbeit in verteilten Projekten: Dekomposition, Barrieren und Lösungen im Kontext der Webent wick lung, Gito 2010<br />

[Zac07] R. Zacharias, Produktlinien: Der nächste Schritt in Richtung Software-Industrialisierung, in: Javamagazin 3/2007<br />

64 65


fachartikel<br />

der autor<br />

ABGRENZUNG ALS METHODE<br />

DER ANFORDERUNGSANALYSE:<br />

TEIL 2: ABGRENZUNGEN<br />

HERAUSARBEITEN<br />

Wer in Modellen, Beschreibungen und Anforderungen mit Abgrenzungen arbeitet, stößt oft auf<br />

Unverständnis, Ablehnung oder zumindest ein gewisses Unbehagen bei den Lesern und<br />

Begutachtern. Durch negative Aussagen scheint der Gegenstand der Betrachtungen viel weniger<br />

präzise beschrieben zu sein als durch positive Bestimmungen. Manchmal entsteht der<br />

Eindruck, dass der Autor dadurch nur eine Unvollständigkeit der Analyse und Beschreibung verdeckt.<br />

Dennoch sind treffende Abgrenzungen notwendig und sogar ein Indiz für gute Arbeit.<br />

Warum das so ist, auf welchen Gebieten nach ihnen gefahndet werden sollte und wie Abgren -<br />

zungen formuliert werden könnten, ist Thema dieses Artikels. Im ersten Teil, der in der letzten<br />

Ausgabe von OBJEKTspektrum erschienen ist, ging es um Abstimmungen zwischen<br />

Arbeitgeber und -nehmer.<br />

Bernd Körner<br />

(E-Mail: bernd.koerner@t-systems.com)<br />

ist Softwareentwickler und Requirements-Engineer,<br />

davon 13 Jahre in Projekten für Personaleinsatz -<br />

planung, Managementinformations- und Projekt -<br />

abrechungssysteme für die Deutsche Post AG.<br />

Analyse und Modellierung sieht er als eine Art<br />

angewandter Philosophie.<br />

Wie gewinnt man die Abgrenzungen, aus<br />

welchen Quellen entspringen sie, welche<br />

Prozesse fördern sie ans Licht und wie<br />

trennt man Relevantes von Irrelevantem?<br />

Vor der Analyse muss sich der Bearbeiter<br />

über die geforderte bzw. angestrebte<br />

Detailliertheit, also die Fertigungstiefe, im<br />

Klaren sein. Sie bestimmt, welche Probleme<br />

er in diesem Bearbeitungsschritt erkennen<br />

und lösen muss und welche er für einen<br />

Folgeschritt offen lassen kann. Maßstab<br />

dafür ist das angestrebte Abstraktions -<br />

niveau. Nur wenn die beschreibenden<br />

Elemente sich auf annähernd demselben<br />

Abstraktionsniveau befinden, lässt sich die<br />

Vollständigkeit der Analyse prüfen oder<br />

abschätzen. Es könnte beispielsweise festgelegt<br />

werden, dass die aktuelle Beschrei -<br />

bung nur die Elemente einer Benutzungs -<br />

schnittstelle aufzählen soll, nicht aber<br />

deren Anordnung, Bedingungen, graphische<br />

Gestaltung usw. Diese Anforderungen<br />

an das Beschreibungslevel tragen also selbst<br />

abgrenzende Elemente in sich.<br />

Zum anderen fordert die Analyse eine<br />

konsequente Systemsicht. Der Bearbeiter<br />

muss alle eingehenden Informationen<br />

dahingehend interpretieren, was sie für das<br />

System bedeuten und an welchen Stellen sie<br />

das System überschreiten. In den Ein -<br />

gangsdokumenten konstatierte Tatsachen<br />

muss er in systembezogene Anforderungen<br />

übersetzen. Das ist ein wichtiger Schritt, da<br />

er Implikationen von Tatsachen auf das<br />

System und damit deren Relevanz für das<br />

System aufdeckt. Wenn z. B. die Aussage<br />

„Kein Mensch ist älter als 200 Jahre” sich<br />

als systemrelevant herausstellt, sieht das<br />

System die Abgrenzung „Ich brauche keine<br />

Menschen mit einem Lebensalter >200<br />

Jahre berücksichtigen”, was immer das für<br />

Konsequenzen hat.<br />

Die Aufgabe enthält als Eingangsgrößen<br />

neben der expliziten Formulierung der<br />

Anforderungen, meistens auch noch<br />

Verweise auf Dokumente und Aspekte, die<br />

als Randbedingungen zu berücksichtigen<br />

sind. Diese Dokumente sind in der Regel<br />

für einen größeren Rahmen gedacht.<br />

Deswe gen muss der Bearbeiter zunächst die<br />

relevanten Bestandteile herausarbeiten.<br />

Einige sind unstrittig relevant oder irrelevant,<br />

für andere ist es unklar, ob sie einbezogen<br />

werden sollen. Stellt sich auf<br />

Nachfrage die Irrelevanz heraus, ergibt das<br />

Abgren zungen.<br />

Ein Teil davon betrifft die Einbettung der<br />

Aufgabe in eine übergeordnete Aufgabe<br />

oder einen größeren Rahmen. Dieser übergeordnete<br />

Rahmen enthält bereits Struk tur -<br />

elemente, Funktionen, Status und Aspekte.<br />

Der Bearbeiter prüft, welche auf seine<br />

Aufgabe Einfluss haben könnten, und formuliert<br />

als unklar bestimmte und vom<br />

Auftraggeber ausgeschlossene Elemente als<br />

Abgrenzung.<br />

Dann geht es an die Analyse der Aufgabe<br />

selbst, indem unter anderem Vor- und<br />

Nachbedingungen, Teilschritte und Fehler -<br />

fälle herausgearbeitet werden. Durch Ein -<br />

gangsgrößen und Ergebnisobjekte ist ein<br />

Teil der nötigen Strukturen bereits vorgegeben,<br />

Zwischenergebnisse und Prozess -<br />

status ergänzen diese. Aus Strukturen<br />

erwachsen Möglichkeiten, Status und<br />

Konstellationen, die eine bestimmte<br />

Situation in der Aufgabe vorfinden kann.<br />

So kommt bisher Implizites zutage: Teile,<br />

Wege, Bedingungen, Substrukturen, Pro -<br />

bleme und Abhängigkeiten. Eine vorher<br />

ungesehene Welt tut sich auf, erweitert sich<br />

wie ein Luftballon, der aufgeblasen wird –<br />

und es entsteht ein expandierendes Uni -<br />

versum. Wer versucht, in ein fremdes<br />

Fachgebiet einzusteigen, z. B. die Bäckerei,<br />

wird überrascht sein, wie viele Einfluss -<br />

größen, Möglichkeiten und Wechsel -<br />

beziehungen das Gelingen des Backens ausmachen<br />

und so eine leise Ahnung davon<br />

bekommen.<br />

Diese zunächst unüberschaubare Menge<br />

von Möglichkeiten gilt es, handhabbar zu<br />

machen, so weit zu reduzieren, dass überschaubare<br />

Abläufe entstehen, sie einerseits<br />

zu kategorisieren und zusammenzufassen<br />

und andererseits eine möglichst große<br />

Menge auszuschließen – sei es, weil sie irrelevant<br />

sind, sei es, weil sie mit nur sehr geringer<br />

Wahrscheinlichkeit eintreffen können.<br />

Diese Ausschlüsse von Möglichkeiten formuliert<br />

der Bearbeiter als Abgren zun gen.<br />

Ein Ergebnis-Artefakt ist nicht beliebig<br />

aufgebaut, sondern nach den Erfor -<br />

dernissen der Aufgabe strukturiert. So<br />

kann das Ergebnis auch nicht auf beliebigen<br />

Wegen erreicht werden, sondern aus<br />

der Fülle der Möglichkeiten gibt es entweder<br />

einige festgelegte oder einige nicht<br />

erlaubte. Daraus erwachsen Notwendig -<br />

keiten, die als Ab grenzungen definiert werden<br />

können.<br />

66 67


fachartikel<br />

Wenn für eine Analyseaufgabe als solcher<br />

deren Umfang bekannt ist – aus der<br />

Erfahrung oder idealerweise durch Punkte<br />

einer Checkliste –, lassen sich damit leicht<br />

relevante von irrelevanten Punkten trennen<br />

sowie eine gewisse Vollständigkeit der<br />

Analyse erreichen und dokumentieren.<br />

Das System muss es dem Benutzer ermöglichen, xxx.<br />

Das System soll fähig sein, dass xxx.<br />

Das System wird fähig sein, dass xxx.<br />

Tabelle 1: Anforderungsmuster.<br />

Rechtlich zugesicherte Eigenschaft.<br />

Empfohlene Eigenschaft.<br />

Zukünftig zugesicherte Eigenschaft.<br />

Formulierung von<br />

Abgrenzungen<br />

Anforderungen an ein System werden<br />

gewöhnlich nach dem in Tabelle 1 zu -<br />

sammengefassten prinzipiellen Muster formuliert.<br />

„Muss” und „Soll” zeigen dabei<br />

die rechtliche Verbindlichkeit an und beanspruchen<br />

damit Raum für den Auf -<br />

traggeber. Die Formulierung in Tabelle 2 ist<br />

zwar negativ, aber im Kern eine positive<br />

Aussage und eine echte Anforderung. Sie<br />

begegnet einer Befürchtung des Auftrag -<br />

gebers und zwingt den Aufragnehmer zu<br />

einer bestimmten Aktion.<br />

Abgrenzungen sind aus Systemsicht und<br />

negativ formuliert. Sie beschreiben, was<br />

das System nicht können oder tun soll. Der<br />

Auftraggeber soll sie so verstehen: Das<br />

kannst du nicht erwarten, über diesen<br />

Aspekt habe ich nicht nachgedacht, weil er<br />

mir als irrelevant erschien (Tabelle 3). Dem<br />

Auftragnehmer dagegen lassen Abgrenzun -<br />

gen Spielräume (Tabelle 4).<br />

Da ein beschreibendes Dokument oder<br />

Anfor derungsdokument für Auftraggeber<br />

und -nehmer gleichermaßen gültig sein und<br />

es nicht für jeden eine eigene Variante<br />

geben soll, müssen die Formulierungen beiden<br />

genügen. Dementsprechend schlage ich<br />

die Formulierungen in Tabelle 5 vor.<br />

Abgren zungen werden darüber hinaus zur<br />

Dar stellung von „Verschwindendem”<br />

genutzt (Tabelle 6). Zu einer Abgrenzung<br />

gehört idealerweise eine Begründung,<br />

warum sie gerechtfertigt ist. So können<br />

spätere Irritationen vermieden werden:<br />

„Warum bloß haben wir das damals ausgeschlossen?”.<br />

■<br />

Das System braucht nicht xxx (zu<br />

berücksichtigen), weil yyy.<br />

Der Auftragnehmer versucht durch Ab -<br />

gren zungen möglichst viel Land auszugrenzen.<br />

Die Verwendung von All-Quantoren<br />

(wie „alle”, „keine”) sind in den positiv<br />

formulierten Anforderungen ein Risiko.<br />

Hier aber kommen sie ihm entgegen:<br />

■ Das System braucht kein xxx zu be -<br />

rück sichtigen, weil yyy.<br />

Das System darf nicht zulassen, dass xxx.<br />

Tabelle 2: Negative Formulierung, aber echte Anforderung.<br />

Das System wird nicht xxx.<br />

Es ist nicht betrachtet, ob xxx.<br />

Tabelle 3: Abgrenzung aus Auftraggeber-Sicht.<br />

Das System muss nicht xxx.<br />

Es ist nicht festgelegt, ob xxx.<br />

Tabelle 4: Abgrenzung aus Auftragnehmer-Sicht.<br />

Das System braucht nicht xxx (zu berücksichtigen).<br />

Es ist nicht betrachtet/festgelegt, ob …<br />

xxx ist ausschließlich für yyy (vorgesehen, gültig, …).<br />

Der Aufraggeber toleriert, dass das System nicht xxx.<br />

Tabelle 5: Formulierungsvorschläge.<br />

Das System braucht nicht mehr xxx<br />

(zu berücksichtigen, zu realisieren, anzubieten).<br />

Tabelle 6: Darstellung von Verschwindendem.<br />

■ Keine anderen Aspekte sind in diesem<br />

Zusammenhang relevant.<br />

■ Alle anderen Möglichkeiten sind in diesem<br />

Zusammenhang ausgeschlossen.<br />

Die Eigenschaft, die Möglichkeit oder das<br />

Verhalten muss ausgeschlossen werden.<br />

Das wird das System definitiv nicht leisten.<br />

Wenn der Aspekt dennoch Einfluss auf das<br />

Ergebnis der Aufgabe hat, könnte es zu negativen<br />

Auswirkungen kommen.<br />

Die Eigenschaft oder das Verhalten ist nicht<br />

gefordert, aber möglich.<br />

Eine Lösung zu diesem Problem muss gefunden<br />

werden, aber die Auswahl der Lösung steht frei.<br />

Auf die Eigenschaft wird jetzt oder immer verzichtet.<br />

Die Art der Lösung ist für den Sinn der<br />

Aufgabe irrelevant.<br />

Abgrenzung von Geltungsbereichen.<br />

Die Lösung entspricht nicht den ursprünglichen<br />

Intentionen des Auftraggebers, wird aber akzeptiert.<br />

Eine Funktionalität wird (gegebenenfalls ab einem<br />

Zeitpunkt) nicht mehr benötigt.<br />

Der Auftraggeber hingegen möchte verlorenes<br />

Land zurückgewinnen und deswegen<br />

die All-Quantoren eliminieren:<br />

1/2012


fachartikel<br />

■<br />

■<br />

■<br />

Das System braucht nicht x1, x2, x3<br />

berücksichtigen, weil yyy.<br />

Keine anderen Aspekte sind für xxx<br />

relevant.<br />

Alle anderen Möglichkeiten sind für<br />

xxx ausgeschlossen.<br />

Distanz zur Aufgabe<br />

Weit entfernt.<br />

Behandlung des Aspekts<br />

• Wird nicht beachtet, nicht analysiert und nicht erwähnt, weil<br />

nicht der geringste Bezug zur Aufgabe ersichtlich ist.<br />

• Betrifft die unendliche Vielfalt der „restlichen” Welt außerhalb<br />

der Aufgabe.<br />

Die letzten beiden Abgrenzungen bergen<br />

für den Auftraggeber ein hohes Risiko, da<br />

der Geltungsbereich („In diesem Zusam -<br />

menhang”) schwer abgrenzbar und wiederum<br />

von einer Grauzone umgeben ist. Will<br />

er diese wegdiskutieren, kann der Auf -<br />

tragnehmer antworten: „Bitte in positiven<br />

Aussagen formulieren.” Die beste Gegen -<br />

strategie ist es hier wohl, den Geltungs -<br />

bereich stringent einzugrenzen. Das kann<br />

leicht ins Unendliche führen, wenn man<br />

dafür eine ähnliche Aussage verwendet, wie<br />

z. B.: „Das betrifft xxx und sonst nichts.”<br />

Gebiete der Abgrenzung<br />

Zu welchen Sachverhalten ist es sinnvoll,<br />

Abgrenzungen zu formulieren? Wo sind die<br />

Eier versteckt, wo und wie soll man am<br />

besten nach ihnen suchen? Welche Pro -<br />

bleme sind damit verbunden? Je nach<br />

(gedanklicher) Entfernung eines Aspekts<br />

zur Aufgabe finden sich verschiedene Arten<br />

von Abgrenzungen. In allen Distanz -<br />

bereichen sollte man suchen. Die verschiedenen<br />

möglichen Adressaten sollten<br />

berück sichtigt werden, für jeden kann es<br />

spezielle Abgrenzungen geben.<br />

Abgrenzungen kann es sowohl für eine<br />

Sache selbst (ein System, Anforderungen an<br />

ein System) als auch für die Beschreibung<br />

der Sache als Metaebene geben. Je nach<br />

Bezugsobjekt wollen verschiedene Abgren -<br />

zungen entdeckt werden.<br />

Die Sache selbst wird in der Analyse zerlegt<br />

und in Teile gegliedert. Jedes verdient<br />

eigene Aufmerksamkeit hinsichtlich möglicher<br />

Abgrenzungen. Einige Typen dieser<br />

Teile, hier Gegenstände der Abgrenzung<br />

genannt, entfalten in dieser Hinsicht besondere<br />

Eigenheiten.<br />

Distanzbereiche zur Aufgabe<br />

Zunächst lassen sich Suchbereiche in<br />

verschiedenen Entfernungen zur Aufgabe<br />

denken. Gedanklich weit entfernte Such -<br />

bereiche in die Be trachtungen aufzuneh -<br />

men, wäre wegen ihrer Unendlichkeit ein<br />

sinnloses Unter fangen.<br />

Näher liegende Tatsachen sind in Ob jek -<br />

ten, Prozessen und Bemerkungen der übergeordneten<br />

Ebene zu finden. Sie verdienen,<br />

Mittlere Entfernung.<br />

Nah angrenzend.<br />

Schneidet die Aufgabe.<br />

Innerhalb.<br />

in groben Zügen, als nicht betrachtet ausgeschlossen<br />

zu werden. Es bleibt die<br />

Möglichkeit, dass doch noch relevante<br />

Aspekte gefunden werden, wenn das<br />

Problem nur analysiert würde. Die<br />

Abgrenzung gibt dem Auftraggeber die<br />

Möglichkeit, solche Fehler zu erkennen.<br />

Nah angrenzende Bereiche haben direkte<br />

Schnittstellen zur Aufgabe. Sie sind nicht<br />

Teil der Aufgabe, betreffen sie aber durch<br />

ihre Existenz. Deswegen lohnt es, sie grob<br />

zu analysieren. Wenn sich keinerlei relevante<br />

Teilaspekte ergeben, kann der<br />

Komplex ausgegrenzt werden. Finden sich<br />

aber einige relevante Teilaspekte, dann gilt<br />

es, die übrigen explizit auszuschließen.<br />

Ist die aktuelle nicht die unterste Ebene,<br />

gibt es innerhalb der Aufgabe Löcher in der<br />

• Wird beachtet, aber nicht analysiert. Bezugspunkte in<br />

übergeordneten Ebenen sind zu finden, aber sie berühren mit<br />

großer Sicherheit nicht die Aufgabe.<br />

• Abgrenzung: Aspekt ist nicht betrachtet.<br />

• Wird analysiert. Es ergeben sich ausschließlich irrelevante<br />

Teilaspekte.<br />

• Abgrenzung: Es werden keine Anforderungen gestellt bezüglich …<br />

• Wird analysiert. Es ergeben sich relevante und irrelevante<br />

Teilaspekte.<br />

• Letztere sind möglicherweise von anderen zu leisten und<br />

werden abgegrenzt: Das System braucht nicht …<br />

• Die Beschreibungsebene ist nicht die tiefste, es bleiben<br />

Analyseaufgaben und Freiräume für folgende Bearbeiter.<br />

• Abgrenzung: Detaillierung ist nicht betrachtet.<br />

Tabelle 7: Suchbereiche für Abgrenzungen in verschiedenen Entfernungen zur<br />

Aufgabe.<br />

Abb. 1: Distanz der Abgrenzungen zur Aufgabe.<br />

Beschreibung. Die Aussagen bilden sozusagen<br />

ein noch lockeres Gespinst. Aufgabe<br />

der nachfolgenden Bearbeitungsschritte ist<br />

es, die Löcher mit noch feineren Fäden<br />

zuzuspinnen, so dass eine homogene Be -<br />

schreibungsfläche entsteht. Diese geschlossene<br />

Aufgabe kann pauschal durch die<br />

Abgrenzung der Bearbeitungstiefe, aber<br />

auch explizit durch Abgrenzungen an die<br />

Nachfolger übergeben werden (Tabelle 7).<br />

Adressaten von Abgrenzungen<br />

Abgrenzungen können verschiedene Adres -<br />

saten haben (Tabelle 8). Für Abgrenzungen<br />

gegenüber den Auftraggebern reicht es, diese<br />

zu konstatieren. Ob die Sache irrelevant<br />

ist oder von einem anderen übernommen<br />

68 69


fachartikel<br />

Adressat<br />

Der Auftraggeber.<br />

Ein oder mehrere Mitarbeiter.<br />

Nachfolgende Bearbeiter bzw.<br />

Auftragnehmer.<br />

Tabelle 8: Adressaten von Abgrenzungen.<br />

werden muss, liegt nicht in der Verant -<br />

wortung des Abgrenzenden und muss nicht<br />

unbedingt von ihm verstanden sein.<br />

Anders sieht es aus, wenn es sich um eine<br />

Teilaufgabe unter gleichberechtigten<br />

Kollegen in einem größeren Rahmen handelt.<br />

Dann gibt es den Anspruch, ein homogenes<br />

Ganzes abzuliefern. Sowohl die<br />

Abgrenzungen („Das musst du beschreiben!”)<br />

als auch die Ansprüche („Das ist<br />

meine Sache!”) richten sich dann gegen die<br />

Mitarbeiter. Das können durchaus auch<br />

mehrere sein, was eine Unterscheidung der<br />

Abgrenzungen nötig macht. Die angrenzenden<br />

Teile müssen verstanden sein, die<br />

Abstimmungen bewegen sich nicht auf<br />

einem prinzipiellen, sondern einem technischen<br />

Niveau: In welchem Bereich ist der<br />

Aspekt besser untergebracht, in welchem<br />

Zusammenhang ist ein Problem effektiver<br />

zu lösen? Als Eskalationsinstanz fungieren<br />

der Architekt oder die Projektleitung.<br />

Bezugsobjekte von Abgrenzungen<br />

Abgrenzungen sind Inhalt von Dokumen ten<br />

oder Beschreibungen. Diese Doku mente<br />

betreffen aber eine Aufgabe, einen Sach -<br />

verhalt oder ein System. Wie es Anfor -<br />

derungen zur Sache selbst, zum System, aber<br />

auch zur Beschreibung als Metaebene geben<br />

kann, so auch Abgren zungen. Beide müssen<br />

Bezugsobjekt<br />

Dokument, Beschreibung.<br />

System.<br />

Tabelle 9: Bezugsobjekte von Abgrenzungen.<br />

Inhalt der Abgrenzungen<br />

Aspekte, die nicht im Rahmen der Aufgabe liegen.<br />

Aspekte, die von anderen im Rahmen einer umfassenderen Aufgabe<br />

übernommen werden sollen.<br />

Aspekte, die unterhalb des Beschreibungslevels liegen, die noch nicht<br />

ausformuliert sind, die Freiräume für den Bearbeiter lassen.<br />

gedanklich getrennt werden, denn es macht<br />

einen Unterschied, ob über eine Sache überhaupt<br />

nicht nachgedacht oder im Ergebnis<br />

des Nachdenkens eine Abgrenzung getroffen<br />

wurde (Tabelle 9).<br />

Dokumente sind meist in eine Doku -<br />

menten- oder Gedankenlandschaft eingebettet.<br />

Die Berücksichtigung mancher als<br />

Quellen für die eigene Arbeit schließt andere<br />

aus. Die Abgrenzungen beziehen sich<br />

damit auf bekannte Tatsachen über die<br />

Sache – also Sätze, Behauptungen und<br />

Gegeben heiten im Hinblick auf die<br />

Aufgabe. Diese Abgrenzungen haben die<br />

folgende Struktur:<br />

■<br />

Es ist nicht berücksichtigt, dass xxx.<br />

Anders für die Sache selbst: Hier stehen<br />

Teilbereiche, Elemente der Sache, im<br />

Fokus. Für sie gilt es zu entscheiden, ob sie<br />

einbezogen oder ausgegrenzt werden sollen.<br />

Das können Strukturelemente, Status<br />

und Funktionen mit deren Vorausset -<br />

zungen und Bedingungen sein. Hier findet<br />

sich die folgende Struktur:<br />

■<br />

Das System braucht nicht xxx …<br />

Im Verlauf der Abstimmung kann sich herausstellen,<br />

dass bestimmte abgegrenzte<br />

Inhalt der Abgrenzungen<br />

• Nicht betrachtete Aspekte (Modellabgrenzung).<br />

• Nicht betrachtete andere Dokumente im Umfeld.<br />

• Bekannte, aber nicht berücksichtigte Tatsachen.<br />

• Referenzen auf andere Dokumente.<br />

• Beschreibungsebene, Abstraktionsgrad.<br />

• Nicht zur Aufgabe gehörende Aspekte (Scope).<br />

• Referenzen auf Anforderungen oder Funktionalitäten in<br />

anderen Systemen<br />

• Offen gelassene Entscheidungen<br />

1. Generelle Abgrenzungen<br />

a. Nicht betrachtete Aspekte<br />

i. Nicht betrachtete Folgen<br />

ii. Nicht berücksichtigte Aspekte<br />

iii. Nicht berücksichtigte<br />

Tatsachen<br />

iv. Nicht berücksichtigte<br />

Ereignisse<br />

v. Nicht berücksichtigte<br />

Einflussgrößen<br />

b. Abgrenzung der Abstraktionstiefe<br />

2. Die Sache betreffend<br />

a. Generelle Abgrenzungen<br />

b. Rahmenbedingungen<br />

i. Nicht berücksichtigte Arten<br />

nicht-funktionaler<br />

Anforderungen<br />

c. Struktur<br />

i. Verantwortlichkeiten<br />

ii. Nicht benötigte Klassen und<br />

Elemente<br />

iii. Wertebereiche<br />

iv. Ausschluss von Veränderungen<br />

v. Ausschluss von Wegen für<br />

Veränderungen<br />

d. Status<br />

i. Ausschluss von<br />

Wertekonstellationen<br />

e. Prozess<br />

i. Nicht nötige Teilschritte<br />

ii. Nicht zu berücksichtigende<br />

Parameter<br />

iii. Nicht zu berücksichtigende<br />

Tatsachen<br />

iv. Nicht zu berücksichtigende<br />

Ereignisse<br />

v. Ausschluss von Aktionen in<br />

Abhängigkeit vom Zustand<br />

vi. Ausschluss von<br />

Einschränkungen für Aktionen<br />

Kasten 1: Die Struktur der Gegenstände<br />

von Abgrenzungen darstellen (die<br />

Beschreibung betreffend).<br />

Tatsachen doch relevant sind. Deren Ana -<br />

lyse gebiert nun wieder neue Anfor -<br />

derungen und Abgrenzungen der zweiten,<br />

bestimmte Elemente betreffenden Art.<br />

Gegenstände der Abgrenzung<br />

Die Bezugsobjekte haben eine typische<br />

Struktur und die Struktur hat typische<br />

Elemente mit jeweiligen Eigenheiten. Die<br />

Elemente lassen sich in einer Struktur der<br />

Gegenstände von Abgrenzungen darstellen<br />

(Kasten 1). Einige dieser Gegenstände verdienen<br />

eine nähere Erläuterung:<br />

1/2012


fachartikel<br />

Bedingung Folgerung Beispiel<br />

Wenn Dann • Wenn die Ampel „rot” zeigt, dann muss man warten.<br />

• Wenn die Temperatur 21°C beträgt, dann soll das<br />

Wasserglas voll sein.<br />

Wenn nicht Dann • Wenn die Ampel nicht „grün” zeigt, dann muss man warten.<br />

• Wenn die Temperatur nicht 21°C beträgt, dann soll das<br />

Wasserglas halb voll sein.<br />

Wenn Dann nicht • Wenn die Ampel „rot” zeigt, dann darf man nicht gehen.<br />

• Wenn die Temperatur 21°C beträgt, dann darf das<br />

Wasserglas nicht halb voll sein.<br />

Wenn nicht Dann nicht • Wenn die Ampel nicht „grün” zeigt, dann darf man nicht gehen.<br />

• Wenn die Temperatur nicht 21°C beträgt, dann darf das<br />

Wasserglas nicht voll sein.<br />

Tabelle 10: Negative Wenn-Dann-Ausdrücke.<br />

Die Abgrenzung gegen mögliche Folgen<br />

einer Verfahrensweise oder Systembenut -<br />

zung erfordert in einem nachfolgenden<br />

Schritt eine Risikobewertung. Diese erst<br />

rechtfertigt die Abgrenzung oder aber<br />

erklärt die Folgen für untragbar und ersetzt<br />

sie durch Forderungen.<br />

Nicht berücksichtigte Aspekte betreffen<br />

meist die Rahmenbedingungen einer<br />

Aufgabe. Für ein System sind dies hauptsächlich<br />

die nicht-funktionalen Anfor -<br />

derun gen. Abgrenzungen dazu sind häufig<br />

im Passiv formuliert: „xxx muss nicht<br />

berücksichtigt werden” oder „Es werden<br />

keine Anforderungen bezüglich xxx erhoben.”<br />

Trotz dieser expliziten Abgrenzung<br />

existiert im Hintergrund eine weitere<br />

Frontlinie, die Gesetze, allgemeine Rege -<br />

lungen, Betriebsvereinbarungen, Produkt -<br />

bestim mungen, Style-Guides usw. bilden<br />

und die konkrete Anforderungen implizieren.<br />

Die Aufgabe und deren Abgrenzungen<br />

definieren zunächst ein statisches Bild. So<br />

wie es aber Anforderungen geben kann, die<br />

die flexible Veränderung von Verhaltens -<br />

weisen, Parametern und Aussehen – ja fast<br />

allen Elementen und Aspekten eines<br />

Systems – einfordern, so muss es im<br />

Gegenzug auch entsprechende Abgren zun -<br />

gen geben. Der Ausschluss von bestimmten<br />

Veränderungen (z. B. Inhalten von Aus -<br />

wahl listen) soll dies leisten. Wie wichtig das<br />

ist, wird klar, wenn man bedenkt, dass das<br />

Hinzufügen, Ändern oder Löschen, z. B.<br />

eines Listeneintrags, im allgemeinen Fall<br />

auch Änderungen in der Funktionalität<br />

nach sich zieht.<br />

Wertebereiche lassen sich sowohl als<br />

explizite Anforderungen als auch als<br />

Abgrenzungen sehen. Sie trennen einen<br />

geforderten von einem nicht geforderten<br />

Bereich. Es ist günstig, sie positiv als<br />

Anforderung zu formulieren. Sie werden<br />

dann nicht in den Abgrenzungen auftauchen.<br />

Die Struktur von bedingten Aktionen<br />

zeigt vier Ausprägungen (Tabelle 10). Das<br />

Besondere am „nicht” ist, dass es eine<br />

unbekannte (Rest)Menge bezeichnet. Die<br />

Bedingung „Wenn nicht …” geht von einer<br />

bestimmten positiven Erwartung aus, die<br />

sich auf viele mögliche Arten getäuscht<br />

sieht. Die Folgerung „Dann nicht …” verbietet<br />

ein bestimmtes Verhalten oder einen<br />

bestimmten Zustand aus vielen anderen<br />

möglichen.<br />

Im Ampelbeispiel (Tabelle 10) lassen sich<br />

die negativen Aussagen leicht auflösen,<br />

indem alle Zustände (rot, gelb, grün, warten,<br />

aufmerksam sein, gehen) in der Wenn-<br />

Dann-Struktur dargestellt werden. Für<br />

kontinuierliche Werte oder offene bzw. sehr<br />

große Mengen ist dies aber nicht möglich,<br />

wie das zweite, etwas konstruierte Beispiel<br />

(Zeile 2 in Tabelle 10) zeigt. Die drei<br />

„Nicht”-Varianten lassen sich nicht in die<br />

Wenn-Dann-Struktur übersetzen.<br />

Wenn bestimmte Bedingungen oder<br />

Zustände Aktionen ausschließen, gerät der<br />

Benutzer des Systems in seinem Bear -<br />

beitungsweg in eine Sackgasse. Diese<br />

bedarf einer Erklärung und eines Auswegs.<br />

Deswegen muss das System auf ausgeschlossene<br />

Möglichkeiten mit einer<br />

Fehlerbehandlung und Information reagieren.<br />

Prozesswege können ins Abseits und in<br />

fehlerhafte Zustände führen. Normaler -<br />

weise begegnet der Planer dem mit<br />

Geländern und Leitplanken, die den<br />

Benutzer des Systems auf dem rechten Weg<br />

halten. Aber manchmal sind diese unerwünschten<br />

Möglichkeiten so vielfältig,<br />

kompliziert und verzweigt, dass es sehr aufwändig<br />

wäre, sie alle explizit zu behandeln.<br />

Wenn der Auftraggeber diesen Aufwand<br />

nicht tragen möchte, akzeptiert er Ab gren -<br />

zungen, die die Verantwortung, nicht in<br />

solche Situationen zu geraten, in die Hand<br />

des Benutzers oder der Organisation legen.<br />

Beispiel<br />

Ein fiktives Beispiel soll das Vorange -<br />

gangene illustrieren und zeigen, wie<br />

Abgrenzungen konkret aussehen könnten.<br />

Die Zustellung von Postsendungen soll<br />

statt zu Fuß mit dem Auto erfolgen.<br />

Der Abteilungsleiter betreut einen Mitar -<br />

beiter, der sich in der Zustellung auskennt,<br />

mit der Aufgabe, ein passendes Auto zu<br />

bestellen. Er erklärt ihm die Ziele der<br />

Maßnahme, übergibt eine knappe Prozess -<br />

beschreibung und weist auf einzuhaltende<br />

Gesetze und betriebliche Regelungen hin.<br />

Der Mitarbeiter findet sich nun in der<br />

Rolle des Aufragnehmers und muss die<br />

Aufgabe analysieren und herausfinden, was<br />

ein „passendes Auto” ist. Er greift dazu auf<br />

sein Fachwissen zurück, erstellt eine Liste<br />

von möglichen Situationen, in denen das<br />

Auto eingesetzt werden soll, und erkundet,<br />

was das Auto (das System) in diesen<br />

Situationen können muss. Manche Ent -<br />

scheidungen kann er aus seiner Sicht nicht<br />

treffen und fragt seinen Auftraggeber und<br />

andere Beteiligte und Betroffene:<br />

■<br />

■<br />

Muss ich diesen oder jenen Aspekt<br />

beachten?<br />

Muss das Auto dies oder das können?<br />

Er erhält positive und negative Antworten.<br />

Aus den negativen formuliert er die<br />

Abgrenzungen und spiegelt damit seinem<br />

Auftraggeber wider:<br />

■<br />

■<br />

■<br />

Welche Aspekte des Autos und seines<br />

Zusammenwirkens mit der Aufgabe<br />

und der Umwelt er nicht untersucht<br />

hat.<br />

Was das Auto nicht leisten wird.<br />

Welche Aspekte er nicht festgelegt hat<br />

und dem Autohersteller als Freiheit<br />

überlässt.<br />

Nehmen wir an, der Auftraggeber akzeptiert<br />

alle Abgrenzungen bis auf das<br />

70 71


fachartikel<br />

Dokument<br />

Generelle Abgrenzung.<br />

Nicht betrachtete Aspekte.<br />

Nicht berücksichtigte Tatsachen.<br />

Nicht berücksichtigte Ereignisse.<br />

Nicht berücksichtigte Einflussgrößen.<br />

Nicht betrachtete Folgen.<br />

Abgrenzung der Abstraktionstiefe.<br />

Anforderungen<br />

Generelle Abgrenzungen.<br />

Nicht berücksichtigte Aspekte.<br />

Nicht benötigte Elemente.<br />

Wertebereiche.<br />

Ausschluss von Veränderungen.<br />

Ausschluss von Wegen<br />

für Veränderungen.<br />

Ausschluss von Wertkonstellationen.<br />

Nicht nötige Prozessschritte.<br />

Nicht zu berücksichtigende<br />

Parameter, Tatsachen, Ereignisse.<br />

Ausschluss möglicher Aktionen.<br />

Keine Verhinderung verbotener<br />

Aktionen.<br />

Ausschluss möglicher Ereignisse.<br />

Nicht zu berücksichtigende Auslöser<br />

von Ereignissen.<br />

Auswahl aus Alternativen.<br />

Ausschluss von Einschränkungen.<br />

Beispiele<br />

Keine anderen Aspekte als die hier beschriebenen sind für die Aufgabe<br />

relevant.<br />

• Der Einsatz der Autos ist ausschließlich im Inland geplant.<br />

• Die Abnahme durch den TÜV ist hier nicht beschrieben.<br />

• Die Anforderungen an die Abnahme legt der TÜV fest.<br />

• Die Tatsache, dass die Verkehrsdichte in den nächsten 5 Jahren um<br />

25% wachsen soll, ist nicht berücksichtigt.<br />

• Die für nächstes Jahr geplante Veränderung von<br />

Zulassungsbedingungen ist noch nicht berücksichtigt.<br />

Mögliche Naturkatastrophen sind nicht berücksichtigt.<br />

Mögliche Witterungseinflüsse sind nicht berücksichtigt.<br />

Die Auswirkungen auf die Arbeitnehmerzufriedenheit sind nicht in die<br />

Untersuchung einbezogen.<br />

Ob die Autos mit Navigationssystemen ausgestattet werden sollen,<br />

bleibt einer späteren Untersuchung vorbehalten.<br />

Beispiele<br />

Das Auto braucht keine weiteren Anforderungen zu erfüllen.<br />

• Es werden keine expliziten Anforderungen zur Performance erhoben.<br />

• Es ist keine Mindestlaufleistung gefordert.<br />

• Anforderungen zur Verfügbarkeit sind in xxx beschrieben.<br />

• Das Auto braucht kein Navigationssystem zu haben.<br />

• Die Anforderungen an das Navigationssystem sind in [xxx] beschrieben.<br />

• Das Auto muss in einem Temperaturbereich von -20°C bis +40°C<br />

sicher arbeiten und alle anderen Anforderungen erfüllen.<br />

• Das Auto wird nicht unter -20°C und nicht über +40°C eingesetzt.<br />

Die Sitzhöhe braucht nicht verstellbar zu sein.<br />

Die geplante Fahrtoute braucht dem Auto nicht über Funk übermittelt,<br />

sondern kann manuell am Navigationsgerät eingegeben werden.<br />

• Die Möglichkeit, dass bei voller Beladung über 60 km/h gefahren<br />

wird, braucht nicht berücksichtigt werden, denn dies ist durch<br />

betriebliche Regelungen untersagt.<br />

• Das Auto muss nicht geländetauglich sein.<br />

Das Auto darf alle Türen in einem Schritt öffnen; es braucht nicht zuerst<br />

die Fahrertür und in einem zweiten Schritt die anderen Türen zu öffnen.<br />

• Das Auto muss nicht regendicht sein.<br />

• Die Scheinwerferneigung braucht sich nicht automatisch an die<br />

Beladungssituation anzupassen.<br />

• Die Anforderungen an den Winterbetrieb Kälte sind in [xxx] beschrieben.<br />

• Das Auto braucht keinen Rückwärtsgang.<br />

• Das Auto braucht und darf dem Fahrer das Linksabbiegen nicht<br />

ermöglichen.<br />

Das Auto braucht keine Wegfahrsperre, denn es wird nachts auf<br />

gesicherten Höfen abgestellt.<br />

Ein Wechsel des Fahrers an einem Tag ist<br />

organisatorisch ausgeschlossen.<br />

Das Auto braucht den Fahrer nicht über den nächst fälligen<br />

Wartungstermin zu informieren, da dies über einen zentralen<br />

Wartungsplan geregelt wird.<br />

Die Farbe des Autos kann frei gewählt werden.<br />

Die Höchstgeschwindigkeit muss nicht künstlich begrenzt werden.<br />

Weglassen der Wegfahrsperre, denn er<br />

erkennt, dass nicht alle in Frage kommenden<br />

Höfe ausreichend gesichert sind. Dann<br />

wird er die Abgrenzung durch die neue<br />

Anforderung ersetzen: „Das Auto muss<br />

eine Wegfahrsperre besitzen”. Der Auf -<br />

tragnehmer analysiert das erneut, findet<br />

verschiedene Möglichkeiten für Wegfahr -<br />

sperren und so neue Anforderungen und<br />

Abgrenzungen.<br />

Die Anforderungen übergibt er als<br />

Aufforderung zu einem Angebot an einige<br />

Autohersteller. Er überlegt, ob er die bisher<br />

formulierten Abgrenzungen mit übergeben<br />

sollte. Einerseits ist damit die Gefahr verbunden,<br />

dass ihm sonst (kostenfrei) enthaltene<br />

Bestandteile seiner Lieferung verloren<br />

gehen. Andererseits käme ohne Abgren -<br />

zungen ein wohl teureres Angebot heraus.<br />

Also entschließt er sich, sie mit einzubeziehen<br />

– und liegt gut damit.<br />

Abgrenzung<br />

Über was haben wir hier nicht gesprochen?<br />

Über fast alles andere in der Welt. Wir<br />

haben nicht über Vulkanausbrüche gesprochen,<br />

denn das hat ja nun wirklich nichts<br />

mit dem Thema zu tun. Wir haben nicht<br />

über Mitwirkungspflichten des Auftrag -<br />

gebers gesprochen, obwohl diese ja eigentlich<br />

Brüder der Abgrenzungen sind: Sie fallen<br />

wie die Abgrenzungen nicht in den<br />

Aufgabenbereich, aber der Auftragnehmer<br />

ist im Gegensatz zu jenen auf die Zu -<br />

lieferungen angewiesen. Doch andererseits<br />

betreffen sie den Inhalt von Dokumenten<br />

und Anforderungen nur mittelbar. Nicht<br />

die Mitwirkungspflicht als solche ist für<br />

unser Thema relevant, sondern der Inhalt<br />

der Mitwirkungen. Wir haben nicht über<br />

die Verarbeitung von Abgrenzungen in<br />

Testfällen gesprochen, obwohl diese einen<br />

wertvollen Input für jene liefern. Aber das<br />

mag Aufgabe einer anderen Erörterung<br />

sein.<br />

Wir haben nicht darüber gesprochen,<br />

was es hinsichtlich der einzelnen Gegen -<br />

stände der Abgrenzungen bedeutet, wenn<br />

die Aspekte irrelevant, out of Scope oder<br />

im Scope sind, denn solche Details würden<br />

wohl doch den Rahmen des Artikels sprengen.<br />

Sind diese Abgrenzungen akzeptabel?<br />

Lassen sie den Sinn des Artikels unversehrt?<br />

Jetzt könnte man noch überlegen,<br />

wie diese Abgrenzungen abgegrenzt werden<br />

könnten usw.<br />

■<br />

Tabelle 11: Beispiele für Abgrenzungen.<br />

1/2012


uchbesprechung für sie gelesen von ...<br />

VOM ARCHITEKTONISCHEN<br />

VERSTEHEN, ENTWERFEN UND<br />

WIEDERVERWENDEN<br />

Aus dem dpunkt.verlag stammt das Buch „Basiswissen Softwarearchitektur ”. Auf rund 380<br />

Seiten adressiert die dritte Auflage verschiedene Aspekte des Themas Softwarearchitektur,<br />

darunter Grundlagen, das Verhältnis von Architek tur zur Organisation, das Vorgehen beim<br />

Entwurf, dessen Einflussfaktoren sowie die Dokumen tation von Architekturen, ein<br />

Werkzeugkasten für Architekten, industrielle Softwareent wick lung, Produktlinien und modellbasierte<br />

Ansätze.<br />

... Michael Stal,<br />

Chefredakteur von JavaSpektrum.<br />

Wohltuend wirkt in dem Buch die Tat -<br />

sache, dass es sich tatsächlich auf Archi -<br />

tektur fokussiert und keine langatmigen<br />

Abstecher in andere Gebiete macht. Es<br />

richtet sich explizit an die Zielgruppe der<br />

Projektleiter und Softwareentwickler.<br />

Torsten Posch, Klaus Birken, Michael Gerdom<br />

Basiswissen Softwarearchitektur:<br />

Verstehen, entwerfen, wiederverwenden<br />

In den ersten Kapiteln erfährt der Leser,<br />

warum Softwarearchitektur überhaupt<br />

wichtig ist und wie sich das Thema in<br />

Projektorganisationen einbettet. Dass es<br />

für größere Projekte nicht nur einen<br />

Architekten geben kann, sondern ein<br />

Architekturteam, dafür aber einen<br />

Chefarchitekten, gehört zu den wichtigen<br />

Ausführungen. Der sollte aber nicht<br />

Kompromisse eingehen, wie die Autoren<br />

anmerken, sondern gute und tragfähige<br />

Entscheidungen mit anderen Rollen treffen.<br />

In den nachfolgenden Kapiteln beschreiben<br />

die Autoren die notwendigen Schritte zur<br />

Vorbereitung des Entwurfs sowie den<br />

Entwurf selbst.<br />

Zu den Stärken des Buches gehört es,<br />

dass es sich nicht nur auf Technologie und<br />

Werkzeuge beschränkt, sondern auch verschiedene<br />

Arten von Einflussfaktoren<br />

beleuchtet. Für den Entwurf sollten<br />

Architekten ein iterativ-inkrementelles<br />

Vorgehen nutzen, weil sich Architek -<br />

turentwurf nicht als Einbahnstraße entpuppt,<br />

sondern als „Piecemeal Growth”,<br />

bei dem der Entwurf Schicht für Schicht<br />

wächst. Ein Big Bang lässt sich nicht mehr<br />

kontrollieren, ein iterativer-inkrementeller<br />

Ansatz hingegen schon. Damit der Leser<br />

das alles nachvollziehen kann, bringen die<br />

Autoren ein Fallbeispiel, das aber zu<br />

schlank ist, um die konzeptionellen<br />

Aussagen exemplarisch nachvollziehen zu<br />

können. Im letzten Teil des Buchs streifen<br />

die Autoren Posch, Birken und Gerdom<br />

dpunkt.verlag 2011<br />

380 Seiten<br />

41,90 €<br />

ISBN-10: 3898647366<br />

ISBN-13: 978-3898647366<br />

dann noch fortgeschrittene Themen wie<br />

Produktlinien oder modellbasierte Ansätze<br />

à la MDA und DSLs. Dadurch erhält der<br />

Leser ein sehr abgerundetes und gutes Bild<br />

davon, welchen Herausforderungen sich<br />

Architekten heute stellen müssen.<br />

Wo Licht ist, da ist bekanntlich auch<br />

Schatten. Nicht umsonst steckt der Begriff<br />

„Basiswissen” im Titel. Demzufolge können<br />

viele der Kapitel einzelne Themen nur<br />

anreißen, aber nicht vertiefen. Exem -<br />

plarisch seien hier die Erläuterungen zu<br />

architektonischen Bewertungen er wähnt,<br />

die zwar einen guten, wenn auch nicht vollständigen<br />

Einblick in die Materie geben.<br />

Dadurch regen die Autoren zwar den<br />

Appetit an, können ihn aber nicht stillen.<br />

Zudem wäre ein Kapitel zu eingebetteten<br />

Systemen bzw. zum Thema System-<br />

Engineering wünschenswert, die besondere<br />

Randbedingungen besitzen. Im Kapitel<br />

über Softwareentwicklung im industriellen<br />

Maßstab kommt zwar Wiederverwendung<br />

zur Sprache, nicht aber Problematiken wie<br />

Produkt- versus Lösungsgeschäft oder zum<br />

Beispiel Entwurf über mehrere Standorte<br />

hinweg. Auch sollten sich die Autoren für<br />

weitere Neuauflagen überlegen, ob es wirklich<br />

sinnvoll ist, MDA bei den modellbasierten<br />

Verfahren in den Vordergrund zu<br />

stellen. Jedenfalls hält sich dessen<br />

Verbreitung in der Praxis sehr in Grenzen.<br />

Das alles ist natürlich dem Problem<br />

geschuldet, dass ein Buch es nicht allen<br />

Lebenslagen und Bedürfnissen recht<br />

machen kann.<br />

Insgesamt erweist sich das Buch „Basis-<br />

wissen Soft warearchitektur” als lesenswerte<br />

und wichtige Lektüre für die angesprochene<br />

Zielgruppe. Es verschafft einen<br />

Einblick in architektonisches Arbeiten,<br />

ohne den Leser mit Information zu erschlagen.<br />

Für Manager in Entwick -<br />

lungsabteilungen dürfte es auch eine interessant<br />

Lektüre darstellen, für prak -<br />

tizierende Softwarearchitekten hingegen<br />

nur bedingt.<br />

■<br />

74 75


fachartikel<br />

mehr zum thema:<br />

www.it-grundschutz.de<br />

www.bsi-fuer-buerger.de/smartphones<br />

die autorin<br />

TECHNIK PLUS SENSIBILITÄT:<br />

SICHERER SMARTPHONE-<br />

EINSATZ IN UNTERNEHMEN<br />

Im Arbeitsalltag setzen sich Smartphones zunehmend durch. Doch Vergesslichkeit, Sorg -<br />

losigkeit und technische Risiken stellen potenzielle Gefahren für die sensiblen Unternehmens -<br />

daten dar, auf die mit den mobilen Endgeräten zugegriffen wird. Auch ist vielen Nutzern nicht<br />

bewusst, dass der Schutzbedarf eines Smartphones dem eines normalen PCs entspricht.<br />

Aufklärung der Mitarbeiter ist also genauso dringend angeraten wie die Integration der mobilen<br />

Endgeräte in das unternehmensweite Sicherheitskonzept. Dieser Artiekl beschreibt die<br />

wichtigsten Schritte, die ein Unternehmen ergreifen sollte, um Smartphones sicher einsetzen<br />

zu können.<br />

Isabel Münch<br />

(E-Mail: Isabel.Muench@bsi.bund.de)<br />

ist Referatsleiterin für IT-Sicherheitsmanagement<br />

und IT-Grundschutz beim Bundesamt für Sicherheit<br />

in der Informationstechnik. Ihre Arbeitsschwer -<br />

punkte sind die Weiterentwicklung des IT-Grund -<br />

schutzes sowie die Leitung und Koordination von<br />

IT-Sicherheitsanalysen.<br />

Aus dem Business-Alltag sind Smartphones<br />

schon jetzt kaum noch wegzudenken, und<br />

dabei steht ihre Entwicklung erst am Anfang.<br />

So erwartet das Marktforschungs unter -<br />

nehmen IDC in seinem Worldwide Quarterly<br />

Mobile Phone Tracker (vgl. [IDC]), dass die<br />

Zahl der intelligenten Handys in diesem Jahr<br />

um 55 % auf 472 Millionen steigen und sich<br />

bis zum Jahr 2015 noch einmal verdoppeln<br />

wird. Dieser Boom kommt nicht von ungefähr.<br />

Als Kombination aus Mobiltelefon und<br />

Personal Digital Assistant (PDA) erfüllt die<br />

jüngste Genera tion der Smartphones im<br />

Arbeitsalltag immer mehr Funktionen.<br />

Gerade wer viel beruflich unterwegs ist, nutzt<br />

mit mobilen Endgeräten die früher oftmals<br />

unproduktive Reisezeit für Arbeit und berufliche<br />

Interaktion.<br />

Dabei kommt der Geschäftswelt zugute,<br />

dass die Benutzer in ihrem privaten Umfeld<br />

gerne mobil erreichbar sind und diese<br />

Erfahrung in der Arbeitswelt ebenfalls<br />

nicht missen möchten. Doch stehen den<br />

Vorteilen einige Nachteile gegenüber, beispielsweise<br />

menschliche Nachlässigkeit.<br />

Laut einer repräsentativen Umfrage im<br />

Auftrag des BITKOM (vgl. [BIT]) vom<br />

August 2010 haben rund 7 Millionen<br />

Deutsche ihr Mobiltelefon bereits einmal<br />

verloren, rund 4 Millionen ist es schon einmal<br />

gestohlen worden. Dies ist erst recht<br />

erschreckend, wenn man be denkt, wie viele<br />

möglicherweise unternehmenskritische,<br />

sicherheitsrelevante Daten auf diese Weise<br />

abhanden gekommen sind – und zwar<br />

umso mehr, je größer die Datenspeicher<br />

werden. So bestehen dem Marktforscher<br />

Gartner zufolge schon heute 47 % der<br />

Informationen auf mobilen Endgeräten aus<br />

Unternehmensdaten.<br />

Abb. 1: Angriffsziel Smartphone: Schutzbedarf mit dem eines PC vergleichbar.<br />

Menschliche Schwächen,<br />

Diebstahl, technische Risiken<br />

Hinzu kommt die Sorglosigkeit mancher<br />

mobiler Nutzer, die aus Bequemlichkeit<br />

eine einfache Bedienung der Sicherheit vorziehen<br />

oder nach dem „Augen-zu-unddurch”-Prinzip<br />

surfen und telefonieren.<br />

Der Diebstahl mobiler Geräte durch offene<br />

Türen oder Fenster, der Blickkontakt<br />

Unbefugter auf Displays mit vertraulichen<br />

Daten oder die Infizierung mit Schad -<br />

programmen durch die private Nutzung<br />

eines Business-Smartphones bergen glei -<br />

cher maßen potenzielle Gefahren für Unter -<br />

neh mensdaten.<br />

Smartphones unterliegen den gleichen<br />

technischen Risiken wie normale PCs.<br />

Auch Smartphones sind potenzielle Ziele<br />

für Attacken mit Viren, Trojanern oder<br />

Spam, für Hackerangriffe oder gezielten<br />

Datendiebstahl. Analog dazu lässt sich<br />

auch der Schutzbedarf eines Smartphones<br />

mit dem eines PC vergleichen – was aber<br />

vielen Nutzern nicht bewusst ist. In der<br />

aktuellen Bürgerumfrage des BSI (vgl. [BSIb])<br />

war über einem Drittel der Befragten<br />

1/2012


fachartikel<br />

■ Halten Sie Ihre Zugangsdaten unter Verschluss. Geben Sie die PIN sowie Codes so<br />

ein, dass niemand sie mitlesen kann, und wechseln Sie regelmäßig Ihre Passwörter.<br />

■ Lassen Sie das Gerät niemals unbeaufsichtigt herumliegen, um unbefugte Zugriffe zu<br />

vermeiden.<br />

■ Halten Sie das Betriebssystem stets auf dem aktuellen Stand. Installieren Sie die vom<br />

Hersteller empfohlenen Anwen dungs-Updates regelmäßig.<br />

■ Installieren Sie nur solche Apps, die Sie auch regelmäßig nutzen. Wenn es möglich ist,<br />

prüfen Sie kritisch, ob die Zugriffsrechte zum Erfüllen der Funktionalität wirklich<br />

nötig sind – es könnte sich um potenzielle Trojaner-Software handeln.<br />

■ Informieren Sie sich wenn möglich über den jeweiligen Anbieter der App und dessen<br />

Vertrauenswürdigkeit. Hilfreich können dabei beispielsweise Kritiken anderer<br />

Nutzer im Internet sein.<br />

■ Deaktivieren Sie drahtlose Schnittstel len (z. B. WLAN oder Bluetooth), wenn Sie sie<br />

nicht benötigen.<br />

■ Seien Sie vorsichtig bei öffentlichen Hotspots oder ungesicherten bzw. unbekannten<br />

WLAN-Angeboten.<br />

■ Prüfen Sie in den Einstellungen regelmäßig den Akku-Verbrauch. Bei Auffälligkeiten<br />

sollten Sie verdächtige Applikationen im Zweifelsfall deinstallieren.<br />

■ Wenn Sie Ihr Smartphone verlieren, lassen Sie umgehend die SIM-Karte sperren.<br />

Kasten 1: Hinweise zum Schutz Ihres Smartphones.<br />

(36 %) nicht bekannt, dass ein Smartphone<br />

dieselben Sicherheitsvorkehrungen wie ein<br />

PC benötigt. Außerdem hat fast die Hälfte<br />

der befragten Nutzer noch nie ein<br />

Sicherheits-Update eingespielt. Aufklärung<br />

der Mitarbeiter tut also dringend Not,<br />

zumal Sicherheitsexperten von einer<br />

Zunahme IT-gestützter Angriffe über mobile<br />

Endgeräte ausgehen.<br />

Entsprechend breit sollten deshalb die<br />

Sicherheitsrichtlinien eines Unternehmens<br />

angelegt werden. Ein solches Gesamt konzept<br />

setzt bei der Geschäftsführung an, die sich<br />

zunächst vor Augen führen sollte, dass<br />

Sicherheit ein Prozess ist und nur im Ganzen<br />

erreicht und gewährleistet werden kann.<br />

Deshalb muss die Nutzung mobiler End -<br />

geräte für Firmenzwecke von Anfang an in<br />

das unternehmensweite Sicherheits kon zept<br />

integriert werden. Außerdem sollte sich die<br />

Geschäftsführung ihrer Vorbild funktion<br />

bewusst sein und beispielsweise keine Smart -<br />

phones oder Applikationen benutzen, die<br />

Mitarbeitern verboten wurden.<br />

Der Weg zur IT-Sicherheit<br />

Als Standard für die Informationssicherheit<br />

in Unternehmen hat das Bundesamt für<br />

Sicherheit in der Informationstechnik (BSI)<br />

(vgl. [BSI-a]) den IT-Grundschutz erarbeitet.<br />

Dabei handelt es sich um ein betrieblich<br />

einfach zu nutzendes Instrument, um dem<br />

Stand der Technik entsprechende Sicher -<br />

heitsmaßnahmen zu identifizieren und<br />

umzusetzen. Die BSI-Standards zum Infor -<br />

mationssicherheitsmanagement, die IT-<br />

Grundschutz-Kataloge, aber auch die ISO-<br />

27001-Zertifizierung auf der Basis von IT-<br />

Grundschutz werden hierfür als Werk zeuge<br />

eingesetzt. Nach modularem Prinzip lassen<br />

sich für den Umgang mit mobilen End -<br />

geräten einzelne Bausteine – wie etwa zum<br />

Thema Sensibilisierung der Mitar beiter,<br />

mobiler Arbeitsplatz, Schutz vor Schad -<br />

programmen, Firewall oder Virtuelle Pri -<br />

vate Netze (VPN) – zu einem kompletten<br />

Sicherheitsgerüst zusammenfügen.<br />

Schutzbedarf wie<br />

ein Computer<br />

Wenn es also darum geht, Smartphones in<br />

die Unternehmens-IT einzubinden, sollte<br />

zunächst Klarheit darüber herrschen, dass<br />

diese auf Grund ihrer Funktio nalität eher<br />

mit Computern als mit Handys vergleichbar<br />

sind. Das müssen auch die Mitarbeiter<br />

verinnerlichen. Denn im Fall ungenügender<br />

Absicherung der Geräte und der Kom -<br />

munikationsschnittstellen (z. B. WLAN<br />

oder Bluetooth) können sowohl Gespräche<br />

abgehört werden als auch sensible Daten –<br />

wie Adressbucheinträge, Ter mine, SMS<br />

oder E-Mails – von Kriminellen ausgespäht<br />

werden.<br />

Malware als Gefahrenquelle<br />

Ein weiteres Risiko liegt in der Infektion<br />

mit Schadprogrammen. Entsprechende<br />

Malware kommt zunehmend in Umlauf.<br />

Eine Infizierung funktioniert dabei wie bei<br />

einem normalen Computer, nämlich beispielsweise<br />

per E-Mail oder über manipulierte<br />

Web-Seiten. Auch zum Download<br />

angebotene Apps können eine Gefahren -<br />

quelle darstellen. Ist ein Smartphone erst<br />

einmal mit einem Schadprogramm infiziert,<br />

können eventuell Daten mitgelesen oder<br />

manipuliert werden. Das dritte wesentliche<br />

Risiko besteht im Ausfall bzw. der Mani -<br />

pulation des Fernzugriffs. Smartphones<br />

werden häufig im beruflichen Umfeld<br />

genutzt, um auf Unternehmensdaten zuzugreifen<br />

– ein äußerst attraktives Ziel für<br />

Angreifer.<br />

Bewusst auf mögliche<br />

Infektionen achten<br />

Der notwendigen Sensibilisierung der Mit -<br />

arbeiter schließt sich die nächste Frage an:<br />

Woran ist eine Infektion mit Schadsoftware<br />

zu erkennen? Dafür gibt es verschiedene<br />

Indikatoren. Ist etwa der Akku-Verbrauch<br />

ungewöhnlich hoch oder schaltet sich das<br />

Gerät unerwartet aus, sollte der Nutzer<br />

misstrauisch werden. Das gleiche gilt, wenn<br />

das Smartphone unbekannte Rufnummern<br />

anwählt. Denn es wäre möglich, dass dabei<br />

persönliche Informationen abgefragt,<br />

Konten bzw. Guthaben manipuliert werden<br />

oder durch die Anwahl kostenpflichtiger<br />

Rufnummern hohe Kosten entstehen.<br />

Argwohn ist auch dann angebracht, wenn<br />

ungewollt persönliche Daten oder SMS versendet<br />

werden, sich ohne Zutun des<br />

Nutzers die PIN verändert oder auf dem<br />

Einzelverbindungsnachweis Verbindungen<br />

aufgelistet sind, die der Nutzer nicht zuordnen<br />

kann.<br />

Notwendige Regelungen treffen<br />

Neben der ständigen Aufmerksamkeit für<br />

Auffälligkeiten dieser Art gehört eine ganze<br />

Palette technischer sowie organisatorischer<br />

Maßnahmen in das unternehmenseigene<br />

Sicherheitspaket. Dafür sollte man im<br />

Vorfeld eine Vielzahl von Regelungen treffen:<br />

■ Welche Daten dürfen gespeichert und<br />

verarbeitet werden?<br />

■ Wie ist mit privaten Daten umzugehen?<br />

■ Welchen Anforderungen an Betriebs -<br />

syste me, Schnittstellen, zentrale Admi -<br />

nis tration oder Sicherheit muss entsprochen<br />

werden?<br />

■ Welche zusätzlichen Sicherheitsmecha -<br />

nismen werden verwendet?<br />

76 77


fachartikel<br />

Hinzu kommen die Besonderheiten der<br />

mobilen Kommunikationsnetze sowie die<br />

Nutzung von WLAN und Bluetooth.<br />

Außerdem sollte man festlegen, unter<br />

welchen Rahmenbedingungen Smart -<br />

phones genutzt werden dürfen und wie sie<br />

unterwegs zu schützen sind. In diese<br />

Kategorie gehören auch Regelungen für<br />

Geräte, die von Besuchern in die Unter -<br />

nehmensräume mitgebracht werden.<br />

Weiter hin sind die notwendigen Schritte bei<br />

Verlust zu definieren. Darüber hinaus müssen<br />

die Benutzer über die Grenzen der<br />

Sicherheitsmaßnahmen ebenso Bescheid<br />

wissen wie über die unternehmensweiten<br />

Richtlinien für den sicheren Einsatz.<br />

Zum Schutz vor Missbrauch oder Dieb -<br />

stahl sollten Smartphones nicht an unsicheren<br />

Orten unbeaufsichtigt zurückgelassen<br />

werden. Verlorene oder gestohlene Geräte<br />

sollten sofort gesperrt werden. Zudem ist<br />

die Abfrage einer PIN oder eines Passworts<br />

sowohl beim Einschalten des Geräts als<br />

auch nach längerer Nichtnutzung oder<br />

beim Wechsel der SIM-Karte eine<br />

Standard-Sicherheitsmaßnahme.<br />

Ob und auf welche Weise zusätzliche<br />

Dienste wie Bluetooth oder WLAN genutzt<br />

werden dürfen, bedarf ebenfalls der<br />

Definition. Nicht benötigte Dienste sollten<br />

generell deaktiviert sein. Vertrauliche<br />

Daten und E-Mails müssen durch geeignete<br />

Maßnahmen zur Authentisierung und<br />

Verschlüsselung vor unbefugtem Zugriff<br />

geschützt werden. Bei Online-Zugriffen<br />

vom Smartphone auf das IT-Netz des<br />

Unternehmens muss außerdem eine sichere<br />

Kommunikation gewährleistet werden.<br />

Hierbei sind Verfahren zu definieren, wie<br />

Verbindungen über die unterschiedlichen<br />

Schnittstellen, beispielsweise über VPN-<br />

Techniken, aufgebaut werden. Bei beson -<br />

ders hohem Schutzbedarf ist der Einsatz<br />

von Krypto-Handys sinnvoll, die eine<br />

durchgängig verschlüsselte Sprach- und<br />

SMS-Kommunika tion ermöglichen.<br />

Was die Speicherung von Daten und<br />

Programmen betrifft, so empfiehlt es sich,<br />

vertrauliche Daten gar nicht oder nur verschlüsselt<br />

auf den Geräten oder zusätzlichen<br />

Speicherkarten abzulegen und sensible<br />

Informationen nicht unverschlüsselt<br />

über das Mobiltelefon weiterzugeben. Zur<br />

Ausfallvorsorge ist zudem eine regelmäßige<br />

Datensicherung notwendig. Für den Fall<br />

des Datenverlustes ist zu definieren, über<br />

welche Mechanismen das letzte Backup<br />

wieder eingespielt werden kann – vor allem<br />

dann, wenn der Mitarbeiter gerade unterwegs<br />

ist.<br />

Links<br />

Empfehlungen für die<br />

Mitarbeiter veröffentlichen<br />

Alle Sicherheitsempfehlungen zum Thema<br />

Smartphones sollten zudem zielgruppengerecht<br />

aufbereitet und in einer Benutzer -<br />

richtlinie unternehmensweit veröffentlicht<br />

werden. Dass sich dieser Aufwand für<br />

Unternehmen lohnt, liegt auf der Hand.<br />

Schließlich legen gesetzliche Regelungen<br />

wie die Eigenkapital-Vorschriften des<br />

Basler Ausschusses für Bankenaufsicht<br />

(Basel II) oder das Gesetz zur Kontrolle und<br />

Transparenz im Unternehmensbereich<br />

(KonTraG) eindeutig fest, dass das<br />

Geschäftsrisiko durch Sicherheitslücken<br />

beim Unternehmer liegt.<br />

Wichtig ist, dass bei allen technischen und<br />

organisatorischen Maßnahmen niemals der<br />

Faktor Mensch außer Acht gelassen wird.<br />

Schließlich nützen die besten technischen<br />

Sicherheitsvorkehrungen nichts, wenn ein<br />

Mitarbeiter während eines Telefonats unterwegs<br />

ungeniert und lautstark sensible Unter -<br />

nehmensinformationen verrät. ■<br />

[BIT] Bitkom, Handy-Diebstahl weit verbreitet, siehe: http://www.bitkom.org/de/presse/66442_64952.aspx<br />

[BSI-a] Bundesamt für Sicherheit in der Informationstechnik, siehe: www.bsi.bund.de<br />

[BSI-b] Bundesamt für Sicherheit in der Informationstechnik, BSI-Bürgerumfrage zur<br />

Internetsicherheit, siehe:<br />

https://www.bsi.bund.de/ContentBSI/Presse/Pressemitteilungen/Presse2011/BSI-Buergerumfrage-Internetsicherheit_11022011.html<br />

[IDC] IDC, Worldwide Quarterly Mobile Phone Tracker, siehe:<br />

http://www.idc.com/research/viewfactsheet.jsp?containerId=IDC_P8397<br />

1/2012

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!