Verschwendung in der Softwareentwicklung

YAGNI! Das “You aren’t gonna need it!” aus dem eXtreme Programming hat schon immer zu vielen Diskussionen geführt.

Gerade in konservativen Unternehmen, die auf solide Softwareentwicklung setzen, werden Minimallösungen sehr kritisch betrachtet. Schnell wird in Wiederverwertbarkeit, Konfigurierbarkeit und sehr solide Lösungen investiert ohne genau das Endstadium zu kennen.

Ich sehe dies zunehmend kritischer.

image

Ich habe nichts gegen Qualität und gute Software. Ich habe allerdings etwas gegen Investitionen, die nie eine Rendite erwirtschaften.

In der Softwareentwicklung wird bei “Verschwendung” gerne auf die Implementierung von Features verwiesen, die (fast) nie benutzt werden. Zu selten werden jedoch auch die inneren Werte der Software kritisch hinterfragt. Häufig wir ausschließlich mit Beispielen argumentiert, in denen überhaupt keine Rücksicht auf die interne Struktur genommen wurde. Diese dienen dann als Begründung für umfangreiche Umbauarbeiten. Die Auswirkungen dieser Änderungen auf die Gesamtkosten wird dann häufig nicht mehr betrachtet.

Es ist doch meist so, dass ein Kunde für Features zahlt, die er beauftragt hat und dann nie nutzt. Für mögliche Verbesserungen an der internen Struktur der Software zahlt er typischerweise nicht, diese erwirtschaften eine Rendite, indem die Wartungskosten sinken. Leider ist dies zu häufig nicht der Fall.

Beispiel: “Wir mussten das konfigurierbar machen (1), da wir sonst bei jeder Änderung an der Darstellung der Seite drei weitere Dateien hätten anpassen (2) müssen!” ist eine typische Begründung von Entwicklern.

Meiner Meinung nach steckt hinter (1) oft der Spaß, etwas “solides” zu bauen. Hier ist der Ingenieur gefragt. “Wofür habe ich denn sonst studiert?”. Zudem kommt oft noch eine Brise Angst hinzu, sich bei einer einfachen Lösung später rechtfertigen zu müssen “(“Warum habt ihr nicht … ?”).

Bei (2) geht es darum etwas am Laufen zu halten. Ein pragmatischer Handwerker zimmert etwas zusammen. Die Aufgabe ist nicht sonderlich spannend und wir wissen alle, dass früher oder später etwas noch einmal angepasst werden muss. Leider ist dies auch oft die Quelle von Fehlern, die lange gesucht werden müssen – Fehler die entstehen, wenn man die “langweilige Handwerksarbeit” nicht sorgfältig durchführt.

Leider führt eben auch (1) oft zu hohen Folgekosten, beispielsweise wenn während einer Entwicklung etwas zu früh verallgemeinert wurde. Später werden weitere Aspekte hinzugefügt und die Annahmen für die Verallgemeinerung ändern sich. Das Konstrukt funktioniert nicht mehr, es muss angepasst und mit Balkonen versehen werden. Plötzlich wird aus einer soliden Ingenieursleistung eine immer weniger wartbare Ansammlung von Sonderfällen.

Code-Duplizierung doch  nicht böse?

Vor diesem Hintergrund sehe ich Code-Duplizierung – gerade bei bestimmten Teilen von Webseiten in Portalprojekten – nicht immer kritisch. Solange es handhabbar bleibt, kann man (sollte man?!) die Entscheidung, was als Verallgemeinerung extrahiert werden soll, hinausschieben. Zu einem späteren Zeitpunkt, wenn sich die Anforderungen in dem betroffenen Teil der Anwendung wirklich nicht mehr im großen Umfang ändern, kann schließlich eine Verallgemeinerung vorgenommen werden.

JFS2009: Zusammenfassung Java Forum Stuttgart 2009

Das Java Forum Stuttgart ist seit Jahren immer eine gute Möglichkeit sich über aktuelle Trends in und um die Java-Welt zu orientieren. Auch dieses Jahr gab es viele interessante Vorträge. Im Vergleich zu den letzten Jahren mit deutlich weniger Vorträgen zu Entwicklungsprozessen und einem stärkeren Schwerpunkt auf neue Tools und Entwicklungsansätze.

Von Traktoren …

Begrüsst wurde man beim 12. Java Forum Stuttgart nicht durch Hightech und Anzugträger, sondern zunächst durch handfestes: Dicke Traktoren von Fendt. Ja, das sind schon beeindruckende Maschinen mit denen unsere Landwirte hantieren können ;-)
traktor

… und Bären

Einer der letzten Vorträge hat dann die Thematik dahingehend aufgegriffen, dass der Einsatz von Bären in Java-Projekten demonstriert wurde.

Butler und Baumeister – Kontinuierliche Integration mit Hudson

Der Vortrag “Butler und Baumeister” von Simon Wiest war für mich (und andere auch) das Highlight des diesjährigen Java Forums. Selten habe ich einen so guten Vortrag erlebt: Inhaltlich stimmig und lehrreich, dabei sehr unterhaltsam und motivierend. Wirklich gute (“hand made”) Folien und natürlich die drei Build-Bären. Noch während des Vortrags habe ich begonnen Hudson herunter zu laden.

Jeder, der nicht in diesem Vortrag war hat etwas verpasst! Danke Simon, das hat wirklich Spaß gemacht!

Hintergrundinformationen:

baeren

Allgemeine Stimmung

Das Java Forum Stuttgart bietet auch stets Gelegenheit sich mit alten Freunden und Bekannten zu treffen. Dieses Jahr war die aktuelle wirtschaftliche Situation und die Auswirkungen auf das Projektgeschäft natürlich ein heißes Thema.

Viele Bekannte berichten davon, dass aktuell eine große Anspannung herrscht. Die meisten haben noch Aufträge. Einige mussten aber auch schon erleben, wie in kürzester Zeit (innerhalb weniger Stunden) Projekte beendet und Projektteams aufgelöst wurden. Dadurch, dass jetzt zunehmend Kapazität verfügbar wird auf dem Markt steigt natürlich der Druck auf die Stundensätze. Andererseits sind viele laufenden Projekte weiterhin gut aufgestellt und für die beteiligten Freiberufler ertragreich. Die Frage ist hier: Wie lange wird dies noch andauern und was passiert, wenn noch weitere Projekte eingestellt werden. Ein verlustreicher Preiskampf kündigt sich an.
Interessant hierbei ist auch, dass Freiberufler sich starken Druck durch Betriebsräte ausgesetzt sehen. Firmen setzen Freiberufler frei, obwohl sie eigentlich auf deren Expertise angewiesen sind. Hier bin ich gespannt, was passiert wenn sich der Markt wieder dreht.

Weitere interessante Vorträge

Weitere interessante Vorträge waren für mich:

Kampf dem Fehlerteufel

Der Vortrag (Folien) von Jürgen Nicolai beschäftigte sich mit der statischen Codeanalyse zur Sicherung der Softwarequalität. Vorgestellt und verglichen wurden die freien Werkzeuge Checkstyle, FindBugs und PMD. Um zu veranschaulichen, dass es immer noch nicht Standard ist, diese Werkzeuge zu nutzen, wurden Beispiele aus prominenten Produkten/Projekten (JDK, Tomcat, JBoss) vorgestellt. Lehrreich!

Konzepte und Werkzeuge für die Vorprojektphasen – Feedback Lösungslabor

Thomas Avieny, Marco Klemm und Michael Jerger stellten in ihrem Vortrag (Folien) ihren interessanten Ansatz vor, sehr schnell zu einem lauffähigen Programm mit dem fachlichen Kern zu kommen. Ein “schwammiges Pflichtenheft” soll vermieden werden.

Zunächst wurden die Vorprojektphasen kategorisiert als Phasen die voll Unsicherheiten und Hindernisse sind und im Allgemeinen einfach zu lange dauern. Die These von Thomas, Marco und Michael ist, dass konkretes, schnelles und offenes Feedback das Ergebnis deutlich verbessert.

Die rhetorische Frage, ob konkretes oder abstraktes Feedback gewünscht wurde damit beantwortet, dass abstrakten Feedback reduziert werden sollte. Konkret wurde vorgeschlagen statt hunderte Seiten Spezifikation lediglich ein kurzes Überblicksdokument zu erstellen. Details sollen nicht im Dokument stehen, sondern so schnell wie möglich als umgesetzte Anforderung für eine Bewertung durch den Kunden bereitgestellt werden. Durch die Umsetzung können Annahmen viel besser validiert werden und Risiken werden früher erkannt. Wichtig hierbei ist, dass das Feedback zur Verfügung stehen muss, wenn die Entscheidung ansteht.

Um dies zu ermöglichen sind verschiedene Punkte zu beachten:
Anforderungen sollten in einer Form spezifiziert werden, die eine automatische Auswertung erlaubt. Dies spricht für den Einsatz von Fitness zur Spezifikation von Anforderungen.

Eine schnelle und flexible Umsetzung wird durch gute Vorbereitung (Infrastruktur, Schablonen/Patterns etc) und eine Standard-Visualisierung sowie die Konzentration auf das Wesentliche erreicht. So ist es laut den Vortragenden nicht unüblich, dass es 1-2 Iterationen pro Woche gibt, in denen das Domändenmodell überarbeitet wird.

Um zu guten Ergenisse zu kommen ist eine offene Diskussion wichtig. Für die schnelle Umsetzung muss das Lösungslabor vor Konfliktpotential geschützt werden:

  • Es werden ausreichende Mittel bereitgestellt: “Chef, ich habe eine Idee” -> Mittel, Leute, Zeit
  • Die Projektgruppe muss geschützt werden, Experimente müssen erlaubt sein. Unnötig Vorgaben müssen vermieden.

Zusammenfassung

Vortragsfolien sind mittlerweile online, Bilder gibt es ebenfalls die ersten. Leider schaffen es die Bilder vom Entwicklertag einfach nicht online zu gehen. Schade, schade!

Was lief gut …

Wie immer eine interessante Veranstaltung mit vielen unterschiedlichen Vorträgen und Themen. Grundsätzlich auch ein wichtiges Event für das Networking. Freies Essen und Trinken sind auch spitze, die Location ist ebenfalls ok – wenn auch nicht so “kuschelig” wie früher im SI-Center.

Was mich gefreut hat: Sehr gute UMTS Verfügbarkeit.

Was könnte verbessert werden

Das JFS könnte einen Touch mehr “Web 2.0″ kompatibel werden ;-) Es fehlt beispielsweise immer noch ein offizielles Twitter-Tag und eine Twitter-Wall an prominenter Stelle. Wer einmal eine funktionierende (= sinnvoll befüllte) Twitter-Wall auf einer Veranstaltung erlebt hat, möchte dies nicht mehr missen: Rapid Feedback!

Schön wäre es auch, wenn es ein Wiki gäbe, in dem man die BOF-Sessions abstimmen könnte.

Wie sieht es eigentlich mit Video-Aufzeichnungen aus?

Entwicklung und Betrieb – Zusammenarbeit bei Flickr

Wer kennt die meist problematische Beziehung zwischen Entwicklung und Betrieb nicht?

Die Entwicklung entwickelt, der Betrieb betreibt. Dabei geht einiges schief und schnell ist die Stimmung im Keller und es kommt zu gegenseitige Anschuldigungen:

  • “Die Entwicklung liefert immer nur Mist!” sagt der genervte Admin, der durch einen Alarm letzte Nacht aus dem Bett geworfen wurde. “Die sind einfach zu fault & doof richtig zu testen!”.
  • “Ich kann ja gar nicht richtig testen, es fallen immer wieder drei beliebige Bits im Loadbalancer um. Natürlich nur in Produktion! Und die Logfiles bekomme ich auch nur nach ewigen Diskussionen. Wie soll ich da testen?” erwiedert der empörte Entwickler.
  • “Das kann doch nicht sein! Ich dreh langsam durch – muss das immer in meinen Projekten passieren?” jammert der Projektleiter (= ich).

Das sich diese traurige Szene nicht immer wiederholen muss zeigt das Beispiel Flickr: Mit oft mehr als 10 Neuinstallationen auf den Serverfarmen im laufenden Betrieb scheint Flickr einen Modus Operandi gefunden zu haben, in dem produktiv gearbeitet werden kann.

Credo:
Ops who think like devs. Devs who think like ops. Mit dem Hinweis, dass es nicht der Job des Betriebs ist, die Applikationen stabil und sicher zu betreiben – sondern den Geschäftsbetrieb zu ermöglichen bzw. das Geschäft zu ermöglichen. Ist übrigens auch Aufgabe der Entwicklung!

Mehr dazu in einer schönen Präsentation:

Zu den vorgestellten Ansätzen/Werkzeugen gehören:

  • Automatisierte Infrastruktur
  • Versionskontrolle (shared)
  • Einstufiger Build-Prozess
  • Einstufiger Build- und Deploy-Prozess
  • Feature Flags – es gibt nur den Trunk!
  • Gemeinsame Metriken
  • IRC und IM Robots (“Dev, Ops & robots having a conversation”)

Hervorgehoben wird jedoch die Rolle der Kultur, der Umgangsformen:

  • Respekt
  • Vertrauen
  • Gesunde Einstellung hinsichtlich Fehlschlägen (Fehler passieren)
  • Keine Schuldzuweisungen

Viel Spass beim anschauen!

Java Forum Stuttgart 2009 – Morgen geht es los!

Morgen findet DAS Event für die Java-Community in unserer Region statt: Das 12. Java Forum Stuttgart – kurz JFS2009. Mittlerweile hat sich die durch die Java User Group Stuttgart (JUGS) organisierte Konferenz weltweit einen Ruf als praxisorientiert und spannende Veranstaltung erarbeitet.

Ich bin gespannt, schließlich hat es sich in der Vergangenheit immer gelohnt zum JFS nach Stuttgart zu fahren. Dieses Jahr sind zwar nicht so viele für mich passende Vorträge dabei, aber alleine die Möglichkeit alte Bekannte zu treffen und sich schnell über viele unterschiedliche Themen im Java-Umfeld informieren zu können macht das JFS für mich immer interessant.

Es freut mich vor allem, dass mein ehemaliger Kollege Thomas Avieny mit zwei Partnern (Michael Jerger und Marco Klemm) einen interessanten Vortrag anbietet:  Konzepte und Werkzeuge für Vorprojektphasen – Feedback-Lösungslabor. Ich bin gespannt!

KADEV09: Entwicklertag: Juristisch Aktuelles vom Software Engineering – Projektmanagement-Recht

Von offenen Quellen und Wasserfällen – juristisch Aktuelles vom Software Engineering

RA Prof. Dr. Rupert Vogel

PDF Dokument
Ein sehr interessanter und unterhaltsamer Vortrag über rechtliche Aspekte des Urheberrechts und des IT-Projektmanagement wurde von RA Prof. Dr. Rupert Vogel gehalten. Nicht alles habe ich im Detail verstanden, aber dies ist schließlich auch die Aufgabe eines Juristen ;-)

Teil2: Projektmanagement-Recht

Leistungsbeschreibung

Eine wichtige Fragestellung in der Praxis ist: Wer muss definieren, was die Software tun muss? Grundsätzlich muss dies der Kunde/Auftraggeber tun, es besteht jedoch Beratungspflicht des Auftragnehmers. Hier bei ist das Wissensgefälle zwischen Kunde und Softwarehaus maßgeblich.

Hinsichtlich Qualität der zu erbringenden Leistung gilt, dass (falls nichts anderes vereinbart wurde), eine ist mittlere Art & Qualität (Stand der Technik) zu erbringen ist. Es gibt drei grundlegende Qualitätsstufen:

  • gering: Regeln der Technik
  • mittel: Stand der Technik
  • sehr hoch: Stand von Wissenschaft und Technik

TIPP: Verfahrenstandards konkretisiert undVertragsbedingungen prüfen hinsichtlich geforderter Qualitätsstandards

Beweis und Dokumentation

Es wurde hervorgehoben, dass die Dokumentation eine der Hauptpflichten des Softwareherstellers ist. Ein Softwarehaus hat bis zur Abnahme die Beweislast, dass die gelieferte Software dem vereinbarten Qualitätsstandard entspricht. Falls es zu Verzögerungen kommt, sollte man vor Behinderungsanzeigen nicht zurückschrecken: Hier gilt es eine Aktenlage zu schaffen! Gerade bei kritischen Projekten ist es wichtig, eine Claim-Liste zu führen. Bei Verhandlungen im späteren Projektverlauf kann der Projektleiter dann “seinen Stapel” mitbringen. Viele große Auftragnehmer haben eigene Claim-Manager, deren Hauptaufgabe es ist etwaige Mängel zu finden. Damit soll der Preis gedrückt werden.

TIPP: Stärkerer Position durch Protokollierung von Besprechungen, Redaktion von Verträgen, durchgängige Dokumentation der Softwareerstellung und des Projektverlaufs. Etwaige Beweismittel im Prozess (z.B. Mails) frühzeitig und konsequent sammeln.

Abnahme

Eine Abnahme erfolgt nur bei einer Individualentwicklung, markiert rechtlich den Beginn der Gewährleistung und führt zur Zahlungspflicht des Kunden.Laut BGH liegt eine stillschweigende Abnahme nach 6 Monate produktiver Nutzung vor, jedoch nur wenn keine Mängelrügen erhoben wurden.

TIPP: Teilabnahmen anstreben, die Testmodalitäten frühzeitig klären (Vorschlag: Teil Angebot) und hierbeidie Fehlerklassen definieren.

Gewährleistung und Haftung

Ein Softwarehaus muss im Rahmen der Gewährleistung etwaige Mängel in seiner Sotfwarebeseitigen. Ohne individuelle Regelung gilt eine Gewährleistungsfrist von zwei Jahren nach Abnahme. Ein Softwarehaus muss für Schäden haften, ohne individuelle Regelung ist die Haftung unbeschränkt. Produkthaftung und Haftung für Körperschäden können nicht ausgeschlossen werden.

TIPP: Ein Hersteller/Dienstleister sollte die Frist verkürzen auf ein Jahr (per AGB) bzw. wenn möglich noch kürzer im Rahmen individueller Absprachen regeln. Es ist sinnvoll individuelle Haftungsbeschränkung/Ausschluss  im Rahmen eines Individualvertrags festzulegen. Haftungsbegrenzung in AGBs sind kaum wirksam, deshalb muss dies in individuellen Verträgen geschehen.

SW-Hinterlegung

Idee: Die Hinterlegung von Software soll im Falle der Insolvenz des Auftragnehmers den Schaden für den Auftraggeber begrenzen.Das Probleme für Kunden in der Praxis ist meist, dass sie die Vollständigkeit der Sourcen/Artefake nicht einschätzen können. Zudem ist die Insolvenzfestigkeit nicht geklärt. Probleme für SWH ergeben sich aus der Regelung des Herausgabegrundes und -verfahren.

TIPP: Genaue Regelungen, indivduelle Vertragsgestaltung

Fazit

Insgesamt ein sehr spannendender und lehrreicher Vortrag. Viele der angesprochenen Aspekte werden im Projektalltag häufig nicht ausreichend bedacht.

Wer mit agilen Methoden und den damit verbundenen Wertvorstellungen arbeitet, muss jedoch an der einen oder anderen Stelle schlucken. “So” möchte man nicht arbeiten, wird sich der eine oder andere wohl gedacht haben….

KADEV09: Entwicklertag: Juristisch Aktuelles vom Software Engineering – Urheberrecht

Von offenen Quellen und Wasserfällen – juristisch Aktuelles vom Software Engineering

RA Prof. Dr. Rupert Vogel

PDF Dokument
Ein sehr interessanter und unterhaltsamer Vortrag über rechtliche Aspekte des Urheberrechts und des IT-Projektmanagement wurde von RA Prof. Dr. Rupert Vogel gehalten. Nicht alles habe ich im Detail verstanden, aber dies ist schließlich auch die Aufgabe eines Juristen ;-)

Teil 1: Urheberrecht

Zum Urheberrecht wurden verschiedene Aspekte erläutert:

Zweckübertragungsgrundsatz

Im Zweifelsfall bleiben Nutzungsrechte beim Urheber, er hat viele Rechte. Entweder sind alle Nutzungsrechte (Arten) ganz genau aufgeführt oder es kommt auf den Zweck der Übertragung an. Nur das, was genau im Vertrag als Zweck genannt wird, gilt. Der Einkäufer muss sich sehr genau überlegen, welche Nutzungsarten er erwerben möchte und muss dies vertraglich fixieren.

TIPP: Nutzungsrechte möglichst genau regeln

Nutzungsrecht

Eine Lizenz ist ein Nutzungsrecht, es muss unterschieden werden zwischen einfachem und ausschließlichem Nutzungsrecht

  • Ausschließliches Nutzungsrecht: Nur Lizenznehmer (LN) darf Software (SW) nutzen
  • Einfaches Nutzungsrecht: Lizenzgeber (LG) darf Nutzung weiteren LN einräumen

Im Grundsatz wird immer ein einfaches Nutzungsrecht erworben, der LG darf beispielsweise Anpassungen (finanziert durch ersten LN) an einen zweiten LN veräußern.

TIPP: Vorsicht bei Einräumung ausschließlicher Lizenzen

Erschöpfungsgrundsatz

Konkrete SW-Kopie darf 1:1 weitergegeben werden, das Verbreitungsrecht erlischt jedoch sobald Original/Kopie veräußert wurde. Dieser Grundsatz gilt im Gebiet der EU / europäischer Wirtschaftsraum; nicht jedoch international.In der aktuelle Diskussion um Gebrauchtsoftware wird darüber debattiert, ob eine Online-Übertragung einer Übertragung mit Datenträger entspricht? Eine Fragestellung aus der Praxis ist beispielsweise, ob Kontingente zum Teil weiter verkauft werden dürfen.

TIPP: Software auf Datenträger bestellen

Verwertungsrechte bei festen und freigen Mitarbeitern

In der EU gilt, dass der Mitarbeiter (MA) Urheber bleibt, dies ist in den USA anders.Ein fest angestellter MA überträgt jedoch Rechte an SW automatisch an Arbeitgeber (AG). Für Freiberufler gilt: Es gibt keinen automatischen Rechtsübergang! Übertragung der Nutzungsrechte muss genau geregelt werden, was oft nicht geschieht. Freie Mitarbeiter haben deshalb in der Praxis sehr häufig Ansprüche, nutzen diese jedoch sehr selten. Verjährungsfrist für Ablauf dieser Ansprüche beträgt 30 Jahre, es gibt keinen gutgläubigen Erwerb bei Nutzungsrechte

Beispiel: Freier Mitarbeiter entwickelt Schnittstelle für Projekt P1. Schnittstelle fließt in Produkt ein, Produkt wird Marktführer. Freier hat nun Recht von allen Lizenznehmern nachträglich Lizenzgebühren für seine Schnittstelle zu fordern!

Dies kann potentiell eine sehr große Einnahmequelle für Freie sein!

TIPP:

  • Nutzungsrechte sehr genau regeln beim Einsatz von freien Mitarbeitern
  • Als freier Mitarbeiter sollte man seine Ansprüche prüfen (lassen)

Open Source Software (OSS)

Die Open Source Lizenzen haben unterschiedliche Effekte. Ein Ausschluss von Haftung und Gewährleistung ist jedoch immer unwirksam.

TIPP: Überprüfung, welche OSS eingesetzt werden und welche Lizenzen damit verbunden sind. Die Lizenzen dann hinsichtlich etwaiger juristischer Probleme bewerten (lassen).

Nach dem Überblick über einige Themen aus dem Urheberrecht wurden noch auf Aspekte aus dem Projektmanagement eingegangen. Leider war die Zeit bereits weit fortgeschritten und deshalb wurden viele interessanten Punkte nur sehr flüchtig besprochen.

Im zweiten Teil der Zusammenfassung geht es um Recht beim Projektmanagement …

XMind – Sehr gute Mind-Mapping Software

Durch einen Artikel von Stefan Hagen bin ich auf XMind aufmerksam geworden.

Mind-Map aus XMind
Mind-Map aus XMind

Nach der Registrierung bei XMind, dem Download und der problemlosen Installation war ich überrascht: So hatte ich das nicht erwartet! XMind bietet deutlich bessere Usability und bessere Funktionen als die mir bisher bekannten freien Mind-Mapping Programme.
Tipp: Zuvor mit FreeMind ertellte Maps können sehr einfach importiert werden.

Fazit: XMind ist wohl die beste kostenlose Mind-Mapping Software die es aktuell gibt! Unbedingt ausprobieren!