Das Magazin des
issn
186
9-54
42
Design by ContractKomponenten in der Software-Entwicklung
Mister FZI – Professor Lockemann
Jubiläum – 40 Jahre Fakultät für Informatik
Innovative Software durch agile Werte
Softwareentwicklung aus Karlsruhe
Nr. 7 | November 2012Magazin
Verein der Karlsruher Software-Ingenieure
VErEIN
Antrag auf Mitgliedschaft für Einzelpersonen Ich beantrage die Mitgliedschaft im Verein der Karlsruher Software-Ingenieure e.V. (VKSI)
Vorname, Name
Anschrift
Telefonnummer E-Mail
Arbeitgeber
Ich bin seit (Jahr/en) als Software-Ingenieur tätig.
Einzugsermächtigung (optional): Ich ermächtige den VKSI widerruflich die zu entrichtenden Beiträge zum Beginn des Kalenderjahres von meinem Giro-konto durch Lastschrift einzuziehen. Wenn mein Konto die erforderliche Deckung nicht aufweist, besteht seitens des Kreditinstitutes keine Verpflichtung zur Einlösung. Teileinlösungen werden im Lastschriftverfahren nicht vorgenommen.
Kontonummer, BLZ, Bank
Datum, Unterschrift
Der Mitgliedsbeitrag für natürliche Personen beträgt 50,- EUr, für Studierende und Auszubildenden 25,- EUr, für GI-Mitglieder 40,- EUr (Bescheinigungen bitte beilegen).
Datenschutzerklärung: Persönliche Daten unterliegen dem Datenschutz. Sie werden nicht veräußert und ausschließlich zu vereinsinternen Zwecken verwendet, insbesondere zur Aufrechterhaltung des Kontakts zu den Mitgliedern.
Antrag auf Mitgliedschaft für Juristische Personen, Firmen und wirtschaftlich aktive Organisationen Wir beantragen die Mitgliedschaft im Verein der Karlsruher Software-Ingenieure e.V. (VKSI)
Firma, Name der Organisation Anzahl der Mitarbeiter Name des Ansprechpartners
Anschrift
Telefonnummer E-Mail
Name, Vorname des/der Unterschreibenden (in Klarschrift) Datum, Unterschrift (Zeichnungsberechtigter)
Einzugsermächtigung (optional): Wir ermächtigen den VKSI widerruflich die zu entrichtenden Beiträge zum Beginn des Kalenderjahres von unserem Girokonto durch Lastschrift einzuziehen. Wenn unser Konto die erforderliche Deckung nicht aufweist, besteht seitens des Kreditinstitutes keine Verpflichtung zur Einlösung. Teileinlösungen werden im Lastschriftverfahren nicht vorgenommen.
Kontonummer, BLZ, Bank
Datum, Unterschrift
Der jährliche Mitgliedsbeitrag für Firmen und wirtschaftlich tätige Organisationen beträgt 250,- EUr (1 bis 9 Mitarbeiter), 500,- EUr (10 bis 99 Mitarbeiter), 1.000,- EUr (100 bis 999 Mitarbeiter), 2.000,- EUr (1.000 und mehr Mitarbeiter).
Datenschutzerklärung: Persönliche Daten unterliegen dem Datenschutz. Sie werden nicht veräußert und ausschließlich zu vereinsinternen Zwecken verwendet, insbesondere zur Aufrechterhaltung des Kontakts zu den Mitgliedern.
Verein der Karlsruher Software-Ingenieure (VKSI) e.V. | c/o Prof. Dr. ralf reussner | Forschungszentrum Informatik | Haid- und Neustr. 10-14 | 76131 Karlsruhe
Verein der Karlsruher Software-Ingenieure
2 VKSI MAGAZIN Nr. 7 November 2012
EDITOrIAL
Willkommen!
Liebe Leserin, lieber Leser,
Contracts im Software Engineering, innovative Software durch agile Methoden, so lauten die Schwerpunkte unseres aktuel-len Magazins. Doch wir gestatten uns auch einen langen Blick zurück in dieser Ausgabe: Am 12. Oktober feierte die Karlsruher Informatikfakultät ihren 40. Geburtstag. Damit ist Karlsruhe die älteste deutsche Informatik-Fakultät und hat eine erstaun-liche Entwicklung hinter sich. Mit ursprünglich vier Instituten lehrte und forschte man im rechenzentrum der Universität. Heute lehren an der Informatik-Fakultät des KIT rund 40 Pro-fessoren und über 400 Mitarbeiter und forschen für Hightech-Wachstumsbranchen. Ob hocheffiziente routenplanung, auto-nome Sensornetzwerke, humanoide roboter oder kognitive Automobile – viele einschneidende Entwicklungen der Infor-matik, und insbesondere der Software-Technik, wurden und werden in Karlsruhe erzielt. Am KIT wurde das mit Ausstel-lung, Führungen, Demos und Vorträgen gebührend gefeiert, einige Impressionen des Festakts lesen Sie im Heft. Seit der Gründung der Fakultät ist auch Professor Lockemann Informa-tik-Professor in Karlsruhe – wenn auch inzwischen emeritiert. Seinen Werdegang erläutert der »Mister FZI« im Interview in der rubrik Karlsruher Köpfe.
Die Disziplin der Informatik (die damals noch die unter-schiedlichsten Namen trug) hatte ihr Karlsruher Debüt einige Jahre früher: September 1958 wurde die Z22 an der Universität Karlsruhe ausgeliefert und mit der Ausbildung der Program-mierung dieser Maschine begonnen. Details zu Taktfrequenz und Arbeitsspeicher muten heute fast skurril an. Allein die Taktfrequenz von 0,14 Megahertz im Jahr 1958 ist faszinierend niedrig. Der rechner verarbeitet also eine knappe Viertelmilli-on Befehle pro Sekunde. Eine heute übliche Frequenz ist etwa 3 Gigahertz. Man stelle sich vor, die Autos seien inzwischen um den gleichen Faktor schneller geworden …
Das Gründungsjahr der Karlsruher Informatik-Fakultät, 1972, ist auch das Jahr, in welchem Edsger Wybe Dijkstra den Turing-Preis erhielt und in seinem Aufsatz The Humble Pro-grammer schrieb: »To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now that we have gigantic computers, programming has become an equally gigantic problem.« Daran hat sich im Kern bis heute nichts geändert.
2012 jährt sich Turings Geburtstag zum hundertsten Mal. 1937 publiziert er den Artikel On Computable Numbers with
an application to the Entscheidungsproblem, der die Turing-Maschine beschreibt (und den Hinweis eines Gutachters ein-brachte, dass in dieser Zeitschrift rein englische Titel üblich wären). Während des Zweiten Weltkrieges gibt Alan Turing die entscheidenden Hinweise zur Entschlüsselung der ENIGMA-Codes und baut dafür einen speziellen mechanischen rechner, was zur Zerstörung der deutschen U-Boot Flotte wesentlich beiträgt. Ob Maschinen denken können, diese Frage faszinier-te ihn zeitlebens. 1952 wurde er wegen einer homosexuellen Beziehung angeklagt, 1954 starb Turing, man vermutet durch Suizid. Homosexuelle Handlungen waren – wie in den meisten anderen Ländern – auch in Großbritannien strafbar. In dieser Frage hat sich zum Glück inzwischen viel geändert.
Aktuelle Informationen zu Veranstaltungen des VKSI etc. erhalten Sie wie immer mit unserem Newsletter. Und wie immer schließen wir unser Editorial mit einer herzlichen Ein-ladung an unsere Leserinnen und Leser: Werden Sie Mitglied im VKSI e. V. Einen Aufnahmeantrag finden Sie in diesem Heft oder unter www.vksi.de.
Freundliche GrüßeIhreChristian Popp und ralf reussner
Christian Popp, Arvato Infoscore, Prof. Dr. ralf reussner, KIT / FZI
VKSI MAGAZIN Nr. 7 November 2012 3
ENTWICKLErTAG 2013
Call for Contributions
5.–7. JuniDie Konferenz für Software Engineering
KARLSRUHERENTWICKLERTAG
2012Karlsruher Entwicklertag
Zuhören, erleben, mitreden.
2013
www.entwicklertag.de
ET-Flyer 121005.indd 1 05.10.12 09:08
Der Karlsruher Entwicklertag 2013 wird nächstes Jahr über drei Tage, vom 05. bis zum 07. Juni 2013, stattfinden. Neben dem Conference Day und dem Agile Day wird es auch kom-mendes Jahr an dem Freitag wieder einen Tutorial Day geben. Am Entwicklertag 2013 wollen wir sowohl Vorträge als auch interaktive Sessions anbieten. Wir bitten um Einreichungen für den Conference Day, den Agile Day und den Tutorial Day.
Wir freuen uns über Beiträge zu den aktuellen Entwicklungen im Bereich Java und .NET, sowie zu den Themenschwerpunk-ten Cloud, Mobile, Social Media und IT Security, aber auch zu anderen Themen Ihrer Wahl. Konzeptionelle Beiträge sind ebenso willkommen wie Erfahrungsberichte und die Vorstel-lung innovativer Produktideen.
Einreichungsschluss ist der 21. Dezember 2012.
Das Programmkomitee besteht aus:Dr. Susanne Kaufmann (regionalgruppe Karlsruhe der Gesellschaft für Informatik, GI)Dr. Klaus Krogmann (Verein der Karlsruher Software Ingenieure, VKSI)Jan Baumann (andrena objects ag)Jochen Winzen (andrena objects ag)
Alle Details zu Formaten etc. finden Sie auf der Website www.entwicklertag.de
4 VKSI MAGAZIN Nr. 7 November 2012
ARE YOU A DEVELOPER OR MANAGER?START A NEW DAY WITH US
Jetzt scannen und mehr erfahren.
Oder smarthouse.de/karriere besuchen.
INHALT
EDITOrIAL Christian Popp, Professor Dr. Ralf Reussner: Willkommen! 3
JUBILäUM 40 Jahre Fakultät für Informatik 6
DESIGN By CONTrACT C4J Version 6.0 - mehr als Assert Statements:
VKSI stellt neues Framework vor 10
Warum es sinnvoll sein kann, sich auch heute noch über Verträge
Gedanken zu machen. 12
Design by Contract versus agile Prozesse
Interview mit Timm reinstorf 14
Wie schreibt man einen guten Softwarevertrag? 16
Der equals-Contract –
ein Beispiel für Contracts für Legacy Systeme 21
KOLUMNE CyBErTrENDS Anno 1972 23
KArLSrUHEr KöPFE Mister FZI – Professor Lockemann 24
AGIL Innovative Software entsteht durch agile Werte 28
IT UND rECHT Patente als Schutzmechanismen für technische Erfindungen. 32
NACHLESE Regisseure unserer Freizeit 34
rüCKSCHAU Sneak Preview des VKSI »QS Best Practices in Karlsruhe« 35
IMPrESSUM 34
ANZEIGEN andrena objects AG 26, 31
arvato infoscore GmbH 36
smarthouse Media GmbH 4
STP Informationstechnologie AG 9
CLOUDZONE 2013 23
TechniData IT-Service GmbH 27
POrTrAIT STP Informationstechnologie AG 8
VKSI MAGAZIN Nr. 7 November 2012 5
Nr. 7 | November 2012Softwareentwicklung aus Karlsruhe
Magazin
JUBILäUM
1972 bringt Hewlett-Packard den ersten wissenschaftlichen Taschenrechner auf den Markt. Fünf ehemalige Mitarbeiter von IBM stellen das heute weltbekannte Unternehmen Sys-temanalyse und Programmentwicklung auf die Beine, Edsger Wybe Dijkstra erhält den Turing-Preis und die Universität Karlsruhe gründet Deutschlands erste Informatik-Fakultät.
Wie man auf der Feier zum 40. Geburtstag erfahren konnte, gab es ein hartes Kopf-an-Kopf-rennen zwischen den einschlä-gigen Standorten. Prof. Gerhard Goos, der erste Professor der Informatik in Karlsruhe, war formal noch bei der TU München angestellt, als er schon Vorsitzender der Karlsruher Berufungs-kommission wurde und kurzerhand 48 Stellen, darunter acht Professorenstellen zu besetzen hatte. In ganz Deutschland waren etwa 130 Professorenstellen zu besetzen, nach Goos Ansicht gab es dafür lediglich etwa 30 geeignete Köpfe. Und doch gelang in Karlsruhe ein erfolgreicher Start. Nach Goos waren dafür vor allem drei Faktoren verantwortlich: Erstens war die Fakultät ein Kind der ganzen Universität und nicht einer einzelnen Fakultät. Zweitens konnte bei der Berufung mit einer hohen Geschwindigkeit vorangegangen werden und drit-tens startete die Fakultät dann mit einer homogenen, jungen Professorenschaft (auch wenn es seiner Ansicht nach manch-mal ein Nachteil war, keinen Senior als repräsentanten im
Senat zu haben). Der erste Dekan der Fakultät für Informatik, Professor Detlef Schmid, ging noch einen Schritt zurück in sei-ner Beschreibung: er erläuterte die organisatorischen Mühen der Ebene, als man in der Universitätsverwaltung um die Ein-richtung des Studiengangs Informatik überhaupt gekämpft hatte.
40 Jahre später ist dieses ringen um Anerkennung schon lange nicht mehr vorstellbar. Eingeleitet wurde die Feier mit einem Grußwort von Eberhard Umbach, dem Präsidenten des
Hoch soll sie leben!Fakultät für Informatik am KIT wird 40
Von Susann Mathis
Prof. Gerhard Goos. Karlsruhes erster Informatik-Professor.
6 VKSI MAGAZIN Nr. 7 November 2012
KIT, der unter anderem Energieinformatik, Big Data und Inter-net der Dinge als zentrale Herausforderung nannte. Oliver Gün-ther, der Präsident der Gesellschaft für Informatik, beschreibt das Fach Informatik als eine die Gesellschaft gestaltende Struk-turdisziplin und die von daher außerordentlich interessanten interdisziplinären Ansätze aus Karlsruhe. ralf reussner aus dem Direktorium des Forschungszentrums Informatik betont die seit 25 Jahren erprobte erfolgreiche Wechselwirkung zwi-schen Fakultät und FZI.
Schließlich grüßte auch noch Jochen Dietrich. Er war der erste in Karlsruhe diplomierte Informatiker, nur musste er sein Studium etwas heraus zögern, bis er nach Ausflügen nach Lyon und in die USA in Karlsruhe ordentlich Informatik studieren und auch diplomiert werden konnte.
Die Professoren Dillmann, Schmeck und Dreier erläuterten aktuelle Schwerpunkte der Fakultät und der Karlsruher Alum-nus Prof. Arndt Bode, Vorsitzender des Direktoriums des Leib-niz-rechenzentrums der Bayerischen Akademie der Wissen-schaften, begeisterte in seinem Festvortrag in die Zuhörerinnen und Zuhörer mit „SuperMUC: wissenschaftliches Höchstleis-tungsrechnen mit energieeffizientem Betrieb“.
Und ein weiteres Highlight schmückte den Festakt: die Klangcollage des Komponisten Johannes Helsberg mit der visuellen Gestaltung von Torsten Strer verzauberte und faszi-nierte das Publikum, indem sie vermeintlich bekannte Klänge und Bilder neu und überraschend zusammensetzte.
Hoch soll sie leben!Fakultät für Informatik am KIT wird 40
Von Susann Mathis
Jochen Dietrich. Karlsruhes erster Diplom-Informatiker.
Momentaufnahme der Klangcollage von Helsberg und Strer.
Prof. Dr. Oliver Günther, Präsident der Gesellschaft für Informatik
VKSI MAGAZIN Nr. 7 November 2012 7
Porträt
Zugegeben, in Karlsruhe ist die STP AG zwar kein verbreiteter Begriff, aber dies ändert sich, sobald man die Stadtgren-zen hinter sich lässt. Was die Wenigs-ten wissen: die Karlsruher Software-schmiede ist mit 80 % Marktführer im Bereich Software für Insolvenzverwal-ter und genießt bundesweit einen aus-gesprochen guten Ruf. Mit ihrem Pro-dukt »winsolvenz« werden die größten Insolvenzen Deutschlands abgewickelt – dazu gehören so namhafte Verfahren wie Arcandor, TelDaFax oder Schlecker.
STP heute und wie es begannDas Unternehmen startete vor 19 Jahren eher ungewöhnlich. Die Firmengründer ralph Suikat und Gunther Thies ent-schlossen sich damals, eine Software für Insolvenzverwalter zu entwickeln. Da beide weder Juristen, noch Softwarespe-zialisten sind, brauchte es hartnäckigen Einsatz, viel Energie und jede Menge Herzblut, um mit dem neu entwickelten Produkt den Einzug in die Verwalter-kanzleien zu meistern. Heute ist winsol-venz bundesweit bei über 1.000 Insol-venzverwalter-Kanzleien etabliert.
»Wir begannen 1993 gemeinsam mit zwei Studenten, ein Programm für die
Bearbeitung und Abwicklung von Insol-venzfällen zu entwickeln. Im Vorfeld hat-ten wir zahlreiche Fallstudien in Kanz-leien erstellt und brachten dann ein Jahr später das Produkt winsolvenz auf den Markt«, so ralph Suikat. »Heute sind wir der drittgrößte Anbieter für rechts-anwaltssoftware.« Die avisierte Kunden-gruppe war mit rund 1.200 Insolvenz-verwaltern bundesweit eher klein und es waren bereits fünf Konkurrenten mit eigenen Lösungen am Markt vertreten. Schwierige Voraussetzungen. »Dennoch gelang der Durchbruch«, freut sich Gun-ther Thies, »inzwischen sind sogar die Gerichte in fünf Bundesländern flächen-deckend mit unserer Software ausgestat-tet.«
Die Produktfamilie wächstSeit einigen Jahren entwickelt und ver-treibt die STP AG zusätzlich ein Doku-mentenmanagementsystem (DMS), das ebenfalls konsequent auf die Anforde-rungen von Juristen ausgerichtet ist und seit 2009 kommt auch noch ein eigenes Kanzleimanagementsystem (KMS) zur Familie hinzu. Für KMS wurde der kom-plette Produktplanungs- und Entwick-lungsprozess umgestaltet. »Ein völlig
neues Arbeiten, von pair-programming über Scrum bis hin zu neuen Technologi-en wie WPF – es blieb kein Stein auf dem anderen, aber es hat sich gelohnt!« bestä-tigt Koray Kazgan, einer der Softwareent-wickler im KMS-Team.
Leben und arbeiten bei STP – »have fun«Lauftreff, Schwimmgruppe, Kickerteam, Freitagessen, Massagetag, … es gibt viele gute Gründe, bei STP anzufangen. Aber das Wichtigste ist und bleibt: die STP’ler haben FUN bei der Arbeit! Nur ein moti-viertes Team kann gute Leistungen erbringen und, dass die STP-Mitarbeiter super motiviert sind, spiegelt sich in den High-Class-Produkten. Dass das wirklich so ist, beweisen diverse Auszeichnungen, die der STP AG verliehen wurden. So ist STP nicht nur TOP-Arbeitergeber, son-dern zählt auch zu den Gewinnern des BFamily Awards.
Lust bekommen, sich beim STP-Team zu bewerben? Dann einfach die Unter-lagen an Silke Folkerts schicken: [email protected] oder anrufen: 0721 82815 0.
STP Informationstechnologie AGMarktführer mit der extra Portion Charme
Nur ein motiviertes Team kann gute Leistungen erbringen.
8 VKSI MAGAZIN Nr. 7 November 2012
„ Ich habe meinen Traumjob gefunden! Und was ist mit Dir?“ Koray Kazgan,Softwareentwickler, KMS-Team STP Informationstechnologie AG
Softwareentwickler (w/m) Business Intelligence LösungenSoftwareentwickler .NET/C# (w/m)Business Analyst (m/w)/ Requirements Engineer Business Analyst (m/w) Finanzen / ControllingSenior Quality Analyst und Test Manager (m/w)
Jetzt bewerben! Ihre vollständigen Bewerbungsunterlagen mit Ihren Gehaltsvor-stellungen und dem frühesten Eintrittsdatum senden Sie bitte an unser Personalbüro oder per E-Mail an: [email protected] Informationen zu unserem Unternehmen finden Sie unter: www. stp-online.de
STP Informationstechnologie AG | Lorenzstraße 29 | 76135 Karlsruhe | Tel. 0721 82815 0 | [email protected] | www.stp-online.de
DESIGN By CONTrACT
Agil zu programmieren und trotzdem formale Verträge bei-spielsweise mit Schnittstellen zu verknüpfen – das ermöglicht das neue Release von C4J, Contracts for Java. Damit werden die Möglichkeiten des Assert Konzepts in Java entscheidend erweitert. Vorgestellt wird das neue Release des Frameworks vom Verein Karlsruher Software Ingenieure (VKSI). Wie der VKSI hervorhebt, wird C4J 6.0 durch Eclipse vollständig unterstützt und schützt die definierten Vertragsbeziehun-gen auch bei intensivem Refactoring. Damit erfüllt das neue Release eine äußerst wichtige Anforderung der agilen Ent-wicklergemeinde an das Contracts for Java-Konzept.
Verträge, also das systematische Definieren von Vor- und Nach-bedingungen und Klassen-Invarianten, die zur Laufzeit über-prüft werden können, steigern nachhaltig die Effektivität und Effizienz in der Software-Entwicklung. Mit dem neuen release des Frameworks C4J legt der VKSI nun eine Entwicklung vor, die das Assert-Konzept von Java entscheidend erweitert. C4J ermöglicht das Formulieren und Vererben von machtvollen Verträgen mit den vollständigen sprachlichen Mitteln von Java. Dazu trennt C4J die Vertragsklauseln konsequent vom Quell-code durch das Einführen von Vertragsklassen. Beim Laden der Klasse fügt C4J per Bytecode-Instrumentation die Vorbedin-gungen direkt zu Beginn der zu schützenden Methoden ein und die Nachbedingungen und Klassen-Invariante an deren Ende. Weil die Bedingungen damit auf Bytecode-Ebene Bestandteil der Methoden geworden sind, können sie zur Laufzeit über-prüft werden.
Kritik an der ersten Generation 2006 veröffentlichte der schwedische Entwickler Jonas Berg-ström die erste Generation von C4J auf sourceforge.net. Diese erste Generation von C4J verwendete Hagen Buchwald, damals beim Karlsruher Institut für Technologie (KIT), ab April 2009, um mehr als 1800 Studierende in der Objekt-Orientierten Programmierung mit Java zu schulen. Unterstützung erhielt
er von roland Küstermann, der C4J in EJE (Editing Java Easily) integrierte, eine Ent-wicklungsumgebung, die am KIT für Ausbildungszwecke verwendet wird. Auf dem Ent-wicklertag 2011 stellten Jonas Bergström und Hagen Buch-wald gemeinsam die erste Generation von C4J vor – und ernteten sowohl Zustimmung als auch Kritik. Denn die erste Generation von C4J – die Ver-sionen 1.0 bis 2,7.5 von Jonas Bergström – beruhten auf Namenskonventionen, d.h. C4J ord-nete die Vertragsmethoden der zu schützenden Methode über die Präfixe pre_ und post_ und der übereinstimmenden Signa-tur der Methode zu.
Diese Art der Zuordnung wird von Eclipse beim refactoring nicht unterstützt. In der logischen Folge können beim refac-toring Inkonsistenzen auftreten. Zwar erkennt C4J der ers-ten Generation diese Inkonsistenzen und gibt entsprechende Warnmeldungen aus. Selbst reparieren kann es die Fehler aber nicht. Damit entsteht für die Softwareentwickler die Zusatz-arbeit, alle Warnmeldungen nach einem refactoring abzuar-beiten, um die Konsistenz zwischen der zu schützenden Klas-se (target class) und der zugehörigen Vertragsklasse (contract class) wieder herzustellen.
Diese Zusatzarbeiten waren einer der Hauptkritikpunkte an den ersten Generationen von C4J. Weitere Fragen auf dem Karlsruher Entwicklertag 2011 lauteten etwa »Zementiert Design by Contract (DbC) nicht den Produktivcode, sodass ggf. refactorings unterbleiben?« oder »Verletzen Vertragsklassen nicht das Dry-Prinzip der Objektorientierung: Don‘t repeat yourself?« und »Können Vertragsklassen auch iterativ und inkrementell entstehen, gemäß des agilen Prinzips?«.
C4J Version 6.0 - mehr als Assert Statements: VKSI stellt neues Framework vor
Jonas Bergström
10 VKSI MAGAZIN Nr. 7 November 2012
Elegante Ansätze für die zweite GenerationEiner der Zuhörer, Ben romberg, hatte hingegen durchaus den Eindruck, dass C4J elegante Ansätze bot, um das auszuglei-chen, was man als »objektorientierte Lücke« von Java bezeich-nen könnte. romberg, erfahrener agiler Software-Ingenieur von andrena objects, entwickelte einige Monate später gemein-sam mit Hagen Buchwald, inzwischen ebenfalls bei andrena, die zweite Generation von »Contracts for Java«: C4J 6.0.
C4J 6.0, die zweite Generation von C4J, setzt auf den Stär-ken der ersten Generation von Jonas Bergström auf und ver-meidet gleichzeitig deren Schwächen.
Die Vertragsklassen stehen nun in einer direkten Verer-bungsbeziehung zu den sie schützenden Klassen. Das ist spezi-ell für das refactoring wichtig, da durch die Vererbungsbezie-hung Eclipse alle refactoring-Mechanismen automatisch auch auf die zugehörige Vertragsklasse anwendet. Folglich entste-hen auch bei intensivem refactoring keine Inkonsistenzen und damit auch keine aufwändigen Nacharbeiten für die Program-mierer.
Zudem können nun auch Verträge für Legacy Code erstellt werden, da das neue C4J keinerlei Anpassungen im Quellcode der zu schützenden Klasse erfordert, sondern vollständig von außen an die bestehenden Klassen per Vererbungsbeziehung angehängt werden können. Diese Fähigkeit öffnet C4J den immer wichtiger werdenden Anwendungsbereich der Sanie-rung von Alt-Systemen (Legacy Code), zumal C4J es nun auch erlaubt, Vertragsverletzungen lediglich zu loggen und keinen AssertionError zu werfen, was gerade für bereits in Produktion stehende Systeme sehr wichtig ist.
C4J überprüft sowohl für Legacy Code als auch neue Soft-ware-Projekte, dass ein Software-System am Ende auch wirk-lich stets genau das tut, was es tun soll.
C4J Version 6.0 - mehr als Assert Statements: VKSI stellt neues Framework vor
Contracts for Java (C4J) – Tutorial mit Coding Dojos
Ben romberg und Hagen Buchwald führen mit einem C4J-Tutorial in das Thema Contracts for Java ein. Dieses kosten-freie Tutorial wird in identischer Form zwei Mal angeboten:23. November 2012, 14:00 – 18:00 Uhr25. Januar 2013, 14:00 – 18:00 UhrOrt: Technologiepark Karlsruhe, Albert-Nestler-Str. 9, 1. OG, großer Schulungsraum der andrena objects agZielgruppe: Java Software Entwickler und Software EngineersMaximale Teilnehmerzahl: 16 TeilnehmerAgenda:●● Kurzeinführung in das Konzept von Contracts for Java●● Installation von C4J unter Eclipse●● C4J-Demo: Die Klasse Account
●● Systematisches Erstellen von Softwareverträgen (6 Prinzi-pien)
●● Coding Dojo zum systematischen Erstellen von Soft-wareverträgen
●● Externe Verträge für Legacy Systeme●● Coding Dojo zum Erstellen von externen Softwareverträgen
für Legacy Systeme●● Vererbung von Softwareverträgen●● Coding Dojo zum Vererben von Softwareverträgen●● Softwareverträge für die Standard Java Klassenbibliothek●● Coding Dojo equals-Contract●● Ausblick
Anmeldung unter www.vksi.de/c4j.html
Ben romberg Hagen Buchwald
Auf den folgenden Seiten lesen Sie zum Thema
●● »Entwurf mit Verträgen – Was ist »design by contract«? Warum es sinnvoll sein kann, sich auch heute noch über Verträge Gedanken zu machen« von ralf reussner
●● »Design by Contract versus agile Prozesse« Interview mit Timm reinstorf
●● »Wie schreibt man einen guten Softwarevertrag?« von Hagen Buchwald und Ben romberg
●● »Der equals-Contract – Softwareverträge für Legacy Sys-teme« von Hagen Buchwald und Ben romberg
Mehr Informationen zu C4J finden Sie unter http://c4j.vksi.de .
VKSI MAGAZIN Nr. 7 November 2012 11
DESIGN By CONTrACT
DbC ist eine Software-Entwurfs- und Implementierungstech-nik, die in den 80er Jahre von dem französischen Informati-ker Bertrand Meyer (ETH Zürich und Firma ISE) entwickelt wurde. Dabei werden Methoden von Klassen mit logischen Aussagen beschrieben: einer Vorbedingung, die eine Aussage macht über den Zustand des Objekts zur Laufzeit, die Parame-terwerte, damit die Methode funktioniert, einer Nachbedin-gung, die eine Aussage macht über den Zustand des Objekts und den Rückgabewert nach Ausführung der Methode sowie (optional) einer Invariante, die Aussagen macht über den Zustand des Objekts vor und nach der Ausführung.
Grundsätzlich gilt, dass die Implementierung der Methode die Einhaltung der Nachbedingung verantwortet, unter der Annah-me, dass die Vorbedingung gilt. Gilt sie nicht, ist also eine Ver-letzung der Nachbedingung legitim. Für das Einhalten der Vorbedingung ist der Code der die Methode aufrufenden Stelle verantwortlich, d. h., der Code hat dafür zu sorgen, dass Para-meterwerte im richtigen Wertebereich liegen und das Objekt einen gemäß der Vorbedingung gültigen Zustand hat.
Historisch basiert das Ganze auf den Hoare-Tripeln, einer Software-Verifikationstechnik, die Ende der 60er Jahre vom britischen Informatiker Sir Tony Hoare entwickelt wurde. Bei dieser Technik muss auf Ebene einzelner Anweisungen nach-gewiesen werden, dass bei Gelten einer Vorbedingung nach Ausführung der Anweisung die Nachbedingung gilt. Aus theo-retischer Sicht könnte man also sagen, DbC sind Hoare-Tripel auf Granularität von Methoden. Aus theoretischer Sicht ist ein anderer Bezug vielleicht noch erhellender, denn letztlich ist auch ein Typsystem einer Programmiersprache eine (sehr schwache) Umsetzung von DbC: Die Typen der Parameter stel-len eine Vorbedingung dar (welche lediglich besagt, dass der Wert eines Parameters in der durch den Typ bestimmten Menge typzulässiger Werte liegt). So besagt etwa ein String-Parame-tertyp, dass der dazugehörende Parameter einen Wert hat, der in der Menge aller Zeichenketten (eben Strings) enthalten ist.
Analoges gilt für den rückgabetyp, der eine schwache Nach-bedingung beschreibt.
Der Vorteil des Typsystems liegt in der Prüfung zur überset-zungszeit, das heißt, Fehler werden dem Entwickler, nicht dem Anwender, gemeldet. Erkauft wird diese frühe (statische) über-prüfbarkeit durch das Arbeiten auf einer starken Abstraktion der eigentlichen Semantik des Programms. Dies hat eine banale und leidige Konsequenz: Bloß weil ein Programm typ-korrekt ist, muss es noch lange nicht fehlerfrei sein ...
Vor- und NachteileDer Vorteil von DbC liegt in der klareren Definition von Ver-antwortlichkeiten zwischen Methodenimplementierer und Methodenaufrufer als dies Methodensignaturen mit ihren Parameter- und rückgabetypen erlauben. Das Explizitmachen von Vor- und Nachbedingungen zwingt Software-Entwickler in der regel zu genauerem Nachdenken über die Bedeutung der Methode, insbesondere darüber, mit welchen Werten und Zuständen die Methode zurechtkommen muss, und mit wel-chen nicht.
Der Entwickler des aufrufenden Codes hat durch DbC genauer dokumentiert, was von seinem Code erwartet wird, aber auch, was er nach Ablauf der Methode erwarten kann. Dadurch ergibt sich weniger Code-redundanz, da klar ist, ob Code zur Behandlung von Sonderfällen in der Methode stehen muss oder beim Aufrufer. Eine Duplikation (wie beim defensiv-en Programmieren, bei dem man den Entwickler der Methode zwingt, alle möglichen Arten von Zuständen und Parameter-werten zu behandeln) wird vermieden. Im Vergleich zu Typen sind Vor- und Nachbedingungen aussagemächtiger, was aber meist zur Konsequenz hat, dass sie nicht mehr statisch prüfbar sind, also erst zur Laufzeit geprüft werden können. (Dies liegt, der Hinweis sei im Turing-Jahr erlaubt, an der prinzipiellen Unentscheidbarkeit des Halteproblems bei Turing-universell-en Kalkülen. Dies bedeutet, dass gewisse Eigenschaften von Programmen nicht statisch, sondern nur durch Ausführung des Programms selbst geprüft werden können.) Dennoch stellen Verträge eine gute Debugging-Hilfe dar, da es bei Verletzung einer Nachbedingung (und damit offensichtlicher Einhaltung der Vorbedingung, es) eine gute Heuristik ist, zunächst im Code der Methode nach dem Fehler zu suchen. Bei Verletzung einer Vorbedingung würde man dies stattdessen zunächst in dem aufrufenden Code machen.
An dieser zurückhaltenden Formulierung “Heuristik, zunächst ... zu suchen” erkennt man aber auch die Grenzen des Konzeptes: Oft sind Vor- und Nachbedingungen nicht präzise zu formalisieren. “Nicht präzise” heißt, dass sie nicht genau die Menge der zulässigen Parameterwerte und Objektzustände enthalten, die in einer Vorbedingung gefordert werden oder in einer Nachbedingung gelten können. Stattdessen werden oft Ober- oder Untermengen oder – schlimmer noch – andere Approximationen dieser Mengen beschrieben, sodass nicht
Entwurf mit Verträgen – Was ist »design by contract«?Warum es sinnvoll sein kann, sich auch heute noch über Verträge Gedanken zu machen.
Von Ralf Reussner (KIT/FZI)
Bertrand Meyer
12 VKSI MAGAZIN Nr. 7 November 2012
RubRik
immer aus einer geltenden Vorbedingung geschlossen werden kann, ob wirklich die Methodenimplementierung funktioni-ert oder dass eine Methode durchaus funktioniert, auch wenn die Vorbedingung fehlschlägt. Analoges gilt für die Nachbedin-gung. Warum ist die präzise Beschreibung der Vor- und Nach-bedingung manchmal so schwierig? Dies liegt an zwei Arten von Komplexität, die damit verbunden sind:
1. Berechnungskomplexität: Der Aufwand zur Laufzeit zur Prüfung der exakten Vor- und Nachbedingung kann ähnlich hoch sein wie der Aufwand zur Ausführung der Methoden-implementierung. Diese Vervielfachung der Laufzeit ist man meistens nicht gewillt zu bezahlen. Vielleicht ändert sich dies, wenn man eine Idee Walter Tichys aufgreift, die Prü-fung der Verträge auf einen sich gerade langweilenden Kern eines Mehrkernprozessors auszulagern.
2. »Kognitive Komplexität«: Wenn das Spezifizieren der prä-zisen Vor- und Nachbedingung ähnlich schwierige Codes erfordert wie die Implementierung der Methode, so ist die Chance, dass der Entwickler hier einen Fehler macht, ähn-lich hoch wie die, einen Fehler bei der Implementierung zu machen. Auch wenn man argumentieren kann, dass man dann durch eine Inkonsistenz zwischen Verträgen und Implementierung doch noch eine Chance hat, Fehler leichter zu finden, als wenn nur der Code vorliegt, so schreckt der Aufwand zur Qualitätssicherung komplexer Vor- und Nach-bedingungen ab.
Glücklicherweise muss das nicht immer so sein: Manchmal ist es in der Tat sehr viel leichter zu prüfen, ob das Ergebnis einer Berechnung stimmt, als die Berechnung selbst durchzuführen. Als besonders einfaches Beispiel sei die Berechnung der Quad-ratwurzel gegeben: Die Prüfung durch Quadrieren des Ergeb-nisses ist leichter (kognitiv wie auch von der Laufzeit her) als das eigentliche Ziehen der Quadratwurzel. Hinzu kommt, dass auch für reellwertige Ergebnisse die Beschreibung der Vorbe-dingung (Parameter nicht negative Fließkommazahl) auch sehr einfach ist. In genau solchen Fällen, passt DbC sehr gut und manchmal hat man Glück, eine Methode dieser Art zu imple-mentieren.
übertragung auf KomponentenDie Trennung von Verantwortlichkeiten zwischen Metho-denimplementierer und Methodenaufrufer passt sehr gut zur Idee der Software-Komponente. Bei der komponentenbasier-ten Software-Entwicklung geht es darum, die Entwicklung der Komponente organisatorisch und personell zu trennen von der Nutzung der Komponente. Nur ist eine Komponen-te etwas anderes als eine Methode (man könnte für unseren Zusammenhang sagen: Eine Komponente ist eine Sammlung von Methoden und hat in sogenannten Bedarfsschnittstellen explizit gemachte Abhängigkeiten nach außen).
Weiterhin ist auch die Nutzung einer Komponente etwas anderes als der Aufruf einer Methode. Die Nutzung einer Komponente besteht entweder im Komponieren einer Kom-ponente mit anderen Komponenten oder im “Deployment” der Komponente (also darin, sie zum Einsatz zu bringen, sprich: in eine Ablaufumgebung einzusetzen). Also muss DbC übertragen werden auf Komponenten. Dies hat der Autor des Artikels in den 90er Jahren getan; Ergebnis: Die Bedarfsschnittstelle(n) der Komponente beschreiben die Vorbedingung der Komponente, die Nachbedingung wird durch die Angebotsschnittstelle(n) gegeben. Dass Kompo-nenten aufwendigere Schnittstellenbeschreibungen, also ledi-glich Signaturlisten, brauchen, und dass auch deswegen nur eine Vor- und eine Nachbedingung die Wiederverwendung der Komponente zu sehr einschränkt, zeigt, dass die übertragung von DbC noch etwas aufwendiger ist als hier skizziert. Letztlich braucht man sogenannte parametrisierte Verträge, bei denen aus einer Nachbedingung die Vorbedingung berechnet wird. Dies wird konzeptionell auch im Palladio-Architektursimulator des KIT und des FZI so genutzt. Eine ausführliche Diskussion würde hier aber zu weit führen. Interessierte seien auf www.palladio-simulator.com und dort genannte Artikel verwiesen.
Nutzung für MusterbeschreibungEs gibt noch einen anderen, leider viel zu wenig beachteten, Pfad von DbC in die Jetztzeit. Entwurfsmuster sind bekann-termaßen Lösungen für wiederkehrende Entwurfsprobleme. Dementsprechend müssen Entwurfsmuster oft generischer als durch reinen Code beschrieben werden. Hier stellen Verträge eine interessante Art dar, wie man zusätzlich zu den gängigen Arten Muster beschreibt. In dem Buch »Design Patterns and Contracts« von Jean-Marc Jezequel, Michel Train und Chris-tine Mingins werden die gängigen »Gang-of-Four« Entwurfs-muster durch relevante Vor- und Nachbedingungen beschrie-ben. Auch wenn es keinen empirischen Nachweis dafür gibt, erscheint es mir, dass dadurch die Essenz eines Musters gerade fürwenig Entwickler mit geringer Erfahrung in der Objekto-rientierung schneller verstanden wird. Dies wäre ein Hinweis darauf, dass tatsächlich durch Verträge eine sinnvolle Informa-tion über ein Programm beschrieben wird, welche durch schie-res Nachlesen im Code nur mühsam zu erhalten wäre. Dies ist vielleicht der Hauptgrund, warum es sinnvoll ist, sich auch heute noch über Verträge Gedanken zu machen.
Entwurf mit Verträgen – Was ist »design by contract«?Warum es sinnvoll sein kann, sich auch heute noch über Verträge Gedanken zu machen.
Von Ralf Reussner (KIT/FZI)
Prof. Dr. Ralf Reussner, Vorstand des VKSI, ist Leiter des Lehrstuhls Software-Entwurf und -Qualität am Institut für Programmstrukturen und Datenorganisation (IPD) der Fakultät für Informatik des Karls ruher Instituts für Tech-nologie (KIT) und wissenschaftlicher Vorstand des ForschungszentrumsInformatik (FZI) in Karlsruhe. sdq.ipd.kit.edu
VKSI MAGAZIN Nr. 7 November 2012 13
DESIGN By CONTrACT
»Design by Contract versus agile Prozesse«Interview mit Timm Reinstorf über C4J und DbC
Von Susann Mathis
Was ist C4J1 und wie kam es dazu, dass der VKSI sich hier engagiert?Als wir den VKSI gegründet haben, hat-ten wir vor allem ein Ziel vor Augen: Wir wollten das Software Engineering Know-how in der region, aus Hochschulen und der Industrie, in seiner ganzen Vielfalt zusammen bringen, den Erfahrungsaus-tausch fördern, Synergien schöpfen und helfen, Innovationen zu verbreiten und vielleicht sogar, selbst Innovationen zu befördern.
Die Entstehungsgeschichte der neuen Version von C4J ist ein gutes Beispiel für die Arbeit des VKSI: 2010 wurden Vereinsmitglieder auf die Arbeit von Hagen Buchwald2 aufmerksam: er hatte »Design by Contract« in zwei Program-mier-Grundvorlesungen für Wirtschafts-ingenieure und Informationswirte am KIT eingeführt. Hagens Ziel war es, den Studierenden so von Anfang an ein zen-trales Konzept der Objektorientierung, nämlich das Konzept des abstrakten Datentyps, nahe zu bringen. Das Konzept der Contracts wurde ja beispielsweise ursprünglich in der Programmierspra-che und Programmierumgebung Eif-fel umgesetzt. Für Java gab es mehrere Implementierungen, die Contracts für Java bereitstellten. Hagen hatte sich für
1 Siehe Artikel von ralf reussner »Entwurf mit Verträgen – Was ist ‚design by contract‘?«
2 Hagen Buchwald arbeitete damals am Insti-tut für Angewandte Informatik und Formale Beschreibungsverfahren des KIT und hatte »Design by Contract« in die Vorlesungen »Programmieren in Java« und »Program-mieren kommerzieller Systeme« eingeführt.
das Open Source Framework C4J von Jonas Bergström entschieden.
Neben seiner Lehrtätigkeit machte Hagen Buchwald Contracts dann auch zum Gegenstand empirischer Unter-suchungen. Er führte Experimente zur Frage durch, welche Auswirkungen der Einsatz von Contracts auf Qualität und Produktivität haben. Das hat uns als VKSI natürlich unmittelbar interessiert und wir haben die Durchführung dieser Experimente unterstützt und unsere Mit-glieder um Teilnahme gebeten.
Ist DbC nicht eine olle Kamelle? Eiffel gehört ja nun nicht gerade zu den lebendigsten Sprachen und die Funktion der Abbildung und des Testens von Schnittstellen haben Unit Tests übernommen. TDD und Unit Testing sind erprobte Engi-neering Techniken. Sind Contracts nicht unnötig? Warum beschäftigt sich der VKSI ausgerechnet mit dem Thema?Contracts und DbC sind jeweils Klassi-ker-Themen des Software Engineering. Sie gehen letzten Endes auf Tony Hoare und Bertrand Meyer zurück, Allein die intellektuelle Auseinandersetzung mit diesen Klassikern hilft uns, Konzepte der Objektorientierung besser zu verstehen und damit zu verstehen, wie Qualität in Software-Systeme kommt.
Uns geht es immer darum, wie wir noch schneller qualitativ hochwertige Software erstellen können und wir sahen hier einen vielversprechenden Ansatz, dazu müssen wir zwei Konzepte trennen: Contracts sind u.a. ein Qualitätstool. Genau wie Unit Tests. Die kann ich auf
unterschiedliche Weise einsetzen: Im Forward Engineering,- wie das z.B. in DbC passiert, zur nachträglichen QS oder zur Sanierung maroder Systeme, oder wie auch immer. Design by Contract ist ein Vorgehensmodell zur Erstellung von Systemen mit hoher Qualität. Das Analo-gon hier ist »Test Driven Development«.
Inwieweit helfen Contracts und DbC im praktischen Engineering weiter?Darüber hatten wir im letzten Jahr, aus-gehend vom Entwicklertag, eine lange und fruchtbare Diskussion. Wir hatten Hagen Buchwald dann als Keynote Spea-ker und Jonas Bergström, den Entwick-ler von C4J, auf den Entwicklertag 2011 eingeladen und auch auf dem Entwick-lertag die Diskussion zum Thema »Test Driven Development und Design by Con-tract – Freunde oder Feinde« geführt. Lars Alvincz und Hagen Buchwald haben den damaligen Stand der Diskussion in einem sehr schönen Artikel für das Objektspektrum3 dargestellt. Ein zen-traler Kritikpunkt an der bestehenden Implementierung von C4J war, dass das Tooling noch etwas schwerfällig ist und das Ganze nicht so recht in einen agilen Prozess passt.
Der Entwicklertag hat Ben romberg motiviert, C4J ganz neu zu schreiben. Ben hat dabei die Impulse aus der Dis-kussion aufgenommen und C4J tauglich für agiles Software Engineering gemacht. Wir sind unheimlich stolz, dass wir als VKSI C4J 6.0 vorstellen können – das Ergebnis einer ganzen unserer Aktivitä-ten. Unser Dank gilt insbesondere Ben und auch Jonas Bergström, der Bens Framework einem review unterzogen hat (und der begeistert ist von der neuen Version).
Kannst Du den Punkt, dass C4J nicht so recht in einen agilen Pro-zess passt, noch etwas erläutern?
3 OBJEKTspektrum 05/2011 »DbC und TDD: Partner oder Kontrahenten« http://www.andrena.de/fachartikel
Der VKSI veröffentlicht die Version 6.0 des Open Source Frame-works C4J. Timm reinstorf, Software-Ingenieur bei andrena objects ag und Mitglied des Präsidiums des VKSI erläutert im Interview, was C4J ist, wofür es sich seiner Ansicht nach eignet und warum der VKSI sich hier engagiert. Die Fragen stellte Susann Mathis (VKSI Magazin)
14 VKSI MAGAZIN Nr. 7 November 2012
»Design by Contract versus agile Prozesse«Interview mit Timm Reinstorf über C4J und DbC
Von Susann Mathis
Das war die Kritik auf dem Entwickler-tag. Mit dem neuen release von C4J können Contracts viel eleganter und leichtgewichtiger implementiert werden. Contracts können uns in der Qualitäts-sicherung helfen. C4J 4.0 kann definitiv eine rolle in einen Werkzeugkasten für agiles Software Engineering spielen. Und darum geht es uns.
Nach meiner ganz persönlichen Mei-nung passt allerdings »Design by Con-tract« als methodischer Ansatz in der Tat nicht zu einem agilen Vorgehen. Eine detaillierte Betrachtung würde den rahmen des Interviews sprengen. Nur so viel: Test Driven Development ist im Kern ein exploratives inkrementel-les Vorgehen – im Gegensatz zu einem analytischen Vorgehen. Es gibt sehr viel heuristisches und systematisches Wissen über TDD. TDD ist konsolidierte Engi-neering-Praxis im besten Sinn des Wor-tes. DbC wäre ein Schritt zurück zu einem Denken, das ein wasserfall-ähnliches Modell nahe legt. Diese Einschätzung ändert natürlich nichts an meiner Hoch-achtung vor dem Konzept.
Welche Einsatzszenarien kannst Du Dir also für Contracts vorstel-len? Und was macht der VKSI wei-ter damit?Jonas Bergström hat auf dem Entwick-lertag 2011 eine sehr eindrucksvolle Geschichte4 erzählt. Jonas war der ver-antwortliche Entwicklungsingenieur für eine Poker-Engine, die in verschiedenen online Poker-Plattformen im Einsatz ist. Das System war extrem fehler anfällig. Kein schöner Zustand: Stress für die Betreiber, Stress für den Software-Lie-feranten, Stress für Jonas. Jonas kannte von seiner Informatik-Ausbildung Eif-fel und kam so auf die Idee, die Poker-Engine mit Contracts zu umhüllen und dann Poker-Bots, also kleine Software-Systeme, die Poker-Spieler simulierten, gegen das System spielen zu lassen und so die Fehler zu entdecken, bevor sie im echten online-Spiel auftreten. Jonas ist es so gelungen, sehr schnell ein extrem fehleranfälliges und fragiles System zu
4 http://www.andrena.de/ Entwicklertag/2011/Downloads/Agile-Day/ C4J-DbC.pdf
stabilisieren. Ein denkbares Szenario für den Einsatz von C4Jsehe ich also in der Sanierung bestehender Systeme.
Einen weiteren vielversprechen-den Ansatz skizziert Microsoft mit dem Zusammenspiel von Contracts mit dem Framework Pex5. Pex generiert Tests aus formulierten Contracts.
Generell kann das Zusammenspiel von Contracts und Unit Tests helfen, Systeme noch sicherer zu machen. Im Forward Engineering und im reverse Engineering. Wir wissen von einigen Fir-men in region, welche die Initiative auf-gegriffen haben. Wir werden als VKSI die Erfahrungen mit Contracts zusammen-führen und unsere Mitglieder beim Ein-satz von C4J unterstützen. Mehr Infor-mationen zu unseren Angeboten finden Interessierte auf der VKSI Website.
www.vksi.de
5 https://research.microsoft.com/en-us/ projects/pex/documentation.aspx
Timm reinstorf auf dem Entwicklertag 2012
VKSI MAGAZIN Nr. 7 November 2012 15
DESIGN By CONTrACT
Wie
schr
eibt
man
ein
en g
uten
Sof
twar
ever
trag
?H
agen
Buc
hwal
d (a
ndre
na o
bjec
ts a
g), B
en R
ombe
rg (a
ndre
na o
bjec
ts a
g)
In ih
rem
Buc
h1 „D
esig
n by
Con
trac
t, by
Exa
mpl
e“ s
telle
n R
icha
rd M
itch
ell u
nd J
im
McK
im s
echs
Pri
nzip
ien
vor,
die
ein
sys
tem
atis
ches
Ers
telle
n ei
nes
volls
tänd
igen
So
ftw
arev
ertr
ages
erl
aube
n.
In d
iese
m A
rtik
el w
ende
n w
ir d
iese
sech
s Pri
nzip
ien
auf d
as B
eisp
iel e
ines
Sof
twar
ever
-tr
ags f
ür e
in B
ankk
onto
(Acc
ount
) an,
das
dur
ch fo
lgen
des I
nter
face
def
inie
rt se
i:
package jbf;
public interface AccountSpec {
int MAX_AMOUNT = 100000;
void deposit(int amount);
void withdraw(int amount);
int getBalance();
String getOwner();
int availableAmount();
} 1 r
icha
rd M
itch
ell,
Jim
McK
im: D
esig
n by
Con
trac
t, by
Exa
mpl
e; 2
002,
Add
ison
-Wes
ley
Uns
er B
ankk
onto
ken
nt e
inen
Bet
rag MAX_AMOUNT
, der
max
imal
auf
ein
mal
abg
ehob
en
wer
den
darf
. Alle
Bet
räge
sin
d in
Cen
t aus
gedr
ückt
, so
dass
ein
Bet
rag
von
100.
000
Cen
t ein
em B
etra
g vo
n 1.
000
Eur
o en
tspr
icht
. Wir
kön
nen
Gel
d au
f uns
er B
ankk
onto
ei
nzah
len
(eng
l.: d
epos
it) u
nd a
uch
wie
der
abhe
ben
(eng
l.: w
ithdr
aw).
Zud
em k
ön-
nen
wir
den
akt
uelle
n K
onto
stan
d (e
ngl.:
bal
ance
), d
en K
onto
inha
ber (
engl
.: ow
ner)
un
d de
n zu
r Zei
t max
imal
ver
fügb
aren
Bet
rag
abfr
agen
(eng
l.: a
vaila
bleA
mou
nt).
War
um g
ehen
wir
von
ein
em In
terf
ace
und
nich
t von
ein
er K
lass
e au
s? G
ute
Soft
-w
arev
ertr
äge
wer
den
aus
eine
r B
lack
Box
Per
spek
tive
hera
us e
rste
llt: N
ur d
ie n
ach
auße
n si
chtb
aren
, als
o öf
fent
liche
n M
etho
den
sind
für
die
For
mul
ieru
ng d
er V
er-
trag
skla
usel
n zu
läss
ig. D
aher
ist e
s au
ch v
on V
orte
il, S
oftw
arev
ertr
äge
für I
nter
face
s zu
defi
nier
en, d
a In
terf
aces
die
öff
entli
che
Schn
ittst
elle
ein
er K
lass
e de
finie
ren.
Alle
M
etho
den
eine
s Int
erfa
ces s
ind
impl
izit
publ
ic, a
lle „V
aria
blen
“ ein
es In
terf
aces
sind
im
pliz
it pu
blic
final u
nd d
amit
Kon
stan
ten.
Wen
n w
ir n
un n
och
– in
Ana
logi
e zu
m I
sola
tions
prin
zip
von
Uni
t-Te
sts
– S
oft-
war
ever
träg
e al
s is
olie
rte
Uni
t-C
ontr
acts
auf
fass
en, d
ann
ist
die
Gru
ndla
ge fü
r di
e Fo
rmul
ieru
ng e
ines
gut
en S
oftw
arev
ertr
ages
gel
egt:
Jed
e K
lass
e ha
t ih
ren
eige
nen
Ver
trag
, der
sic
h re
in a
uf d
ie ö
ffen
tlich
en M
etho
den
dies
er K
lass
e be
zieh
t un
d de
r st
ets
gelte
n m
uss,
una
bhän
gig
davo
n, in
wel
chem
Kon
text
die
se K
lass
e ei
nges
etzt
w
ird.
Die
ses
Isol
atio
nspr
inzi
p is
t di
e G
rund
anna
hme,
auf
der
die
sec
hs P
rinz
ipie
n vo
n r
icha
rd M
itche
ll un
d Ji
m M
cKim
ber
uhen
.
Form
ulie
re In
varia
nten
um
die
sich
tbar
en E
igen
scha
ften
des O
bjek
ts z
u be
schr
eibe
n,
die
vor u
nd n
ach
jede
r Met
hode
naus
führ
ung
erfü
llt se
in m
üsse
n.
Prin
zip
6
Prüf
e fü
r jed
e Ab
frage
und
jede
s Kom
man
do,
ob e
ine
Vorb
edin
gung
erfo
rder
lich
ist.
Prin
zip
5
Tren
ne A
bfra
gen
von
Kom
man
dos.
Abfra
gen
gebe
n ei
n Er
gebn
is zu
rück
, änd
ern
jedo
ch n
icht
die
sich
tbar
en E
igen
scha
ften
des O
bjek
ts.
Kom
man
dos k
önne
n da
s Obj
ekt v
erän
dern
, geb
en je
doch
kei
n Er
gebn
is zu
rück
.
Prin
zip
1
Tren
ne e
lem
enta
re A
bfra
gen
von
abge
leite
ten
Abfra
gen.
Ab
gele
itete
Abf
rage
n kö
nnen
dur
ch e
lem
enta
re A
bfra
gen
ausg
edrü
ckt w
erde
n.
Prin
zip
2
Erst
elle
für j
ede
abge
leite
te A
bfra
ge e
ine
Nac
hbed
ingu
ng,
die
besc
hrei
bt, w
elch
es E
rgeb
nis z
urüc
kgeg
eben
wird
, au
sged
rück
t dur
ch e
ine
oder
meh
rere
ele
men
tare
Abf
rage
n.
Prin
zip
3
Erst
elle
für j
edes
Kom
man
do e
ine
Nac
hbed
ingu
ng,
die
den
Wer
t jed
er e
lem
enta
ren
Abfra
ge a
uflist
et.
Der
vol
lstän
dige
sich
tbar
e Eff
ekt e
ines
jede
n Ko
mm
ando
s ist
nun
bek
annt
.
Prin
zip
4
Sech
s Pri
nzip
ien
vom
Mit
chel
l/M
cKim
16 VKSI MAGAZIN Nr. 7 November 2012
1. P
rinz
ip: T
renn
e A
bfra
gen
durc
h @
Pur
e vo
n K
omm
ando
s (C
omm
and-
Que
ry-S
epar
atio
n). A
bfra
gen
gebe
n ei
n E
rgeb
nis
zurü
ck, ä
nder
n je
doch
ni
cht d
ie s
icht
bare
n Ei
gens
chaf
ten
des
Obj
ekts
. Kom
man
dos
könn
en d
as
Obj
ekt v
erän
dern
, geb
en je
doch
kei
n Er
gebn
is z
urüc
k.
Die
Met
hode
n ge
tBal
ance
, get
Ow
ner
und
avai
labl
eAm
ount
sin
d na
ch d
iese
r D
efin
i-tio
n A
bfra
gen,
wäh
rend
die
Met
hode
n de
posi
t und
with
draw
Bef
ehle
sin
d. D
as p
asst
au
ch g
ut z
u un
sere
m V
erst
ändn
is e
ines
Ban
kkon
tos:
Die
Abf
rage
des
Kon
tost
ande
s is
t –
wie
der
Nam
e sc
hon
sagt
– e
ine
Abf
rage
und
sol
lte d
en s
icht
bare
n Zu
stan
d de
s K
onto
s ni
cht v
erän
dern
– n
icht
den
Kon
tost
and,
nic
ht d
en N
amen
des
Kon
toin
ha-
bers
und
auc
h ni
cht
die
Höh
e de
s m
axim
al v
erfü
gbar
en B
etra
gs. W
enn
ich
jedo
ch
Gel
d au
f mei
n K
onto
ein
zahl
e (e
ngl.:
dep
osit)
ode
r ab
hebe
(en
gl.:
with
draw
), d
ann
sollt
e si
ch d
er K
onto
stan
d du
rcha
us ä
nder
n. D
iese
Kom
man
dos v
erän
dern
den
sich
t-ba
ren
Zust
and
des B
ankk
onto
s.In
Jav
a kö
nnen
wir
die
Tre
nnun
g vo
n K
omm
ando
s und
Abf
rage
n du
rch
die
Ann
o-ta
tion
@Pu
re v
ollz
iehe
n, d
ie d
urch
die
Anw
eisu
ng
import de.vksi.c4j.Pure;
aus
dem
C4J
Pac
kage
impo
rtie
rt w
ird.
Met
hode
n, d
ie m
it @
Pure
ann
otie
rt w
urde
n,
dürf
en k
eine
n Se
itene
ffek
t bew
irke
n, d
.h. s
ie st
elle
n A
bfra
gen
dar.
Zus
ätzl
ich
könn
en
– zu
r Unt
erst
reic
hung
die
ses P
rinz
ips –
noc
h K
omm
enta
re e
inge
fügt
wer
den,
um
die
K
omm
ando
s von
den
Abf
rage
n zu
tren
nen.
package jbf;
import de.vksi.c4j.Pure;
public interface AccountSpec {
int MAX_AMOUNT = 100000;
// commands
void deposit(int amount);
void withdraw(int amount);
// queries
@Pure
int getBalance();
@Pure
String getOwner();
@Pure
int availableAmount();
}
2. P
rinz
ip: T
renn
e el
emen
tare
Abf
rage
n vo
n ab
gele
itet
en A
bfra
gen.
Abg
e-le
itet
e A
bfra
gen
könn
en d
urch
ele
men
tare
Abf
rage
n au
sged
rück
t wer
den.
Abg
elei
tete
Abf
rage
n (e
ngl.:
der
ived
que
ries
) e
rken
nt m
an d
aran
, das
s si
e si
ch a
us
elem
enta
ren
Abf
rage
n (e
ngl.:
bas
ic q
ueri
es)
zusa
mm
ense
tzen
. Uns
er B
ankk
onto
ve
rfüg
t übe
r die
abg
elei
tete
Abf
rage
ava
ilabl
eAm
ount
, die
uns
Aus
kunf
t dar
über
gib
t, w
ie v
iel G
eld
wir
max
imal
abh
eben
dür
fen,
ohn
e da
s Kon
to zu
übe
rzie
hen.
Ber
echn
et
wir
d di
eser
Bet
rag
mit
Hilf
e de
r el
emen
tare
n A
bfra
ge getBalance.
Ele
men
tare
Abf
ra-
gen
hing
egen
sin
d ty
pisc
herw
eise
get
-Met
hode
n, d
ie d
irek
t den
Wer
t ein
es A
ttri
buts
ei
ner K
lass
e ab
frag
en.
Wen
den
wir
nun
das
zw
eite
Pri
nzip
auf
uns
er B
eisp
iel a
n, te
ilen
sich
die
Abf
rage
n in
zwei
Lag
er:
// basic queries
@Pure
int getBalance();
@Pure
String getOwner();
// derived queries
@Pure
int availableAmount();
VKSI MAGAZIN Nr. 7 November 2012 17
DESIGN By CONTrACT
3. P
rinz
ip: E
rste
lle f
ür je
de a
bgel
eite
te A
bfra
ge e
ine
Nac
hbed
ingu
ng, d
ie
besc
hrei
bt, w
elch
es E
rgeb
nis z
urüc
kgeg
eben
wir
d, a
usge
drüc
kt d
urch
ein
e od
er m
ehre
re e
lem
enta
re A
bfra
gen.
Um
ein
e N
achb
edin
gung
in J
ava
form
ulie
ren
zu k
önne
n, m
üsse
n w
ir z
uers
t ein
mal
ei
ne V
ertr
agsk
lass
e er
stel
len,
auf
die
das
Inte
rfac
e A
ccou
nt m
it H
ilfe
der C
4J-A
nno-
tatio
n @ContractReference
ver
wei
st:
package jbf;
import de.vksi.c4j.ContractReference;
import de.vksi.c4j.Pure;
@ContractReference(AccountSpecContract.class)
public interface AccountSpec {
int MAX_AMOUNT = 100000;
// commands
void deposit(int amount);
void withdraw(int amount);
// basic queries
@Pure
int getBalance();
@Pure
String getOwner();
// derived queries
@Pure
int availableAmount();
}
Das
„Sk
elet
t“ d
er V
ertr
agsk
lass
e A
ccou
ntSp
ecC
ontr
act k
önne
n w
ir u
ns d
irek
t dur
ch
Ecl
ipse
erz
euge
n la
ssen
:
package jbf;
public class AccountSpecContract implements AccountSpec {
@Override
public void deposit(int amount) {
}
@Override
public void withdraw(int amount) {
}
@Override
public int getBalance() {
return 0;
}
@Override
public String getOwner() {
return null;
}
@Override
public int availableAmount() {
return 0;
}
} Wir
form
ulie
ren
nun
– w
ie v
om d
ritt
en P
rinz
ip g
efor
dert
– d
ie N
achb
edin
gung
für
die
abge
leite
te A
bfra
ge a
vaila
bleA
mou
nt:
@Override
public int availableAmount() {
if (postCondition()) {
int result = result();
assert result == Math.min(target.getBalance(),MAX_AMOUNT) :
“result = max(balance, MAX_AMOUNT);
}
return ignored();
}
Die
sta
tisc
hen
C4J
-Met
hode
n re
sult
() u
nd i
gnor
ed()
wer
den
über
die
im
port
- A
nwei
sung
import static de.vksi.c4j.Condition.*;
impo
rtie
rt. D
amit
ist n
un d
as d
ritt
e Pr
inzi
p er
füllt
: Die
abg
elei
tete
Abf
rage
ava
ilabl
e-A
mou
nt v
erfü
gt n
un ü
ber e
ine
Nac
hbed
ingu
ng, d
ie a
uf B
asis
der
ele
men
tare
n A
bfra
-ge
getBalance
form
ulie
rt is
t.
18 VKSI MAGAZIN Nr. 7 November 2012
4. P
rinz
ip: E
rste
lle fü
r jed
es K
omm
ando
ein
e N
achb
edin
gung
, die
den
Wer
t je
der e
lem
enta
ren
Abf
rage
aufl
iste
t. D
er vo
llstä
ndig
e sic
htba
re E
ffek
t ein
es
jede
n B
efeh
ls is
t nun
bek
annt
.
Auf
uns
er B
eisp
iel a
ngew
ende
t bed
eute
t die
s: W
ir m
üsse
n di
e W
irku
ng d
er b
eide
n K
omm
ando
s deposit
und
withdraw
mit
Hilf
e de
r el
emen
tare
n A
bfra
gen
getBalance
und
getOwner
vol
lstä
ndig
bes
chre
iben
. Wen
n w
ir G
eld
auf u
nser
Kon
to e
inza
hlen
, als
o da
s K
omm
ando
dep
osit
anw
ende
n, d
ann
erw
arte
n w
ir, d
ass
sich
dad
urch
der
Kon
to-
stan
d um
den
ein
geza
hlte
n B
etra
g er
höht
, der
Kon
toin
habe
r si
ch je
doch
dad
urch
ni
cht v
erän
dert
:
@Override
public void deposit(int amount) {
if (postCondition()) {
assert target.getBalance() == old(target.getBalance()) + amount :
“balance = old balance + amount”;
assert unchanged(target.getOwner()) : “owner unchanged”;
}
}
Wen
n w
ir h
inge
gen
Gel
d vo
n un
sere
m K
onto
abh
eben
, dan
n er
war
ten
wir
, das
s si
ch
der
Kon
tost
and
um d
en a
bgeh
oben
en B
etra
g ve
rmin
dert
. Der
Kon
toin
habe
r so
ll au
ch d
urch
die
ses K
omm
ando
nic
ht v
erän
dert
wer
den.
@Override
public void withdraw(int amount) {
if (postCondition()) {
assert target.getBalance() == old(target.getBalance()) - amount :
“balance = old balance - amount”;
assert unchanged(target.getOwner()) : “owner unchanged”;
}
}
Die
Var
iabl
e ta
rget
zei
gt h
ierb
ei a
uf d
as z
u sc
hütz
ende
Obj
ekt,
in u
nser
em F
all a
uf
das
Ban
kkon
to. D
iese
Var
iabl
e m
üsse
n w
ir m
it H
ilfe
der
C4J
-Ann
otat
ion @Target
als
priv
ates
Att
ribu
t der
Ver
trag
skla
sse
dekl
arie
ren:
public class AccountSpecContract implements AccountSpec {
@Target
private AccountSpec target;
Dam
it is
t die
Ver
trag
skla
sse
nun
com
pilie
rbar
und
das
vie
rte
Prin
zip
ist e
rfül
lt.
5. P
rinz
ip: P
rüfe
für j
ede
Abf
rage
und
jede
s Kom
man
do, o
b ei
ne V
orbe
din-
gung
erf
orde
rlic
h is
t.
Bet
rach
ten
wir
zue
rst
die
Kom
man
dos.
Bei
m E
inza
hlen
ein
es B
etra
gs s
ollt
e de
r B
etra
g gr
ößer
Nul
l sei
n, d
a ei
n B
etra
g vo
n 0
kein
en N
utze
n er
zeug
te u
nd e
in n
egat
i-ve
r Bet
rag
eine
r Abh
ebun
g gl
eich
käm
e. D
amit
ergi
bt si
ch fü
r das
Kom
man
do d
epos
it
folg
ende
Vor
bedi
ngun
g: assert amount > 0 : “amount > 0”;
Bei
m A
bheb
en e
ines
Bet
rags
gilt
die
gle
iche
Vor
bedi
ngun
g: D
er a
bzuh
eben
de
Bet
rag
soll
größ
er N
ull s
ein.
Wei
terh
in s
oll g
elte
n, d
ass
durc
h di
e A
bheb
ung
das
Kon
to n
icht
übe
rzog
en w
ird,
d.h
. der
abz
uheb
ende
Bet
rag
mus
s kl
eine
r od
er g
leic
h de
m a
ktue
llen
Kon
tost
and
sein
. Dar
aus
ergi
bt s
ich
folg
ende
Vor
bedi
ngun
g fü
r da
s K
omm
ando
withdraw
: assert amount > 0 : “amount > 0”;
assert target.getBalance() >= amount : “balance >= amount”;
Die
dre
i Abf
rage
n getBalance
, getOwner
und
availableAmount
könn
en je
derz
eit
ohne
Ein
-sc
hrän
kung
en a
usge
führ
t wer
den.
Sie
ben
ötig
en a
lso
kein
e V
orbe
ding
unge
n.D
ie e
rkan
nten
Vor
bedi
ngun
gen
wer
den
als
if-B
lock
vor
die
Nac
hbed
ingu
ng
gesc
hrie
ben,
so
dass
die
ent
spre
chen
den
Met
hode
n de
r Ver
trag
skla
sse
nach
Anw
en-
dung
des
fünf
ten
Prin
zips
nun
folg
ende
s Aus
sehe
n ha
ben:
@Override
public void deposit(int amount) {
if (preCondition()) {
assert amount > 0 : “amount > 0”;
}
if (postCondition()) {
assert target.getBalance() == old(target.getBalance()) + amount :
“balance = old balance + amount”;
assert unchanged(target.getOwner()) : “owner unchanged”;
}
}
@Override
public void withdraw(int amount) {
if (preCondition()) {
assert amount > 0 : “amount > 0 “;
assert target.getBalance() >= amount : “balance >= amount”;
}
if (postCondition()) {
assert target.getBalance() == old(target.getBalance()) - amount :
“balance = old balance - amount”;
assert unchanged(target.getOwner()) : “owner unchanged”;
}
}
VKSI MAGAZIN Nr. 7 November 2012 19
DESIGN By CONTrACT
6. P
rinz
ip: F
orm
ulie
re I
nvar
iant
en u
m d
ie s
icht
bare
n E
igen
scha
ften
des
O
bjek
ts z
u be
schr
eibe
n, d
ie v
or u
nd n
ach
jede
r M
etho
dena
usfü
hrun
g er
füllt
sein
müs
sen.
Die
Obj
ekto
rien
tier
te P
rogr
amm
ieru
ng k
ennt
das
sog
enan
nte
Dr
y-Pr
inzi
p: D
on’t
rep
eat y
ours
elf!
Wie
derh
ole
Dic
h ni
cht,
scha
ffe
kein
e r
edun
danz
en! K
lass
enin
vari
-an
ten
sind
ein
e M
öglic
hkei
t, da
s D
ry-
Prin
zip
auch
für
Ver
trag
skla
ssen
ein
zuha
lten.
In
vari
ante
n au
s de
r Si
cht v
on C
4J s
ind
nich
ts a
nder
es a
ls Z
usic
heru
ngen
, die
alle
n N
achb
edin
gung
en d
er K
omm
ando
s ein
er K
lass
e gem
eins
am si
nd. I
n un
sere
m B
eisp
iel
ist d
ies d
ie Z
usic
heru
ng, d
ass s
ich
der N
ame
des K
onto
inha
bers
nic
ht v
erän
dert
hat
:
assert unchanged(target.getOwner()) : “owner unchanged”;
Die
se Z
usic
heru
ng la
gern
wir
nun
in e
ine
Kla
ssen
inva
rian
te a
us. E
ine
Kla
ssen
inva
-ri
ante
ist e
ine
Met
hode
, die
dur
ch d
ie C
4J-A
nnot
aito
n @
Cla
ssIn
vari
ant m
arki
ert i
st:
@ClassInvariant
public void invariant() {
assert unchanged(target.getOwner()) : “owner unchanged”;
}
Dam
it si
nd a
lle s
echs
Pri
nzip
ien
der
Ver
trag
sers
tellu
ng a
uf d
ie V
ertr
agsk
lass
e an
ge-
wen
det w
orde
n. D
er v
olls
tänd
ige
Ver
trag
laut
et:
package jbf;
import static de.vksi.c4j.Condition.*;
import de.vksi.c4j.*;
public class AccountSpecContract implements AccountSpec {
@Target
private AccountSpec target;
@ClassInvariant
public void invariant() {
assert unchanged(target.getOwner()) : “owner unchanged”;
}
@Override
public void deposit(int amount) {
if (preCondition()) {
assert amount > 0 : “amount > 0”;
}
if (postCondition()) {
assert target.getBalance() == old(target.getBalance()) + amount :
“balance = old balance + amount”;
}
}
@Override
public void withdraw(int amount) {
if (preCondition()) {
assert amount > 0 : “amount > 0 “;
assert target.getBalance() >= amount : “balance >= amount”;
}
if (postCondition()) {
assert target.getBalance() == old(target.getBalance()) - amount :
“balance = old balance - amount”;
}
}
@Override
public int getBalance() {
if (postCondition()) {
int result = result();
assert result >= 0 : “result >= 0”;
}
return ignored();
}
@Override
public String getOwner() {
if (postCondition()) {
String result = result();
assert result != null : “result != null”;
}
return ignored();
}
@Override
public int availableAmount() {
if (postCondition()) {
int result = result();
assert result == Math.min(target.getBalance(), MAX_AMOUNT) :
“result = max(balance, MAX_AMOUNT)”;
}
return ignored();
}
} Dur
ch d
ie s
yste
mat
isch
e A
nwen
dung
der
sec
hs P
rinz
ipie
n gu
ter
Ver
trag
sers
tellu
ng
könn
en w
ir si
cher
sein
, ein
en g
uten
Ver
trag
form
ulie
rt zu
hab
en, d
er d
as d
ynam
isch
e V
erha
lten
eine
s Ban
kkon
tos v
olls
tänd
ig u
nd p
räzi
se b
esch
reib
t.U
nd m
it di
esem
Ver
trag
hab
en w
ir n
un m
it de
n sp
rach
liche
n M
ittel
n vo
n Ja
va d
en
Dat
enty
p A
ccou
nt v
olls
tänd
ig d
urch
sei
n In
terf
ace AccountSpec
(Typ
und
Met
hode
n)
und
die
zuge
höri
ge V
ertr
agsk
lass
e AccountSpecContract
(Vor
- un
d N
achb
edin
gung
en
und
Kla
ssen
inva
rian
te) b
esch
rieb
en. I
n an
dere
n W
orte
n: W
ir h
aben
den
Abs
trak
ten
Dat
enty
p (A
DT)
Acc
ount
vol
lstä
ndig
mit
den
Mitt
eln
von
Java
bes
chri
eben
. Und
dam
it er
füllt
Jav
a nu
n en
dlic
h di
e D
efin
ition
der
obj
ekto
rien
tiert
en P
rogr
amm
ieru
ng2 :
Die
E
rste
llung
von
Sof
twar
esys
tem
en a
ls s
truk
turi
erte
Sam
mlu
ng v
on I
mpl
emen
tieru
n-ge
n A
bstr
akte
r Dat
enty
pen
(AD
Ts).
2 B
ertr
and
Mey
er: O
bjec
t-or
ient
ed S
oftw
are
Con
stru
ctio
n, 19
88, P
rent
ice
Hal
l Int
erna
tion
al
20 VKSI MAGAZIN Nr. 7 November 2012
Der
equ
als-
Con
trac
t – S
oftw
arev
ertr
äge
für L
egac
y Sy
stem
evo
n H
agen
Buc
hwal
d un
d B
en R
ombe
rg (a
ndre
na o
bjec
ts a
g)
C4J
schl
ießt
ein
e Lü
cke
im S
prac
hdes
ign
von
Java
. Die
ser
Lück
e w
aren
sic
h di
e A
utor
en d
er J
ava
Kla
ssen
bibl
ioth
ek w
ohl b
ewus
st, w
ie d
ie v
erba
l bes
chri
eben
en
Vert
räge
in
der
Java
Doc
-Dok
umen
tati
on d
er J
ava
Cla
ss L
ibra
ry b
ewei
sen.
Der
eq
uals
-Con
trac
t der
Kla
sse
Obj
ect s
tich
t dab
ei b
eson
ders
ins
Aug
e, g
ilt e
r do
ch f
ür
jede
in J
ava
erst
ellt
e K
lass
e. N
ur k
onnt
e bi
slan
g se
ine
Ein
halt
ung
leid
er n
icht
aut
o -m
atis
ch ü
berp
rüft
wer
den,
was
bis
heu
te s
elbs
t bei
erf
ahre
nen
Soft
war
e-E
ntw
ick-
lern
zu
subt
ilen
Fehl
ern
führ
t. In
ein
er R
eihe
von
Art
ikel
n ha
ben
Ang
elik
a La
n-ge
r1 , Mar
tin
Ode
rsky
2 und
Jos
hua
Blo
ch3 v
ersu
cht,
eine
Anl
eitu
ng z
u ge
ben,
wie
die
eq
uals
-Met
hode
zu im
plem
enti
eren
ist,
um d
en eq
uals
-Con
trac
t bei
m Ü
bers
chre
iben
de
r eq
uals
-Met
hode
nic
ht u
ngew
ollt
zu
verl
etze
n. M
it C
4J is
t es
in J
ava
nun
mög
-lic
h, K
lass
en v
olls
tänd
ig m
itsa
mt i
hren
zuge
höri
gen
Vert
räge
n zu
bes
chre
iben
und
di
ese
Vert
räge
auc
h zu
ver
erbe
n. D
iese
Fäh
igke
it v
on C
4J w
ird
im n
un fo
lgen
den
Bei
spie
l gen
utzt
.
In d
er J
avaD
oc-D
okum
enta
tion
der
Kla
sse
Obj
ect i
st d
er e
qual
s-C
ontr
act w
ie fo
lgt
besc
hrie
ben:
» Th
e equals
met
hod
impl
emen
ts a
n eq
uiva
lenc
e re
latio
n on
non
-nul
l obj
ect r
efer
en-
ces:
●
●It
is r
efle
xive
: for
any
non
-nul
l ref
eren
ce v
alue
x, x.
equals(x) s
houl
d re
turn
true
. ●
●It
is s
ymm
etri
c: f
or a
ny n
on-n
ull r
efer
ence
val
ues x
and
y, x.equals(y)
sho
uld
retu
rn tr
ue if
and
onl
y if y.equals(x) r
etur
ns tr
ue.
●●
It is
tran
sitiv
e: fo
r any
non
-nul
l ref
eren
ce v
alue
s x, y
, and
z, if
x.equals(y) r
etur
ns
true
and
y.equals(z) r
etur
ns tr
ue, t
hen x.equals(z) s
houl
d re
turn
true
. ●
●It
is c
onsi
sten
t: fo
r an
y no
n-nu
ll re
fere
nce
valu
es x
and
y, m
ultip
le in
voca
tions
of
x.equals(y)
con
sist
ently
ret
urn
true
or
cons
iste
ntly
ret
urn
false,
pro
vide
d no
in
form
atio
n us
ed in
equals
com
pari
sons
on
the
obje
cts i
s mod
ified
. ●
●Fo
r any
non
-nul
l ref
eren
ce v
alue
x, x.
equals(null)
shou
ld re
turn
false.
Th
e equals
met
hod
for c
lass
Object
impl
emen
ts th
e m
ost d
iscr
imin
atin
g po
ssib
le
equi
vale
nce
rela
tion
on o
bjec
ts; t
hat i
s, fo
r an
y no
n-nu
ll re
fere
nce
valu
es x
and
y,
this
met
hod
retu
rns t
rue i
f and
onl
y if x a
nd y
refe
r to
the
sam
e ob
ject
(x == y h
as th
e va
lue true
).
1 h
ttp:
//w
ww
.ang
elik
alan
ger.c
om/A
rtic
les/
Effe
ctiv
eJav
a/01
.Equ
als-
Part
1/01
.Equ
als1
.htm
l, 20
022
htt
p://
ww
w.a
rtim
a.co
m/le
java
/art
icle
s/eq
ualit
y.ht
ml,
2009
3 J
oshu
a B
loch
: Eff
ecti
ve J
ava:
A P
rogr
amm
ing
Lang
uage
Gui
de (J
ava
Seri
es),
200
8, A
ddis
on-
Wes
ley
Long
man
, Am
ster
dam
; Auf
lage
: 2nd
rev
ised
edi
tion
Not
e th
at it
is g
ener
ally
nec
essa
ry t
o ov
erri
de t
he hashCode
met
hod
whe
neve
r th
is m
etho
d is
ove
rrid
den,
so
as to
mai
ntai
n th
e ge
nera
l con
trac
t for
the hashCode
m
etho
d, w
hich
stat
es th
at e
qual
obj
ects
mus
t hav
e eq
ual h
ash
code
s.
«
Wir
nut
zen
nun
die
Fähi
gkei
t von
C4J
, Ver
träg
e au
ch im
Nac
hhin
ein
bere
its b
este
-he
nden
und
in ih
rem
Que
llcod
e ni
cht
meh
r ve
ränd
erba
ren
Kla
ssen
zuz
uord
nen.
K
onkr
et o
rdne
n w
ir d
er K
lass
e O
bjec
t den
Ver
trag
Obj
ectC
ontr
act z
u, d
er d
en eq
uals
-C
ontr
act f
orm
ulie
rt u
nd d
er a
n al
le K
lass
en w
eite
rver
erbt
wir
d:
package vksi;
import static de.vksi.c4j.Condition.*;
import de.vksi.c4j.*;
@Contract(forTarget = Object.class)
public class ObjectContract {
@Target
private Object target;
private Object z = null;
@Override
public boolean equals(Object obj) {
if (postCondition()) {
boolean result = result();
if (obj == null) {
assert result == false : “if obj == null then false”;
} else {
if (z == null) {
z = obj;
}
Object x = target;
Object y = obj;
assert x.equals(x) == true : “reflexive”;
assert x.equals(y) == y.equals(x) : “symmetric”;
if (x.equals(y) && y.equals(z)) {
assert x.equals(z) == true : “transitive”;
}
assert x.equals(y) == x.equals(y) : “consistent”;
if (x.equals(y)) {
assert x.hashCode() == y.hashCode() :
“if x equals y then equal hashcodes”;
}
VKSI MAGAZIN Nr. 7 November 2012 21
DESIGN By CONTrACT
}
}
return ignored();
}
}
Meh
r ist
nic
ht z
u tu
n. D
a je
de K
lass
e di
rekt
ode
r ind
irek
t von
Obj
ect e
rbt,
gilt
die-
ser
Ver
trag
nun
für
alle
Kla
ssen
uns
eres
Jav
a-Pr
ojek
ts. B
etra
chte
n w
ir n
un n
och
die
Wir
kung
auf
die
ein
fach
e K
lass
e Po
int,
die
die
equa
ls-M
etho
de ü
bers
chre
ibt,
jedo
ch
verg
isst
, die
has
hCod
e-M
etho
de g
leic
herm
aßen
zu
über
schr
eibe
n:
package vksi;
public class Point {
private int x;
private int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
@Override
public boolean equals(Object obj) {
boolean result = false;
if (obj instanceof Point) {
Point other = (Point) obj;
result = this.getX() == other.getX();
result = result && this.getY() == other.getY();
} else {
result = false;
}
return result;
}
// Fehler: hashCode vergessen zu ueberschreiben
}
Die
Kla
sse
Poin
t erb
t im
pliz
it vo
n de
r Kla
sse
Obj
ect.
Der
von
der
Kla
sse
Obj
ect g
eerb
-te
equ
als-
Con
trac
t wir
d be
im A
ufru
f der
Met
hode
equ
als ü
berp
rüft
.D
ie T
estk
lass
e Po
intT
est
ruft
nun
zu
Test
zwec
ken
die
equa
ls-M
etho
de a
n ei
ner
Inst
anz d
er K
lass
e Po
int a
uf:
package vksi;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class PointTest {
@Test
public void testEquals() {
Point p1 = new Point(1, 2);
Point p2 = new Point(1, 2);
assertTrue(p1.equals(p2)); // Zeile 13: Post-Condition verletzt
}
} Die
Nac
hbed
ingu
ngs-
Zusi
cher
ung
if (x.equals(y)) {
assert x.hashCode() == y.hashCode() :
“if x equals y then equal hashcodes”;
}
wir
d di
rekt
nac
h de
r Aus
führ
ung
von
equa
ls a
ls v
erle
tzt e
rkan
nt u
nd fü
hrt z
u fo
lgen
-de
m A
sser
tion-
Err
or:
java.lang.AssertionError: if x equals y then equal hashcodes (post-condition)
at vksi.ObjectContract.equals(ObjectContract.java:41)
at vksi.Point.equals(Point.java:31)
at vksi.PointTest.testEquals(PointTest.java:13)
Das
Bei
spie
l des
equ
als-
Con
trac
ts v
eran
scha
ulic
ht, w
ie e
infa
ch e
s m
it C
4J is
t, an
be
steh
ende
Kla
ssen
wie
z.B
. die
Kla
ssen
der
Jav
a-K
lass
enbi
blio
thek
(Jav
a C
lass
Lib
-ra
ry, J
CL)
nac
hträ
glic
h di
e in
Jav
aDoc
bes
chri
eben
en V
ertr
äge
anzu
häng
en, u
m
dere
n E
inha
ltung
zur L
aufz
eit ü
berp
rüfe
n zu
kön
nen.
Die
Jav
a C
lass
Lib
rary
im Z
uge
eine
s Ja
va C
omm
unity
Pro
jekt
s vo
llstä
ndig
mit
Ver
trag
skla
ssen
zu
inst
rum
entie
ren
ist d
as Z
iel d
es C
4JC
L-Pr
ojek
ts, d
as z
ur Z
eit i
m r
ahm
en e
iner
Mas
tera
rbei
t bei
der
an
dren
a ob
ject
s ag
vorb
erei
tet w
ird.
22 VKSI MAGAZIN Nr. 7 November 2012
CyBErTrENDS
CLOUDZONE 2013 – Mehr Attraktivität durch vielfältigen rahmen
Unter dem Motto »IT – einfach, günstig, sicher!« werden am 15. und 16. Mai 2013 auf der Kommunikationsplattform CLOUDZONE in der Messe Karlsruhe Produkte und Lösungen im Bereich Cloud-Computing den interessierten Anwendern präsentiert. Für die dann dritte Auflage der CLOUDZONE sind bereits jetzt wichtige Cloud-Player dabei, darunter unter ande-rem: 1&1, Amazon Webservices, CAS Software, AppSphere, TechniData, Fraunhofer IML, Leitwerk, PTV und Telemaxx.
Einen wichtigen Part der Kommunikationsplattform CLOUDZONE nehmen die Branchenveranstaltungen des EuroCloud Deutschland_eco. Seit 2012 gehört bereits der EuroCloud Anwenderkongress zum Begleitprogramm der CLOUDZONE. Im rahmen einer abendlichen Gala werden in Karlsruhe die deutschen Eurocloud Awards verliehen. »2013 wird erstmalig auch die EuroCloud Deutschland Conference für Cloud-Service-Anbieter an den IT-Standort Karlsruhe ver-legt und am Vortag der CLOUDZONE in Karlsruhe durchge-führt« sagt Bernd Becker, Vorstandssprecher des EuroCloud
Deutschland_eco. »Für Cloud Computing ist die CLOUDZONE ein wichtiges Sprachrohr in den Markt«, so Becker weiter. Eben-falls stattfinden wird der nun-mehr fünfte Trendkongress net economy, der inhaltlich vom FZI Forschungszentrum Informatik Karlsruhe gestaltet wird.
Die CLOUDZONE, die von der Karlsruher Messe- und Kon-gress-GmbH gemeinsam mit dem EuroCloud Deutschland_eco, dem Verband der deutschen Cloud Computing-Industrie sowie dem CyberForum e.V. und dem FZI Forschungszentrum Informatik Karlsruhe veranstaltet wird, versteht sich als über-greifende Kommunikationsplattform für den Bereich Cloud Computing. Zentrale Themen in diesem Jahr sind Mobile Solutions, CrM, Hr und Logistik. Die CLOUDZONE wendet sich – nach dem 2012 der Fokus auf kleine und mittelständi-sche Unternehmen gelegt wurde – nun auch an große Unter-nehmen.
Seit Anfang der siebziger Jahre wurden nun 5.700 Informa-tiker an der Fakultät ausgebildet, annähernd 1.000 Promoti-onen ausgesprochen. Das sind beeindruckende Zahlen, aber sind 40 Jahre schon ein Grund für ein richtig großes Jubilä-um? 40 Jahre sind nicht wirklich eine lange Zeit, noch nicht mal ein volles Arbeitsleben, und an andere Ereignisse des Jah-res 1972 kann man sich sogar noch erinnern – zumindest die älteren unter uns. Watergate, Olympische Spiele in München und Brandts Ostpolitik waren die beherrschenden Themen des Nachrichtenjahres. Und Hewlett-Packard brachte den ers-ten wissenschaftlichen Taschenrechner HP-35 auf den Markt. Aber ein anderes Ereignis verdeutlicht die durch die Informatik getragene Zeitenwende noch besser. Nicht weit nördlich von hier, in Weinheim gründeten 3 Absolventen der TH Karlsru-he zusammen mit zwei Kollegen zusammen die Systemanaly-se und Programmentwicklung Gbr . Die heutige SAP AG mit ihren heute rd. 56.000 Mitarbeitern und fast € 15 Mrd. Umsatz ist Sinnbild für den Siegeszug der Informatik und die elementa-re wirtschaftliche Bedeutung für Land und region.
Die IT ist eines der vier strategischen Handlungsfelder in Baden-Württemberg und die Aussage, dass die Branche »der Maschinenbau des 21. Jahrhunderts« wird, ist sicher nicht zu hoch gegriffen. Zwar liegt der Anteil an der Gesamtbeschäfti-gung noch unter 3%, aber die zweistelligen Wachstumsraten zeigen einen eindeutigen Trend. Alles in allem sind das viele gute Gründe zu feiern und ein bisschen Stolz zu zeigen, dass die Fakultät für Informatik mit einer anerkannt guten Ausbildung zu dieser Entwicklung einen wichtigen Beitrag geleistet hat.
Dennoch muss die Zukunft erst noch gewonnen werden. Die Entwicklung geht rasend schnell und die Konkurrenz anderer Hochschulen ist groß. Schon die zehn Jahre bis zum runden 50. Geburtstag werden für die aktuelle Generation von Profes-soren, wissenschaftlichen Mitarbeitern und Studenten große Herausforderungen bereithalten. Nicht nur wissenschaftliche Exzellenz und State-of- the-Art- Ausbildung sind gefordert, sondern auch unternehmerisches Denken und Transfer von Innovationen in die Unternehmenswelt. Eine SAP allein reicht nicht aus. Hier sind auch die Alumni und die Unternehmen der region gefordert, um wissenschaftliches Know-how in prakti-sches Handeln zu transferieren.
Einer der Gründerväter der Fakultät, Karl Steinbuch hat den Begriff der Informatik erstmals geprägt , als er ihn 1957 in einer Veröffentlichung über eine Datenverarbeitungsanlage für das Versandhaus Quelle gebrauchte. Trotz seiner visionären Ideen wird er damals keine Vorstellung gehabt haben, welche Ent-wicklung vor uns allen lag. Es ist sehr gut möglich, dass auch wir heute das Potenzial noch unterschätzen. Gehen wir es an.
Matthias Hornberger ist seit 2010 Vorstandsvor-sitzender des CyberForum e.V.. Er ist im Haupt-beruf CFO der KIZOO AG (ehemals WEB.DE AG), deren Vorstand er seit dem Börsen-gang im Jahr 2000 angehört. Die Durlacher KIZOO Technology Ventures hilft jungen Startup-Teams im IT-Umfeld zu wachsen. Der Schwer-punkt liegt auf Seed- und Frühphasen-Finanzie-rungen von SaaS, Internet & Mobile Services und Social Applications.
Anno 1972Kolumne von Matthias H0rnberger, Vorstand CyberForum
VKSI MAGAZIN Nr. 7 November 2012 23
KArLSrUHEr KöPFE
Software Engineering aus Karlsruhe
Mister FZI: Professor Peter Lockemann Herr Professor Lockemann, wann und wie sind Sie während Ihres Studiums der Nachrichtentechnik zur Rechner-technologie gekommen?Prof. Lockemann: Als robert Piloty frisch habilitierter Privatdozent in München war, hörte ich 1956, während meines Studiums der Nachrichtentechnik, seine Vorlesung über die Grundzüge der rech-nertechnik von. Als Deutschland 1954 erlaubt wurde, Forschungsprogramme im Bereich rechnertechnologie einzu-richten, entwickelte sein Vater Hans Piloty zusammen mit dem Mathema-tiker robert Sauer an der TH München die PErM (Programmgesteuerter Elek-tronischer rechenautomat München). Die PErM wurde lange Jahre im rechen-zentrum der TH München und bei der Ausbildung von Entwicklungsingenieu-ren für die deutsche Computerindustrie benutzt. Heute steht sie im Deutschen Museum in München. Ich habe als Werkstudent dort erst mal Schaltkreise verlötet und Magnetköpfe für den Trom-melspeicher zusammengebaut , meine Diplomarbeit zum Magnetkernspeicher gemacht, promoviert habe ich dann in Transistortechnik.
1963 sind Sie nach der Kalifornien aus-gewandert, um dort am Caltech zu arbei-ten. Das California Institute of Techno-logy, gehört laut diversen Rankings zu
den zehn besten Universitäten der Welt. Womit haben Sie sich dort beschäftigt?Prof. Lockemann: Das waren prägende Jahre. Zum einen bin ich erst dort mit der Soft-waretechnik – naja, das war eigentlich noch Programmierung – in Berührung gekommen. Zum zweiten gab es dort gar keine Computer Science, sondern ein »Information Science«-Programm, das anwendungsgetrieben war. Zunächst habe ich in einer Gruppe gearbeitet, die Biosignale ausgewertet hat: Wir haben Experimente mit Sonden in
Fliegen augen durchgeführt und schon damals große Datenmengen produziert und ausgewertet. Später wechselte ich in eine sozialwissenschaftliche Gruppe, die Sprachwissenschaft in Verbindung mit der Auswertung anthropologischer Daten betrieb. So bin ich mehr oder weniger zufällig in die Datenbanktechnik geraten. Wir haben viel experimentiert und waren eine der ersten, die recovery-Techniken und einen softwarebasierten virtuellen Speicher entwickelten. Unser Datenbanksystem war graphbasiert
1972 wurde in Karlsruhe die Fakultät für Informatik gegründet, im gleichen Jahr trat auch Peter Lockemann seine Professur in Karls-
ruhe an. Das Leben des 1935 geborenen Lockemanns ist durchgängig eng mit der Entwicklung der Disziplin Informatik verbunden – auch wenn diese am Anfang noch gar nicht so hieß. Er hat – unter anderem – das FZI mitgegründet, über hundert wissenschaftliche Artikel und vier Lehrbücher geschrieben, er hat regelmäßig Gastprofessuren im Ausland und Berateraufgaben für Ministerien wahrgenommen und zehn seiner Studenten sind heute selber Professoren. 2005 wurde Lockemann das Verdienstkreuz am Bande verliehen, die Frankfurter Johann Wolfgang Goethe-Universität verlieh ihm 2003 für seine Verdienste in der Forschung und als Förderer des Wissenstransfers in die Unternehmenspra-xis die Ehrendoktorwürde. Ich treffe ihn in seinem Büro im Forschungszentrum Informatik, wo er dem VKSI-Magazin einige Fragen beantwortet.
Der Magnettrommelspeicher der Perm
24 VKSI MAGAZIN Nr. 7 November 2012
– damals nicht unüblich, aber erst heute wieder aktuell. Doch unsere Ansätze haben zu wenig Leistung gebracht. rück-blickend wäre das die Zeit gewesen, zu IBM zu wechseln.
Nach sieben Jahren sind Sie 1970 dann doch wieder zurück nach Deutschland gegangen.Prof. Lockemann: Meiner Frau und mir hatte es in Kalifornien sehr gut gefallen, doch die Kinder waren klein und wir wollten eine klare Entscheidung für ihre Schul-zeit treffen. In Deutschland habe ich dann in Bonn bei der GMD (damals: Gesellschaft für Mathematik und Daten-verarbeitung mbH) gearbeitet und war involviert in ein Projekt zur Entwicklung eines juristischen Informationssystems. Dieses Fachinformationssystem stell-te die Gesetzeslage und die Urteile für Juristen in einem »Information retrie-val System« zusammen und – darauf bin ich durchaus stolz – existiert heute noch. Von Karlsruhe erhielt ich dann die Aufforderung, mich um den Lehrstuhl Programmiersprachen zu bewerben. Das habe ich allerdings abgelehnt, aber Uni-versitäten waren von jeher flexibel, und wir haben uns auf eine Widmung in rich-tung Datenbanken geeinigt.
Sie haben in einer Zeit in der Informa-tik begonnen, als dieses Fachgebiet noch ganz jung war und Experten noch alle
Teildisziplinen überblicken und durch-schauen konnten…Prof. Lockemann: … hier sollte man sich keine Illusionen machen, diese Phase ging sehr schnell vorbei. Schon als ich Anfang der Siebzigerjahre nach Karlsruhe kam, war das Gebiet so breit, dass man nicht mehr überall in die Tiefe gehen konnte.
Sowohl in Deutschland wie auch in den USA hat man sich allerdings schwer-getan, diese Disziplin zu akzeptieren. In den Vereinigten Staaten zum Beispiel war Computer Science, wie dort Informa-tik hieß und immer noch heißt, viel enger aufgestellt. Mein Bereich, Datenbank-technik, war lange Zeit nicht einmal Teil der Computer Science sondern bei den Business Schools mitgelaufen.
Ich selber bin durch meine Erfahrun-gen mit Anwendungen geprägt worden und habe diese auch immer gesucht. Später waren dies vor allem Produktions-technik, Elektronikentwurf, Verkehrs-wesen und Gebäudearchitektur. Ich habe deshalb immer stark interdiszipli-när gearbeitet. Ich habe mich auch nicht als reinen Technologen gesehen. Neue Anwendungen bedürfen aber natürlich auch neuer Technologien, und ich hatte auch immer Mitarbeiter, die sehr erfolg-reich diese Technologien entwickelten. Vielleicht wäre es korrekter zu sagen, dass ich eine Neigung zu top-down Vor-gehen habe. Ich habe deshalb den Daten-bankbereich immer als Softwaretechnik
verstanden und dort als ausgesprochene Systemtechnik. ähnlich wie bei Betriebs-systemen habe ich Architekturfragen als zentral gesehen.
Um welche Probleme zu lösen?Prof. Lockemann: Nichtfunktionale Krite-rien wie Performanz haben über 30 Jahre lang die Datenbankarchitektur dominiert, genauer die Langsamkeit des Hintergrundspeichers im Vergleich zum Hauptspeicher. Auf diesem Miss-verhältnis bauten die Architekturfragen auf, also: Wie lässt sich die Zugriffslücke überbrücken, so dass sie in der Anwen-dung nicht in Erscheinung tritt? Und so wie die Bedarfe gewachsen sind, so ist auch das Problem größer geworden. Die übertragungsrate von der Platte in den Hauptspeicher hat sich von etwa 1 MB/s 1970 auf etwa 250 MB/s 2010 gesteigert. Heute beträgt die Zugriffslücke etwa 106, so stark unterscheiden sich heute die Geschwindigkeiten beim Zugriff auf Hauptspeicher und Hintergrundspeicher (Platte). Nun hat mit der Marktreife der SSD ein ganz neues Kapitel begonnen.
Dazu kamen über die Jahre Gastpro-fessuren am CalTech und am MIT, und Beraterfunktionen bei Wirtschaft und Ministerien und – für Karlsruhe beson-ders bedeutend – 1985 gründeten Sie gemeinsam mit mehreren Kollegen das Forschungszentrum Informatik p
Prof. Peter Lockemann
VKSI MAGAZIN Nr. 7 November 2012 25
KArLSrUHEr KöPFE
Karlsruhe (FZI), waren dann lange Zeit dessen Vorstand (daher Ihr Spitzname »Mister FZI«). Was war Ihr wichtigstes Motiv dafür?Prof. Lockemann: Um es mit dem modernen Slogan des KIT zu sagen: Innovation. Innovation ist der Transfer von Forschungs-ergebnissen in die wirtschaftliche Nutzung. Das Ziel des For-schungszentrums Informatik war und ist der Technologie-transfer von der Forschung in der Karlsruher Informatik in die Wirtschaft. Wir waren damals acht Professoren, und hatten rein altruistische Motive, wenn man mal davon absieht, dass wir uns natürlich über zusätzliche ressourcen für die For-schung gefreut haben. Für jeden persönlich bedeutete das aber viel mehr Arbeit.
Sind Sie mit der Entwicklung des Forschungszentrums Infor-matik zufrieden?Prof. Lockemann: Ich bin ja nur noch – wenn auch sehr engagier-ter – Beobachter. Ich bin begeistert, was die jungen Kollegen in den letzten Jahren daraus gemacht haben. Ich hatte am Ende eine neue und wie es scheint schlagkräftige Organisati-on umgesetzt. Zunächst war das FZI auf einzelne Professoren zugeschnitten, heute gibt es vier große, kollegial geführte For-schungsbereiche, die sich als eine sehr gutes Basis für Wachs-tum erwiesen haben.
Inhaltlich hat sich das Bild seit der Jahrtausendwende kom-plett geändert. Angefangen haben wir mit »Informatik für die industrielle Produktion«. Heute ist das FZI viel breiter aufge-stellt – kein Wunder, wenn man bedenkt, dass Informatik heute in alle Lebensbereiche eindringt. Ich kann das an meiner eige-nen Disziplin sehen, wo sich unter dem Stichwort »Big Data«
p
Das Forschungszentrum Informatik (FZI)
26 VKSI MAGAZIN Nr. 7 November 2012
TDD Sprint
Experts in agile software engineering
www.andrena.deandrena objects ag · Albert-Nestler-Straße 9 · 76131 KarlsruheTelefon 0721 6105-122 · Telefax 0721 6105-140 · [email protected]
Pair Programming Sprint Burndown
Clean CodeTest Driven DevelopmentTeam Empowerment
TRAINING
Die ASE Student Edition:ASE wurde von andrena und SAP entwickelt. Für Studierende, die neugierig auf den State of the Art in der Software-Industrie sind, gibt es jetzt die ASE Student Edition. Für alle,
R die erfahren wollen, wie in der modernen Software-Industrie entwickelt wird; R die ihr Know-how in testgetriebener Entwicklung auf den Prüfstand stellen wollen; R die sehen wollen, wie Software-Engineering im Team funktioniert; R die Scrum und XP im Praxiseinsatz erleben wollen.
Agile Software Engineering
Jetzt bewerben für 2013!
http://www.andrena.de/studentpage/ase-student-edition
andrena anzeige ASE-SE VKSI.indd 1 23.10.12 10:39
sich vollkommen neue Herausforderungen herausbilden: eine enorme Informationsmenge im Web, relativ unstrukturiert und textorientiert, dazu embedded systems, die Datenströme über-all erfassen, und schließlich die globale Verteilung der Daten.
Welche Schwierigkeiten musste das FZI dabei überwinden?Prof. Lockemann: Natürlich hat das Forschungszentrum Informatik das Auf und Ab der Wirtschaft mitgemacht, übrigens immer etwas zeitverzögert. Anfangs kamen unsere Kunden aus den F. & E. Abteilungen der Großunternehmen. Als diese Anfang der Neunzigerjahre sukzessive abgebaut wurden, hat das For-schungszentrum Informatik sich extrem stark auf den Mittel-stand konzentriert. Das hat uns damals zwar politisch großes Lob eingebracht, uns aber auch behindert, da wir sehr viel Zeit für die Akquise aufwenden mussten. 2002 hat uns das in echte Schwierigkeiten gebracht. Die bieten aber eben auch Chancen und die wurden – auch dank des Generationenwechsels – her-vorragend genutzt.
Mit seinen klar gesetzten inhaltlichen Schwerpunkten hat sich das Forschungszentrum Informatik deutlich als Zentrum für Innovationen im IT-Bereich positioniert. Somit ergänzt es sich hervorragend mit der Fakultät für Informatik und ist heute weit über die Grenzen von Baden-Württemberg hinaus aner-kannt.
Vor 40 Jahren wurde die Fakultät gegründet, vor 40 Jahren haben Sie Ihre Professur angetreten – und Sie sind unver-ändert präsent in der IT-Szene. Womit beschäftigen Sie sich heute vor allem?Prof. Lockemann: Mir bleibt viel Zeit für Privates, zum Beispiel beschäftige ich mich mit der Sprachförderung in Brennpunkt-Kindergärten und ich reise mit meiner Frau viel in der Welt herum.
Aber auch wenn ich vielleicht manchmal bedauern mag, dass ich mich zu früh und zu stark auf die Anwendungen der Informatik konzentriert habe, so habe ich doch einige Themen gefunden, die mich weiter faszinieren, aktuell sind das etwa über das Cyberforum die Projekte Smarter City der Stadt Karls-ruhe und Smart Business IT des Landes. Um bei einem Pro-jekt wirklich in die Tiefe zu gehen, braucht man ein großes For-schungsteam und das habe ich nicht mehr. Was ich dagegen kann, ist Projektideen entwickeln und mich an der Entwicklung der großen Linie beteiligen, und da bringe ich mich immer noch im FZI ein. Es erstaunt mich vielleicht selbst am meisten, aber es ist wahr: so schnell veralten Erfahrungen dann eben doch nicht.
Professor Lockemann, herzlichen Dank für dieses Gespräch!Das Gespräch führte Susann Mathis.
VKSI MAGAZIN Nr. 7 November 2012 27
TDD Sprint
Experts in agile software engineering
www.andrena.deandrena objects ag · Albert-Nestler-Straße 9 · 76131 KarlsruheTelefon 0721 6105-122 · Telefax 0721 6105-140 · [email protected]
Pair Programming Sprint Burndown
Clean CodeTest Driven DevelopmentTeam Empowerment
TRAINING
Die ASE Student Edition:ASE wurde von andrena und SAP entwickelt. Für Studierende, die neugierig auf den State of the Art in der Software-Industrie sind, gibt es jetzt die ASE Student Edition. Für alle,
R die erfahren wollen, wie in der modernen Software-Industrie entwickelt wird; R die ihr Know-how in testgetriebener Entwicklung auf den Prüfstand stellen wollen; R die sehen wollen, wie Software-Engineering im Team funktioniert; R die Scrum und XP im Praxiseinsatz erleben wollen.
Agile Software Engineering
Jetzt bewerben für 2013!
http://www.andrena.de/studentpage/ase-student-edition
andrena anzeige ASE-SE VKSI.indd 1 23.10.12 10:39
Die TechniData IT-Service GmbH realisiert komplexe und spannende IT-Infrastruktur-Projekte
Exzellente Fachkompetenz, langjährige Erfahrung sowie ein professionelles Projektmanagement zeichnen uns aus.Wir setzen auf Virtualisierung, Hochverfügbarkeit, Security und Cloud mit über 130 Spezialisten. Und wir wachsen weiter!
Zur Verstärkung unseres Teams in Karlsruhe suchen wir:
Softwarearchitekt (w/m) mit Führungskompetenz
Sie entwickeln unser .NET Entwicklungsteam und unsere SharePoint Produktpalette weiter. Sie übernehmen die fachliche und technische Verantwortung für Projekte und deren Ergebnisse und erarbeiten kundenorientierte SharePoint Lösungen.
Ihr Profil:Sie haben mehrjährige Berufserfahrung in der Anwendungsentwicklung mit Schwerpunkt SharePoint, C# und bringen Erfah-rung in der fachlichen Leitung von Entwicklungsprojekten mit. Teamgeist, Fairness und Respekt im Umgang mit anderen Menschen sind Ihnen wichtig.
Bewerben Sie sich online über unser Bewerberportal. Weitere Stellenangebote unter www.its-technidata.de.
TechniData IT-Service GmbH
Personal | Dipl. Kffr. Beate Karcher
Emmy-Noether-Straße 9 | 76131 Karlsruhe
www.its-technidata.de
AGIL
»Ich würde es wieder so machen und Scrum auch jedem ande-ren Unternehmen empfehlen«, gibt Christian Popp, Bereichs-leiter IT-Risk Management bei arvato infoscore, unumwun-den zu. »Die Werte des Agilen Manifests helfen, schnell gute und vor allem innovative Software zu bauen.«
Dabei hätte Christian Popp es sich leicht machen und in den Chor derjenigen einstimmen können, die eine Methode als schlecht bezeichnen, wenn nicht gleich alles wie am Schnür-chen läuft. Denn der erste Versuch mit Scrum war – positiv betrachtet – eine »successful failure«. Vor dem echten Erfolg kommt aber meist die Einsicht und die Einsicht von Christian Popp lautete: »Halte dich an die regeln von Scrum und lebe die agilen Werte – dann funktioniert es.«
Dass man bei arvato infoscore überhaupt daran gedacht hat, Scrum in der Softwareentwicklung einzusetzen, hat mit dem Unternehmensgegenstand zu tun. Das Unternehmen der Bertelsmann-Gruppe mit Sitz in Baden-Baden liefert seinen Kunden Lösungen für das Management aller Kundenbezie-hungen und Zahlungsflüsse- vom risikomanagement bis zum Inkasso. Bisher wurden klassische Entwicklungsmethoden à la Wasserfall eingesetzt, allerdings stoßen sie in einem inno-vativen Umfeld wie dem risikomanagement mit seinen wech-selnden Anforderungen an ihre Grenzen. Ein Team von arvato
infoscore probierte es also 2009 im Selbstversuch mit Scrum und rückblickend weiß Christian Popp, warum wesentliche Verbesserungen der Teamperformance damals ausgeblieben sind: »Die agilen Werte hinter Scrum wurden nicht beachtet, Artefakte einfach weggelassen, Meetings nicht abgehalten, das Commitment eher locker gesehen – was an Scrum nicht pass-te, wurde passend gemacht. Aber wenn man sich nicht an die regeln hält, darf man von einem Framework nicht erwarten, dass es trotzdem leistet, was es leisten könnte.« Vielleicht war die Sichtweise zu diesem Zeitpunkt noch zu einseitig: Im Mit-telpunkt stand die Frage, was agile Methoden aus technischer Sicht leisten können. Dass Agilität Fragen des Managements und des Miteinanders im Team berührt und diese sogar die wesentlichen Treiber des Erfolgs sind, blieb unbeachtet. Trotz-dem blieb eine gewisse Faszination für agile Methoden und vor allem für Scrum hängen.
Doing as a way of thinking – Scrum als intuitive ArbeitsweiseLieferung der Spezifikation nach drei Monaten, Lieferung des Testsystems nach sechs Monaten, nach neun Monaten musste ein Vorproduktionssystem und nach 15 Monaten das Produk-tionssystem laufen. So lauteten die Anforderungen, die 2010 der Gesamtverband der deutschen Versicherungswirtschaft GDV als Auftraggeber eines der größten Projekte im Bereich
arvato infoscore: Innovative Software entsteht durch agile Werte Von Hélène Valadon und Christian Popp
28 VKSI MAGAZIN Nr. 7 November 2012
Betrugsprävention an arvato infoscore stellte. Der Lieferter-min war wegen gesetzlicher Vorgaben nicht verhandelbar. Der Gedanke, es agil zu versuchen, war bei einigen Entwicklern noch immer vorhanden, auch Christian Popp hatte sich noch eingehender mit den Werten und mit Fragen der Führung im agilen Umfeld auseinandergesetzt und war immer stärker von diesen Gedanken fasziniert. Bei diesem wichtigen Projekt gab es keine bewusste Entscheidung für Scrum – und trotzdem gin-gen die drei Teams mit 30 Leuten an drei Standorten dieses Mal unbewusst agil vor. Erstens forderten der Zeitdruck und die zeitlichen Vorgaben den Fokus auf die Businessprioritäten und eine inkrementelle Annäherung geradezu heraus. Intensiv geplant wurde immer nur die nächste dreimonatige Phase. Und zweitens hielt der erfahrene Gesamtprojektleiter wenig von command & control, aber sehr viel von Eigenverantwortung. Alle drei Monate wurden die erreichten Ziele gefeiert und dabei in zweitägigen Workshops wieder die nächste Phase geplant. »Wir gingen nicht von der Prämisse aus, agil entwickeln zu wollen. Wir haben überlegt, wie wir dieses Projekt smart zum Erfolg führen können«, sagt Christian Popp. »Es hat uns aber gleichzeitig die Erfolgskriterien des agilen Vorgehens bewusst gemacht und was das Agile Manifest eigentlich bedeutet: Team und Kunde in den Mittelpunkt stellen, die Teams immer wie-der zusammenbringen und gemeinsam planen lassen, die ursprünglichen Pläne anpassen und sich auf überschaubare Schritte fokussieren, Verantwortung übergeben.«
Und jetzt wird richtig gescrummtAusgerechnet eines der wichtigsten Projekte hatten die arva-to infoscore-Teams mit ihrer »intuitiven Agilität« zum Erfolg geführt. Grund genug für Christian Popp, mit Scrum
arvato infoscore: Innovative Software entsteht durch agile Werte Von Hélène Valadon und Christian Popp
p
Case StudyBranche: FinanzdienstleistungZeitraum: Mai 2011 – Juli 2012Standort: Baden-Baden/Deutschland
Ausgangssituationarvato infoscore liefert Software für das Management aller Kundenbeziehungen und Zahlungsflüsse – vom risiko-management bis zum Inkasso. Die Anforderungen ändern sich schnell, daher machte sich der Bereichsleiter IT risk Management auf die Suche nach neuen Wegen in der Ent-wicklung.
LösungDer erste Scrum-Selbstversuch scheitert, denn zu viele regeln werden missachtet. Das Interesse für Scrum bleibt aber – vor allem für die sozialen Einflussfaktoren. Bei einem der wichtigsten Projekte versucht man es noch einmal »anders«, handelt »unbewusst« agil und landet einen vol-len Erfolg. Mit Hilfe von bor!sgloger consulting wird daher Scrum nach allen regeln der Kunst eingeführt und bringt bald Erfolge, mit denen man gar nicht gerechnet hat.
ErgebnisEin Pilot-Team hat den Anfang gemacht. Heute arbeiten über 50 Mitarbeiter teils standortübergreifend mit Scrum, die Mitarbeiterzufriedenheit steigt spürbar. Jedes Scrum-Team erhebt passende KPIs und das agile Mindset wird allmählich zum Kulturgut des Unternehmens. Mittlerweile bringt sich ein Großteil des Unternehmens in die Verände-rung ein.
VKSI MAGAZIN Nr. 7 November 2012 29
AGIL
noch einmal durchzustarten – dieses Mal nach allen regeln der Kunst und gezielt mit Unterstützung durch das Team von bor!sgloger consulting. Bei den IT-Kollegen rannte er offene Türen ein und mit den Ergebnissen des Prestigeprojekts in der Hand war auch die Geschäftsführung bereit, Scrum noch eine Chance zu geben.
Im Mai 2011 startete das Pilotprojekt mit einem Team, die-ses Mal bewusst unter möglichst schlechten Voraussetzungen: Es war kein aktuelles Prestige-Projekt, in der Vergangenheit waren Qualitätsziele immer wieder verfehlt worden, es wurde mitunter zu spät geliefert und die Kunden im Fachbereich waren alles andere als zufrieden. Das Team selbst war mit die-ser Situation unglücklich und wollte etwas daran ändern. Im Vorhinein wurden die rollen verteilt, zunächst noch mit einem Product Owner aus der IT. »Mittlerweile haben wir gelernt, dass die POs aus den Fachbereichen kommen sollten«, wirft Christian Popp ein.
Drei Monate später zeigte sich, welche nachhaltige Verän-derungskraft Scrum bietet: Die Zahl der Hot Fixes nahm signi-fikant ab, es wurde früher ausgeliefert, weil nicht mehr nach-gelagert, sondern integriert getestet wurde – und die Kunden quittierten es mit verhaltener Anerkennung. Aber auch rei-bungsverluste machten sich bemerkbar: Heterogene Teams erwiesen sich einerseits als Stärke. Dass die Leistung des Teams stärker in den Vordergrund tritt und intensive Kommunikati-on einfach notwendig ist, wurde nicht immer sofort akzeptiert. »Ein Team regelt das auf seine Weise und fordert gegebenen-falls Konsequenzen vom Management ein«, sagt Popp.
Vom Pilotprojekt zum roll-out in der gesamten IT des Geschäftsbereichs risk ManagementDie messbaren Erfolge des Pilotprojekts ließen die Entschei-dung reifen, Scrum flächendeckend in der IT einzusetzen. Aber wie schafft man es, mehrere Teams, Führungskräfte und Kol-legen ins Boot zu holen? Für dieses Vorhaben bildete sich ein Transition Team, bestehend aus Projektleitern, dem damals
einzigen ScrumMaster, allen Führungskräften und Kollegen aus den IT-Stabsstellen. Gemeinsam wurden die Themen der Veränderung erarbeitet und in kleinere Gruppen und Spezi-alteams runtergebrochen. »Dieses Transition Team war ganz sicher der wichtigste Hebel für den Erfolg«, ist Christian Popp überzeugt. »Die Führungskräfte konnten in ihren Teams viel gezielter das Verständnis und das Bewusstsein für die anste-henden Umstellungen schaffen, die Geschäftsführung war involviert und alle zusammen wurden mit einem regelmäßigen Newsletter über die Fortschritte und nächsten Aktivitäten auf dem Laufenden gehalten.« Ende 2011 begann der roll-out auf alle vier Entwicklungsteams in Baden-Baden, zu vier weiteren externen Teams wurden zunächst die Schnittstellen angepasst. Parallel zur Implementierung in den Teams wurden die Struk-turen der IT adaptiert und KPIs definiert, um Fortschritte und Erfolge für das Top-Management sichtbar zu machen.
Die Mitarbeiter fühlen sich mit Scrum wohl, die Zufrieden-heit steigt und bewegt sich auf das Niveau zu, das man errei-chen will. Intransparenz war in der Vergangenheit ein Prob-lem, weil zu viele Aufgaben angenommen wurden, worunter die überschaubarkeit litt. »Der Scrum-Prozess hat uns dazu »verdammt«, uns zu fokussieren und eindeutige Prioritäten zu setzen und einzufordern«, erklärt Christian Popp. »Für den gesamten Geschäftsbereich haben wir mit Unterstützung des Top-Managements und aller Fachbereiche einen Projekt-Pri-orisierungsprozess aufgesetzt.« Bei neuen Projekten stimmen Fachbereiche und die Geschäftsleitung über ein mehrstufiges Votingverfahren ab, was für sie und ihre Kunden am wichtigs-ten ist. Auch wenn das Top-Management die finale Priorisie-rung freigibt, der Prozess und die Ergebnisse der Team- und Kapazitätsplanung sind transparent für alle Beteiligten.
Keine Kopfmonopole mehrEine wesentlicher Effekt von Scrum bei arvato infoscore ist das Aufbrechen von »Kopfmonopolen«: Bestimmte Verantwor-tungen sind jetzt nicht mehr bei einzelnen Personen, sondern
p
30 VKSI MAGAZIN Nr. 7 November 2012
Sustainable Pace
TDDSprint
Agilität
Experts in agile software engineering
www.andrena.deandrena objects ag · Albert-Nestler-Straße 9 · 76131 KarlsruheTelefon 0721 6105-122 · Telefax 0721 6105-140 · [email protected]
BERUFSSTART
Scrum
Jetzt bewerben!
In 10 Monaten zum professionellen Agile Software Engineer
In den ersten zehn Monaten bei andrena durchlaufen alle Kolleginnen und Kollegen eine intensive Einstiegsphase. Diese kombiniert in Trainings vermittelte Theorie mit der Projektpraxis. Den Einstieg begleitet ein erfahrener Mentor.
Unsere Einstiegsphase orientiert sich in weiten Teilen am Team-Empowerment- Programm »ASE – Agile Software Engineering«, das andrena gemeinsam mit SAP entwickelt hat und für SAP weltweit Standards für modernes Software Engineering setzt.
Bewerben Sie sich jetzt mit dem Betreff »VKSI Magazin« unter [email protected]
Entwickeln Sie Ihr Potenzial.
andrena anzeige 10mon VKSI.indd 2 23.10.12 10:44
Christian Popp Team
in den einzelnen Teams verankert. »Das sind die Effekte, die wir ein halbes Jahr nach dem roll-out beobachten konnten. In den kommenden Monaten werden wir sicher noch deutliche Auswirkungen in Qualität und Durchsatz messen«, ist Chris-tian Popp zuversichtlich. Neben den vier Entwicklungsteams im risk Management arbeiten nun auch zwei Business Intelli-gence-Teams mit Scrum. Aus dem einstigen Pilotprojekt-Team ist ein standortübergreifendes Team mit dem Schwesterunter-nehmen arvato Systems in Gütersloh geworden. »Mit video-technischer Unterstützung und regelmäßigen persönlichen Meetings klappt das sehr gut. Es war dem Projektteam wichtig, ein gemeinsames Team über die beiden Standorte hinweg zu formieren«, betont Popp. »Die Menschen müssen sich ken-nen, damit remote-Kommunikation funktioniert.« Insgesamt arbeiten im Geschäftsbereich risk Management der arvato infoscore rund 50 Mitarbeiter in Baden-Baden und bis zu 50 Personen extern in Gütersloh und rostock in der IT, noch nicht alle Externen arbeiten aber mit Scrum. Die nächsten Ziele: Die Organisation wird weiter und noch umfassender an die neuen Gegebenheiten angepasst. Ganz gezielt werden erfahrene
ScrumMaster gesucht, die Kompetenzen der Product Owner in den Fachbereichen ausgebildet und in jedem Scrum-Team werden KPI-Messungen eingeführt.
VKSI MAGAZIN Nr. 7 November 2012 31
Sustainable Pace
TDDSprint
Agilität
Experts in agile software engineering
www.andrena.deandrena objects ag · Albert-Nestler-Straße 9 · 76131 KarlsruheTelefon 0721 6105-122 · Telefax 0721 6105-140 · [email protected]
BERUFSSTART
Scrum
Jetzt bewerben!
In 10 Monaten zum professionellen Agile Software Engineer
In den ersten zehn Monaten bei andrena durchlaufen alle Kolleginnen und Kollegen eine intensive Einstiegsphase. Diese kombiniert in Trainings vermittelte Theorie mit der Projektpraxis. Den Einstieg begleitet ein erfahrener Mentor.
Unsere Einstiegsphase orientiert sich in weiten Teilen am Team-Empowerment- Programm »ASE – Agile Software Engineering«, das andrena gemeinsam mit SAP entwickelt hat und für SAP weltweit Standards für modernes Software Engineering setzt.
Bewerben Sie sich jetzt mit dem Betreff »VKSI Magazin« unter [email protected]
Entwickeln Sie Ihr Potenzial.
andrena anzeige 10mon VKSI.indd 2 23.10.12 10:44
IT UND rECHT
Wer das Eigentum an einer Innovation besitzt, möchte auch die Gewinne dafür abschöpfen, das gilt auch für Software. Doch wie schützt man seine Innovation vor Nachahmern? Je nach Inno-vationsklasse (gedankliches Modell, Geschäftsmodell, Organi-sation, dokumentiertes Wissen, Design, technische Lösung, …) gibt es passende Schutzmechanismen, wie beispielsweise das Urheberrecht, Betriebsgeheimnisse oder Patente. In Fortset-zung zum Artikel »Wem gehört die Software?« (VKSI Magazin Nr. 6 vom Mai 2012) geht es im Folgenden um den Schutz von technischen Erfindungen durch Patente.
Patente als Verbietungsrechte Wettbewerbsvorteile durch Innovation können durch Nachah-mung schnell nivelliert werden. Für technische Erfindungen etwa sind Patente der passende Schutzmechanismus, voraus-gesetzt diese Patente sind passend angelegt. Patente sollten deshalb von Anfang an in die strategische Innovationsplanung bei Forschung und Entwicklung einbezogen werden. Patente enthalten die Beschreibungen der Erfindungen mit ihren tech-nischen Merkmalen, durch die sich die Patentinhaber gegen ihre Wettbewerber abgrenzen.
Praktisch gesehen greifen Patente in die Wertschöpfung der Branche ein. Dabei sind zwei Aspekte zu unterscheiden: Einer-seits können Patentinhaber ihren Wettbewerbern bestimmte Handlungen unter Verwendung der Erfindung verbieten. In der Software-Branche sind die Inhaber zum Beispiel berechtigt, ihren Konkurrenten die Implementierung oder das Deploy-ment zu untersagen. Andererseits dürfte lizenzieren, also das Erlauben unter Auflagen meist zu bevorzugen sein, da der Inha-ber in diesem Fall mit Lizenzeinnahmen rechnen kann.
Voraussetzungen für die ErteilungPatente sind technische Dokumente, die die Erfindungen mit Zeichnungen (Flow-Charts, Blockdiagramme, Screen-Shots, gelegentlich Pseudo-Code) und detaillierten Beschreibungen gegenüber der öffentlichkeit offenbaren. Formal werden die wesentlichen technischen Erfindungsmerkmale in sogenann-ten Ansprüchen zusammengefaßt. Die Ansprüche – üblicher-weise auf Englisch oder Deutsch – beschreiben die Erfindung auf einem hohen Abstraktionsniveau.
Gleichzeitig sind Patente amtliche Publikationen und wer-den auf Antrag per Verwaltungsakt erteilt. Sie gelten nur terri-torial, nicht weltweit. Der Anmelder bzw. spätere Inhaber des Patents hat selber die Wahl in welchen Ländern er Patentschutz begehrt und reicht seinen Antrag beim entsprechenden Amt ein: zum Beispiel beim Europäischen Patentamt (EPA), beim Deutschen Patent – und Markenamt (DPMA) oder in den USA beim USPTO, dem United States Patent and Trademark Office, usw. Jede Anmeldung bekommt einen Anmeldetag und unter-liegt zunächst einer amtlichen Geheimhaltung. 18 Monate nach Anmeldetag (AT) legt jedes Amt den Schalter um: Die Anmel-dung wird veröffentlicht und in Datenbanken eingestellt.
Die Erteilung eines Patents ist an hohe Auflagen geknüpft. Die ämter prüfen, ob gesetzliche Kriterien wie Neuheit und erfinderische Tätigkeit eingehalten sind. So darf die Kombina-tion der Merkmale am Anmeldetag (AT) nicht zum Stand der Technik gehören, also noch nicht öffentlich zugänglich gewe-sen sein. Das EPA teilt dem Anmelder erste Prüfungsergebnis-se meist innerhalb von acht bis neun Monaten nach AT mit. Der Anmelder bekommt damit Gelegenheit, die Ergebnisse zu kommentieren und die Ansprüche zu ändern. Damit muss er sich inhaltlich auf die Original-Anmeldung beschränken. Im Ergebnis der weiteren Prüfung beschließt das jeweilige Amt die Erteilung eines Patents oder die Ablehnung der Anmeldung. Je nach Amt erfolgt die Erteilung mit einer Wahrscheinlichkeit von 40 bis 60 Prozent.
Strategie für eigene PatenteEs liegt auf der Hand, dass man für bereits öffentliche Erfin-dungen keine Anmeldungen einreichen wird, da das Neuheits-Kriterium nicht erfüllt wäre. Aber auch bei allen anderen Erfin-dungen ist unternehmensintern eine sorgfältige Evaluierung im Einzelfall notwendig. Ob Patent, Betriebsgeheimnis oder Sperr-veröffentlichung, die Entscheidungen orientieren sich u. a. am Anwendungsbereich der Erfindung, an den potentiellen Benut-zern, an der Sichtbarkeit der Erfindung in Anwendungen, an technischen Notwendigkeiten in Bezug zu Standards usw.
Eine entscheidende Frage ist, ob eine Erfindung auf die stra-tegischen Unternehmensziele passt. Ein Premium-Hersteller wird sich beispielsweise auf Alleinstellungsmerkmale konzen-trieren und mit Patenten die Wertschöpfung auf sich konzen-trieren. Ein anderer Hersteller fokussiert sich eher auf Stan-dardprodukte und sichert sich Kostenvorteile in der Fertigung.
Patente als Schutzmechanismus für technische Erfindunge n Von Matthias Zahn und Peter Bittner
Tipps ●● Neuheit bedeutet das Fehlen einer mündlichen oder schriftlichen Ver-
öffentlichung der Erfindung vor Anmeldung. Halten Sie Ihre Erfin-dung geheim, bis eine Anmeldung beim Amt eingereicht ist.
●● Erfindungen sind technische Lösungen zu technischen Problemen. Schreiben Sie auf, welche konkreten Probleme aufgetreten waren, bevor Sie die Erfindung gemacht hatten.
●● Alternativlösungen helfen bei der Evaluierung und beim Formulieren der Ansprüche. Versetzen Sie sich deshalb in die Position Ihrer Wett-bewerber: Wie kann man das gleiche Ergebnis mit anderen Mitteln erreichen?
●● Eine Implementierung der Erfindung ist für eine Patentierung nicht erforderlich. Konzepte auf Entwurfsebene sind zunächst ausreichend. überlegen Sie sich aber, wie eine Implementierung erfolgen könnte.
●● Anmeldungsentwürfe kann man ergänzen und korrigieren, beim Amt eingereichte Anmeldungen nicht mehr. Lesen Sie sich die Entwür-fe sehr kritisch durch und besprechen Sie offene Punkte mit Ihren Patentfachleuten.
●● Veröffentlichungen gleich welcher Herkunft sind wichtig, besonders die Veröffentlichungen mit Bezug zur Erfindung. Dokumentieren Sie diese.
32 VKSI MAGAZIN Nr. 7 November 2012
Bei einem Verbietungsrecht sollte die Verwendung der Erfin-dungen einfach nachweisbar sein, notfalls auch bei Gericht. Maßnahmen am User Interface vereinfachen die Interaktion mit dem Benutzer. Damit sind Erfindungen in diesem Bereich für jedermann sichtbar. Das spricht für Patentanmeldungen. Erfindungen aus der Welt der Bits und Bytes bleiben besser im Geheimfach, sodass die Zwangsveröffentlichung nach 18 Monaten vermieden wird. Das gilt aber nicht für Erfindungen, die in technische Standards eingehen sollen. So zeigen gerade die Patentstreitigkeiten dieser Tage, dass Patente auf standar-disierte übertragungsprotokolle den Verkauf von Smartphones beeinflussen können. Konkret geht es u. a. um die technische Anbindung von Apple-Smartphones an Mobilfunknetze. Moto-rola Mobility hält standardrelevante Patente1. Lizenzen sind im rahmen des Standards möglich, aber die beiden Firmen haben bislang offenbar nur für den deutschen Markt auf eine Lizenz-vereinbarung einigen können.
Eigene Erfindungen, die man nicht zum Patent anmeldet, kann man in sogenannten Sperrveröffentlichungen zum Stand der Technik erheben. Dritten wird die Patentierung damit ver-wehrt.
Besonderheiten bei SoftwareImmer wieder ist zu vernehmen, Software sei nicht patentier-bar. Hier handelt es sich um einen Stille-Post-Irrtum. Oder es ist noch nicht überall angekommen, dass sich Gesetzge-bung und rechtsprechung den technischen Innovationen mit der Zeit anpassen. »Patente werden für Erfindungen auf allen Gebieten der Technik erteilt«, steht seit einigen Jahren im Gesetz. Um es pragmatisch darzustellen: Software ist nicht losgelöst von Hardware zu betrachten. Ein Notebook läuft schneller oder ein Smartphone spart Bandbreite, weil neuar-tige Datenstrukturen verwendet werden oder die Daten clever codiert werden. Software ist ein Bestandteil einer Lösung und trägt zu deren Differenzierung über Wettbewerber bei. Die genannten Patentansprüche beschreiben die Erfindungen als »computer-implementierte Verfahren«, wobei Hard – und Software kombiniert werden.
BeispielEin altes aber gerade wegen der Bekanntheit interessantes Beispiel betrifft MP3: Zur MP3-Komprimierung gehören eine ganze reihe von Erfindungen des Fraunhofer-Instituts für Inte-grierte Schaltungen (IIS). Das Institut hat systematisch Patente erworben und Lizenzen vergeben. Mittlerweile haben einige davon nach 20 Jahren Höchstlaufzeit ihre Wirkung verloren, aber neue Patente für neue Verfahren kommen hinzu.
Im Beispiel2 geht es grob vereinfacht um die Codierung eines Signals. Der höchste Signalwert (1) muss mit bestmöglicher
1 z.B. EP1010336B12 EP 0 193 143 B1
Genauigkeit (12 Bit) übertragen werden; für andere Werte (2, 3, 4) reichen 8 Bit. So eine Codierung erfolgt mehrere Tausend Mal in der Sekunde. Das Verfahren spart übertragungsband-breite und Speicherplatz.
Strategie gegen Patente der Wettbewerber Patenten der Konkurrenz kann man beispielsweise durch die strategische Beachtung von Stand der Technik und durch tak-tisches Verhalten im Fall des Streitfalles begegnen. Das stärks-te Gegenmittel ist »dokumentierter Stand der Technik«. Die eigenen Veröffentlichungen wie Sperrveröffentlichungen sind dabei nicht unwesentlich. Das ritual ist bekannt: Der Konkur-rent holt sein Patent aus der Kammer, saust herbei und klopft an die Pforte. Moment! Im gut geordneten Archiv findet sich die passende Vorveröffentlichung der Erfindung. Diese nimmt dem Patent den Wind aus dem Segel, denn eine Erfindung ohne Neuheit ist wie ein Segelschiff in der Flaute.
Doch so einfach geht es dann doch nicht, in einem rechts-staat sind einige Formalitäten zu beachten. Die rechtsbestän-digkeit eines Patents ist angreifbar durch Maßnahmen wie etwa einem Einspruch vor dem Patentamt oder durch eine Nichtig-keitsklage. Dabei wird die amtliche Prüfung auf Grundlage von neu ermitteltem Stand der Technik wiederholt und das Patent aufrechterhalten oder zurückgewiesen.
ZusammenfassungPatente sind gerade auch in der Software-Branche allen Irr-tümern zum Trotz ein Mittel, Wissensvorsprünge gegenüber Wettbewerbern zu erhalten und in einen Unternehmensge-winn zu verwandeln. Voraussetzung ist allerdings ein strategi-sches Herangehen mit Auswahlregeln für eigene Patente und Abwehrregeln gegenüber Fremdpatenten.
Patente als Schutzmechanismus für technische Erfindunge n Von Matthias Zahn und Peter Bittner
Matthias ZahnPeter Bittner
Amplitude
Frequenz
1 2 3 4 8
8
8
12
8 8
VKSI MAGAZIN Nr. 7 November 2012 33
NACHLESE
regisseure unserer Freizeit
Was haben wir Menschen eigentlich früher mit unserer ganzen Freizeit angestellt? Die ArD/ZDF-Langzeitstudie »Massen-kommunikation« beobachtet das Medienverhalten der Bevöl-kerung seit 1964. Nach deren Ergebnissen sehen wir Bundes-bürger immer mehr fern, seit einigen Jahren immer noch leicht ansteigend etwa 220 Minuten täglich. Diese drei Stunden und 40 Minuten pro Tag summieren sich über ein Arbeitsleben von 40 Jahren zu etwas mehr als sechs Jahren. In der gleichen Zeit-spanne arbeitet man etwa acht Jahre und schläft etwa elfein-halb Jahre.
Das Internet hat am Fernsehkonsum erstmal nichts geän-dert: Internet wird seit einigen Jahren zusätzlich — und zuneh-mend — genutzt, die Dauer des täglichen Fernsehkonsums nimmt trotzdem nicht ab. Auch die angegebenen Gründe für den Fernsehkonsum ändern sich seit Jahren nicht wesentlich: »Information« steht mit einer Zustimmung von 84 Prozent an der Spitze. Danach folgen unmittelbar »Spaß« mit 81 und »Entspannung« mit 77 Prozent. »Weil ich mich ablenken möchte« geben 61 Prozent als Grund für ihren Fernsehkonsum an, und 64 Prozent wollen »Nützliches für den Alltag erfah-ren«. »Weil es aus Gewohnheit dazugehört«, trifft für 58 Pro-zent der Befragten zu.
»Austausch«, »Kommunikation«, »Kontakte pflegen«, könnten nun als Motive hinzukommen, nämlich durch Second Screen. Schleichend hat sich in den Sesseln einer wachsenden Zahl von – ja wie soll man sie nennen? Früher hätte man gesagt – »Fernsehzuschauern« die Angewohnheit breit gemacht, sich während einer Sendung im social web austauschen. Doch nur einfach über die Frage »Wer ist der Mörder?« debattieren, das reicht schon bald nicht mehr. Anscheinend begrüßen das auch die Fernsehsender und planen Zusatzservices, so dass man etwa, wenn der Kommissar in der Sendung einen Bericht der Kriminaltechnik in die Hand gedrückt bekommt, den gleichen Bericht auf das Smartphone zuhause erhalten kann.
Das Smartphone war lange Zeit nur angeklagt, für das Ver-wischen der Grenze zwischen Arbeit und Freizeit verantwort-lich zu sein. Nun löst es das beliebte Fernsehbügeln ab und verhindert dann auch noch das langsame Wegdämmern beim fernsehen. Und liegt das Smartphone mal irgendwo ohne uns rum, dann steigt das risiko der Nomophobie. Dieses Kunst-wort bezeichnet die »No Mobile Phone-Phobia«, also die Angst, mobil nicht erreichbar zu sein oder auch die Angst, etwas zu verpassen. Wer jetzt lästern mag, sollte einfach morgen mal das Smartphone zuhause lassen. Und, wie sieht’s aus? Also ich persönlich verkneif mir lieber das Lästern.
Herzlich
Ihre Susann Mathis
ImpressumOrgan des VKSI – Verein der Karlsruher Software-Ingenieure
2. Jahrgang, Heft 7 / November 2012
www.vksi.de ISSN 1869-5442
ViSdP.: Christian Popp, Prof. Dr. ralf reussner, Prof. August Wegmann
Herausgeber:VKSI – Verein der Karlsruher Software-Ingenieure e.V., www.vksi.de Vorstand: Christian Popp, Prof. Dr. ralf reussner, Prof. August Wegmann
Anschrift: Prof. Dr. ralf reussner FZI Forschungszentrum Informatik Haid-und-Neu-Straße 10-14 76131 Karlsruhe
Redaktion: Dr. Susann Mathis, Karlsruhe, www.susann-mathis.de, [email protected] Telefon +49 721 38 42 435
Gestaltung:Jochen Härtel, Härtel Design, München, www.haerteldesign.de
Druck:NINO Druck GmbH
Anzeigen: [email protected]
Erscheinungsweise: 2 Ausgaben pro Jahr
Urheberrecht:Die Zeitschrift und alle in ihr enthaltenen Beiträge und Abbildungen sind urheberrechtlich geschützt. Mit Ausnahme der gesetzlich zugelassenen Fälle ist eine Verwertung ohne Einwilligung des Verlages unzulässig. Alle rechte vorbehalten.
Gewährleistung:Die Angaben in den Beiträgen erfolgen nach bestem Wissen, aber ohne Gewährleistung.
Beiträge:Beiträge sind grundsätzlich willkommen. Bitte sprechen Sie diese mit Dr. Susann Mathis ab. Für unverlangt eingesandte Manuskripte und Abbil-dungen wird keine Haftung übernommen. Verfasser stimmen dem Abdruck zu und versichern, dass die Einsendungen frei von rechten Dritter sind. Namentlich gekennzeichnete Beiträge enthalten die Meinung der Autoren. Nicht gekennzeichnete Beiträge sind Beiträge der redaktion.
Der Verein der Karlsruher Softwareingenieure e.V. (VKSI) wurde im Oktober 2008 gegründet. Sein Vereinsziel lautet, eigenständige und fokussierte Maßnahmen zu ergreifen, um die öffentliche Wahrnehmung der Softwaretechnik als Ingenieurdisziplin zu fördern, Kenntnisse und Erfahrungen in der Softwaretechnik zusammenzuführen und weiterzuge-ben, Innovationen in der Softwaretechnik zu beschleunigen und zu verbrei-ten und den wissenschaftlich-technischen Nachwuchs zu fördern. Der Ver-ein hat sich darüber hinaus zum Ziel gesetzt, ein Bild über die Vielfalt von Software Engineering in Karlsruhe zu vermitteln und die Attraktivität des Karlsruher Software-Arbeitsmarktes zu transportieren.
Bildnachweis:Fakultät für Informatik, KIT S. 6, 7; Fotolia S. 8; Jochen Härtel S. 1, 8; STP Informationstechnologie AG S. 8, Tom Kohler S. 10, 11, 15; Susann Mathis S. 25; wikimedia/David.Monniaux S. 12; TH München S. 24
IMPrESSUM
34 VKSI MAGAZIN Nr. 7 November 2012
rüCKSCHAU
VKSI Sneak Preview – QS Best Practices in Karlsruhe
11.Oktober 2012Trotz der allgemein bekannten, rasanten Entwicklung im Soft-ware Engineering ist das Thema Qualitätssicherung nach wie vor relevant, wenn nicht sogar relevanter denn je. Das zeigte auch das rege Interesse an der VKSI Sneak Preview im Oktober. Bei der Sneak Preview standen Best Practices im Umfeld der Qualitätssicherung im Fokus.
Während Maßnahmen zur Qualitätssicherung, wie testge-triebene Entwicklung, Continuous Integration oder Pair Pro-gramming inzwischen weitestgehend verbreitet sind wurden bei der Sneak Preview bisher weniger erschlossene und innova-tive Möglichkeiten in diesem Umfeld diskutiert.
Gebhard Ebeling, Testmanager bei Avarto Infoscore, prä-sentierte Dos und Don’ts sowie Erfahrungen im Umgang mit nichtfunktionalen Tests. Speziell die Planung und Auswertung von Lasttests, sowie die reproduzierbarkeit und Vermeidung möglicher Fehlinterpretationen wurden ausgiebig diskutiert. Ganz klar gehörten hierzu auch die realistische Bewertung der Ergebnisse sowie deren Aufbereitung, zur Prüfbarkeit durch die Produktverantwortlichen, gegenüber den ursprünglichen Zielvorgaben.
Im zweiten Vortrag präsentierten Ben Romberg und Stefan Schürle von der anderen objects ag das erst vor wenigen Tagen veröffentlichte, release des c4J Frameworks (Contracts for Java) [2]. Hierbei handelt es sich um ein OpenSource Frame-work, mit dem Entwickler Contracts für Java Klassen und Schnittstellen definieren können, die einen Vertrag definieren, der über die Möglichkeiten von Unit Tests hinausgeht. Hier-durch können nicht nur gezielt einzelne Eingaben und Aus-gaben geprüft, sondern ganze Wertbereiche, für die Schnitt-stellen und Methoden gültig sind über Vererbungsgrenzen hinweg definiert werden. Diese Prüfung kann durch eine Kon-figuration in der Java Umgebung aktiviert und damit wahlwei-se zur Laufzeit, Entwicklungszeit, und/oder im rahmen der
Qualitätssicherung genutzt werden. Das Framework umfasst auch eine Integration mit der Eclipse Umgebung, was dem Softwareentwickler eine komfortable Erstellung der Contracts ermöglicht. Mehr dazu im Artikel zu C4J 6.0.
Der dritte Vortrag, gehalten von Benjamin Klatt, wissen-schaftlicher Mitarbeiter im FZI Forschungszentrum Infor-matik, gab einen Einblick in das MoDisco Projekt und dessen Möglichkeiten zur Programmanalyse im Kontext der Software Modernisierung. Als Teil des Eclipse ökosystems bietet es die Möglichkeit Modelle von einer Software zu gewinnen und diese mittels individueller Anfragen zu untersuchen. Die hierbei gewonnen Informationen können manuell oder in automati-sierten Workflows genutzt werden um die Software selbst zu modernisieren. In dem Vortrag wurden speziell die Möglich-keiten der Integration in die Eclipse IDE vorgestellt. Darüber hinaus wurde MoDisco aber auch in den Kontext von Software Modernisierung allgemein, sowie die Kombination mit anderen Werkzeugen gestellt.
Das Feedback zu dem QS Best Practices in Karlsruhe war so positiv, dass im VKSI bereits über eine zweite Sneak Pre-view zu diesem Thema diskutiert wird. Wer sich im Nachhin-ein für die Vorträge dieser Sneak Preview interessiert kann sie von der VKSI Website herunterladen [1]. Mitglieder werden wie gewohnt automatisch über die nächsten Sneak Previews informiert, um sie rechtzeitig registrieren zu können. Der VKSI Newsletter bietet ebenfalls die Möglichkeit sich über die kom-menden Sneak Previews benachrichtigen zu lassen [3].
Weiterführende Links:[1] http://www.vksi.de/sneak-preview/
11102012-qs-best-practices-in-karlsruhe.html[2] http://c4j.vksi.de [3] http://www.vksi.de/newsletter.html
Drei interessante Vorträge fanden positives Feedback reger Austausch im Anschluss
VKSI MAGAZIN Nr. 7 November 2012 35
arvato infoscore
Recruiting Services Postfach 902000 33312 Gütersloh
Ihre Aufgaben:■ Neu- und Weiterentwicklung innovativer Softwarelösungen
unter Einsatz moderner Entwicklungsmethoden und agiler Vorgehensmodelle
■ Mitgestaltung der serviceorientierten Gesamtarchitektur auf Basis aktueller Technologien
■ Software-Entwicklung im SCRUM-Team
Unsere Anforderungen:■ Abgeschlossenes Studium der Informatik oder Wirtschafts-
informatik oder vergleichbare Ausbildung■ Programmiererfahrung in Java, zur Anwendung kommen
z. B. J2EE, EJB3.x, Hibernate, JBoss/Tomcat■ Erfahrungen mit relationalen Datenbanken und SQL ■ Spaß an der Mitarbeit in agilen Entwicklungsteams ■ Hohes Maß an Selbstständigkeit und Eigenverantwortung ■ Gutes Abstraktionsvermögen im Hinblick auf Herangehens-
weise und Erarbeitung von Lösungsprozessen■ Strukturierte und zielorientierte Arbeitsweise■ Hohes Maß an Kundenorientierung, Teamfähigkeit sowie
Kommunikationsstärke
Unser Selbstverständnis:Die Basis unseres partnerschaftlichen Führungsverständnisses bilden gegenseitiges Vertrauen, Respekt vor dem Einzelnen sowie das Prinzip der Delegation von Verantwortung. Unsere Mitarbeiter haben größtmöglichen Freiraum, sie sind umfassend informiert und nehmen sowohl an Entscheidungsprozessen als auch am wirtschaftlichen Erfolg des Unternehmens teil.
Haben Sie Interesse, gemeinsam mit uns zu wachsen und in einem zukunftsweisenden Umfeld entscheidende Akzente zu setzen?
Ihre Aufgaben:■ Testmanagement und Testkoordination im SCRUM-Team■ Erstellung von Testfällen bzw. Testszenarien, Durchführung
und Dokumentation von Testläufen in den Teststufen Integ-rations-, System- und Abnahmetest
■ Abweichungsmanagement ■ Aufbau, Weiterentwicklung und Wartung automatisierter
Tests in allen Teststufen sowie Wartung und Weiterentwick-lung bestehender Testtools
Unsere Anforderungen:■ Abgeschlossenes Studium der Informatik oder Wirtschafts-
informatik oder vergleichbare Ausbildung■ Spaß am strukturierten Fehlerfinden, Erfahrungen in der
Software-Qualitätssicherung, Softwaretests und Testauto-matisierung
■ Spaß an der Mitarbeit in agilen Entwicklungsteams ■ Hohes Maß an Selbstständigkeit und Eigenverantwortung ■ Gutes Abstraktionsvermögen im Hinblick auf Herangehens-
weise und Erarbeitung von Lösungsprozessen■ Strukturierte und zielorientierte Arbeitsweise■ Hohes Maß an Kundenorientierung, Teamfähigkeit sowie
Kommunikationsstärke
arvato infoscore ist ein Tochterunternehmen der arvato AG, des international vernetzten Outsourcingdienstleisters der Bertelsmann SE & Co. KGaA. Mit rund 2.200 Mitarbeitern und Hauptsitz in Baden-Baden ist arvato infoscore an 12 Standorten in Deutschland, Österreich, der Schweiz, Ungarn und den Niederlanden tätig. arvato infoscore steht für die integrierte kaufmännische Betreuung von Kundenbeziehungen über den gesamten Kundenlebenszyklus.
Anwendungsentwickler (m/w) Testmanager (m/w)
Für unser stark expandierendes Unternehmen arvato infoscore suchen wir am Standort Baden-Baden mehrere
Weitere Informationen finden Sie unter:www.arvato-infoscore.de/it
Anz VKSI 210x297 arvato 12-09 RZ.indd 1 10.09.12 13:19