docs/DesignPatterns
annotate 05_antiPatterns.tex @ 37:debbd3bf76ce
Added tag Ausarbeitung final for changeset f03413250b39d73ca44b22ea1e4022fd3c9e825d
author | meillo@marmaro.de |
---|---|
date | Sat, 11 Aug 2007 22:43:34 +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 |