Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

Slides:



Advertisements
Ähnliche Präsentationen
Benutzerorientierte Designprinzipien für die Microsoft-Guidelines
Advertisements

Prüfung objektorientierter Programme -1
Integrations- und Funktionstests im Rahmen des V-Modelles
Submodell Softwareentwicklung (SE)
Phasen und ihre Workflows
Programmieren im Großen von Markus Schmidt und Benno Kröger.
Objektorientierung Auffassung der Software als eine Sammlung
Programmierung 1 - Repetitorium
Objektorientierte Programmierung
Von David Keß, Heinrich Wölk, Daniel Hauck
Frame-Logik Eine Einführung Andreas Glausch.
Designing Software for Ease of Extension and Contraction
Kapitel 4 Datenstrukturen
Freie Universität Berlin Institut für Informatik
OO Analyse Analyseprozess Erstellen eines Modells
Design Patterns- Entwurfsmuster
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
On a Buzzword: Hierachical Structure David Parnas.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Prüfung von Simulationsprogrammen – Integrations- und Funktionstests Inhalt Vom Einzeltest.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Aufgaben des Testens Vergleich des Verhaltens einer Software mit den an sie gestellten.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
FH-Hof Optimierungsverfahren für kombinatorische Probleme Richard Göbel.
Komponentenbasierter Taschenrechner mit CORBA
SciAgents - Eine agentenbasierte Umgebung für verteilte wissenschaftliche Berechnungen Alexander StarkeSeminar Software Agenten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Agenda Einführung Haskell QuickCheck Zusammenfassung
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
1 Analyse von Software-statisch- Darmstadt,den Presentation: Sebastian Schikowski Steve Kenfack.
PG 520 Intelligence Service – gezielte Informationen aus dem Internet
Prüfkriterien für objektorientierte Systeme
3.+4. Übungsblatt Abstraktion, Modultypen und OO Erweiterung des Entwurfs Benutzbarkeitsbeziehungen 11. Mai 2006 Dipl.-Inform. Christian Fuß.
Entwurfsmuster – Iterator
Entwurfsmuster EDV Entwurfsmuster.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
OO Analyse und Entwurf für Anwender XIII. Objektorientierte Benutzeroberfäche Dr. Michael Löwe.
Übung zum Thema Architektur
Wizards & Builders GmbH Modularisierung von SW Modularisierung von Anwendungen mit Microsoft Visual FoxPro.
Seminar Softwaretechnik SS2005 Radouane El Marjani ( ) Institut für Softwaretechnik und theoretische Informatik Fakultät IV -
Objektorientierte Modellierung
Entwurf und Realisierung einer digitalen Bibliothek zur Verwaltung von Notenhandschriften Dipl.-Ing. Temenushka Ignatova Datenbank- und Informationssysteme,
Mit 3 Schichte zum Erfolg
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Wasserfallmodell und Einzelbegriffe
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Objektorientierung.
Objektorientierte Modellierung mit UML
WIR LÖSEN DAS PROBLEM FÜR SIE
Software Engineering Grundlagen
Eike Schallehn, Martin Endig
Software Design Patterns
Vortrag - Diplomarbeiten (HS I)
Software Engineering Strukturierter Entwurf
2 Datenabstraktion Geheimnisprinzip:
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Distributed Database Systems Parallele Datenbanksysteme von Stefan Schneider.
Vorlesung Software Engineering I
Objektorientierte (OO) Programmierung
Objektorientierte Programmierung Was ist das eigentlich ?
1 Lutz Ullrich SOA – serviceorientierte Architektur SOA – Was ist das?
 Präsentation transkript:

Seminar Softwareentwicklung Programmierstil Helmut Schmidauer Modularisierung Seminar Softwareentwicklung Programmierstil Helmut Schmidauer

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

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

Was ist ein Modul ? Eine Prozedur (eher nicht) Eine Klasse Ein Package Eine Komponente Ein Subsystem

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

Modulgeschlossenheit Ein Modul soll für eine geschlossene Aufgabe zuständig sein nach unterschiedlichen Aspekten Funktionsorientiert Funktionsbibliothek Datenorientiert Algorithmus

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

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

Modulbindung - Modulkopplung 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 Komplexität Modulbindung Gesamtkomplexität Modulkopplung

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

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

Interferenzfreiheit keine Nebenwirkungen auf andere Module 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

Importzahl, Verwendungszahl 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 sehr Allgemein / hohe Wiederverwendung Sammlung unzusammenhängender Funktionen ? es sollte auch eine starke Modulbindung herrschen VZ=2 IZ=3

Einbettung in Architektur Application Framework Steuermodule Benutzer kommunikation Eventloop Initialisierung Steuerung Problem orientiert Problemlösung Datenstrukturen häufige Operationen spezielle Ein/Ausgabe Hilfsmodule Bibliotheken Kommunikation Betriebssystem math. Funktionen Ein/Ausgabe System bibliotheken

Entwurfstechniken Zwei Varianten der Abstraktion: Top Down Bottom Up Dekomposition Zu Beginn Lösungsidee ohne Realisierungsdetails Schrittweise Konkretisierung Bottom Up Komposition Aus erforderlichen Basiselementen wird sukzessive das System zusammengestellt

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

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

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

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

Kategorien von Mustern Erzeugungsmuster Abstrakte Fabrik Singleton Strukturmuster Adapter Verhaltensmuster Beobachter Iterator

Danke für die Aufmerksamkeit