Stefans Weblog

2006-06-18

SpringOne: Das Ende

Hier noch schnell ein paar Worte über die verbleibenden Vorträge, die ich mir noch angehört habe:

  • Testing with Spring von Rod Johnson: Testen durch die Entwickler ist wichtig, Dependency Injection födert die Testbarkeit von Systemen, echte Unit-Tests sollten ohne einen Container (auch keinen Dependency Injection Container wie Spring) durchgeführt werden, Datenzugirffslogik kann nicht durch Unit-Tests, sondern nur durch Integrationstest unter Benutzung einer Datenbank (möglichst vergleichbar mit dem Produktionssystem) getestet werden, und dafür stellt Spring eine Reihe von Basisklassen für JUnit Tests zur Verfügung. Nichts wirklich neues, aber sehr anschaulich vorgetragen mit vielen kleinen Live-Beispielen.
  • JMS in a Spring Environment von Jürgen Höller: Unterstützung von synchrone und asynchrone Messaging-Verarbeitung, baiserend auf JMS 1.0. 2 und JMS 1.1, sowohl Container Managed, als auch direkt auf dem JMS-Provider operierend. Ab Spring 2.0 auch asynchrone Verarbeitung im Stile von Message Driven Beans. Auf jeden Fall den Vortrag noch mal anschauen, sobald die Folien verfügbar sind.
  • Integrating Spring with the Oracle Application Development Framework von Duncan Mills: Leider nur acht Teilnehmer, die meisten waren wohl bei "Core features of Spring 2.0" mit Adrian Colyer. Duncan stellt erst kurz JDeveloper, dann ADF und dann den "geplanten" Spring-Support vor. Noch handelt es sich um ein Freizeit-Projekt von Duncan (für die Wartezeiten an den Flughäfen), er möchte es aber gerne zu einem Open Source Projekt machen. Es geht um drei Bereiche: (1) IDE-Support für Spring, vergleichbar zur Spring IDE in Eclipse. Dann (2) die Integration von Spring als Data Provider für ADF. Und dann vielleicht (3) eine Reimplementierung von ADF Binding (also JSR 227) mit Hilfe von Spring. Die Demos der Prototypen für 1 und 2 sahen schon ganz nett aus. Weiter Infos soll es in Duncans Blog geben.
Soviel also zur SpringOne. Fazit: Hat sich innhaltlich wirklich gelohnt, so viel Spring Know How an einem Ort ist schon beeindruckend. Bin gespannt, wie sich die Konferenz in den nächsten Jahren entwickeln wird.

2006-06-16

Spring in the Core of WebLogic

Interface21 und BEA arbeiten gemeinsam an einer Integration von Spring als DI- und AOP- Container in BEA WebLogic 9.5. Ergebnis ist Projekt Pitchfork. Rod Johnson und Michael Chen berichten über die interne Architektur und die Erweiterungsmöglichkeiten, die sich dadurch für BEA WebLogic ergeben. EJBs sind gleichzeitig Spring Beans, und alle Möglichkeiten von Spring DI und AOP stehen für diese Beans zur Verfügung. Konfiguriert wird das ganze durch eine optionale Datei META-INF/spring-ejb.jar, und schon können erweitere DI-Funktionen und Aspekte auf EJBs angewendet werden. Das ganze ist auch als Add-On für Spring in anderen Containern wie z.B. Tomcat nutzbar. Dann kann man dort JSR-220 Annotationen verwenden, die dann von Spring ausgewertet werden.

Es ist schon beeindruckend, wie einfach diese Integration offensichtlich war. Jedoch kein Wunder, wenn man bedenkt, dass Spring DI und Spring AOP Obermengen von EJB-Funktionen in diesem Bereich sind.

Einen guten Überblick über Pitchfork liefert ein Blogpost von Christian Dupuis, einem der beiden Commiter von Spring IDE.

SpringOne, Tag 2

Die erste Keynote sollte von Gregor Kiczales, einer der Begründer von AOP, gehalten werden. Leider ist Gregor kurzfristig erkrankt und wurde von Gregor Hophe von Google vertreten. Er hat eine sehr interessante und amüsante Keynote zum Thema "Where is my beautyful code gone?" gehalten. Wie jeder weiß, wird schlechter Code nicht geschrieben, sondern entsteht einfach... Ein wichtiges Konzept ist aus Gregors Sicht das der "embedded domain specific languages" - die Umsetzung einer domänenspezifischen Sprache in einer zugrundeliegenden Programmiersprache. Das führt zu lesbareren Code mit Bezug auf die Business Domain. Ein weiterer interessanter Aspekt war Usability Tests für Komponenten-Schnittstellen. Warum sollten auch nicht APIs durch Entwickler getestet werden wie Benutzeroberflächen durch Endanwender? Fazit: Programmiere für Menschen, nicht für Maschinen. Und: Programmieren sind auch Menschen.

Nahtlos schließt sich die zeite Keynote von Rod Johnson und Stephan Janssen, COO von Interface 21, an. Hier werden einige Missverständnisse im Zusammenhang mit Open Source besprochen: Open Source Software entsteht nicht einfach, Open Source wird nicht nur aus "Spaß an der Freud" entwickelt, die guten Entwickler hinter Open Source Projekten haben keine langweiligen Jobs, und sie haben auch ein Privatleben, dass sie nicht 100 % mit Open Source Arbeit ausfüllen wollen. Anschließend stellen Rod und Stephan das Unternehmen Interface 21 und die Ziele des Unternehmens vor. Kurz zusammengefast: Primium Consulting rund um Spring und Enterprise Architecture im allgemeinen. Dabei sollen auch die wichtigsten Spring Commiter zusammen kommen, um die kritische Masse guter Köpfe zu erreichen, um die ambitionieren Ziele des Spring Frameworks realisieren zu können.

Nochmals Hallo aus Antwerpen

Hier eine kurze Auflistung der Vorträge, die ich gestern besucht habe:


  • New in Spring 2.0 von Jürgen Höller und Rob Harrob: Jürgen und Rob haben ca. 80 % der Codebase zum Spring Framework geliefert. Entsprechen tiefgehend sind Ihre Kenntnisse der Spring Interna. Von den beiden die Neuerungen von Spring vorgestellt zu bekommen ist schon beeindrucken. Themen waren natürlich der JPA-Support, XML Namespaces und neue AOP-Konzepte.


  • Enterprise Java Development with JPA von Mike Keith und Patrick Linskey: Interessant, aber für meinen Geschmack zu wenig detailliert. Alles sehr elementare Grundlagen und einfach gehalten. Hätte mir mehr gewünscht.


  • Spring and JPA von Rod Johnson und Costin Leau: Interessante ist das Ziel, dass das Springframework mit dem JPA-Support verfolgt: "Make using JPA easier and more portable!" Das Thema ist so interessant, dass ich dazu (hoffentlich) ein eigenes Posting schreiben werde.


  • Spring Namespaces von Erik Wiersma: Ein seht schöner Vortrag über die neue, schemabasierte Konfigurationsmöglichkeit von Spring. Damit ist es möglich, eigene Namespaces und Tags zu definieren, die durch TagHandler verarbeitet werden und die eigentliche Bean Definition für einen Spring Application Context erstellen. Damit kann man "Domain Driven Configuration" umsetzen. Das ganze wurde anhand eines einfachen Beispiels gut vorgeführt. Ein sehr mächtiges Werkzeug zur Vereinfachung der Konfiguration einer Applikation.


  • Practical Rich Domain Models von Steven Devijver: Ein interessanter, wenn auch recht theoretischer Vortrag über echte "Rich Domain Models" - im Unterschied zu "Anemic Domain Models", die häufig nur aus Daten-Containern bestehen. Einige radikale Ansätze: ORM-Tools sollten immer Field- und nie Property-orientiert arbeiten, also die Felder direkt manipulieren, nicht Setter verwenden. Sonst kann man dort keine Logik implementieren. Nach Möglichkeit sollten Klassen unveränderlich sein. Ggf. braucht man zwei Varianten (veränderlich und unveränderlich), die man in verschiedene Anwendungsfällen benutzt. Und: Test First unterstützt Rich Domain Modelling - weil man erst die richtigen Fragen stellen muss und daher die Domäne besser versteht. Steven will bald eine Beispielapplikation veröffentlichen, die das ganze verdeutlicht.


Hallo von der SpringOne aus Antwerpen

Gestern und Heute findet in Antwerpen die erste europäische Konferenz zum Thema Spring Framework, die SpringOne, statt. Veranstaltungsort ist das Metropolis Business Center in Antwerpen, Belgien. Und ich habe das Glück, teilnehmen zu können.

Die Konferenz ist mit über 400 Besuchern aus 25 Ländern für eine erste Auflage sehr gut besucht. es gibt 40 Vortäge in 6 parallelen Tracks. Die Speaker kommen aus der ganzen Welt, sogar aus Australien (Ben Alex vom Acegisecurity Projekt). Dabei sind fast allen wichtigen Commiter des diversen Spring Projekte anwesend, wie Rod Johnson selbst, Jürgen Höller, Rob Harrob, Adrian Coyler, Costin Leau, Ben Alex, Christian Dupius, ... Auch Oracle ist vertreten, einmal als Gold Sponsor, und dann durch Mike Keith (Co-Specification Lead für EJB 3) und Duncan Mills, der heute über die Integration von Spring in Oracle ADF spricht.

Offiziell begann die Konferenz gestern mit der Begrüßung durch Stephan Janssen von der Belgischen Java User Group, die die Konferenz organisiert hat. Dananch kam die erste Keynote von Rod Johnson und Adrian Coyler. Rod ließ erst die Vergangenheit von Spring kurz Revue passieren und sprach dann über die Adaption von Spring. Das Spring Framework habe sich nicht nur bei Endanwendern - hier gab es eine kurze Gastrolle des IT-Direktors von Voca aus England mit einer beeindruckenden Case Study - durchgesetzt, sondern auch als Infrastrukturplattform in anderen (Open Source) Projekten und bei kommerziellen Produkten. Prominentestes Beispiel ist die Kooperation mit BEA, die Spring nutzt, um damit den EJB 3 Support im neuen WebLogic umzusetzen. Das ganze wird als Open Source Projekt Pitchfork umgesetzt.

Anschließend stellte Rod die wichtigsten Neuerungen in Spring 2.0 dar: Vereinfachte Konfiguration durch XML-Namespaces, deutlich erweiteterte Unterstützung für AOP und massive Integration von AspectJ. Insbesondere ist nun die AspectJ Pointcut Language verwendbar - und dafür muss nicht das "echte" AOP Byte Code Enhancement durch den AspectJ Compilet genutzt werden. Natürlich wurde die erweiterte Integration von Java 5, der neue Support für die Java Persistence API und die bessere Unterstützung für JVM-Basierte dynamische Sprachen wie Bean Shell, JRuby oder Groovy erwähnt.

Danach übernahm Adrian Coyler und berichtete zunächst über das Verhältnis von Spring und Java EE 5. Für Java EE sei Java EE 5 ein evolutionärer Schritt, aber ein Application Framework wie Spring würde dadurch nicht ersetzt. Danach sprache er über die Pläne für die Zukunft von Spring. Leitspruch bei allen Plänen sei dabei "Simple and Powerful". Als Resultat ergibt sich für Adrian daraus "Productivity", und zwar (mindestens) auf zwei Ebenen: Entwicklerproduktivität Produktivität im Produktionseinatz. Für Entwickler soll sich die Nutzung von Spring weiter vereinfachen. XML Namespaces, gute Configuration Defaults und Heuristiken ("DRY": Don't repeat yourself), und Generatoren für gebräuchlichen Applikationsartefakte (z.B. durch Maven2 Archetypes). Für die Produktion wird das Management von Spring Applikationskontexten über JMX verbessert werden. Ferner ist eine Integration mit OSGi für eine Modularisierung von Spring Applikationen geplant. Damit soll es dann z.B. möglich sein, Teile einer Springapplikation im Betrieb via Hot Replacement durch neuere Versionen auszutauschen.

Nach der Keynote begannen die regulären Sessions. Ein wichtiges Thema ist sicherlich die Java Persistenz API und die Unterstützung durch Spring. Das Thema AOP, AspectJ und die neuen Integrationsmöglichkeiten in Spring sind auch sehr breit vertreten. Weitere Highlights sind aus meiner Sicht einige Vorträge über Domain Driven Design und Rich Domain Models. Dann gibt es noch Vorträge zum Thema Spring MVC und Web Flow, diverse Case Studies und noch vieles mehr. Schaut einfach selber nach unter www.springone.com.

2006-01-20

Das Ende...

War schon spannend, einen der "Väter" des Springframework live zu sehen. Inhaltlich gab's zumindest für uns aber nichts neues. Interessant aber: deutlich über hundert Teilnehmer an der Session, gut über die Hälfte haben bereits von Spring gehört, aber nur eine Handvoll arbeitet bereits in Projekten damit! Wir sind also noch ganz vorne mit dabei...

Zum Schluss haben wir uns noch einen kurzen Ausflug in die Session "Web 2.0 mit Ruby on Rails" gegönnt. Extrem beeindruckend, wie performat man mit Rails entwickeln kann! Inklusive komfortabler AJAX-Unterstützung (Umsortieren einer tabellarischen Todo-Liste mittels *Drag and Drop* mit drei, vier Zeilen Code...). Und das gute: Die Architektur ist sofort einsichtig, man findet sich sofort zurecht. Schon spannend, was mit dynamischen Skriptsprachen und Metaprogrammierung alles erreichen kann. Vielleicht auch für uns nicht uninteressant, wenn's um die Entwicklung "typischer Database-Babysitting-Applications" geht. Aber es bleiben auch Fragen offen: Wie ausgereift ist Rails, wie gut funktioniert die Einbindung von Webservices, welcher Kunde ließe sich überzeugen, Rails einzusetzen?

2006-01-19

OOP 2006 - Der letzte Tag für Torsten und mich

Heute ist für Tosten und mich der letzte Tag auf der OOP 2006. Morgen geht es noch weiter mit Tutorials, die wir aber nicht belegt haben.

09:00 Uhr
Heute beginnt der Tag mit dem Vortrag "Eclipse Web Tools" von Jochen Krause. Jochen ist Commiter der WTP und kann aus erster Hand berichten. WTP gliedert sich in eine Tools Platform, den Web Standard Tools und den J2EE Standard Tools. Darüber hinaus gibt es noch sogenannte Technology Projects, eine Art "Incubator" für noch "experimentelle Projekte" ohne verbindliche Erfolgsaussage. Dazu gehört z.Zt. nur das JSF-Tooling-Projekt, dass in erster Linie von Oracle vorangetrieben wird. Es gibt auch zwei Technology Projects "EJB 3.0 Tooling" - eins von Oracle getrieben - die allerdings noch nicht zu den Web Tools gehören.

Gesamteindruck der WTP: eher durchwachsen. Man sieht deutlich, dass es als Platform für Third Party Entwicklung, nicht aber als Toolset für die "ernsthafte" Entwicklung von Projekten gedacht ist. (Auch wenn einige Komponenten schon richtig gut zu sein scheinen, wie z.B. der XSD-Editor.) Laut Aussage von Jochen Krause bauen aber immer mehr Eclipse-basierter Toolsets auf dem WTP auf, wie z.B. die IBM-Tools, die Tools von BEA oder auch Exadel.

11:15 Uhr
Keynote "Quo Vadis Microsoft?" von Dirk Primbs - wieder mal ein "Werbevortrag" eines großen Vendors. Fazit: .Net im fünften Jahr ist ein voller Erfolg und zieht sich von Handheld bis Serversystem, Windows 2003 verspricht ein großer Erfolg zu werden und mit MS Visual Studio 2005 wird bisher unerreichte Produktivität bei der Entwicklung möglich. Tatsächlich machen aber die hochintegrierten und durchgehend modellbasierten Ansätze - Stichworte Domänenspezifische Sprachen und Softwarefabriken - einen sehr vielversprechenden Anschein. Muss man im Auge behalten!

12:15 Uhr
Mittagessen und ein Spaziergang im Sonnenschein. Die frische Luft tut gut, wir tanken Energie für den Nachmittag.

13:40 Uhr
Björn Müller von der Software AG - ehemals Casabac - ist gerade mit seiner Präsentation von Casabac GUI Server durch. Eigentlich nichts neues - das Produkt gibt's schon seit einigen Jahren mit im wesentlichen gleichbleibender Funktionalität - ist aber jetzt aufgrund des allgemeinen AJAX-Hype richtig "in". Das OOP-Forum im Bereich der Ausstellung war auf jeden Fall sehr gut besucht.

13:45 Uhr
Sehr interessanter Vortrag von Prof. Johannes Siedersleben über "Die Crux großer und kleiner Software-Architekturen": Nichtfunktionale Anforderungen. Im ersten Teil berichtet er über weitestgehend bekannte Techniken der reaktiven Qualitätssicherung wie Unittests, automatisierte Builds (CruiseControl), Softwaremetriken und Codeanalysetools. Interessante Idee: Auswertungen dieser Art in einem Projekt Data Warehouse zu sammeln, um Änderungen verfolgen zu können. So haben Studenten von Siedersleben z.B. eine Tool basierend auf JUnit gebaut, dass Zeiten bei der Ausführung von JUnit-Tests mist. An sich nicht unbedingt hilfreich. Die Idee ist aber, die Zeiten über den Projektverlauf zu sammeln und so direkt auf Änderungen (Tests, die bisher 3 Sekunden dauerten, dauern "plötzlich" 30 Sekunden) aufmerksam zu werden. Inovativer waren die Ideen im zweiten Teil. Zunächst unterscheidet Siedersleben zwischen Anwendungsfunktionen (den fachlich geforderten Features), funktionalen Anforderungen (Logging, Persistenz, Exception Handling, GUI, ... - Dinge die man in ein System einbauen kann) und nichtfunktionalen Anforderungen (Performance, Robustheit, Erweiterbarkeit, ... - Dinge, die ein System auszeichnen, die man aber nicht als Feature "einbauen" kann). Die Idee ist dann, mit einem minimalen System, dass die Anwendungsfunktionen abdeckt, zu beginnen, und dann die funktionalen Anforderungen nach und nach einzubauen - und nicht alle wie z.Zt. üblich von Anfang an immer zu berücksichtigen. Dabei kann man dann nicht nichtfunktionalen Anforderungen kontinuierlich kontrollieren. Hier stellt sich dann die Frage, wie man Code transformieren oder anreichern kann, so dass sich hinsichtlich der Anwendungsfunktionen nicht ändert, aber neue funktionale Anforderungen bekommt. Möglichkeiten sind Codegenerierung, Aspektorientierung, Byte Code Enhancement und weiteres. Mich persönlich würde interessieren, welche Möglichkeiten hier die Konzepte der Metaprogrammierung - wie z.B. bei Ruby on Rails angewendet - dabei bieten könnten...

15:15 Uhr
"Impossible Design - Ultra-Large-Scale Systems" lautet der Titel der Keynote von Richard P. Gabriel von den Sun Laboratories. Ein extrem visionärer Vortrag, den ich zugegebenermaßen nicht wirklich verstanden habe. Man stelle sich ein System vor, so umfangreich wie z.B. die gesamte IT-Infrastruktur Deutschlands. Mit einer Lebenszeit von 25 bis 50 Jahren. Permanente Änderungen der Anforderungen und Funktionen. Umbauten ganzer Systemteilen im laufenden Betrieb? Wie kann so ein System überhaupt entstehen? Dafür müssen ganz neue Konzepte her. Viele Ideen stammen aus Beobachtung der Natur. Wie funktionieren Bioorganismen? Wie koordinieren sich Termitenstämme? Müssen Programme immer fehlerfrei sein? Braucht man nicht vielmehr Konzepte von tolerierbaren und nicht tolerierbaren Fehlern? Und vieles mehr, dass ich wie gesagt nicht wirklich verstanden habe. Überraschen war auf jeden Fall der Schluss: Viele Fragestellungen gelten nicht nur für Ultra-Large-Systeme, sondern auch für die Systeme, die wir heute entwickeln. Science Fiction und ein Blick auf die Zukunft der Softwareentwicklung?

16:45 Uhr
Schnell noch dieses Posting rausschicken und dann in den letzten Vortrag für heute: Jürgen Höller spricht über das Springframework. Neben Rod Johnson einer der Mitbegründer dieses wichtigen Open Source Projekts. Bin schon sehr gespannt...

2006-01-18

Mittwoch auf der OOP - Teil 2

12:00 Uhr
Torsten "schleift" mich in die Podiumsdiskussion "Wie sollte man heute Orchestrierung einsetzen?", der eigentlich erst um 18:15 Uhr starten sollte, aber kurzfristig verschoben werden musste. Entsprechend klein war die Teilnehmerzahl. Auf meine Frage, was denn die Top 3 Dinge wären, die notwendig sind für einen langfristigen Erfolg der SOA-Idee, war die Antwort:
- Die Herstellen müssen sich auf Interoparabilität einigen!
- Als Entwickler muss man zwischen Programmieren im kleinen (Service-Intern) und im Großen (Komposition von Services) trennen lernen. Dadurch muss eine Trennung von Prozessen und Daten durchgesetzt werden.
- Ganz wichtig: Es muss ein Umdenken beim Programmierparadigma stattfinden. Wir müssen (wieder) lernen, asynchron zu denken.
Überhaupt scheint Asynchronität ein grundlegendes Konzept für erfolgreiche SOA zu sein.

13:45 Uhr
Matthias Haendly von der SAP AG berichtet in der ersten Keynote über Enterprise Service Architecture bei SAP Netweaver. Viele Allgemeinplätze und nichts wirklich neues.

14:30 Uhr
Im Anschluss an die Keynote von Matthias Haendly folgt ein Highlight des Tages: Simon Singh, Author von "Fermat's Last Theorem" und "The Code Book", berichtet über "the Cipher Challenge", die er im Anhang zum Code Book gestartet hat. Das Buch habe ich seinerzeit mit großer Begeisterung gelesen - sehr empfehlenswert, wenn man sich über die Historie von Codeentwicklung und "Code-Knacken" interessiert - und ebenso begeistert war ich von der Keynote. Einfach mal was anderes auf dieser Konferenz.

15:20 Uhr
Im OOP-Forum - einem Vortragsbereich am Rande der Ausstellung für Vendor- und Aussteller-Vorträge - erzählt Eberhard Wolff von Saxonia über Möglichkeiten Produktivität und Qualität in Java EE Projekten zu verbessern. Eberhard ist einer der Vorreiter im Einsatz des Springframeworks in Deutschland - und natürlich ist er in seinem Vortrag auch auf Spring eingegangen. Kernaussage war aber, dass man bei Java EE zwischen Plattform und Programmiermodell unterscheiden muss. Die Plattform ist mittlerweilen fast alternativlos im Enterprise Umfeld, das ursprüngliche Programmiermodell hat aber Konkurenz bekommen mit Open Source Frameworks wie Hibernate, Spring, Tapestry u.s.w. Und diese sind mittlerweilen meist die bessere Wahl.

Übrigens plant Eberhard Wolff für die JAX 2006 eine Spring-Vortragsreihe. Durch aktiven Einsatz von Oliver-Arne haben wir gute Aussichten, dort mit einem Erfahrungsbericht aus unseren Projekten vertreten zu sein!

15:45 Uhr
Die Case Study "Praktische Umsetzung der Enterprise Architecture bei der BMW Group" stand für den Nachmittag auf dem Programm. Ein interessanter Vortrag über die Konflikte, die zwischen Unternehmensrichtlinien auf der einen Seite und den konkreten Anforderungen eines Projektes auf der anderen Seite entstehen können. Gelöst wurde das Problem durch Einführung eines Architektur-Boards aus Projekt-Chefarchitekt von BMW, Enterprise-Architekt von BMW und Chefarchitekt des Dienstleisters SoftLab.

16:45 Uhr
Letzter Vortrag für heute - mal wieder ein wenig auf Abwegen: "Software-Architekturen auf Basis vpn Eclipse RPC". Aber halt: In Hamburg entwickeln wir gerade unser erstes Projekt mit Eclipse RPC als Client-Plattform. Die Session von Frank Gerhardt und Bernd Kolb, beide Freiberufler, und Kai Tödter von der Siemens AG überzeugte mit tiefgehender Praxiserfahrung. Ich werde die Vortragsfolien nächste Woche direkt an die Kollegen in Hamburg weitergeben. Bestimmt sind hilfreiche Informationen dabei.

18:30 Uhr
Geschaft für heute. Jetzt noch schnell Emails checken und das Posting schreiben und rausschicken. Und dann haben wir hier "Feierabend".

Inhaltliche Abwege...

Heute morgen bin ich mal auf Abwegen:

09:00 Uhr
James D. Herbsleb von der Carnegie Mellon School of Computer Science berichtet ebenfalls über das Nutzen von Open Source, aber auch über den Einsatz von Open Source Mechanismen in Unternehmensumfeld. Wieder habe ich den Eindruck, dass dies gerade bei der Entwicklung von wiederverwendbaren Basisfunktionalitäten auch bei OPITZ CONSULTING interessant sein kann.

10:45 Uhr
"Hellsehen für Fortgeschrittene" mit Chris Rupp von der Sophist Group. Sehr interessanter und auch sehr unterhaltsamer Vortrag. Viele wichtige Erkenntnisse, die natürlich für alle Kollegen, die es mit der Erhebung von Anforderungen zu tun haben. Spannende Erkenntnis: Interview-Techniken sind oft eher ineffektiv. Alternativen kommen z.B. aus dem Bereich der Psychotherapie.

2006-01-17

Der Rest des Tages...

Hier noch kurz der Rest des zweiten OOP-Tages:

11:00 Uhr
Roel Staleman, Oracle, hält eine Keynote mit dem Titel "SOA & The Agile Enterprise"

Eine recht Marketing-lastige Darstellung des Produktportfolios von Oracle im SOA-Umfeld. Wieder wird der Lifecylcle in den Vordergrund gestellt: Development, Deployment, Compose Services, Secure Services, Manage Services ,Monitoring, Change. Für mich wichtige Aussagen:
Oracle ist Lead für Eclipse-JSF-Plugins.
Oracle ist Lead für Eclipse-EJB 3.0-Plugins.
Oracle macht Teile von ADF Faces Open Source und stellt sie Apache MyFaces zur Verfügung.
Oracle macht Teile von Toplink Open Source und läßt sie in Project Glassfish, der Referenzimplementierung von J2EE 1.5, einfließen.

12:15 Uhr
Johannes Siedersleben von T-System berichtet über komponentenbasierte Entwicklung im Vortrag "Den Tiger zähmen mit Komponenten und Kategorien"

14:00 Uhr
Elmar Groiss von BASF Agricultural Products und Torsten Osthus von Osthus@Business berichten über den "Einsatz einer Open Source basierten MDA-Entwicklungsplattfom in der BASF Pflanzenschutz Forschung". Interessant für OPITZ CONSULTING, weil wir für diese BASF-Abteilung auch schon tätig waren.

15:00 Uhr
Brian Behlendorf von CollabNet berichtet in der Keynote "Bringing Open Source Software Collaboration Practices and Principles to Corporate Environment" über Möglichkeiten, die Kultur von Open Source Projekten in Softwareentwicklungsfirmen zu übertragen, und die möglichen Nutzen für Usability. Ein sehr interessanter Vortrag, auch für OPITZ CONSULTING - insbesondere wenn wir über das Thema "Wiederverwendung von Lösungen und Komponenten" innerhalb unserer Gruppe nachdenken.

16:15 Uhr
Matthias Recknagel von Daimler Chrysler und Chris Rupp von Sophist berichten über Qualitätsmetriken für Anforderungen: Wie kann man Qualität von Anforderungsspezifikationen über Kriterien meßbar machen und damit auch den Nutzen von Anforderungsspezifikationen bewerten?

17:45 Uhr
Berthold Maier von Oracle und Hajo Normann von EDS berichten über SOA-Entwurfsmuster, die auf Erfahrungen aus einem gemeinsamen realen Projekt beruhen. Sehr interessant, aber aus meiner Sicht auch sehr speziell. (Verarbeitung großer XML-Dokumente mit umfangreichen Normalisierungs- und Validierungsschritten.) Wesentliches Design-Prinzip: Trenne sauber Verantwortlichkeiten und kapsle Dinge, die sich häufig ändern können, in separate Funktionalitäten. Interessant auch die durchweg positiven Erfahrungen bei dem Einsatz von Rule-Engines - nicht nur für Validierung, sondern auch bei der Durchführungn von Transformationen. Interessant auch eine Einschätzung der beiden: Sie vergleichen den aktuellen Stand der Dinge im SOA-Umfeld mit dem im J2EE-Umfeld in der Zeit um 2000 herum, als es noch keine J2EE-Patterns und -Antipatterns, Best Practices und Blueprints gab.

So. Genug für heute. Tschüss bis morgen...

IT-Stammtisch

Gerade ist der IT-Stammtisch der OOP 2006 zuende gegangen. War sehr lustig - besser als "7 Tage, 7 Köpfe". (Oder lag das nur am dritten Weißbier?) Jutta Eckstein, Frank Buschmann, Nikolai Josuttis, Markus Völter und Chris Rupp haben sich gegenseitig die Stichworte zugespielt. Alles modelgetrieben? Offshoring oder Outsourcen? SOA und was kommt dann? Na ja, halt all die aktuellen Buzzwords und Hype-Themen. Sehr amüsant.

Torsten schreibt übrigens auch gerade ein paar Postings für sein Blog. Siehe http://torstenwinterberg.blogspot.com/.

Scalable Software

Die erste Session für mich war heute der Vortrag "Patterns and Practices of Building Scalable Software" von Frank Buschmann. Hier hat man ganz deutlich gemerkt, dass Frank Buschmann durch seine Arbeit bei Siemens einen ganz anderen Blickwinkel auf Softwarearchitektur hat. Bei ihm geht es oft um z.B. Embedded Systeme wie Mobiltelefone, Technik im Auto oder Software im Computertomographen. Daher fällt bei ihm unter den Begriff "Skalierbarkeit" nicht nur die übliche "Up-Scalability" von betriebswirtschaftlichen Systemen hinsichtlich operativer, "fühlbarer" Funktionen (Performance, Datendurchsatz etc.), sondern auch "Down-Scalability" und Skalierbarkeit hinsichtlich funktionaler Anforderungen - ebenfalls "up" und "down". Funktionale oder fachliche Skalierbarkeit betrifft z.B. Software für Produktfamilien, die unterschiedlichen Funktionsumfang haben. Down-Scalability andereseits ist z.B. wichtig, wenn Software auf unterschiedlich leistungsfähigen Hardware-Plattformen laufen können muss. Im zweiten Teil des Vortrags hat Frank Buschmann über Lösungsmöglichkeiten für diese Art von Problemen gesprochen - natürlich in Form von Patterns. Aber auch MDA und AOP sind Möglichkeiten, um z.B. fachliche Skalierbarkeit zu erreichen.

Policy-Driven SOA

Am Montag habe Torsten und ich noch an der Night School "Policy-Driven SOA" teilgenommen, ebenfalls durchgefühft von Michael Herr und Mary Rodrick. Leider wurde viel von dem, was die beidem im Tutorial berichtet haben wiederholt. Zentral ist die Definition von Quality of Service durch Policies. Allerdings gibt es hier noch nicht viele Standards und auch noch viel Diskussionsbedarf darüber, was hier überhaupt geschehen soll. Als weiteres Problem wurde angeführt, dass übliche, UDDI 3.0 basierte Servicerepositories, das Verwalten von Policies nicht unterstützen und hier Erweiterungen nötig sind.

Programmierparadigmen für Global Economy

Die erste Keynote der OOP 2006 wurde Montag abend von Wolfgang Emmerich von Zühlke gehalten. Auch hier wurde SOA als das wichtige Paradigma für die Entwicklung von globalen Applikationen in der Zukunft herausgestellt. Die wesentliche Aussage war aber, dass das wesentliche Key-Feature für die Implementierung asynchrone Programmiermodelle sein müssen. Das Problem dabei ist, das bei allen aktuellen Programmiersprachen Asynchronität nicht in der Sprache selbst verankert ist. Als Beispiel, wie so etwas aussehen könnte, hat Wolfgang Emmerich die Programmiersprache C-Omega - eine experimentelle Sprache von Microsoft, basierend auf C# - vorgestellt. Als weiteres wichtiges Implementierungsmodell hat Wolfgang Emmerich Correlation Sets in BPEL aufgeführt.

SOA auf einen Blick

Das Vortragsprogramm hier auf der OOP ist sehr voll. Da finden sich kaum Pausen, in denen ich mal ein paar Notizen zu den Vorträgen ins Blog posten kann. Nachfolgend ein kurzer Bericht über das Montagstutorial SOA auf einen Blick von Michael Herr und Mary Rodrick von der SOP Group der Deutschen Post. Bei den nächsten Postings muss ich mich dringend kürzer fassen...

In ihrem ganztägigen Tutorial haben Michael Herr und Mary Rodrick von Ihren Erfahrungen bei Einführung und Einsatz von SOA bei der Deutschen Post World Net berichtet. SOA wird dort seit mittlerweilen sechs Jahren praktiziert. Entsprechend umfangreich war der Erfahrungsschatz der beiden. Allerdings merkt man auch sehr deutlich, das die Sicht auf die SOA-Welt durch die doch sehr komplexen Anforderungen eines global agierenden Unternehmen mit hunderttausenden von Mitarbeiten und tausenden von IT-Systemen geprägt ist. Einige Ansichten sind auch sehr extrem. Einige der wichtigsten Punkte (natürlich alles andere als vollständig):


  • Die Einführung von SOA ist zu großen Teilen eine Frage der Fachlichkeit. Wichtig ist, einige wenige Kernprozesse auszuwählen. Basierend auf diesen Prozessen muss eine Modellierung und Analyse von fachlichen Domänen geschehen. Mit Domäne ist hier ein Funktionsblock (nicht ein Domänenmodell im Sinne eines Datenmodells!) zu verstehen, der Funktionalitäten bereit stellt, die von den Prozessen benutzt werden. Aus
    diesen Domänen können dann Servicekandidaten abgeleitet werden. Diese Kandidaten müssen dann u.a. auf geeignte Granularität, vor allem aber auf hinreichende Stabilität untersucht werden. Letzters kann man z.B. durch die Simulation von
    Prozessänderungen prüfen. Wichtige Konsequenzen sind:


    • SOA kann man nicht kaufen.

    • Der Entwurf einer SOA muss letztendlich Top-Down geschehen.


  • Wichtig ist, dass eine Konsolidierung von Funktionsimplementierungen stattfinden muss. Es kann (logisch) immer nur einen Service Provider für einen Service geben. Redundante Implementierungen müssen abgelöst und durch eine Nutzung des "Highlanders" ersetzt werden. An dieser Stelle kommt Service Portfolio Management ins Spiel, und natürlich auch die Versionierung von Services, wenn sich die Anforderungen an der Service unterschiedlich entwickeln.

  • Ein weiterer, ganz zentraler Aspekt von SOA sind Quality-of-Service-Vereinbarungen und Policies, die für eine
    Service-Nutzung gelten sollen. Hierzu gibt es zwar erste Realisierungsansätze hinsichtlich der Syntax (z.B. WS Policy) aber kaum semantische Definitionen. Was bedeutet z.B. eine geforderte maximale Antwortzeit? Wie kann man die fachliche Qualität einer Response messen, die man als Antwort auf einen Service-Request erhält?

  • An vielen Stellen reichen die vorliegenden WS Standards noch nicht aus, um damit Real-World-SOA zu betreiben. Als Mediator bietet sich hier ein Enterprise Service Bus an, der z.B. WS-Extentions implementiert und etwa solche Themen wie Aushandeln und Einhalten von Policies sicherstellt. Als Standard scheint sich hier Java Buisness Integration (JBI) zu etablieren.


2006-01-16

OOP 2006

Hallo,

die OOP 2006 hat begonnen. Hier ein paar erste Eindrücke in Bildern. Der Text kommt (hoffentlich) in den nächsten Tagen.



Die Anreise, gegen halb Neun. Ziemlich kalt in München.



Michael Herr von der SOP Group der Deutschen Post World Net beim Workshop "SOA auf einen Blick". Leider ist mir kein gutes Foto von Mary Roderick, der zweiten Sprecherin, gelungen.



Torsten, voll konzentriert beim Vortrag...