Mastering Software Architecture

Seit einiger Zeit setze ich mich recht intensiv mit dem Thema Software Architektur auseinander. So entstand mein Bedürfnis, mir diesen Themenbereich einmal von erfahrenen Architekten näher bringen zu lassen. Da ich Gernot Starke bereits durch seine Bücher (z.B. „Effektive Softwarearchitekturen“) kenne, war es für mich naheliegend das Seminar „Mastering Software Architecture“ zu besuchen, welches er gemeinsam mit Peter Hruschka („Business Analysis und Requirements Engineering: Produkte und Prozesse nachhaltig verbessern“) anbietet.

Ein schöner Nebeneffekt dabei war, dass das Seminar unter anderem auch die Lernziele des Lehrplans für die Prüfung zum „Certified Professional for Software Architecture – Foundation Level“ (CPSA-F) der iSAQB transportierte, so dass ich mich während des Seminars mehr oder weniger spontan dazu entschlossen habe auch diese Zertifizierung zu machen.

Weiterlesen „Mastering Software Architecture“

Produktivität durch Pair Programming

Noch immer hält sich selbst in Entwickler-Kreisen das Vorurteil, Pair Programming würde die Entwicklungsgeschwindigkeit reduzieren.

Klar, wenn zwei Entwickler an einem Rechner sitzen kann immer nur einer Tippen. Doch ist Programmieren wirklich nur das Abtippen von Code? Und wenn dem so ist, warum schafft es auch der beste Programmierer nicht am Tag mehr Zeilen zu schreiben, als eine durchschnittliche Rechtsanwaltsgehilfin in einer Stunde?

Ich habe selbst schon Pair-Programming-Sessions erlebt, bei denen zwei Entwickler vor dem Rechner reine Verschwendung waren. Dabei kann man mit einem motivierten und disziplinierten Paar sowie einer Hand voll best practices, die Velocity mit Hilfe von Pair Programming durchaus verdreifachen.
Weiterlesen „Produktivität durch Pair Programming“

Bucket Estimation

Nachdem ich bereits über absolutes Schätzen in Personentagen und relatives Schätzen mit Hilfe von Story Points geschrieben habe, möchte ich im Folgenden ein sehr einfaches und schnelles Verfahren vorstellen, mit dem man sehr unkompliziert ein umfangreiches Backlog abschätzen kann. Beim Bucket Estimation schätzt man Anforderungen, indem man sie dem Aufwand nach sortiert, sie anschließend gruppiert und dann allen Product Backlog Items in einer Gruppe (Bucket)  die gleiche Anzahl an Story Points zuweist.

Zum Schätzen eines Backlogs mit 50 bis 75 Backlog Items benötigt man mit dieser Methode in der Regel 1,5 bis 2 Stunden.

Weiterlesen „Bucket Estimation“

Relatives Schätzen mit Story Points

Ein Trick, um die Probleme des absoluten Schätzens auszugleichen, ist das Schätzen mit Hilfe von Story Points.

Diese Schätzung drückt im Gegensatz zum absoluten Schätze in Personentagen aus, wie hoch der Aufwand zweier Anforderungen im Bezug zueinander sind und kann darum auch als relative Schätzung bezeichnet werden. Ist eine Anforderung doppelt so anspruchsvoll wie eine andere, so hat sie auch doppelt so viele Story Points.

Weiterlesen „Relatives Schätzen mit Story Points“

Absolute Schätzungen in Personentagen

Absolutes Schätzen in Personendaten PT ist immer die schlechteste aller Möglichkeiten. Hierbei müssen ein oder mehrere Entwickler abschätzen wie viele Tage die Entwicklung einer Software in Anspruch nimmt. Es gilt PT = (Dauer der Entwicklung in Tagen) x (Am Projekt beteiligte Personen).

Eine solche Abschätzung ist meist vor Beginn des Projektes notwendig, um auf dieser Basis eine Entscheidung treffen zu können, ob das Projekt umgesetzt werden kann oder nicht.

Weiterlesen „Absolute Schätzungen in Personentagen“

Aufwandsabschätzung in der Softwareentwicklung

Aufwandsabschätzungen gehören zu den unangenehmsten Aufgaben eines Softwareentwicklers. So unangenehm dieser Task ist, so wichtig ist er jedoch auch. Sei es um im Vorfeld die Kosten für eine neue Software zu kennen, um eine zeitliche Release-Planung machen zu können oder um Behinderungen im Entwicklungsprozess zu erkennen.

Weiterlesen „Aufwandsabschätzung in der Softwareentwicklung“

Vom Geld und von Fließkommazahlen

Vor kurzem hatte ich mal wieder eine Diskussion über Rundungsfehlern bei Fließkommazahlen (double, float etc.). Klar, ein bekanntes Problem, von dem man zumindest in der Uni schon einmal gehört haben sollte. Aber wie schrieb schon Tom DeMarco in „Warum ist Software so teuer?“

Haben Sie jemals einen dummen Fehler begangen? – Wilkommen in der realen Welt.

Haben Sie diesen Fehler hundertmal hintereinderander gemacht? – Willkommen in der Software-Entwicklung.

Weiterlesen „Vom Geld und von Fließkommazahlen“

Das StandUp-Meeting

Das StandUp-Meeting oder, wie es im Scrum heißt, das Daily Scrum, ist meiner Meinung nach das wichtigste Meeting im agilen Umfeld. In unserem Unternehmen wurde dieses 15 minütigen Meetings von den Entwicklern bereits eingeführt, lange bevor die Begriffe Agile und Scrum im Management angekommen sind.

Auch in anderen Unternehmen wurden StandUps anfangs von den Entwickler-Teams als große Bereicherung im Software-Prozess angesehen, jedoch empfinden viele sie mitlerweile als überflüssiges und nerviges Übel, das den Programmierer nur aus dem Arbeitsfluss reißt und wenig Mehrwert bietet.

Weiterlesen „Das StandUp-Meeting“

German OWASP Day 2016

Das Open Web Application Security Project kurz OWASP sollte Software Entwicklern vor allem durch Veröffentlichungen wie der OWASP TOP 10, welche die 10 häufigsten Sicherhitsrisiken für Webanwendungen beschreibt, bekannt sein. Da mit dem German OWASP DAY 2016 in Darmstadt nun die deutsche Security Konferenz dieser gemeinnützigen Organisation in der direkten Nachbarschaft stattfand, ließ ich es mir nicht nehmen, gemeinsam mit einigen meiner Kollegen, an dieser Veranstaltung teilzunehmen.

Weiterlesen „German OWASP Day 2016“

Der Flow-Zustand

Achtung Spoiler: Der folgende Beitrag verrät Inhalte der Serie „The Walking Dead“ (Staffel 2 Folge 1) und des Buches „The Clean Coder“ von Robert C. Martin.

Jeder kennt das Gefühl: Man schaut sich eine Serie wie The Walking Dead an. Aus den TV-Lautsprechern zwitschern die Vögel. Das strahlende Grün des Waldes durchflutet das Wohnzimmer. Beim Zuschauer stellen sich Ruhe und Behaglichkeit ein. Die Kamera fährt langsam auf einen Hirsch zu. Er steht da wie der König des Waldes. Stark und majestätisch schaut er in die Kamera. Er wackelt leicht und freundlich mit den Ohren, während ein kleines Kind auf ihn zu geht. Dann, als das Kind fast nah genug ist, um das Tier mit seiner Hand zu streicheln, zerreißt ein ohrenbetäubender Schuss die Stille. Das Projektil eines Gewehres durchdringt  zunächst den stolzen Körper des Tieres, bevor des den Bauch des Jungen zerfetzt. Der Zuschauer sitzt kerzengerade auf seinem Polstermöbel und schaut fassungslos und schockiert auf den Abspann.

Genau so fühle ich mich während der Lektüre des Buches The Clean Coder von Robert C. Martin.

Weiterlesen „Der Flow-Zustand“