modularisierung seminar softwareentwicklung programmierstil helmut schmidauer

21
Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

Upload: valda-neuber

Post on 06-Apr-2015

108 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

Modularisierung

Seminar Softwareentwicklung

Programmierstil

Helmut Schmidauer

Page 2: 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

Page 3: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 4: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

4/25

Was ist ein Modul ?

Eine Prozedur (eher nicht)

Eine Klasse

Ein Package

Eine Komponente

Ein Subsystem

Page 5: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 6: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

6/25

Modulgeschlossenheit

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

nach unterschiedlichen Aspekten

DatenorientiertFunktionsorientiert

FunktionsbibliothekAlgorithmus

Page 7: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 8: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 9: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 10: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 11: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 12: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 13: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 14: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 15: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 16: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 17: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 18: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 19: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

Page 20: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

20/25

Kategorien von Mustern

Erzeugungsmuster– Abstrakte Fabrik– Singleton

Strukturmuster– Adapter

Verhaltensmuster– Beobachter– Iterator

Page 21: Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

Danke für die Aufmerksamkeit