Mercurial > docs > DesignPatterns
view 05_antiPatterns.tex @ 37:debbd3bf76ce default tip
Added tag Ausarbeitung final for changeset f03413250b39d73ca44b22ea1e4022fd3c9e825d
author | meillo@marmaro.de |
---|---|
date | Sat, 11 Aug 2007 22:43:34 +0200 |
parents | e7ac382e4a20 |
children |
line wrap: on
line source
% @file % @brief Referat DesignPatterns `Anti-Patterns' % @author Julian Haug % @since 2007-06-21 \documentclass{beamer} \usepackage[utf8]{inputenc} \usepackage{ngerman} \usepackage{graphicx} \usepackage[automark]{scrpage2} \input{Style01} \title{Andere Patterns} \author{Julian Haug} \date{} \begin{document} \frame{ \titlepage } \section[Outline]{} \frame{ \tableofcontents } \section{Andere Arten von Mustern} \frame{ \frametitle{Andere Arten von Mustern} \begin{block}{Andere Arten von Mustern} \begin{itemize} \item Gang of Four motivieren viele Autoren zu weiteren Veröffentlichungen \item Problematik: ein Muster lässt sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren \item Es entstanden mehrere Arten von Mustern \end{itemize} \end{block} } \subsection{Beispiele anderer Muster} \frame{ \frametitle{Architekturmuster} \begin{block}{} \begin{itemize} \item beschreiben typische Software-Architekturen \item bestimmen nicht ein konkretes Teilproblem, sondern den Grundaufbau der Anwendung \item Lässt sich in 4 verschiedene Kategorien einteilen \begin{itemize} \item Mud-to-structure: hilft die Unmengen von Komponenten und Objekten eines Softwaresystems zu organisieren. \item Verteilte Systeme: unterstützten die Verwendung verteilter Ressourcen und Dienste in Netzwerken \item Interaktive Systeme: helfen Mensch-Computer-Interaktionen zu strukturieren \item Adaptive Systeme: unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen. \end{itemize} \end{itemize} \end{block} } \subsection{Idom} \frame{ \frametitle{Idom} \begin{block}{Definition} \begin{itemize} \item Beschreibt konkrete Implementierung eines Entwurfsmusters \item ist programmiersprachenspezifisch \end{itemize} \end{block} \pause \begin{block}{Anwendung} \begin{itemize} \item Konkrete Implementierung eines Entwurfsmusters. \item Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.) \item Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung) \end{itemize} \end{block} } \subsection{Weitere Beispiele} \frame{ \frametitle{Weitere Beispiele} \begin{block}{Weitere Beispiele} \begin{itemize} \item Analysemuster \\ (beschreiben typische Fälle der Anforderungsanalyse) \item Kommunikationsmuster \\ (beschreiben Kommunikationswege zwischen Personen einer Organisation) \item Organisationsmuster \\ (beschreiben Elemente der Strukturen von Organisationen) \end{itemize} \end{block} } \section{Anti-Patterns} \frame{ \frametitle{Anti-Patterns} \begin{block}{Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um} \begin{itemize} \item durch das Wissen ihrer Existenz diese zu vermeiden \item bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben \end{itemize} \end{block} \pause \begin{block}{Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung} \begin{itemize} \item Projektmanagement-Anti-Patterns \item Architektur- bzw. Design-Anti- Patterns \item Meta-Patterns \item Organisations-, Prozess- Anti-Patterns \item \textbf{Programmierungs-Anti-Patterns} \end{itemize} \end{block} } \subsection{Programmier-Anti-Patterns} \frame{ \frametitle{Programmierungs-Anti-Patterns} \begin{block}{Zwiebel} \begin{itemize} \item Neue Funktionalität wird um (oder über) die alte gelegt \item Häufig bei Erweiterungen \item Führt zu vielschichtigem Programmcode (Zwiebel) \end{itemize} \end{block} \pause \begin{block}{Lavafluss} \begin{itemize} \item in Anwendung häuft sich ``toter Quelltext'' \item Statt zu löschen wird um ihn ``herum'' programmiert \end{itemize} \end{block} } \section{Tipps zur Anwendung} \frame{ \frametitle{Tipps zur Anwendung} \begin{block}{Auswahl eines Entwurfmusters} Problem: Viele (ähnliche) Muster kommen in Frage \begin{itemize} \item Musterkatalog \item Genaue Analyse des Problems \end{itemize} \end{block} \pause \begin{block}{Verwendung des Musters} Problem: Verstehen wie das Muster unser Problem löst \begin{itemize} \item Strukturdiagramm (UML) \item Objekt/Klassenliste \item Implementierungsbeispiele \end{itemize} \end{block} \pause \begin{block}{Wann sollte KEIN Entwurfsmuster benutzt werden} \begin{itemize} \item Muster dürfen den Code nicht verkomplizieren \item Oft reicht eine Lösung die zwar weniger flexibel aber simpler ist \end{itemize} \end{block} } \section{Zusammenfassung} \frame{ \begin{block}{Zusammenfassung} \begin{itemize} \item Es gibt verschiedene Arten von Mustern – für uns von direkter Bedeutung sind Entwurfs-, Architekturmuster und Idome \item Anti-Pattern zeigen welche Fehler man vermeiden sollte \item Bei Anwendung von Mustern das Problem genau analysieren, passendes Muster suchen und gegebenenfalls anwenden \end{itemize} \end{block} } \end{document}