Wie werden Programme entwickelt?

12. Wie werden Programme entwickelt?#

../../_images/fahrt.png

Abb. 12.1 Anwendungsfall: wir führen eine gemeinsame Probefahrt durch.#

Julia bekommt von einer Kollegin eine CSV-Datei mit echten Messwerten. Die Aufgabe klingt zunächst einfach („einlesen und auswerten“), aber schnell wird klar: Sie muss Anforderungen klären, Teilprobleme erkennen und Entscheidungen treffen. In diesem Kapitel schauen wir ihr über die Schulter – vom ersten Lesen der Aufgabe bis zu zwei möglichen Lösungen.

Exercise 12.1 (Fallbeispiel: Sensordaten statistisch auswerten)

Ausgangslage:
Julia bekommt eine Datei mit NO₂-Messwerten verschiedener Messstationen zu vielen Zeitpunkten. Die Datei enthält auch fehlende Werte (leere Felder), wie sie in echten Messreihen typisch sind.

Aufgabe:
Julia soll ein Programm erstellen, das die Messdaten auswertet:

  • Grafisch: Die Verteilung der Messwerte pro Station visualisieren (z. B. als Histogramm).

  • Tabellarisch: Eine Übersichtstabelle mit Kennzahlen erzeugen (z. B. Anzahl, Mittelwert, Standardabweichung, Minimum/Maximum sowie Quartile (Q1, Median, Q3)).

Datensatz

Die Messdatei liegt online. Julia arbeitet (wie später in den Codebeispielen) mit dieser Quelle:

https://gitlab.lrz.de/fk03ingenieurinformatik/ingenieurinformatik-buch-deploy-lrz/-/raw/master/data/air_quality_no2.csv

Die Daten sind reale Messdaten zur Stickstoffdioxid-Konzentration (NO₂) in der Umgebungsluft:

  • Die Werte sind in µg/m³ (Mikrogramm pro Kubikmeter) angegeben.

  • Die Messreihe ist zeitlich aufgelöst (Zeitstempel).

  • Es gibt mehrere Messstationen in Europa (z. B. London, Paris, Antwerpen).

Die Datei stammt aus der pandas-Dokumentation und wurde für Lehrzwecke leicht vorverarbeitet (z. B. reduziert und als CSV bereitgestellt). Sie enthält typische Eigenschaften realer Daten, z. B. Messrauschen und fehlende Werte.

Julia möchte am Ende zwei Dinge liefern: eine einfache Visualisierung der Verteilung und eine Tabelle mit Kennzahlen. Auf dem Weg dorthin trifft sie eine zentrale Entscheidung: nutzt sie vorhandene Bibliotheken oder baut sie die Bausteine selbst?

Zentrale Frage in der Programmierpraxis

Nicht „Kann ich das programmieren?“, sondern:

„Soll ich es selbst programmieren?“

Lernziele

Nach diesem Kapitel können Sie:

  • einen praxisnahen Entwicklungsablauf von der Aufgabenstellung bis zur Lösung nachvollziehen (inkl. Build vs. Buy),

  • eine größere Aufgabe in Teilprobleme zerlegen und Abhängigkeiten erkennen (z. B. Parsing, Visualisierung, Statistik),

  • Entscheidungen zu Abstraktionsgrad, Abhängigkeiten und Testaufwand begründet treffen,

  • eigenen Code mit einfachen Tests absichern,

  • einordnen, warum Sortieren in Statistik-Auswertungen auftaucht (Quantile/Median) und bei Bedarf einen einfachen Sortieralgorithmus implementieren.