Inhalte

Inhalte der Vorlesung „wissenschaftliche Softwareentwicklung“ an der Physikalisch-Technischen Bundesanstalt (PTB) im Herbst 2023/Frühjahr 2024.

Übersicht

  1. Motivation
    • Wissenschaft: Nachvollziehbarkeit
    • Softwareentwicklung: Codequalität
  2. Infrastruktur
    • Editoren/IDEs
    • Lizenzen und Urheberrechte
    • Versionsverwaltung
    • Versionsnummern
    • externe Dokumentation
  3. Sauberer Code
    • Objektorientierte Programmierung
    • Namen
    • Funktionen und Methoden
    • Formatierung: Layout und Stil
    • Dokumentation im Code
    • Entwurfsmuster (Design Patterns)
    • Tests, Testautomatisierung und testgetriebene Entwicklung
    • Refactoring
    • Codeoptimierungen
  4. Softwarearchitektur
    • Single-Responsibility-Prinzip
    • Open-Closed-Prinzip
    • Liskov-Substitutions-Prinzip
    • Interface-Segregation-Prinzip
    • Dependency-Inversion-Prinzip
  5. Wissenschaftliche Datenverarbeitung und -Analyse
    • Datenformate: beständig und plattformunabhängig
    • Datenaufnahme: Metadaten
    • Datenverarbeitung und -analyse: selbstdokumentierend
    • Datenpräsentation: Abbildungs- und Berichterstellung
    • Ausblick: Gesamtsystem zur wissenschaftlichen Datenverarbeitung

Übersicht als PDF-Dokument – Das PDF-Dokument entspricht dem Planungsstand vor Beginn der Vorlesung – Änderungen vorbehalten.

Beschreibung der fünf Teile

Die Vorlesung gliedert sich in fünf große Abschnitte. Nachfolgend werden die Inhalte aller fünf Bereiche knapp zusammengefasst.

Motivation

Infrastruktur

Sauberer Code

Softwarearchitektur

Wissenschaftliche Datenverarbeitung und -Analyse

Während eine minimale Infrastruktur Voraussetzung ist, um überhaupt sinnvoll Software entwickeln zu können, ist sauberer Code die Grundlage (nicht nur) für die Wissenschaftlichkeit der entwickelten Programme, weil nur so die Nachvollziehbarkeit gewährleistet werden kann. Aufgrund der inhärenten Komplexität von Datenverarbeitung und -auswertung in den Naturwissenschaften ist das Zusammenspiel der einzelnen Komponenten maßgeblich für die Flexibilität und Wartbarkeit der entwickelten Software. Das ist der Bereich der Softwarearchitektur.