Fort- und Weiterbildung  /  27. September 2022  -  30. September 2022, 1.-4. Tag: 09.00-12.30 Uhr

Online-Seminar »Software-Anforderungsanalyse mit Slicing«

Clean-Code-Reihe

Langfristig hohe Produktivität gibt es nur, wenn die Entwicklung Umwege vermeidet. Der Weg zum Ziel hochwertiger Software aus Kundensicht sollte möglichst geradlinig sein. Angesichts notorisch großer Unklarheit und Wankelmütigkeit des Kunden, ist das jedoch alles andere als einfach. Softwareentwicklung ist vielmehr ein komplexes Geschäft, bei dem sich Erfolg nur in Folge eines kleinschrittigen, experimentellen Vorgehens einstellt. 

Wie aber sollten diese kleinen Schritte aussehen, so dass sie einerseits werthaltig für den Kunden und andererseits präzise formuliert für hochqualitative Produktion sind? Die herkömmlichen User Stories und Use Cases lassen hier leider zu viel Spielraum. Sie mögen für eine Kommunikation mit dem Kunden taugen - als Grundlage für die Programmierung taugen sie jedoch wenig. Der Input für die eigentliche Arbeit von Entwicklern hat deshalb oft schlechte Qualität und führt somit auch zu schlechter Qualität beim Output. Die Folge: Verschwendung durch unnötige Feedbackschleifen und Codestrukturen, die von Anfang an unter Nachbesserungen leiden. 

Dem stellt die Anforderungsanalyse mit Slicing ein Zerlegungsschema für Anforderungen gegenüber, das anschlussfähig für Entwickler ist. Anforderungen werden damit für den nachgelagerten Entwurf so formuliert, dass es einen unzweideutigen Ausgangspunkt gibt und eine automatisierte Überprüfung der Umsetzungsreife von vornherein mitgedacht wird. 

Agile, d.h. inkrementelle Softwareentwicklung spiegelt sich auf diese Weise auch in der Softwarestruktur wider. Strukturen in den Anforderungen sollten bei der Umsetzung nicht verschwinden, sondern erkennbar und nachvollziehbar sein. Und eine solchermaßen entwicklerorientierte Vorgehensweise bei der Anforderungsanalyse hat natürlich Einfluss auf den gesamten Entwicklungsprozess: Verschwendungsarme Codeproduktion braucht eine Trennung von Wert- und Qualitätsproduktion.

Die allgemeine inkrementelle Entwicklungsschleife der Agilität ist auf Interaktion mit dem Kunden ausgelegt. Mit Slicing wird diese Schleife nun auch an die Programmierung angeschlossen, die »unter dem Radar der Agilität« eigene Ansprüche an ein inkrementelles Vorgehen hat, das hohe Qualität liefern soll.

Inhalt

  • Die Kernphasen einer systematischen Softwareentwicklung im Überblick: Analyse, Entwurf, Codierung
  • Die entwicklerorientierte Zerlegung funktionaler Anforderungen mit Slicing
  • Die Repräsentation grober nicht-funktionaler Anforderungen
  • Implikationen feingeschnittener funktionaler Anforderungen für die Architektur
  • Ein pull-basierter Entwicklungsprozess
  • Implikationen der Trennung von Wert- und Qualitätsproduktion

Lernziele

  • Anforderungen aus der »Kundensprache« in entwicklerrelevante Strukturen übersetzen können.
  • Testbarkeit und Wandlungsfähigkeit als unverbrüchliche Aspekte hoher Softwarequalität schon bei der Anforderungsanalyse berücksichtigen.
  • Anforderungstriage: Qualitätskriterien für umsetzungswürdige Anforderungen kennen - und im Zweifelsfall schlechte Anforderungen ablehnen.
  • Die Grenzen herkömmlicher agiler Vorgehensweise kennenlernen - und überschreiten.
  • Verstehen, warum eine Prognose von Aufwänden mit Schätzungen nicht qualitätsförderlich ist - inkl. Ausblick auf einen alternativen Ansatz.