Gut gedacht – zu viel gemacht: wenn User Stories Spielraum lassen

Auch in gut laufenden agilen Projekten ist am Ende eines Sprints nicht immer das entstanden, was am Wichtigsten gewesen wäre. Dafür lassen User Stories zu viel Spielraum.

In einem Projekt sind alle User-Stories gut durchdacht, die Prioritäten klar verteilt und die Entwickler arbeiten die Stories streng nach Priorität ab. Trotzdem ist der Kunde am Ende der Sprints nicht zufrieden: Wichtiges wurde nicht geschafft, Unwichtiges hingegen getan. Wie kann das passieren? Weiter lesen…

Spring 3, Hibernate 4 und Wicket 6: ein starkes Gespann

Ohne Vorkenntnisse ist es gar nicht so einfach, eine Web-Anwendung mit Spring, Hibernate und Wicket aufzusetzen. Dabei reichen dafür nur wenige Zeilen Java-Code.

Im Laufe des Jahre sind im Spring-Framework verschiedene Varianten entstanden, wie man eine Web-Anwendung aufsetzt. Inzwischen ist es möglich, auf externe XML-Konfigurationsdateien vollständig zu verzichten. Wie man konkret vorgeht, eine Spring-Anwendung mit Hibernate und Wicket aufzusetzen, zeigt dieser Artikel. Weiter lesen…

Wie lange kann man sprinten?

In Softwareprojekten hat sich der Begriff “Sprint” als Synonym für ein- bis zweiwöchige Iterationen eingebürgert. Trotzdem ist ein Sprint keine passende Analogie in mittel- bis langfristig laufenden Projekten!

Im normalen Sprachgebrauch wird der Ausdruck Sprint vor allem im Sport verwendet. Dort bezeichnet ein Sprint die schnellstmögliche Fortbewegung, zu der ein Mensch in der Lage ist. Jedoch nur auf kurzen Strecken!

Weiter lesen…

Dokumentieren mit Patterns – Beispiele aus der Praxis

Die Dokumentation eines Projekts in Form von Patterns zu schreiben, klingt etwas gewagt. Dabei sind sie eine sinnvolle Ergänzung zur üblichen Software-Dokumentation.

Vor kurzem habe ich erläutert, wie man Patterns selber schreibt. Indem man eine vorhandene Lösung in Form eines Patterns beschreibt, lernt man viel über das Problem, das man gelöst hat. Die Dokumentation von Software enthält üblicherweise umfangreiche Beschreibungen, wie die Software strukturiert ist – die Gründe, warum die Software genau so strukturiert ist und nicht anders, werden selten intensiv ausgeleuchtet. Dabei sind gerade die Begründungen für die getroffenen Design-Entscheidungen wichtig, damit eine Software auch von neu zu einem Team hinzugekommenen Entwicklern langfristig konsistent weiterentwickelt werden kann.

An dieser Stelle möchte ich zwei Beispiele aus einem Projekt vorstellen, die zeigen, wie Patterns in der Realität einer Softwaredokumentation aussehen können. Weiter lesen…

Speicherverbrauch von JEE-Anwendungen: Ein Beispiel aus der Praxis

JPA bietet viel Komfort beim Laden und Bearbeiten von Daten aus einer relationalen Datenbank. Nur darf man bei allem Komfort nicht vergessen, dass bei jeder Operation hinter den Kulissen viel geschieht. Am Beispiel von EclipseLink in einer Wicket-Anwendung zeigt sich, dass man beim Thema Speicherverbrauch auf größere Überraschungen stoßen kann.

Der Ausgangspunkt dieser Geschichte sind OutOfMemoryExceptions, die eine Web-Anwendung nach einigen Tagen Betriebsdauer warf. Ein Blick per JConsole in das Innere der Anwendung zeigte schnell, dass die durchschnittliche Session eines Besuchers knapp ein Megabyte groß war: bei vielen Besuchern ein extrem hohen Wert. Wie konnte das geschehen? Weiter lesen…

Migration zu Apache Wicket 6: Was ist zu tun?

Apache Wicket hat viele Stärken. API-Kompatibilität zwischen den großen Versionsnummern gehört leider nicht dazu! Was muss man wissen, wenn man ein bestehendes Projekt zu Wicket 6 migrieren möchte?

Der Versionssprung von Wicket 1.4 zu Wicket 1.5 hatte schon für viel Arbeit gesorgt. Die Entwickler hatten nicht nur neue Funktionen hinzugefügt, sondern die API teilweise erheblich verändert haben. Der Wechsel von Wicket 1.5 zu Wicket 6 ist etwas leichter, doch es gibt erneut viel zu tun. Weiter lesen…

Wie schreibe ich ein Pattern?

Pattern schreiben

Nur was man aufschreiben kann, hat man richtig verstanden! Das Pattern-Format hilft, einen Lösungsansatz so zu verstehen, dass man ihn strukturiert niederschreiben kann.

Auch wenn der große Hype rund um das Thema Patterns schon länger vorbei ist, bleibt das Pattern-Format sehr hilfreich – nicht nur dann, wenn man nach einer Lösung für ein Problem sucht, sondern auch, wenn man schon eine Lösung hat und diese für andere dokumentieren möchte. Dieser Artikel gibt eine kurze Einführung, wie man sein erstes Pattern schreibt und was man dadurch gewinnt. Weiter lesen…

Was kostet die Welt? Internationalisierung mit den International Components for Unicode (ICU)

Wie heißt “Japan” auf Türkisch? Wie sortiert man koreanische Begriffe alphabetisch? Und wie viele Pluralformen gibt es im Arabischen? Wer sich ernsthaft mit diesen Fragen beschäftigen muss, kommt kaum an den International Components for Unicode (ICU) vorbei.

Als Java-Entwickler bietet einem die Java 7-Plattform gute Unterstützung, um lokalisierbare Anwendungen zu entwickeln, sowohl im Funktionsumfang als auch bei den unterstützten Sprachen. Jedoch ergeben sich schnell Anforderungen, die Java von Haus aus nicht unterstützt. Glücklicherweise gibt es eine Datensammlung zusammen mit einer Java-Bibliothek, die kaum einen Wunsch offen lässt: Das Common Locale Data Repository (CLDR) zusammen mit den International Components for Unicode (ICU). Weiter lesen…

Testgetriebene Entwicklung: Test-first oder Test-last?

Testgetriebene Entwicklung (Test-driven development, TDD) sieht vor, die Tests vor dem eigentlichen Produktivcode zu schreiben (Test-first). Wer sich dabei nicht wohl fühlt, kann aber auch mit Test-last Systeme gut strukturieren und durch Tests absichern.

Mein Kollege Lutz hat in seinem Artikel zu Code-Retreats vor kurzem beschrieben, wie man – auch durch testgetriebene Entwicklung – zu einem besseren Entwickler werden kann. Seine Erfahrungen finde ich sehr beeindruckend. Sie haben mir Lust gemacht, ebenfalls an einem Code-Retreat teilzunehmen! Nur von einem der Grundsätze testgetriebener Entwicklung bin ich nicht vollständig überzeugt. Weiter lesen…

JEE 6 und die Applikationsserver – ein Blick aus zwei Winkeln

JEE 6 ist eine ausgereifte, jedoch sehr komplexe Technologie. Vor allem der Betrieb eines Applikationsservers bringt eine erhebliche Komplexität mit sich. Was bedeutet der Einsatz eines JEE 6-Applikationsservers, vor allem im Zusammspiel von Architekten und Administratoren?

In einem früheren Beitrag habe ich argumentiert, dass ein Applikationsserver wie z.B. Glassfish zwar hilft, ein Projekt schnell zu starten. Langfristig jedoch erschweren JEE-Applikationsserver die Wartung und Weiterentwicklung eines Systems, vor allem, wenn sie aktualisiert werden – und mit ihnen die ganze technologische Basis eines Systems.

Meine Argumente möchte ich nun etwas vertiefen und einen weiteren Blickwinkel hinzufügen. Weiter lesen…