Montag, 27. August 2012

Was macht gute Modultests aus?

Coverage
Hohe Code-Coverage - gute Qualität?
CC-BY-SA Sebastian Dietrich
Gute Modultests (engl. Unit-Tests) können einen Großteil der Fehler finden, die sich während der Entwicklung eingeschlichen haben. Üblicherweise geht man davon aus, dass mit Modultests 80 - 90% aller Fehler gefunden werden können. Dies ist jedoch nur dann möglich, wenn diese Modultests (wie Regressiontests) laufend ausgeführt werden und eine ausgezeichnete Qualität aufweisen.

Mittwoch, 16. Mai 2012

Limbo mit Softwarequalität

Limbo mit Softwarequalität?
Was tun, wenn die technische Qualität einer Software zu wünschen übrig lässt, aber kein Budget vorhanden ist, die Qualität zu verbessern? Unternimmt man nichts, so wird die Qualität weiter sinken - bis die Kosten für Wartung und Weiterentwicklung so hoch sind, dass die Software aufgegeben werden muss. Oft ist aber kein Budget vorhanden um die Qualität zu verbessern - diese Projekte ähneln Hungerkatastrophen - sie leben von der Hand in den Mund wohlwissend, dass sie bald verhungern werden, wenn nicht ein Wunder passiert. In dieser Situation hilft nur eines: Limbo mit Softwarequalität.

Samstag, 28. April 2012

Schuldentilgung

Technische Schulden à Pleitegeier?
CC-BY Adrian Korte
Nimmt man in einem Softwareprojekt Technische Schuld auf sich, so könnte man versucht sein diese ähnlich zu betrachten, wie private finanzielle Schulden. Doch im Gegensatz zu privaten Schulden gibt es keine Konten auf denen die Technische Schuld beziffert wird, keine halbwegs fixen Zinssätze, die bei Aufrechthaltung der Schulden zu zahlen sind, keine Umschuldungen oder Schuldentilgungspläne. Im Gegenteil: Das Ausmaß der Technischen Schuld ist meist unbekannt, gleichzeitig zahlt man dafür Wucherzinsen.


Freitag, 6. April 2012

Schuldhafte Softwareentwicklung

Viele kleine technische Schulden
CC Public domain images
Software zu schreiben ist wie Schulden aufnehmen. Geringe Schulden aufzunehmen beschleunigt die Softwareentwicklung, solange die Schulden rasch durch eine Neuimplementierung getilgt werden... Problematisch wird es, wenn die Schulden nicht zurückgezahlt werden. Jede Minute, die man mit nicht so gutem Code verbringt, zahlt man Zinsen für diese Schulden. Ganze Entwicklungsabteilungen können durch die Schulden unbereinigter Implementierung (egal ob objektorientiert oder nicht) zum Stillstand gezwungen werden.“
- Ward Cunningham zu Technischer Schuld, OOPSLA 1992

Dienstag, 20. März 2012

Wozu Java Zertifizierungen?

Oracle Certified Professional
CC-BY-SA Sebastian Dietrich
Die besten Java Entwickler sind meist nicht zertifiziert. Das ist eine Tatsache, die unter Java Experten bekannt ist (umgekehrt gilt natürlich nicht, dass zertifizierte Java Entwickler schlechte Entwickler sind.). Dass so wenige Java Experten zertifiziert sind liegt vor allem daran, dass die Zertifizierungen erst aufkamen, als die meisten Java Entwickler schon viel praktische Erfahrung mit Java vorweisen konnten, und somit eine Zertifizierung für sie keinen Mehrwert darstellte.

Warum also sollten Java Entwickler eine Zertifizierung anstreben oder Manager ihren Mitarbeitern eine solche ans Herz legen? Dafür gibt es eine Reihe von Gründen - ob diese den Aufwand der Zertifizierung rechtfertigen, muss jeder selbst entscheiden:

Dienstag, 28. Februar 2012

Qualität von Softwareprojekten und Spaghetti

CC-BY-NC-SA Jenn Forman Orth
Softwareprojekte sind auch nicht anders als andere Projekte: Vor der (z.B. iterativen) Umsetzung der Anforderungen werden diese analysiert und z.B. in Form von Storycards oder Pflichtenheften oder Testfällen fixiert. Leider reicht das in der Praxis nicht, um damit die fachliche- und technische- (Wartbarkeit) Qualität zu definieren.

Wer im Rahmen von Softwareprojekten gute Qualität geliefert bekommen möchte, muss dasselbe beachten wie beim Kauf von Spaghetti (und allem anderen was käuflich ist):

Freitag, 10. Februar 2012

Quality Gates bei Java Entwicklung

Quality Gates in der Softwareentwicklung
CC-BY-SA Wikipedia
Die einzige Maßnahme, die die Qualität einer Software sicherstellen kann ist die Einführung von Quality Gates. Alle anderen "Qualitätssicherungsmaßnahmen" wie Pair Programming, Tests, Metriken etc. können die Qualität aufzeigen oder auch verbessern, aber niemals sicherstellen.
"Quality Gates sind Punkte im Ablauf eines Entwicklungsprojekts, bei denen anhand von im Voraus eindeutig bestimmten Qualitätskriterien über die Freigabe des nächsten Projektschrittes entschieden wird." - Jochen Peter Sondermann: Interne Qualitätsanforderungen und Anforderungsbewertung in Handbuch Qualitätsmanagement
"Freigabe des nächsten Projektschrittes" - das ist in der Softwareentwicklung die entscheidende Herausforderung.

Mittwoch, 1. Februar 2012

Warum ist Softwareentwicklung so teuer?

aus Tom DeMarco:
"Controlling Software Projects"
CC-BY-SA Sebastian Dietrich
Softwareentwicklung ist meist weit teurer als anfänglich vermutet. Die Softwareentstehungskosten (Analyse, Design, Entwicklung, Test) machen nämlich in den meisten Fällen nur einen kleinen Teil der Gesamtkosten von Software aus. Betrachtet man die Kosten über den gesamten Lebenszyklus einer Software, so machen die Wartungskosten im Schnitt rund 2/3tel der Gesamtkosten von Softwareprojekten aus.

Funktionierende Software != Geringe Wartungskosten.


Mittwoch, 25. Januar 2012

Java ist die Zukunft! Ist Java die Zukunft?

Java ist inzwischen mehr als 15 Jahre alt - ein nicht gerade jugendliches Alter für eine Programmiersprache. Inzwischen wird Java an jeder Informatik-HTL, -FH und -Hochschule gelehrt, was für einige ein deutliches Zeichen dafür ist, dass Java total veraltet sein muss.

Es gab und gibt Entwickler, Abteilungsleiter, Vertriebsmitarbeiter, etc., welche aus den einen oder anderen Gründen Java bereits den Tod nachsagten oder aktuell nachsagen - passend zum Kometenlied: "Java gibts auf kein’ Fall mehr lang."

Doch wie sieht die Realität aus?
Zahlt es sich aus in Java zu investieren, neue Projekte mit der alten Programmiersprache anzufangen, Zertifizierungen zu machen, Java Frameworks zu lernen, ....? Dazu gibt es neben den ohnedies bekannten SUN/Oracle Verlautbarungen (9 Mio. Java Entwickler, 3 Mrd. Geräte auf denen Java läuft) zwei mir bekannte Indices:
Joinvision 01/2007 - 01/2012
Tiobe Index 06/2001 - 01/2012
  • Joinvision: Ein Jobportal für Freelancer und IT Fachkräfte für den deutschsprachigen Raum. Vergleicht die Häufigkeit bestimmter Schlüsselwörter in ihren Jobangeboten. Aktuell über 20.000 Jobangebote.
  • Tiobe Programming Community Index: Vergleicht Programmiersprachen anhand ihrer Hits bei den wichtigsten 9 Webseiten mit Suchfunktion (Google, Blogger, Wikipedia, YouTube, Baidu, Yahoo, Bing, Amazon). Siehe Tiobe Index Definition.
Betrachtet man die Statistiken kommt man zu folgenden Erkenntnissen:

Dienstag, 17. Januar 2012

Java Konferenzen 2012

Auch heuer gibt es zum Thema Java wieder eine Menge Konferenzen. Wie jedes Jahr finden die meisten Konferenzen im Frühjahr (Februar - Juni) und im Herbst (Oktober - November) statt.

Folgende Termine und Preise konnte ich bisher ausfindig machen (Vermutungen in Grau):
CC-BY-NC-SA Gianfranco Chicco
  • Februar: Jfokus (13.-15.2. Stockholm, SEK 6.995 (~ € 790) für drei Tage), Spring I/O (16.-17.2. Madrid) 
  • März: TheServerSide Java Symposium (Las Vegas), EGJUG (9.-10.3. Kairo), EclipseCon (26.-29.3. Reston)
  • April:  JAX (17.-19.4. Mainz € 1.429 für die dreitägige Konferenz), JavaOne (4.-5.4. Tokyo, 10.500 ~ € 106; 17.-18.4. Moskau), Devoxx (18.-20.4. Paris, € 350 für die zweitägige Konferenz)
  • Mai: JavaOne (3.-4.5. Hyderabad, 4.500 Rupien ~ € 65 für die zweitägige Konferenz), Confess (7.-9.5. Leogang, € 300 für die dreitägige Konferenz), GeeCon (16.-18.5. Poznań, € 150 für die zweitägige Konferenz)
web analytics