Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer.

Post on 06-Apr-2015

108 views 1 download

Transcript of Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer.

Modularisierung

Seminar Softwareentwicklung

Programmierstil

Helmut Schmidauer

2/25

Wozu Modularisierung von Software ?

Verständlichkeit– Jede Entwurfseinheit sollte weitgehend unabhängig von

den anderen verständlich sein

Kombinierbarkeit– Entwurfseinheiten sollten sich durch Rekombination zu

neuen Systemen zusammenfügen lassen

Lokalität– Jede Änderung des Entwurfsproblems sollte Änderungen

in möglichst wenigen Entwurfseinheiten verursachen

Parallele Entwicklung

3/25

Definition Modul

Zusammenfassung von Operationen und Daten zur Realisierung einer in sich abgeschlossenen Aufgabe

Kommunikation mit der Außenwelt nur über eine eindeutig spezifizierte Schnittstelle

Keine Kenntnis des inneren Arbeitens zur Integration erforderlich

Korrektheit nachprüfbar ohne Kenntnis seiner Einbettung

4/25

Was ist ein Modul ?

Eine Prozedur (eher nicht)

Eine Klasse

Ein Package

Eine Komponente

Ein Subsystem

5/25

Modularisierung

Zerlegung eines Systems in Module, unter Berücksichtigung folgender Kriterien– Verhältnis Modulbindung - Modulkopplung– Minimalität der Schnittstelle– Modulgröße– Testbarkeit– Interferenzfreiheit– Importzahl, Verwendungszahl– Modulhierachie - Architektur

6/25

Modulgeschlossenheit

Ein Modul soll für eine geschlossene Aufgabe zuständig sein

nach unterschiedlichen Aspekten

DatenorientiertFunktionsorientiert

FunktionsbibliothekAlgorithmus

7/25

Datenkapselung

Trenne die konkrete Implementierung einer Datenstruktur von ihren sichtbaren Eigenschaften

Datenstruktur wird in ein Modul eingekapselt Die Schnittstelle besteht aus Operationen die den

Umgang mit der Datenstruktur beschreiben Die Datenstruktur selbst ist verborgen

=> Abstrakte Datenstruktur

Ist ein wesentliches Entwurfsprinzip

8/25

Information Hiding

"Geheime" Bereiche eines Systems– Daten– Bereiche die sich häufig ändern– Hardwareabhängigkeiten– Ein / Ausgabe– Komplizierte Design und Implementierungsbereiche– Konstanten– Business Logik– Komplexe Logik

9/25

Modulbindung - Modulkopplung

Modulbindung– Summe der Beziehungen zwischen den einzelnen

Operationen,Daten eines Moduls (soll hoch sein)

Modulkopplung– Summe der Beziehungen zwischen den Modulen– Hohe Kopplung durch verteilte Funktionen, globale Daten

Anzahl der Module

Kom

plex

ität

Gesamtkomplexität Modulkopplung

Modulbindung

10/25

Minimalität der Schnittstelle

möglichst wenige (gar keine) globalen Daten– Verlust der Kontrolle

wenige exportierte Prozeduren– Prozeduren des Moduls stark verbunden– je mehr exportiert, desto eher falsche Verwendung

geringe Anzahl von Parametern– viele Parameter

• viele Variationen• kopliziertere Verwendung

11/25

Testbarkeit

Korrektheit nachprüfbar ohne Kenntnis seiner Einbettung in das Gesamtysytem

hohe Bindung– Testabdeckung wahrscheinlich höher

minimale Schnittstelle– weniger und einfachere Testfälle

Stubs - Testrahmen Bottom-Up Entwicklung

12/25

Interferenzfreiheit

keine Nebenwirkungen auf andere Module– Nebenwirkungen:

• modifiziert globale Daten• modifizierende Operationen in anderen Modulen

Kriterium für Änderbarkeit und Erweiterbarkeit des Gesamtsystems

Interferenzfreies Modul kann durch Modul mit identischer Schnittstelle ersetzt werden

nicht gegeben wenn:– Modul mehrere Aufgaben erfüllt– Aufgabe auf mehrere Module verteilt ist

13/25

Importzahl, Verwendungszahl

Importzahl– Wie viele Module werden vom Modul verwendet– wenn hoch

• deutet auf hohe Modulkopplung hin• Interferenzen wahrscheinlich

– wenn niedrig• möglicherweise zu großes Modul (immer erweitert)

Verwendungszahl– Von wie vielen Modulen wird das Modul verwendet– wenn hoch

• sehr Allgemein / hohe Wiederverwendung• Sammlung unzusammenhängender Funktionen ?• es sollte auch eine starke Modulbindung herrschen

VZ=2

IZ=3

14/25

Application Framework

Einbettung in Architektur

Steuermodule

Problemlösung

Hilfsmodule

Bibliotheken

Datenstrukturenhäufige

Operationen

spezielle Ein/Ausgabe

Benutzerkommunikation Eventloop

InitialisierungSteuerung

Problemorientiert

Problemorientiert

Problemorientiert

Problemorientiert

Problemorientiert

Problemorientiert

Problemorientiert

Problemorientiert

KommunikationBetriebssystem

math.Funktionen

Ein/AusgabeSystem

bibliotheken

15/25

Entwurfstechniken

Zwei Varianten der Abstraktion:

Top Down– Dekomposition– Zu Beginn Lösungsidee ohne Realisierungsdetails– Schrittweise Konkretisierung

Bottom Up– Komposition– Aus erforderlichen Basiselementen wird sukzessive das

System zusammengestellt

16/25

Entwurfsprinzipien

Kriterien nach denen abstrahiert wird

Funktionsorientiert– Die Aufgabe des Systems wird immer detaillierter in

Teilaufgaben zerlegt– Problematisch für Modularisierung, Wiederverwertbarkeit,

Weiterentwicklung

Objektorientiert– Identifizierung von realen und abstrakten Objekten– Beschreibung in Klassen– Identifizierung von Methoden an den Objekten– Erzeugen eines Systems aus den Objekten

17/25

Entwurfsmuster

Bereitstellung bewährter, vorgefertigter Lösungen für wiederkehrende Entwurfsprobleme

Schaffung einer Terminologie für die Kommunikation über solche Probleme

Entwurf mit Mustern– Grundschatz an Mustern kennen (Lernen / Erfahrung)– Bei der Modularisierung Anwendungssituationen für

Muster erkennen

Wiederverwendung von Problemlösungen

18/25

Wie lösen Muster Entwurfsprobleme ?

Objektfindung– nicht so offensichtliche Abstraktionen finden

Bestimmen der Objektgranularität– Größe und Anzahl von Objekten

Spezifizieren von Schnittstellen– was soll, was soll nicht in eine Schnittstelle

Spezifizieren von Objektimplementierungen– Klassen vs. Schnittstellenvererbung

• Klassen– Erweiterung der Funktionalität– Wiederverwendung einer Implementierung

• Interfaces– Reduzierung der Implementierungsabhängigkeit

19/25

Wie lösen Muster Entwurfsprobleme ?

Prinzip des wiederverwendbaren objektorientierten Entwurfs:"Programmiere auf eine Schnittstelle hin, nicht auf eine

Implementierung"

Wiederverwendungsmechanismen anwenden– White Box Wiederverwendung

• Klassenvererbung– BlackBox Wiederverw.

• Objektkomposition

20/25

Kategorien von Mustern

Erzeugungsmuster– Abstrakte Fabrik– Singleton

Strukturmuster– Adapter

Verhaltensmuster– Beobachter– Iterator

Danke für die Aufmerksamkeit