1
play

1 Modularitt Modularitt 7 8 Wiederverwendbarkeit + - PDF document

1 2 Letzte Aktualisierung: 16. April 2004 Programmierung im Grossen Vorlesung 2: Modularitt, Wiederverwendbarkeit Bertrand Meyer Chair of Software Engineering Chair of Software Engineering Programmierung im Grossen - Vorlesung 2


  1. 1 2 Letzte Aktualisierung: 16. April 2004 Programmierung im Grossen Vorlesung 2: Modularität, Wiederverwendbarkeit Bertrand Meyer Chair of Software Engineering Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Programmierung im Grossen - Vorlesung 2 Programm für heute Software Qualität 3 4 � Externe Faktoren: für Kunden sichtbar � Software Qualität (nicht nur der Endbenutyer, zB auch Käufer) � Modularität � Wiederverwendbarkeit � Beispiele : leichte Benutzbarkeit, Erweiterbarkeit � Interne Faktoren: nur von Entwicklern wahrnehmbar � Beispiele : guter Programmier-Stil, Information Hiding Letztendlich zählen nur die externen Faktoren, aber die internen ermöglichen erst deren Erreichung. Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Externe Qualitäts-Faktoren Zuverlässigkeit 5 6 KORREKTHEIT � � Korrektheit + Robustheit � ROBUSTHEIT SPEZIFIKATION FEHLER FEINDLICHE � INTEGRITÄT VERWENDUNG � Techniken werden genau diskutiert werden: LEICHTE BENUTZBARKEIT � Typisierung, Design by Contract, … WIEDERVERWENDBARKEIT Korrektheit � ERWEITERBARKEIT � Robustheit PORTABILITÄT � Integrität EFFIZIENZ � … � � Korrektheit: � Die Fähigkeit eines Software Systems, entsprechend der Spezifikation zu arbeiten, in durch die Spezifikation definierten Fällen. Robustheit: � � Die Fähigkeit eines Software Systems, sich in Fällen, die nicht von der Spezifikation abgedeckt werden, angemessen zu verhalten. Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 1

  2. Modularität Modularität 7 8 � Wiederverwendbarkeit + Erweiterbarkeit � Einige Prinzipien von Modularität: � Zerlegbarkeit � Begünstigt durch architektonische Techniken, die � Zusammensetzbarkeit zur Sicherstellung dezentralisierter Module � Kontinuität tendieren � Information Hiding (manchmal “Geheimnisprinzip”) � Das “Offen-Geschlossen” Prinzip � Das “Einzige Auswahl” Prinzip Chair of Software Engineering Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Programmierung im Grossen - Vorlesung 2 Zerlegbarkeit Top-down funktionales Design 9 10 � Diese Methode hilft komplexe Probleme in Oberste funktionale Abstraktion Teil-Probleme zu zerlegen. � Folgerung: Aufspaltung der Arbeit. A � Beispiel: Top-down Design-Methode (folgt). Sequenz � Gegenbeispiel: Allgemeines Initialisierungs- B D C Modul. Bedingung Schleife C1 I I1 C2 I2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Top-down Design Zusammensetzbarkeit 11 12 � Diese Methode bevorzugt die Erzeugung von � Siehe Niklaus Wirth, “Program Construction by Software-Elementen die frei untereinander Stepwise Refinement”, Communications of the zusammengesetzt werden können, um neue ACM, 14, 4, (April 1971), p 221-227. Software zu erzeugen. http://www.acm.org/classics/dec95/ � Beispiel: Unix Shell Konventionen Programm1 | Programm2 | Programm3 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 2

  3. Direktes Abbilden Prinzip der wenigen Schnittstellen 13 14 � Diese Methode ergibt ein Software-System dessen � Jedes Modul redet mit so wenigen anderen modulare Struktur kompatibel bleibt mit Modulen wie möglich. irgendeiner modularen Struktur, die beim modellieren der Problem-Domäne erdacht wird. (A) (B) (C) Chair of Software Engineering Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Programmierung im Grossen - Vorlesung 2 Prinzip der kleinen Schnittstellen Prinzip der expliziten Schnittstellen 15 16 � Wenn zwei Module kommunizieren, tauschen sie � Wenn zwei Module A und B kommunizieren, ist das so wenig Information aus wie möglich. aus dem Text von A oder B oder von beiden offensichtlich. x, y Modul A Modul B z Modifiziert Liest Daten x Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Kontinuität Prinzip des einheitlichen Zugriffs 17 18 � Diese Methode stellt sicher, dass kleine � Funktionen die von einem Modul verwaltet werden Änderungen an der Spezifikation auch kleine sind für Kunden in der selben Weise zugreifbar, Änderungen an der Architektur ergeben. egal ob sie mit Berechnung oder Speicherung implementiert sind. � Design Methode : Spezifikation → Architektur � Definition: Ein Kunde eines Moduls ist irgendein Modul, dass seine Funktionen benutzt. � Beispiel: Prinzip des einheitlichen Zugriffs (folgt) � Gegenbeispiel: Programme mit Mustern nach der physikalischen Implementierung der Datenstrukturen. Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 3

  4. Einheitlicher Zugriff: Beispiel Information Hiding 19 20 balance = list_of_deposits . total – list_of_withdrawals . total � Zugrundeliegende Frage: Wie “bewirbt” man die Möglichkeiten eines Moduls? list_of_deposits � Jedes Modul sollte der externen Welt durch eine (A1) list_of_withdrawals offizielle, öffentliche, “public” Schnittstelle bekannt balance sein. � Die restlichen Eigenschaften des Moduls sind seine list_of_deposits “Geheimnisse”. (A2) � Es soll unmöglich sein auf die Geheimnisse von list_of_withdrawals aussen zuzugreifen. Ada, Pascal, C/C++, Java, C#: Simula, Eiffel: a . balance a . balance balance ( a ) a . balance () Chair of Software Engineering Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Programmierung im Grossen - Vorlesung 2 Das Information Hiding Prinzip Information Hiding 21 22 � Der Designer jedes Moduls muss eine Teilmenge der Eigenschaften des Moduls als offizielle Information über das Modul auswählen. Öffentlicher Teil Diese Teilmenge wird den Entwicklern von Kunden-Modulen zur Verfügung gestellt. Geheimer Teil Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Information Hiding Das Offen-Geschlossen Prinzip 23 24 � Begründungen: � Module sollen Offen und Geschlossen sein. � Kontinuität � Zerlegbarkeit � Definitionen: � Offenes Modul: Kann erweitert werden. � Geschlossenes Modul: Für Kunden verwendbar. Kann freigegeben, als Grundlinie (baseline) verwendet und (falls eine Programmeinheit) kompiliert werden. � Die Begründungen ergänzen sich: � Ein Modul zu schliessen (Manager-Perspektive): Kunden benötigen es jetzt. � Ein Modul offen zu lassen (Entwickler-Perspektive): Man übersieht oft Aspekte des Problems. Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 4

  5. Ein Objekt hat eine Schnittstelle Ein Objekt hat eine Implementierung 25 26 start start item index item index forth forth before after before after put_right put_right Chair of Software Engineering Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Programmierung im Grossen - Vorlesung 2 Information Hiding Das Offen-Geschlossen Prinzip 27 28 B A C E D start item index F A’ H I forth before after put_right G Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Zu frühes schliessen eines Moduls Das Einzige Auswahl Prinzip 29 30 type PUBLICATION = � Immer wenn ein Software-System eine Menge von record Alternativen unterstützen muss gibt es genau ein author , title: STRING; publication_year: INTEGER Modul im System, dass die komplette Liste kennt. case pubtype : ( book , journal , conference ) of book : ( publisher : STRING ); journal : ( editor : STRING ); � Editor: Menge von Kommandos (Einfügen, conference : ( place , chair : STRING ) end Löschen, etc.) end � Graphik-System: Menge von Formen (Rechteck, Verwendung in Kunden: Kreis, etc.) � � Kompiler: Menge von Sprach-Konstrukten p : PUBLICATION ; case p . pubtype of (Anweisung, Schleife, Ausdruck, etc.) book : ... p . publisher ...; journal : ... p . editor ...; conference : ... p . place ... end Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 Chair of Software Engineering Programmierung im Grossen - Vorlesung 2 5

Recommend


More recommend