bg_image
header

Design by Contract - DbC

Design by Contract (DbC) ist ein Konzept aus der Softwareentwicklung, das von Bertrand Meyer eingeführt wurde. Es beschreibt eine Methode zur Sicherstellung der Korrektheit und Zuverlässigkeit von Software, indem Verträge zwischen den verschiedenen Komponenten (z.B. Methoden, Klassen) definiert werden.

Grundprinzipien von Design by Contract

Bei DbC wird jede Software-Komponente wie eine Vertragspartei gesehen, die bestimmte Verpflichtungen und Garantien einhält:

  1. Vorbedingungen (Preconditions)
    Bedingungen, die erfüllt sein müssen, bevor eine Methode oder Funktion korrekt ausgeführt werden kann.
    → Verantwortung des Aufrufers.

  2. Nachbedingungen (Postconditions)
    Bedingungen, die nach der Ausführung garantiert werden.
    → Verantwortung der Methode/Funktion.

  3. Invariant (Klasseninvariante)
    Bedingungen, die während der gesamten Lebenszeit eines Objekts wahr bleiben müssen.
    → Verantwortung sowohl der Methode als auch des Aufrufers.

Ziel von Design by Contract

  • Klare Spezifikation der Verantwortlichkeiten.

  • Robustere und besser testbare Software.

  • Fehler werden frühzeitig erkannt (z.B. durch Verletzung des Vertrags).

Beispiel in Pseudocode

class BankAccount {
    private double balance;

    // Invariante: balance >= 0

    void withdraw(double amount) {
        // Vorbedingung: amount > 0 && amount <= balance
        if (amount <= 0 || amount > balance) throw new IllegalArgumentException();

        balance -= amount;

        // Nachbedingung: balance wurde um amount verringert
    }
}

Vorteile

  • Klare Verträge führen zu weniger Missverständnissen.

  • Bessere Fehlersuche, da Verstöße gegen Verträge sofort auffallen.

  • Unterstützt die defensive Programmierung.

Nachteile


Algorithmus

Ein Algorithmus ist eine präzise, schrittweise Anweisung zur Lösung eines Problems oder zur Durchführung einer Aufgabe. Man kann sich einen Algorithmus als eine Art Rezept vorstellen, das genau vorgibt, welche Schritte in welcher Reihenfolge ausgeführt werden müssen, um ein bestimmtes Ergebnis zu erzielen.

Wichtige Merkmale eines Algorithmus sind:

  1. Eindeutigkeit: Jeder Schritt im Algorithmus muss klar definiert sein, sodass es keine Mehrdeutigkeit gibt.
  2. Endlichkeit: Ein Algorithmus muss nach einer endlichen Anzahl von Schritten zum Abschluss kommen.
  3. Eingaben: Ein Algorithmus kann bestimmte Eingaben (Daten) erfordern, um ausgeführt zu werden.
  4. Ausgaben: Nach der Ausführung liefert der Algorithmus eine oder mehrere Ausgaben (Ergebnisse).
  5. Determinismus: Bei gleichem Input liefert der Algorithmus stets das gleiche Ergebnis.

Algorithmen werden in vielen Bereichen eingesetzt, von der Mathematik und Informatik bis hin zu alltäglichen Aufgaben wie dem Kochen oder der Organisation von Arbeitsschritten. In der Informatik werden sie oft in Programmiersprachen geschrieben und von Computern ausgeführt, um komplexe Probleme zu lösen oder Prozesse zu automatisieren.

 


Pseudocode

Pseudocode ist eine informelle Beschreibung eines Algorithmus oder eines Computerprogramms, die in einer Art und Weise geschrieben ist, die für Menschen leicht verständlich ist. Pseudocode verwendet einfache, klar formulierte Anweisungen und häufig eine Mischung aus natürlicher Sprache und grundlegenden Programmierkonstrukten, ohne sich an die Syntax einer bestimmten Programmiersprache zu halten.

Merkmale von Pseudocode:

  • Kein fester Syntax: Pseudocode folgt keiner strikten Syntax, wie es bei Programmiersprachen der Fall ist. Das Ziel ist Klarheit und Verständlichkeit, nicht Kompilierbarkeit.
  • Verständlichkeit: Es wird in einer Weise geschrieben, die sowohl von Programmierern als auch von Nicht-Programmierern leicht verstanden werden kann.
  • Verwendung von Schlüsselwörtern: Häufig werden Schlüsselwörter wie IF, ELSE, WHILE, FOR, END verwendet, die in den meisten Programmiersprachen vorkommen.
  • Strukturiert, aber flexibel: Pseudocode verwendet typische Programmierstrukturen wie Schleifen, Bedingungen und Funktionen, bleibt aber flexibel, um den Algorithmus oder die Logik einfach zu veranschaulichen.

Wofür wird Pseudocode verwendet?

  • Planung: Vor dem Schreiben eines tatsächlichen Programms kann Pseudocode verwendet werden, um die Logik und Struktur des Programms zu planen.
  • Kommunikation: Entwickler verwenden Pseudocode, um Ideen und Algorithmen mit anderen Entwicklern oder auch mit nicht-technischen Stakeholdern zu teilen.
  • Lehre und Dokumentation: Pseudocode wird oft verwendet, um Algorithmen in Lehrbüchern, Vorlesungen oder Dokumentationen zu erklären.

Beispiel für Pseudocode:

Hier ist ein einfacher Pseudocode für einen Algorithmus, der prüft, ob eine Zahl gerade oder ungerade ist:

BEGIN
  Input: Zahl
  IF (Zahl modulo 2) gleich 0 THEN
    Output: "Zahl ist gerade"
  ELSE
    Output: "Zahl ist ungerade"
  ENDIF
END

In diesem Beispiel werden einfache logische Anweisungen verwendet, um den Ablauf des Algorithmus zu beschreiben, ohne sich an die spezifische Syntax einer Programmiersprache zu binden.