docs/DesignPatterns

annotate 05_antiPatterns.tex @ 34:b2cefbd90180

some redesign; new content for summary and appendix
author meillo@marmaro.de
date Sat, 11 Aug 2007 12:49:00 +0200
parents 356aeb2f53f3
children
rev   line source
meillo@11 1 % @file
meillo@11 2 % @brief Referat DesignPatterns `Anti-Patterns'
meillo@11 3 % @author Julian Haug
meillo@11 4 % @since 2007-06-21
meillo@11 5
meillo@11 6
meillo@11 7 \documentclass{beamer}
meillo@11 8
meillo@11 9 \usepackage[utf8]{inputenc}
meillo@11 10 \usepackage{ngerman}
meillo@11 11 \usepackage{graphicx}
meillo@11 12 \usepackage[automark]{scrpage2}
meillo@11 13 \input{Style01}
meillo@11 14
meillo@25 15 \title{Andere Patterns}
meillo@25 16 \author{Julian Haug}
meillo@25 17 \date{}
meillo@11 18
meillo@11 19 \begin{document}
meillo@11 20
meillo@11 21 \frame{
meillo@11 22 \titlepage
meillo@11 23 }
meillo@11 24
meillo@11 25
meillo@11 26 \section[Outline]{}
meillo@11 27 \frame{
meillo@11 28 \tableofcontents
meillo@11 29 }
meillo@11 30
meillo@11 31
meillo@11 32
meillo@19 33 \section{Andere Arten von Mustern}
meillo@19 34
meillo@19 35
meillo@19 36 \frame{ \frametitle{Andere Arten von Mustern}
meillo@19 37
meillo@19 38 \begin{block}{Andere Arten von Mustern}
meillo@19 39 \begin{itemize}
meillo@19 40 \item Gang of Four motivieren viele Autoren zu weiteren Veröffentlichungen
meillo@19 41 \item Problematik: ein Muster lässt sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren
meillo@19 42 \item Es entstanden mehrere Arten von Mustern
meillo@19 43 \end{itemize}
meillo@19 44 \end{block}
meillo@19 45
meillo@19 46 }
meillo@19 47
meillo@19 48
meillo@25 49 \subsection{Beispiele anderer Muster}
meillo@19 50
meillo@25 51 \frame{ \frametitle{Architekturmuster}
meillo@19 52
meillo@25 53 \begin{block}{}
meillo@19 54 \begin{itemize}
meillo@19 55 \item beschreiben typische Software-Architekturen
meillo@19 56 \item bestimmen nicht ein konkretes Teilproblem, sondern den Grundaufbau der Anwendung
meillo@19 57 \item Lässt sich in 4 verschiedene Kategorien einteilen
meillo@19 58 \begin{itemize}
meillo@19 59 \item Mud-to-structure: hilft die Unmengen von Komponenten und Objekten eines Softwaresystems zu organisieren.
meillo@19 60 \item Verteilte Systeme: unterstützten die Verwendung verteilter Ressourcen und Dienste in Netzwerken
meillo@19 61 \item Interaktive Systeme: helfen Mensch-Computer-Interaktionen zu strukturieren
meillo@19 62 \item Adaptive Systeme: unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen.
meillo@19 63 \end{itemize}
meillo@19 64 \end{itemize}
meillo@19 65 \end{block}
meillo@19 66
meillo@19 67 }
meillo@19 68
meillo@19 69
meillo@25 70 \subsection{Idom}
meillo@19 71
meillo@19 72 \frame{ \frametitle{Idom}
meillo@19 73
meillo@19 74 \begin{block}{Definition}
meillo@19 75 \begin{itemize}
meillo@19 76 \item Beschreibt konkrete Implementierung eines Entwurfsmusters
meillo@19 77 \item ist programmiersprachenspezifisch
meillo@19 78 \end{itemize}
meillo@19 79 \end{block}
meillo@19 80
meillo@25 81 \pause
meillo@25 82
meillo@19 83 \begin{block}{Anwendung}
meillo@19 84 \begin{itemize}
meillo@19 85 \item Konkrete Implementierung eines Entwurfsmusters.
meillo@19 86 \item Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.)
meillo@19 87 \item Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung)
meillo@19 88 \end{itemize}
meillo@19 89 \end{block}
meillo@19 90
meillo@19 91 }
meillo@19 92
meillo@19 93
meillo@25 94 \subsection{Weitere Beispiele}
meillo@19 95
meillo@19 96 \frame{ \frametitle{Weitere Beispiele}
meillo@19 97
meillo@19 98 \begin{block}{Weitere Beispiele}
meillo@19 99 \begin{itemize}
meillo@19 100 \item Analysemuster \\ (beschreiben typische Fälle der Anforderungsanalyse)
meillo@19 101 \item Kommunikationsmuster \\ (beschreiben Kommunikationswege zwischen Personen einer Organisation)
meillo@19 102 \item Organisationsmuster \\ (beschreiben Elemente der Strukturen von Organisationen)
meillo@19 103 \end{itemize}
meillo@19 104 \end{block}
meillo@19 105
meillo@19 106 }
meillo@19 107
meillo@19 108
meillo@19 109
meillo@19 110
meillo@19 111
meillo@11 112
meillo@11 113 \section{Anti-Patterns}
meillo@11 114
meillo@11 115
meillo@11 116 \frame{ \frametitle{Anti-Patterns}
meillo@11 117
meillo@11 118 \begin{block}{Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um}
meillo@11 119 \begin{itemize}
meillo@11 120 \item durch das Wissen ihrer Existenz diese zu vermeiden
meillo@11 121 \item bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben
meillo@11 122 \end{itemize}
meillo@11 123 \end{block}
meillo@11 124
meillo@11 125 \pause
meillo@11 126
meillo@11 127 \begin{block}{Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung}
meillo@11 128 \begin{itemize}
meillo@11 129 \item Projektmanagement-Anti-Patterns
meillo@11 130 \item Architektur- bzw. Design-Anti- Patterns
meillo@11 131 \item Meta-Patterns
meillo@11 132 \item Organisations-, Prozess- Anti-Patterns
meillo@11 133 \item \textbf{Programmierungs-Anti-Patterns}
meillo@11 134 \end{itemize}
meillo@11 135 \end{block}
meillo@11 136
meillo@11 137 }
meillo@11 138
meillo@11 139
meillo@25 140 \subsection{Programmier-Anti-Patterns}
meillo@11 141 \frame{ \frametitle{Programmierungs-Anti-Patterns}
meillo@11 142
meillo@25 143 \begin{block}{Zwiebel}
meillo@11 144 \begin{itemize}
meillo@25 145 \item Neue Funktionalität wird um (oder über) die alte gelegt
meillo@25 146 \item Häufig bei Erweiterungen
meillo@25 147 \item Führt zu vielschichtigem Programmcode (Zwiebel)
meillo@25 148 \end{itemize}
meillo@25 149 \end{block}
meillo@25 150
meillo@25 151 \pause
meillo@25 152
meillo@25 153 \begin{block}{Lavafluss}
meillo@25 154 \begin{itemize}
meillo@25 155 \item in Anwendung häuft sich ``toter Quelltext''
meillo@25 156 \item Statt zu löschen wird um ihn ``herum'' programmiert
meillo@11 157 \end{itemize}
meillo@11 158 \end{block}
meillo@11 159
meillo@11 160 }
meillo@11 161
meillo@11 162
meillo@25 163 \section{Tipps zur Anwendung}
meillo@25 164
meillo@25 165 \frame{ \frametitle{Tipps zur Anwendung}
meillo@25 166
meillo@25 167 \begin{block}{Auswahl eines Entwurfmusters}
meillo@25 168 Problem: Viele (ähnliche) Muster kommen in Frage
meillo@25 169 \begin{itemize}
meillo@25 170 \item Musterkatalog
meillo@25 171 \item Genaue Analyse des Problems
meillo@25 172 \end{itemize}
meillo@25 173 \end{block}
meillo@25 174
meillo@25 175 \pause
meillo@25 176
meillo@25 177 \begin{block}{Verwendung des Musters}
meillo@25 178 Problem: Verstehen wie das Muster unser Problem löst
meillo@25 179 \begin{itemize}
meillo@25 180 \item Strukturdiagramm (UML)
meillo@25 181 \item Objekt/Klassenliste
meillo@25 182 \item Implementierungsbeispiele
meillo@25 183 \end{itemize}
meillo@25 184 \end{block}
meillo@25 185
meillo@25 186 \pause
meillo@25 187
meillo@25 188 \begin{block}{Wann sollte KEIN Entwurfsmuster benutzt werden}
meillo@25 189 \begin{itemize}
meillo@25 190 \item Muster dürfen den Code nicht verkomplizieren
meillo@25 191 \item Oft reicht eine Lösung die zwar weniger flexibel aber simpler ist
meillo@25 192 \end{itemize}
meillo@25 193 \end{block}
meillo@25 194
meillo@25 195 }
meillo@25 196
meillo@25 197
meillo@11 198
meillo@11 199 \section{Zusammenfassung}
meillo@25 200 \frame{
meillo@11 201 \begin{block}{Zusammenfassung}
meillo@11 202 \begin{itemize}
meillo@25 203 \item Es gibt verschiedene Arten von Mustern – für uns von direkter Bedeutung sind Entwurfs-, Architekturmuster und Idome
meillo@25 204 \item Anti-Pattern zeigen welche Fehler man vermeiden sollte
meillo@25 205 \item Bei Anwendung von Mustern das Problem genau analysieren, passendes Muster suchen und gegebenenfalls anwenden
meillo@11 206 \end{itemize}
meillo@11 207 \end{block}
meillo@11 208 }
meillo@11 209
meillo@11 210
meillo@11 211
meillo@11 212 \end{document}
meillo@11 213
meillo@11 214