Entwurfsprinzipien und Methoden des DV-Entwurfs

Werbung
DV-Konzept (Systementwurf
und Modulentwurf)
Ziel dieses Teils der
Unterrichtsveranstaltung:
-) Prinzipien der Modularisierung
-) Moduldiagramme
exemplarisch an einfachen Beispielen
anwenden
Lernziel: Sie sollen für einfache Fälle die
Modularisierung anwenden können und
Fehler selbständig erkennen
Modulkonzept
1. Aspekte/Qualitätsanforderungen an die
Modulbildung:
– Performance
– Änderbarkeit
– Homogenität (in sich zusammenhängende,
zweckorientierte, verständliche Bausteine)
2. Modularisierungskriterien (Entwurfsprinzipien)
–
–
–
–
Abstraktionsprinzip
Geheimnisprinzip
Prinzip der hohen Kohäsion
Prinzip der losen Kopplung
Funktionale Abstraktion 1
Konstruktion von Bausteinen, deren Funktionen – also das
„was“ – von den Benutzern (hier der Programmierer i.w.S.)
der Bausteine ausschließlich aufgrund der Kenntnis dieser
Funktionen benutzt werden können.
Die algorithmische Realisierung – also das „wie“ – ist
dagegen für den Benutzer (hier der Programmierer i.w.S.)
uninteressant
Funktionale Abstraktion 1
Beispiel Ohrmarkenprüfung:
FUNCTION ohrmarke_ok (IN: x; OUT: y)
wobei
x
übergebenes Argument
y
y
zurückgeliefertes Ergebnis
Modultyp 1 (mit genau einer funktionalen Abhäng.)
y
x
ohrmarke_ok
Funktionale Abstraktion 2
Modultyp 2 (mit mehreren logisch zusammengehörenden funktionalen Abhängigkeiten)
x
v
ohrmarke_ok
x
m
muttertier
Datenabstraktion
• Konstruktion eines Bausteins, der aus
einem abstrakten Datenobjekt und aus
den Operationen besteht, die auf dem
Datenobjekt zulässig sind.
Geheimnisprinzip
• Systemzerlegung hat so zu erfolgen, daß jeder
der entstehenden Modul eine bestimmte
Entwurfsentscheidung vor dem Rest des
Systems verbirgt (Information Hiding)
• Beispiele:
– eine Datenstruktur, ihre internen Verbindungen,
Zugriffsprozeduren und manipulierenden Prozeduren
sollten Bestandteil eines einzigen Moduls sein
– Zeichencodes, alphabetische Ordnungen usw. sollten
in einem Modul verborgen werden
– Die Reihenfolge, in der bestimmte Objekte verarbeitet
werden, sollte man (soweit möglich) in einem
einzigen Modul verbergen.
Prinzip der hohen Kohäsion
(Ausmaß, in dem alle Teile eines Moduls zusammengehören)
Kohäsionsarten
Erläuterung
Zufällige Kohäsion
Modul enthält voneinander unabhängige Operationen
Logische Kohäsion
Modul enthält ähnliche Operationen (z.B. wenn Steuerung
über Schalter)
Zeitliche Kohäsion
z.B. für Initialisierungen
Prozedurale Kohäsion
Zusammenhängende Teile eines Flußdiagramms werden
in ein Modul einbezogen.
Kommunikative
Kohäsion
Die Operationen des Moduls greifen auf die gleichen
Daten zu (z.B. Ergebnisberechnung und Ausdruck
erfolgt in einem Modul)
Funktionale Kohäsion
Modul führt genau eine Funktion aus (bei funktionaler
Abstraktion erzielt)
Informationelle
Kohäsion
Modul enthält eine oder mehrere logisch
zusammengehörende Operationen, die ein
gemeinsames Datenobjekt manipulieren (z.B.
Hinzufügen, Entfernen, Lesen von Sätzen einer Datei)
Prinzip der losen Kopplung
• Erwünscht ist eine möglichst lose
Kopplung der Module eines
Softwaresystems, weil das die
Änderbarkeit des Systems begünstigt.
• Arten der Kopplung:
– Datenkopplung
– Steuerungskopplung
– externe/inhaltliche/pathologische Kopplung
Datenkopplung
• Ist die loseste Kopplung und daher am meisten
erwünscht.
• Beispiel: Suche nach den Elterntieren eines Rindes:
Datenkopplung durch Übergabe von Daten als
Parameter
Modul
„Herkunft_ermitteln“
Ohrmarkennummer_Elterntier
FUNCTION Elterntiere_suchen Ohrmarkennummer
Gesuchtes_Elterntier
(IN: Ohrmarkennummer,
Gesuchtes_Elterntier;
OUT: Ohrmarkennummer_Elterntier)
Modul
„Elterntiere_suchen“
Steuerungskopplung
• Ein Modul gibt Steuerungsinformationen an
einen anderen Modul. Steuerinformationen sind
– Schalter (switches)
– Steuervariable (control variables)
– Statusvariable (flags)
• Diese lösen im empfangenden Modul z.B.
Fehlerbehandlungen, Verzweigungen usw. aus.
• Steuerungsinformationen z.T. unvermeidbar z.B. bei „eof“.
Pathologische Kopplung
• Ein Modul nimmt hierbei auf das Innere eines anderen
Moduls Bezug (indem auf interne Daten des anderen
Moduls zugegriffen wird oder in den Ablauf der
Operationen des anderen Moduls eingegriffen wird)
• Beispiel:
Eingabe
Lesen
Satzzähler
szaehler
Ausgabe
patholog. Verbindung
Druckausgabe
IF szaehler >=
100 THEN ...
Allgemeines Moduldiagramm mit
Kontrollfluß und Objekttransport
Hauptmodul
(abstrakte Funktion
auf abstraktem
Datenobjekt)
Legende:
Benutztbeziehung
Kontrollfluß (Steuerfluß)
Objekttransport
sa
e,se
Eingabemodul
(eingelesenes
Objekt
aufbereiten)
e‘
Lesefunktion
der
Basismaschine
e
a
Verarbeitungsmodul (Eingabeobjekt in abstraktes
Ausgabeobjekt
transormieren)
a
Ausgabemodul
(auszugebendes
Objekt
aufbereiten)
a‘
Schreibfunktion der
Basismaschine
Schichten („Zwiebelschema“) von
Modulen
1. Schicht: Steuermodule
2. Schicht: problemorientierte Module
(verknüpfen Datenobjekte verschiedener
Datentypen mittels problemorientierter
Funktionen)
3. Schicht: Verwaltungsmodule (beinhalten
Funktionen zur Manipulation von mehreren
Datenobjekten eines Datentyps)
4. Schicht: Zugriffsmodule (Zugriffe auf einzelne
Datenobjekte eines Datentyps)
Vorgehensweise für den
Modulentwurf
•
•
•
•
•
Definition des Hauptmoduls
Zerlegung des Hauptmoduls in eine Menge von direkt
untergeordneten Modulen insbesondere mittels STSZerlegung (source-transform-sink decomposition)
Definition der Schnittstellen zwischen dem Hauptmodul und
den untergeordneten Modulen
Anwendung der Schritte 1-3 auf jeden noch nicht zerlegten
Modul, bis eine weitere Zerlegung ausscheidet, z.B. weil:
– Unterteilung in funktional kohäsive Modul nicht möglich
– Logik des Moduls ist klar umrissen und beschreibt eine
spezielle Funktion
– Weitere Zerlegung würde zu einer Menge von kleinen,
extrem spezialisierten Funktionen führen
Überprüfung und Revision des Entwurfs
Beispiel für den Entwurf eines Information-Retrieval-Systems für die
Ausgabe von Infos über Tierarzneimittel (Teil 1)
1. Führe alle Suchanfragen durch
Definition des Hauptmoduls
Das Modul, das die Leistung des
gesamten Systems repräsentiert
Führe alle
Suchanfragen
durch
Beispiel für den Entwurf eines Information-Retrieval-Systems für die
Ausgabe von Infos über Tierarzneimittel (Teil 2)
2. Zerlegung des Hauptmoduls (mittels STS)
2.1 Darstellung der Problemstruktur
Strukturierungskriterium: Der Datenstrom, der das
gesamte Problem durchsetzt
a
Eingabe einer
Suchanfrage
d
Bereitstellen
der Abstracts
b
e
Umformung in
Datenbanksuchanfrage
Ausgabe der
Abstracts
c
Suche der
Schlüsselwörter
in Datenbank
Beispiel für den Entwurf eines Information-Retrieval-Systems für die
Ausgabe von Infos über Tierarzneimittel (Teil 3)
2.2 Identifikation der Hauptdatenströme
Die logischen Datenströme sind zu ermitteln, die durch die
Kette der Teilprobleme „hindurchfließt“.
Bei mehreren Datenströmen ist der „wesentliche Strom“
gesucht. Im o.g. Beispiel sind dies: „Terminalanfrage“ als
Hauptein- und „Anzeige der Suchergebnisse“ als
Hauptausgabestrom.
2.3 Ermitteln der Punkte der höchsten Abstraktion
Es sind zwei Punkte in der Kette zu finden, die das Problem in
drei Teilprobleme zerlegen. Diese sollen voneinander
möglichst unabhängige, spezielle Funktionen darstellen. Bei
der Bestimmung dieser Punkte folgt man den
Hauptdatenströmen so lange, bis diese im Sinne der
ursprünglichen Bedeutung nicht mehr zu existieren scheinen.
Im o.g. Beispiel die Punkte c und d.
2.4 Definition direkt untergeordneter Module
Führe alle Suchanfragen durch
1
Lese nächste
Suchanfrage
Source-Modul
2
Suche Schlüsselwörter in der
Datenbank
Transform-Modul
3 Definition der Schnittstellen
3
Gib Abstracts aus
Sink-Modul
Herunterladen