Softwareentwurf mit Flow-Design

Softwareentwurf mit Flow-Design

Ralf Westphal
This is a sample of the book's content.Buy on Leanpub

Table of Contents

Motivation›

  • Motivation
    • Programming with Ease
    • Das Softwareuniversum
  • Einleitung
    • Anforderungskategorien
    • It’s the productivity, stupid!
    • Produktivitätskiller
    • Fehlende Korrekheit
    • Fehlender Wert
    • Fehlende Ordnung
    • Zusammenfassung

Die Methode›

  • 01 - Die Anforderung-Logik Lücke
    • Logik - Der Stoff aus dem Verhalten entsteht
    • Funktionalität
    • Effizienz I - Effizienz durch Algorithmen und Datenstrukturen
    • Effizienz II - Effizienz durch Verteilung
    • Zusammenfassung
    • Von den Anforderungen zur Logik
    • Logik schwer definierbar
    • Die Phasen der Programmierung
    • Zusammenfassung
    • Übungsaufgaben
  • 02 - Entwurf im Überblick
    • Den Entwurf abstecken
    • Hierarchie der Lösungen
    • Von der Kunst lernen
    • Entwerfen ist fachgerecht
    • Entwerfen ist agil
    • 1. Der Lösungsansatz
    • 2. Das Modell
    • Modellarten
    • Abstraktion
    • Zusammenfassung
    • Übungsaufgaben
    • Aufgabe - Lösungsansatz finden
  • 03 - Radikale Objektorientierung
    • Die Welt bestehend aus Objekten?
    • Der Ursprung der Objektorientierung
    • Wer hat’s erfunden?
    • Die zentrale Analogie der radikalen Objektorientierung
    • Principle of Mutual Oblivion (PoMO)
    • Unabhängigkeit
    • Geschlossenheit
    • Unidirektionalität
    • Ein Prinzip als Destillat
    • Implementationsidee
    • Integration Operation Segregation Principle (IOSP)
    • Objekte verbinden als Verantwortlichkeit
    • Ein Prinzip als Destillat
    • Implementationsidee
    • Philosophischer Exkurs
    • Übungsaufgaben
    • Aufgabe - Mit PoMO/IOSP implementieren
  • 04 - Flow-Design mit 1-dimensionalen Datenflüssen
    • 0-dimensionale Datenflüsse
    • Notation
    • Implementation
    • 1-dimensionale Datenflüsse
    • Der Datenfluss als Scope
    • Fließende Mengen
    • Implementation
    • Übungsaufgaben
  • 05 - Flow-Design mit 2-dimensionalen Datenflüssen
    • Abstraktion durch Komposition
    • Stratified Design
    • 2-dimensionale Datenflüsse
    • Notation
    • Datenflüsse als aufgemotzte Abhängigkeitsdiagramme
    • n:1 Übersetzungen
    • Rekursion
    • Reflexion
    • Übungsaufgaben
  • 06 - Flow-Design mit modularisierten Datenflüssen
    • Abstraktion durch Aggregation
    • Physisch kategorisieren mit dem Dateisystem
    • Module
    • Abhängigkeiten
    • Orthogonale Containerdimension
    • Die Modul-Hierarchie
    • Klasse - Abhängigkeiten mit Kontrakten zähmen
    • Namensraum - Kontraktkollisionen vermeiden
    • Bibliothek - Wiederverwendbarkeit ermöglichen
    • Paket - Abhängigkeiten stabilisieren
    • Komponente - Die Arbeitsteilung befördern
    • Service - Module plattformneutral machen
    • Wave - Softwareevolution zur Laufzeit
    • Die Modul-Hierarchie im Überblick
    • Datenflüsse modularisieren
    • Notation & Implementation I - Funktionen
    • Notation & Implementation II - Daten
    • Modularisierungsbeispiel
    • Reflexion
    • Übungsaufgaben
  • 07 - Flow-Design mit 3-dimensionalen Datenflüssen
    • Die wahren Übersetzungsverhältnisse
    • Streams
    • Einsatzgebiete für Streams
    • Implementation
    • Continuation
    • Iterator
    • Fallunterscheidung in der Integration
    • Polymorphie
    • Warteschlange
    • Reflexion
    • Übungsaufgaben
  • 08 - Die IODA Architektur
    • Die Softwarezelle
    • System vs. Umwelt
    • “Kleiderbügelarchitektur”
    • Die Membran
    • “Griechische Architekturen”
    • Der Kern
    • “Vitruvianische Architektur”
    • The Missing Concern: Integration
    • IOSP in der Architektur
    • Interactors
    • Processors
    • IODA: All together now!
    • Übungsaufgaben
  • 09 - Finale im Softwareuniversum
    • Der Explizite Entwurf ist nötig
    • Der Entwurf ist deklarativ
    • Das Modell beschreibt Funktionen in Beziehungen
    • Flow-Design im 4-dimensionalen Raum
    • Orientierungshilfe für die Softwareentwicklung

Anhang - Musterlösungen›

  • Musterlösung: 01 - Die Anforderung-Logik Lücke
    • Aufgabe 1 - Erklären
    • Vom Nutzen der Modellierung für die Programmierung (ELI5)
    • Reflexion
    • Aufgabe 2 - Modellieren
    • Lösungsansatz
    • Modell
    • Reflexion
  • Musterlösung: 02 - Entwurf im Überblick
    • Aufgabe - Lösungsansatz finden
    • Lösungsansatz für die Domänenlogik
    • Reflexion
  • Musterlösung: 03 - Radikale Objektorientierung
    • Aufgabe - Mit PoMO/IOSP implementieren
    • Modellskizze
    • Codierung der Integration
    • Codierung der Operationen
    • Reflexion
  • Musterlösung: 04 - Flow-Design mit 1-dimensionalen Datenflüssen
    • Aufgabe 1 - Modellieren und implementieren
    • Lösungsansatz verfeinern: Prä-Modell
    • Modell
    • Implementation
    • Aufgabe 2 - Reverse modeling
    • Aufgabe 3 - Lösen, modellieren, implementieren
    • Lösungsansatz
    • Modell
    • Codierung
    • Reflexion
  • Musterlösung: 05 - Flow-Design mit 2-dimensionalen Datenflüssen
    • Aufgabe 1 - Implementation eines Modells
    • Reflexion
    • Aufgabe 2 - Die Dimensionalität eines Modells erhöhen
    • Reflexion
    • Aufgabe 3 - Anforderungen umsetzen mit 2-dimensionalem Modell
    • Verstehen
    • Lösen
    • Modellieren
    • Codieren
    • Reflexion
  • Musterlösung: 06 - Flow-Design mit modularisierten Datenflüssen
    • Aufgabe 1 - Datenfluss modularisieren
    • Schrittweise Modularisierung
    • Klassendiagramm
    • Bibibliotheken
    • Aufgabe 2 - Game of Life
    • Lösungsansatz
    • Modellierung
    • Reflexion
  • Musterlösung: 07 - Flow-Design mit 3-dimensionalen Datenflüssen
    • Aufgabe 1 - Tic-Tac-Toe
    • Lösungsansatz
    • Modell
    • Implementation
    • Reflexion
  • Musterlösung: 08 - Die IODA Architektur
    • Aufgabe 1 - Umbau nach IODA
    • Abhängigkeiten zeigen den Abstraktionsgradienten hinab
    • Aufgabe 2 - Enturf nach IODA inkl. Implementation
    • Anforderungsanalyse
    • Lösungsansatz
    • Modell
    • Implementation
    • Reflexion

Anmerkungen›

    Softwareentwurf mit Flow-Design/Die Methode

    Die Methode

    Up next

    01 - Die Anforderung-Logik Lücke

    In this part

    • 01 - Die Anforderung-Logik Lücke
    • Logik - Der Stoff aus dem Verhalten entsteht
    • Funktionalität
    • Effizienz I - Effizienz durch Algorithmen und Datenstrukturen
    • Effizienz II - Effizienz durch Verteilung
    • Zusammenfassung
    • Von den Anforderungen zur Logik
    • Logik schwer definierbar
    • Die Phasen der Programmierung
    • Zusammenfassung
    • Übungsaufgaben
    • 02 - Entwurf im Überblick
    • Den Entwurf abstecken
    • Hierarchie der Lösungen
    • Von der Kunst lernen
    • Entwerfen ist fachgerecht
    • Entwerfen ist agil
    • 1. Der Lösungsansatz
    • 2. Das Modell
    • Modellarten
    • Abstraktion
    • Zusammenfassung
    • Übungsaufgaben
    • Aufgabe - Lösungsansatz finden
    • 03 - Radikale Objektorientierung
    • Die Welt bestehend aus Objekten?
    • Der Ursprung der Objektorientierung
    • Wer hat’s erfunden?
    • Die zentrale Analogie der radikalen Objektorientierung
    • Principle of Mutual Oblivion (PoMO)
    • Unabhängigkeit
    • Geschlossenheit
    • Unidirektionalität
    • Ein Prinzip als Destillat
    • Implementationsidee
    • Integration Operation Segregation Principle (IOSP)
    • Objekte verbinden als Verantwortlichkeit
    • Ein Prinzip als Destillat
    • Implementationsidee
    • Philosophischer Exkurs
    • Übungsaufgaben
    • Aufgabe - Mit PoMO/IOSP implementieren
    • 04 - Flow-Design mit 1-dimensionalen Datenflüssen
    • 0-dimensionale Datenflüsse
    • Notation
    • Implementation
    • 1-dimensionale Datenflüsse
    • Der Datenfluss als Scope
    • Fließende Mengen
    • Implementation
    • Übungsaufgaben
    • 05 - Flow-Design mit 2-dimensionalen Datenflüssen
    • Abstraktion durch Komposition
    • Stratified Design
    • 2-dimensionale Datenflüsse
    • Notation
    • Datenflüsse als aufgemotzte Abhängigkeitsdiagramme
    • n:1 Übersetzungen
    • Rekursion
    • Reflexion
    • Übungsaufgaben
    • 06 - Flow-Design mit modularisierten Datenflüssen
    • Abstraktion durch Aggregation
    • Physisch kategorisieren mit dem Dateisystem
    • Module
    • Abhängigkeiten
    • Orthogonale Containerdimension
    • Die Modul-Hierarchie
    • Klasse - Abhängigkeiten mit Kontrakten zähmen
    • Namensraum - Kontraktkollisionen vermeiden
    • Bibliothek - Wiederverwendbarkeit ermöglichen
    • Paket - Abhängigkeiten stabilisieren
    • Komponente - Die Arbeitsteilung befördern
    • Service - Module plattformneutral machen
    • Wave - Softwareevolution zur Laufzeit
    • Die Modul-Hierarchie im Überblick
    • Datenflüsse modularisieren
    • Notation & Implementation I - Funktionen
    • Notation & Implementation II - Daten
    • Modularisierungsbeispiel
    • Reflexion
    • Übungsaufgaben
    • 07 - Flow-Design mit 3-dimensionalen Datenflüssen
    • Die wahren Übersetzungsverhältnisse
    • Streams
    • Einsatzgebiete für Streams
    • Implementation
    • Continuation
    • Iterator
    • Fallunterscheidung in der Integration
    • Polymorphie
    • Warteschlange
    • Reflexion
    • Übungsaufgaben
    • 08 - Die IODA Architektur
    • Die Softwarezelle
    • System vs. Umwelt
    • “Kleiderbügelarchitektur”
    • Die Membran
    • “Griechische Architekturen”
    • Der Kern
    • “Vitruvianische Architektur”
    • The Missing Concern: Integration
    • IOSP in der Architektur
    • Interactors
    • Processors
    • IODA: All together now!
    • Übungsaufgaben
    • 09 - Finale im Softwareuniversum
    • Der Explizite Entwurf ist nötig
    • Der Entwurf ist deklarativ
    • Das Modell beschreibt Funktionen in Beziehungen
    • Flow-Design im 4-dimensionalen Raum
    • Orientierungshilfe für die Softwareentwicklung