Funktionale Softwarearchitektur

Wie funktioniert Softwarearchitektur mit Funktionen, unveränderlichen Daten, Kombinatoren?

Die Schulung präsentiert den Teilnehmern funktionale Softwarearchitektur als Alternative zu objektorientierter Architektur. Im Vergleich zu OO-Architektur setzt die funktionale Softwarearchitektur auf unveränderliche Daten, algebraische Abstraktionen und eingebettete domänenspezifische Sprachen. Das Resultat sind flexible und robuste Architekturen, die gegenüber OO weniger komplex sind und weniger versteckte Abhängigkeiten mit sich bringen.

Aufgrund der erhöhten Ausdruckskraft und Abstraktionsmöglichkeit in funktionalen Sprachen ist Architektur Code. In der Schulung gibt es Hands-On-Übungen, in denen (in Haskell) programmiert wird. Eine Einführung in Haskell wird als Teil der Schulung gegeben.

Vorkenntnisse in funktionaler Programmierung sind hilfreich aber nicht notwendig. Wer noch nicht in funktionalen Sprachen programmiert hat oder eine kurze Auffrischung genießen mag, sollte den eintägigen, optionalen Vorkurs besuchen.

iSAQB Advanced Level

Die Schulung ist Teil des Advanced Level der iSAQB-Zertifizierung für Software-Architekten (CPSA-A) und setzt das iSAQB-Module FUNAR um.

ISAQB-Logo

Wenn Sie dieses Training als Teil des Advanced Level des iSAQB besuchen, können Sie sich danach Credit Points anrechnen lassen (10 Credit Points im Kompetenzbereich Methodik und 20 Credit Points im Kompetenzbereich Technische Kompetenz).

Dozent

Dozent Dr. Michael Sperber ist Mit-Autor des FUNAR-Curriculums.

Dr. Michael Sperber

Foto Michael Sperber

Dr. Sperber ist Geschäftsführer der Active Group GmbH, die Individualsoftware ausschließlich mit funktionaler Programmierung entwickelt. Er ist Experte für funktionale Programmierung und wendet sie seit über 25 Jahren in Forschung und industrieller Entwicklung an. Dr. Sperber befasst sich außerdem seit über 30 Jahren mit der Programmierausbildung und hat dazu umfangreich geforscht. Er ist Mitbegründer des Blogs funktionale-programmierung.de und Mitorganisator der Entwicklerkonferenz BOB, sowie Autor mehrerer Bücher und zahlreicher Fachartikel.

Termine

18.-21.11.2019, Berlin

(zusammen mit der Entwicklerakademie)

Details hier.

2.12.-5.12.2019, Hamburg

(zusammen mit oose)

Details hier.

10.-13.2.2020, München

(zusammen mit der Entwicklerakademie)

Details hier.

16.3.-19.3.2020, Wien

(zusammen mit Albion Academy)

Details hier

23.3.-26.3.2020, Frankfurt

(zusammen mit Albion Academy)

Details hier

4.-7.5.2020, Berlin

(zusammen mit der Entwicklerakademie)

Details hier.

21.9.-24.9.2020, Frankfurt (auf englisch)

(zusammen mit Albion Academy)

Details hier

Stuttgart

Wir sammeln im Moment potenzielle Teilnehmer, um einen für alle passenden Termin zu machen. Kontaktieren Sie uns!

Inhalt

Vorkurs “Einführung in die funktionale Programmierung” (1 Tag)

Der Vorkurs ist eine kompakte Einführung in die funktionale Programmierung für Schulungsteilnehmer, die damit noch keine Erfahrung haben oder eine kurze Auffrischung genießen wollen. Im Vorkurs gibt es Hands-On-Übungen, in denen programmiert wird. Der Vorkurs benutzt die spezielle Lehrsprachen und die erprobte didaktische Methodik der DeinProgramm-Konstruktionsanleitungen.

Agenda

  • Datenmodellierung
  • Konstruktionsanleitungen
  • Selbstreferenzen und Rekursion
  • Programmieren mit Folgen
  • Higher-Order-Programmierung
  • eingebaute Datenstrukturen
  • Programmieren mit Zustand
  • Programmieren mit Akkumulatoren
  • eigenschaftsbasiertes Testen

Funktionale Software-Architektur (3 Tage)

Tag 1

Struktur funktionaler Software-Systeme
  • Funktionen und Werte
  • Komposition
  • Typen
  • Module
Technologien für funktionale Programmierung
  • statische Typen
  • dynamische Typen
  • Endrekursion
  • strikte bzw. nicht-strikte Auswertung
  • Laufzeitumgebung

Tag 2

Umsetzung von funktionalen Anforderungen
  • DDD vs. FP
  • Kombinatormodelle
  • eingebettete domänenspezifische Sprachen
Umsetzung von nicht-funktionalen Anforderungen
  • CQRS
  • Event Sourcing
  • Parallelisierung
  • Verteilung

Tag 3

Architekturmuster
  • funktionale Datenstruktur
  • Monoid
  • Funktor
  • Monade
  • Model-View-Update
Praxisbeispiel