docs/DesignPatterns

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