11
|
1 % @file
|
|
2 % @brief Referat DesignPatterns `Anti-Patterns'
|
|
3 % @author Julian Haug
|
|
4 % @since 2007-06-21
|
|
5
|
|
6
|
|
7 \documentclass{beamer}
|
|
8
|
|
9 \usepackage[utf8]{inputenc}
|
|
10 \usepackage{ngerman}
|
|
11 \usepackage{graphicx}
|
|
12 \usepackage[automark]{scrpage2}
|
|
13 \input{Style01}
|
|
14
|
25
|
15 \title{Andere Patterns}
|
|
16 \author{Julian Haug}
|
|
17 \date{}
|
11
|
18
|
|
19 \begin{document}
|
|
20
|
|
21 \frame{
|
|
22 \titlepage
|
|
23 }
|
|
24
|
|
25
|
|
26 \section[Outline]{}
|
|
27 \frame{
|
|
28 \tableofcontents
|
|
29 }
|
|
30
|
|
31
|
|
32
|
19
|
33 \section{Andere Arten von Mustern}
|
|
34
|
|
35
|
|
36 \frame{ \frametitle{Andere Arten von Mustern}
|
|
37
|
|
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}
|
|
45
|
|
46 }
|
|
47
|
|
48
|
25
|
49 \subsection{Beispiele anderer Muster}
|
19
|
50
|
25
|
51 \frame{ \frametitle{Architekturmuster}
|
19
|
52
|
25
|
53 \begin{block}{}
|
19
|
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}
|
|
66
|
|
67 }
|
|
68
|
|
69
|
25
|
70 \subsection{Idom}
|
19
|
71
|
|
72 \frame{ \frametitle{Idom}
|
|
73
|
|
74 \begin{block}{Definition}
|
|
75 \begin{itemize}
|
|
76 \item Beschreibt konkrete Implementierung eines Entwurfsmusters
|
|
77 \item ist programmiersprachenspezifisch
|
|
78 \end{itemize}
|
|
79 \end{block}
|
|
80
|
25
|
81 \pause
|
|
82
|
19
|
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}
|
|
90
|
|
91 }
|
|
92
|
|
93
|
25
|
94 \subsection{Weitere Beispiele}
|
19
|
95
|
|
96 \frame{ \frametitle{Weitere Beispiele}
|
|
97
|
|
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}
|
|
105
|
|
106 }
|
|
107
|
|
108
|
|
109
|
|
110
|
|
111
|
11
|
112
|
|
113 \section{Anti-Patterns}
|
|
114
|
|
115
|
|
116 \frame{ \frametitle{Anti-Patterns}
|
|
117
|
|
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}
|
|
124
|
|
125 \pause
|
|
126
|
|
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}
|
|
136
|
|
137 }
|
|
138
|
|
139
|
25
|
140 \subsection{Programmier-Anti-Patterns}
|
11
|
141 \frame{ \frametitle{Programmierungs-Anti-Patterns}
|
|
142
|
25
|
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}
|
|
150
|
|
151 \pause
|
|
152
|
|
153 \begin{block}{Lavafluss}
|
11
|
154 \begin{itemize}
|
25
|
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}
|
|
159
|
|
160 }
|
|
161
|
|
162
|
|
163 \section{Tipps zur Anwendung}
|
|
164
|
|
165 \frame{ \frametitle{Tipps zur Anwendung}
|
|
166
|
|
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}
|
|
174
|
|
175 \pause
|
|
176
|
|
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}
|
|
185
|
|
186 \pause
|
|
187
|
|
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
|
11
|
192 \end{itemize}
|
|
193 \end{block}
|
|
194
|
|
195 }
|
|
196
|
|
197
|
|
198
|
|
199 \section{Zusammenfassung}
|
25
|
200 \frame{
|
11
|
201 \begin{block}{Zusammenfassung}
|
|
202 \begin{itemize}
|
25
|
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
|
11
|
206 \end{itemize}
|
|
207 \end{block}
|
|
208 }
|
|
209
|
|
210
|
|
211
|
|
212 \end{document}
|
|
213
|
|
214
|