Schulungen

Clean ABAP – Systematisch zukunftsfähige ABAP-Systeme entwickeln

Alignment Day: Sauberes ABAP für bessere Planbarkeit und geringere Kosten

Zukunftsfähigkeit ist de facto kein Wert für das Tagesgeschäft der Softwareentwicklung. Wie der Begriff Nachhaltigkeit klingt sie sinnig – aber leider ist dafür gerade keine Zeit. Und so wird täglich Geld verbrannt. Entscheidungen für kurzfristige Produktivität nehmen unerkannt Zeitkredite mit erheblichen Zinsen beim Code auf. Und die Rückzahlung lässt nicht lange auf sich warten – auch wenn das nicht immer realisiert wird. Das Ergebnis: Laufunruhe, Konflikte, Demotivation, Unzuverlässigkeit, Qualitätsmängel, steigende Kosten, Zögerlichkeit, Kundenunzufriedenheit.

Entwickler spüren diese Entwicklung unmittelbar. Doch anderen Stakeholdern sind die Zusammenhänge zwischen ihren Entscheidungen und ungewollten Ergebnissen oft nicht so klar. Das soll der Impulstag ändern. Er richtet sich an Manager, Projektleiter, sogar Kunden der Softwareentwicklung, um die Bedingungen für die Möglichkeit von größerer Laufruhe in langfristig hoher Produktivität zu erklären. Die Hypothese dahinter: Besseres Verständnis wird zu besseren Entscheidungen führen.

Nachhaltigkeit in der Softwareentwicklung ist kein esoterischer Gedanke, sondern eine Sache der Ökonomie. Es geht um die Steigerung der Fitness der Softwareentwicklung bzw. des Unternehmens.

Der Impulstag vermittelt handfeste Erklärungen, warum die Situation der Softwareentwicklung weithin so bedrückend ist, wie sie ist – und liefert konkrete Maßnahmenempfehlungen zur Verbesserung. Scheinbare “Modebegriffe” wie Agilität, Scrum/Kanban, Clean Code werden auf das Wesentliche reduziert und begründet. Am Ende steht ein gemeinsames Verständnis davon, was Softwareentwicklung braucht, um die Verlässlichkeit zu haben, die ihrer zentralen Position im Business gerecht wird.

Der Trainingsinhalt in Stichworten:

  • Die unerkannte Anforderung des Kunden: langfristig hohe Produktivität
  • Acht Gründe für die bisherige Vernachlässigung von Nachhaltigkeit in der Softwareentwicklung
  • Die fünf Säulen langfristig hoher Produktivität
  • Von technischer Schuld und Liefersucht
  • Den Engpass im Softwareentwicklungsprozess schützen und unterstützen
  • Testgetriebene Entwicklung als Fundament langfristig hoher Produktivität
  • Höhere Produktivität durch aktive Aufmerksamkeitsgestaltung für jeden Tag
  • Wertlieferung und Qualitätsproduktion entkoppeln zur Reduktion von Konflikten
  • Promise Like a Pro: Höhere Zuverlässigkeit durch einhaltbare Versprechen
  • Komplexitäts- und Wertschätzungen für nachvollziehbare Priorisierung
  • Steuerung der Qualitätsproduktion mit Priorität und Granularität von Anforderungen
  • Vorhersagen von Lieferterminen mit größerer Genauigkeit und weniger Stress durch jederzeitige Simulation
Dauer: 1 Tag, Teilnehmerzahl: max. 100, Zielgruppen: Manager, Projektleiter, Product Owner, Analyst, Entwickler, Architekt, Tester

Entwickler-orientierte Anforderungsanalyse für sauberes ABAP

Zukunftsfähige Software hat eine Voraussetzung: gute Anforderungen. Denn auch für Software gilt: garbage in, garbage out. Besonderes Augenmerk muss saubere Softwareentwicklung daher auf die Qualität ihres Inputs legen.

Doch was sind gute Anforderungen? Formulierungen, die einem Product Owner/Kunden als gut und ausreichend erscheinen, taugen nicht automatisch für eine zügige oder gar zukunftsfähige Umsetzung durch Entwickler.

Hochqualitative Entwicklungsarbeit setzt Anforderungen in einer Form voraus, die schon Hinweise auf die Softwarearchitektur liefert und einfache Überprüfung auf Reife und Stabilität der Umsetzung ermöglicht. Die Nachvollziehbarkeit des Entwicklungsfortschritts ist durch die Anforderungsanalyse genauso zu unterstützen wie die Verfolgbarkeit von einzelnen Features im Code.

Ein agiles Vorgehen, das Use Cases, Epics oder User Stories als Input für die Programmierung versteht, greift zu kurz. Programmierung braucht konkreteren Input, bevor sie mit Architekturplanung und Implementierung beginnen kann. Eine Übersetzung “in die Sprache der Programmierung” ist nötig.

Das Training sensibilisiert für die Notwendigkeit hochqualitativer Anforderungen und vermittelt Ansätze zu einer Analyse von Anforderungen aus Entwicklerperspektive. Das Ergebnis ist eine zügigere Entwicklung, eine langfristig produktivere und eine vorhersagbarere.

Der Trainingsinhalt in Stichworten:

  • Anforderungen zusammen mit Product Owner/Kunde analysieren
  • Inkrementelle Anforderungszerlegung mit Slicing
  • Nachrichtenorientierte Anforderungsexploration mit Event Storming
  • Architekturmuster im Vergleich: MVC, Schichten, Hexagonal, Clean, IODA
  • IODA Architekturentwurf ohne funktionale Abhängigkeiten
  • Akzeptanztests als Ziel der Anforderungsanalyse
  • Umgang mit unklaren Anforderungen
  • Kriterien für eine Triage von Kundenwünschen
  • Grundlagen eines vorhersagbaren Entwicklungsprozess
Dauer: 4 Tage, Teilnehmerzahl: max. 15, Zielgruppen: Entwickler, Architekt, Product Owner

Radikal objektorientierte Softwareentwicklung für sauberes ABAP

Objektorientierung ist Mainstream – und gleichzeitig Mysterium. Die Versprechen der Objektorientierung sind groß – doch für viele Entwickler werden sie nicht eingelöst. Und da, wo noch tendenziell prozedural gedacht wird, fällt der Einstieg in die Objektorientierung schwer.

Zukunftsfähige ABAP-Systeme ohne Objektorientierung sind kaum denkbar. Die Vorteile der Objektorientierung für langfristig hohe Produktivität durch Verständlichkeit und Testbarkeit sind einfach zu groß, um nicht eingestrichen zu werden. Hinzu kommt ein großes Potenzial für bessere Arbeitsorganisation sogar im Sinne kurzfristiger Produktivität.

Das Training bietet einen Einstieg in die Objektorientierung abseits vom Mainstream. Es besinnt sich zurück auf die ursprüngliche Vision von Alan Kay, die einen natürlicheren Zugang zu den Konzepten bietet, als die übliche „Klassenorientierung“. Solche „radikale“ Objektorientierung fügt sich auch besser in ein agiles Vorgehensmodell ein, weil es Wünsche an das Verhalten von Software nicht zwanghaft in Substantive übersetzten will. Objektorientierung ist ein Mittel, das dem Zweck der Wertschöpfung anzupassen ist.

Aber das Training vermittelt nicht nur einen intuitiven Zugang zu den üblichen Konzepten der Objektorientierung wie Klasse, Interface, Kapselung, sondern auch eine visuelle Notation, um Code objektorientiert leichtgewichtig zu modellieren. Der gemeinsame Entwurf von Software im Team wird möglich und erweist sich als natürlicher Raum für den Austausch aller Beteiligten. Zukunftsfähige Software braucht nicht nur collective code ownership, sondern auch collective design ownership.

Der Trainingsinhalt in Stichworten:

  • Zweck der ursprünglichen Definition von Objektorientierung
  • Nachrichtenorientierung als Kern von Objektorientierung
    • Integration Operation Segregation Principle
    • Principle of Mutual Oblivion
  • Kriterien für die Ausprägung von Klassen
    • Instanzklassen vs statische Klassen
    • Verhaltensklassen vs Datenklassen
    • Interfaces für Kapselung
    • Polymorphie für Testbarkeit
  • Klassen als Teil einer Modulhierarchie
  • Warnung vor der Wiederverwendbarkeit
  • Objektorientierte Software visuell im Team modellieren
    • Verhaltensorientierter Entwurf
    • Outside-in design

Dauer: 4 Tage, Teilnehmerzahl: max. 15, Zielgruppen: Entwickler und Architekten

Differenziert testgetriebene Softwareentwicklung für sauberes ABAP

Zukunftsfähige ABAP-Systeme stehen und fallen mit ihrer Korrektheit. Jeder Bug, der gefunden wird, reduziert das Vertrauen von Kunden/Anwendern und führt zu Konflikten; jeder Bug, der behoben wird, reduziert die Entwicklungskapazität für wertschöpfende Features. Kurzfristige Produktivität auf Kosten der Korrektheit ist ein Garant für mangelhafte Zukunftsfähigkeit.

Systematische automatisierte Tests sind eine notwendige Abwehrmaßnahme gegen Inkorrektheiten jeder Art. Das ist seit langem in der Softwareindustrie bekannt – doch viele ABAP-Teams finden nicht den rechten Zugang dazu. Schwer testbarer ABAP legacy code ist einer der Gründe dafür; ein anderer ist die Darstellung testgetriebenen Vorgehens in der Literatur, die oft dogmatisch fokussiert erscheint und nur begrenzte Szenarien beschreibt.

Hier setzte das Training an: Es erarbeitet mit den Teilnehmern zunächst eine solide Motivation, sich den Schwierigkeiten des automatisierten Tests zu stellen, vermittelt die technischen Fingerfertigkeiten und vermittelt dann komplementäre Ansätze für das testgetriebene Codieren. Ziel ist es, den Teilnehmern eine eklektische Haltung zu vermitteln, die sich je nach Problemstellung ganz undogmatisch des besten Ansatzes bedient.

Der Trainingsinhalt in Stichworten:

  • Begründung der Alternativlosigkeit von Testautomatisierung
  • Automatisierte Akzeptanztests als Grundlage für reife und stabile Software
  • Die Testmatrix: das Vorgehen dem Problemschwierigkeitsgrad anpassen
  • Test-first codieren mit
    • Classic TDD
    • Informed TDD
    • TDD as if you meant it
  • Prototypen für vorläufige Codierung wieder entdecken
  • Tests als Treiber der Modularisierung
  • Testarten von Akzeptanztest bis Gerüsttest 
  • Funktionale Abhängigkeiten entlarven als Testhindernis
    • DIP und IoC für das Testen abhängigen Codes
  • ABAP entwickeln in Eclipse
  • ABAP-Testframeworks ABAPUnit , Test-Double und Test-Seams
Dauer: 4 Tage, Teilnehmerzahl: max. 15, Zielgruppe: Entwickler

One Man Think Tank EOOD
30-32, Gen. E.I. Totleben Blvd., fl 2
1606 Sofia
Bulgarien

Tel 0049-170-3200458
Email info@clean-abap.de