Modulare Software Architektur und Abstrakte Datentypen

1. Modulare Software Architektur

Definition:

Ist ein System von Modulen und besteht als solches aus einer Menge von Modulen und Beziehungen zwischen diesen.

Was ist ein Software-Modul?

Ein Software-Modul,
  • ist eine selbständige programmtechnische Einheit, die eine Reihe von Eigenschaften besitzt und für die ein prinzipieller Modulaufbau angegeben werden kann.
  • ist eine logische Einheit mit einer klar abgegrenzten Aufgabe in einem Gesamtzusammenhang.
  • besteht aus Operationen und Daten, die eine enge Beziehung zu einander haben.
  • stellt Ressourcen nach außen zur Verfügung, die andere Module verwenden können. Diese Ressourcen sind in der Exportschnittstelle des Moduls spezifiziert. Die Interna eines Moduls sind in seinem innerem – dem Modulkörper – verborgen. Ein Modul trennt sauber die Spezifikation (das Was) von der Implementation (dem Wie). Das “Was” ist in der Schnittstelle sichtbar. Das “Wie” ist im Modulkörper verborgen.
  • kommuniziert ausschließlich über die Schnittstelle mit seiner Umgebung.
  • kann arbeitsteilig entwickelt werden.
  • ist bei Beibehaltung der Schnittstellen austauschbar
  • muss überschaubar, planbar, kontrollierbar und effizient sein.
  • ist eine Einheiten der Wiederverwendung, daher kann es in anderen Zusammenhängen eingesetzt werden, als in denen, in welchen es entwickelt wurde.
Von den verschiedenen Möglichkeiten der Modulkonstruktion werden die Modultypen Datenmodul und Funktionsmodul zur Realisierung des Programms eingesetzt. Datenmodule stellen die Datenobjekte und/oder Datentypen bereit. Die Modulkörper der Datenmodule bleiben leer, deshalb alles bleibt sichtbar nichts wird geheim gehalten. Funktionsmodul haben in der Modulschnittstelle keine Variablen, Konstanten bzw. Variablentypen es werden nur die Exportoperationen aufgelistet. Die Modulschnittstelle verfügt über eine Importschnittstelle die erforderliche Daten importiert z.B. aus anderen Modulen.
  • Quellcode-Modul Programmlisting in einer Datei
  • Objektcode-Modul Nur kompiliert vorliegende Module (ohne Quelltext)
  • Programmmodul Prozeduren und Funktionen

Prinzipieller Modulaufbau eines Software-Moduls

Prinzipieller Modulaufbau eines Software-Moduls

2. Abstrakte Datentypen

Definition:

Bei einem ADT sind die Daten und Methoden ohne Bezugnahme auf ihre innere Struktur beschrieben.

Datenabstraktion ist der Übergang von konkreten Datenobjekten zu Klassen äquivalenter Objekte, also die Trennung der Spezifikation eines Datenobjekts von den Details seiner Konstruktion. Ein ADT ist ein Schema zur Bildung geschützter Variablen im Sinne der Kapselung. Bestehend aus dem Namen des Typs, dessen innere Struktur sichtbar ist und der Menge der zulässigen Operationen auf Objekte dieses Typs. Ein abstrakter Datentyp ist kein einzelnes Objekt oder eine bestimmte Variable, sondern der Typ, aus den Objekte oder Variablen erzeugt werden können.
  • Modularisierung
  • Arbeitsverteilung möglich
  • Kapslung, Verschluss, Schutz der Interna

Der Stack

Der Stack ist eine Datenstruktur, bei der der Zugriff nach der LIFO-Methode erfolgt (Last In, First Out). Eine Folge heißt Stapel bzw. Stack, wenn Elemente nur an einem Ende, der Stapelspitze, hinzugefügt oder entfernt werden können.

Operationen des Stacks:

  1. erzeugen (leeren Stapel) – Init oder Create
  2. hinzufügen eines Elements – push(x)
  3. entfernen der Stapelspitze – pop
  4. anzeigen der Stapelspitze – top
  5. Prüfung, ob Stapel leer ist – empty

Die Schlange

Die Schlange ist eine Datenstruktur, bei der die abgelegten Werte in der gleichen Reihenfolge entnommen werden, in der sie eingetragen wurden (FIFO-Methode, First In First Out). Bei einer Schlange werden Daten nur an ihrem Schwanz angehängt und können nur an ihrem Kopf entnommen werden.

Operationen der Schlange:

  1. erzeugen (leere Schlange) – Init oder Create
  2. hinzufügen eines Elements – enqueue(x)
  3. entnehmen eines Elements – dequeue
  4. anzeigen des Kopfes – front
  5. Prüfung, ob Schlange leer ist – empty