-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathpresentation.tex
More file actions
378 lines (362 loc) · 15.6 KB
/
presentation.tex
File metadata and controls
378 lines (362 loc) · 15.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{datetime2}
\usepackage{multicol}
\usepackage{tikz}
\usetikzlibrary{shadows,arrows,fit,matrix,backgrounds}
\usepackage{calc}
\usepackage{booktabs}
\usepackage{makecell}
\usepackage[font=scriptsize]{caption}
\usepackage{csquotes}
\usepackage{xcolor}
\usepackage[ngerman]{babel}
\usetheme{metropolis}
\usepackage[
style=alphabetic,
citestyle=alphabetic,
sorting=nyt]{biblatex}
\addbibresource{literatur.bib}
\setbeamertemplate{frametitle continuation}{\insertcontinuationcount}
% % Definition Progressbar
\makeatletter
\newlength{\custom@progressinheadfoot}
\setbeamertemplate{progress bar in head/foot}{
\nointerlineskip
\setlength{\custom@progressinheadfoot}{%
\paperwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}%
}%
\begin{beamercolorbox}[wd=\paperwidth]{progress bar in head/foot}
\begin{tikzpicture}
\draw[bg, fill=bg] (0,0) rectangle (\paperwidth, 0.4em);
\draw[fg, fill=fg] (0,0) rectangle (\custom@progressinheadfoot, 0.4em);
\end{tikzpicture}%
\end{beamercolorbox}
}
\addtobeamertemplate{footline}{}{%
\usebeamertemplate*{progress bar in head/foot}%
}
\tikzset{
block/.style = { rectangle, draw=blue, thick,
fill=blue!20, text width=4em,
rounded corners,execute at begin node=\setlength{\baselineskip}{8pt} },
line/.style = {draw, thick, ->},
block2/.style = {block, text width= 6em},
block3/.style = {block, text width=0.7\textwidth, drop shadow, minimum height=1.5em},
block4/.style = {block, minimum height=2.2em, drop shadow},
block5/.style = {block, drop shadow, text centered},
line2/.style = {line, <->},
}
{
\tikzset{terminal/.append style={text height=1.5ex,text depth=.25ex}}
\tikzset{nonterminal/.append style={text height=1.5ex,text depth=.25ex}}
}
\title{Softwarearchitekturen}
\subtitle{Wie wird ein Entwurf für eine Softwarearchitektur erzeugt?}
\author{Sidney Kuyateh \& Steffen Walter}
\institute{Duale Hochschule Baden-Württemberg}
\date{\today}
\setbeamercolor{progress bar in head/foot}{fg=orange, bg=lightgray}
\begin{document}
\maketitle
\AtBeginSection{
\begin{frame}{Überblick}
\scriptsize
\setlength{\baselineskip}{7pt}
\tableofcontents[sectionstyle=show, subsectionstyle=show/shaded,currentsection]
\end{frame}
}
\begin{frame}{Überblick}
\scriptsize
\setlength{\baselineskip}{7pt}
\tableofcontents[sectionstyle=show]
\end{frame}
%%%% Steffen %%%%
\section{Einführung}
\metroset{block=fill}
\subsection{Einführung Softwarearchitekturen}
\begin{frame}{Einführung Softwarearchitekturen}
\begin{block}{Definition 1:}
\enquote{Softwarearchitektur: [...] Strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Beziehungen.} (\cite{balzert} Seite 520)
\end{block}
\begin{block}{Definition 2:}
\enquote{Strukturen eines Softwaresystems: Softwareteile, die Beziehungen zwischen diesen und die Eigenschaften der Softwareteile und ihrer Beziehungen.} (\cite{clements})
\end{block}
\end{frame}
\section{Architektursichten}
\subsection{Perspektiven}
\begin{frame}{Perspektiven}
\begin{columns}
\column{0.5\textwidth}
\begin{itemize}
\item Es existiert kein Modell, welches alle relevanten Informationen beinhaltet
\item Verschiedene Perspektiven (vgl. \cite{4+1})
\begin{itemize}
\item Logische Sicht
\item Prozessorientierte Sicht
\item Entwicklungsorientierte Sicht
\item Physische Sicht
\textcolor{gray}{\item Konzeptionelle Sicht}
\end{itemize}
\end{itemize}
\column{0.5\textwidth}
\begin{figure}
\includegraphics[width=\textwidth]{4+1.jpg}
\caption{Darstellung 4+1-Sichtenmodell (vgl. \cite{4+1pic})}
\end{figure}
\end{columns}
\end{frame}
\subsection{Notationen}
\begin{frame}{Notationen}
\begin{columns}
\column{0.5\textwidth}
\textbf{Informelle Notation (vgl. \cite[ S. 8]{req}}):
\begin{itemize}
\item Syntax und Semantik nicht oder nur informell vorgegeben
\item Beispiel: freie Diagramme
\item Vorteilhaft bei der Planung und des Entwurfs von Systemarchitekturen (vgl. \cite[ S. 191]{sommer})
\end{itemize}
\column{0.5\textwidth}
\textbf{Semi-formale Notation (vgl. \cite[ S. 8]{req}}):
\begin{itemize}
\item Syntax vorgegeben, Semantik halbformal beschrieben
\item Beispiele: UML, OCL
\item Vorteilhaft bei der Dokumentation von Systemarchitekturen (vgl. \cite[ S. 191]{sommer})
\end{itemize}
\end{columns}
\textit{Auch existiert die Architectural Description Language (ADL). Nachteil: sehr spezifisch auf das Anwendungfeld zugeschnitten.}
\end{frame}
\section{Architekturmuster}
\subsection{Definition}
\begin{frame}{Definition}
\begin{block}{Merkmale von Architekturmustern (vgl. \cite{wulff}):}
\begin{itemize}
\item \enquote{Architekturmuster beschreiben die grundsätzliche
Struktur und Organisation einer Anwendung und
liegen auf der höchsten Abstraktionsebene.}
\item \enquote{Ein Architekturmuster beschreibt die Menge
vordefinierter Subsysteme, spezifiziert deren
Zuständigkeit und enthält Regeln zu Organisation
der Beziehungen zwischen ihnen.}
\item \enquote{Architekturmuster sind prinzipiell
sprach neutral
und Plattform unabhängig.}
\end{itemize}
\end{block}
\end{frame}
\subsection{Model-View-Controller-Muster}
\begin{frame}[allowframebreaks]{Model-View-Controller-Muster}
\begin{figure}
\includegraphics[width=0.8\textwidth]{mvc.png}
\caption{Model-View-Controller (MVC) (vgl. \cite[ S.193]{sommer})}
\end{figure}
\begin{figure}
\includegraphics[width=0.6\textwidth]{mvc_bsp.png}
\caption{Architektur eine Webanwendung im MVC-Modell (vgl. \cite[ S.193]{sommer})}
\end{figure}
\end{frame}
\subsection{Schichtenarchitektur}
\begin{frame}{Schichtenarchitektur (vgl. \cite[ S. 194]{sommer})}
\begin{tabular}{*{2}{l}}
\toprule
\textbf{Name}&\textbf{Schichtenarchitektur}\\
\midrule
\midrule
\textbf{Beschreibung}&\makecell[l]{Strukturierung in Schichten und hierarchischer\\ Aufbau von Diensten.}\\
\midrule
\textbf{Verwendung}&\makecell[l]{Zur Erweiterung von Systemen, der Arbeit in\\ Teams und bei mehreren Sicherheitsebenen.}\\
\midrule
\textbf{Vorteile}&\makecell[l]{Bei konstanten Schnittstellen können ganze\\ Schichten ausgetauscht werden.\\ Modulare Nutzung ist möglich.}\\
\midrule
\textbf{Nachteile}&\makecell[l]{Probleme durch klare Trennung von Schichten\\ und Einhaltung der Hierarchie.}\\
\bottomrule
\end{tabular}
\end{frame}
\subsection{Repository-Architektur}
\begin{frame}{Repository-Architektur (vgl. \cite[ S. 196f]{sommer})}
\begin{tabular}{*{2}{l}}
\toprule
\textbf{Name}&\textbf{Repository-Architektur}\\
\midrule
\midrule
\textbf{Beschreibung}&\makecell[l]{Zentrale Schnittstelle und Datenspeicher ist das\\ Repository. Interaktion zwischen Komponenten\\ läuft ausschließlich über das Repository.}\\
\midrule
\textbf{Verwendung}&\makecell[l]{Fokus auf lange Speicherung und große Daten-\\mengen.}\\
\midrule
\textbf{Vorteile}&\makecell[l]{Unabhängigkeit der Komponenten, Systemweite\\ Änderungen durch eine Komponente möglich.}\\
\midrule
\textbf{Nachteile}&\makecell[l]{Fehler beim Repository wirken sich auf das ganze\\ System aus. Flaschenhals durch zentrale Kom-\\munikationsschnittstelle}\\
\bottomrule
\end{tabular}
\end{frame}
\subsection{Client-Server-Architektur}
\begin{frame}{Client-Server-Architektur (vgl. \cite[ S. 198]{sommer})}
\begin{tabular}{*{2}{l}}
\toprule
\textbf{Name}&\textbf{Client-Server-Architektur}\\
\midrule\midrule
\textbf{Beschreibung}&\makecell[l]{Funktionen werden durch Dienste zur Verfügung\\ gestellt. Jeder Dienst wird durch einen Server\\ bereitgestellt. Clients greifen auf den Server zu\\ um den gewünschten Dienst aufzurufen.}\\\midrule
\textbf{Verwendung}&\makecell[l]{Zugriff auf gemeinsame Datenbank möglich. Gute\\ Hardwareauslastung durch serverbasiertes Modell.}\\\midrule
\textbf{Vorteile}&\makecell[l]{Verteilung über Netzwerk ist möglich. Grund-\\funktionen können zentral angeboten werden.}\\\midrule
\textbf{Nachteile}&\makecell[l]{Angriffe über das Netzwerk sind möglich.\\ Performanceeinbußen durch Netzwerkprotokolle.}\\
\bottomrule
\end{tabular}
\end{frame}
%%%% Sidney %%%%
\section{Anwendungsarchitekturen}
\subsection{Nutzung von Anwendungsarchitekturen}
\begin{frame}{Nutzung von Anwendungsarchitekturen}
\begin{itemize}
\item Enthalten die Haupteigenschaften einer Systemklasse
\item Allgemeine architektonische Struktur kann beibehalten werden für neue Systeme desselben Typs
\item Hilfe bei:
\begin{itemize}
\item Funktion von Anwendungen verstehen
\item Anwendungen desselben Typs vergleichen
\item Systementwürfe für Anwendungen vergleichen
\item Wiederverwendbarkeit umfangreicher Komponenten einschätzen
\end{itemize}
\end{itemize}
\end{frame}
\subsection{Transaktionsverarbeitende Systeme}
\begin{frame}{Transaktionsverarbeitende Systeme}
\begin{block}{Definition:}
\enquote{Das Ziel Transaktionsverarbeitender Systeme (TP) ist die Verarbeitung von Benutzeranfragen nach Informationen aus einer Datenbank oder Anfragen zum Aktualisieren der Datenbank.} \cite[S. 204]{sommer}
\end{block}
\begin{itemize}
\item Alle Schritte der Transaktion müssen abgeschlossen sein, bevor Änderungen in die Datenbank geschrieben werden
\item Transaktionsmanager ist für die Kommunikation mit der Datenbank verantwortlich
\end{itemize}
\begin{figure}
\begin{tikzpicture}[text centered]
\matrix[ampersand replacement=\&, column sep=4mm] {
\node (p1) [block4] {\tiny E/A-Verarbeitung}; \&
\node (p2) [block4] {\tiny Anwendungs"-logik}; \&
\node (p3) [block4] {\tiny Transaktions"-manager}; \&
\node (p4) [block4] {\tiny Datenbank}; \\
};
\path [line] (p1) -> (p2);
\path [line] (p2) -> (p3);
\path [line] (p3) -> (p4);
\end{tikzpicture}
\caption{Die Struktur transaktionsverarbeitender Anwendungen \cite[S. 204]{sommer}}
\end{figure}
\end{frame}
\subsection{Informationssysteme}
\begin{frame}{Informationssysteme 1}
\begin{itemize}
\item Alle Systeme mit einer gemeinsam genutzten Datenbank können als transaktionsbasierte Informationssysteme betrachtet werden (vgl. \cite[S. 205]{sommer})
\item Kontrollierter Zugriff auf eine große Informationsbasis
\end{itemize}
\begin{figure}
\begin{tikzpicture}[text centered]
\matrix[row sep=2mm] {
\node (p1) [block3] {\tiny Benutzerschnittstelle}; \\
\node (p2) [block3] {\tiny \begin{tabular}{l r}
Benutzerkommunikation & Authentifizierung und Autorisation
\end{tabular}
}; \\
\node (p3) [block3] {\tiny Abrufen und Ändern von Informationen}; \\
\node (p4) [block3] {\tiny Transaktionsverwaltung \\ Datenbank}; \\
};
\end{tikzpicture}
\caption{Schichtenarchitektur eines Informationssystems \cite[S. 205]{sommer}}
\end{figure}
\end{frame}
\begin{frame}{Informationssysteme 2}
\begin{itemize}
\item Heutzutage meist webbasierte Systeme
\item Schichten häufig softwaretechnisch aufgeteilt:
\begin{itemize}
\item Webserver: Benutzerkommunikation
\item Anwendungsserver: Anwendungslogik, Abrufen und Ändern von Informationen
\item Datenbankserver: Transaktionsmanagement, Ausführen der Datenbankoperationen
\end{itemize}
\end{itemize}
\end{frame}
\subsection{Sprachverarbeitende Systeme}
\begin{frame}{Sprachverarbeitende Systeme 1}
\begin{itemize}
\item Übersetzen eine natürliche oder künstliche Sprache in eine andere Darstellung \cite[S. 207]{sommer}
\item Beispiele: Compiler, Dateikonverter, Natürliche Übersetzungssysteme
\end{itemize}
\begin{figure}
\begin{tikzpicture}
\matrix[ampersand replacement=\&, column sep = 5mm, row sep = 5mm] {
\node (p1) [block] {\tiny Anweisungen der Quellsprache}; \& \node (p2) [block2] {\tiny \textbf{Übersetzer:} \\[1em] Syntax prüfen; \\ Semantik prüfen; \\ Erstellen}; \& \\
\& \node (p3) [block2] {\tiny abstrakte Maschinenanweisungen}; \& \\
\node (p4) [block] {\tiny Daten}; \& \node (p5) [block2] {\tiny \textbf{Interpreter:} \\[1em] abrufen; \\ ausführen}; \&
\node (p6) [block] {\tiny Ergebnisse};\\
};
\path [line] (p1) -> (p2);
\path [line] (p2) -> (p3);
\path [line] (p3) -> (p5);
\path [line] (p4) -> (p5);
\path [line] (p5) -> (p6);
\end{tikzpicture}
\caption{Die Architektur eines sprachverarbeitenden Systems \cite[S. 208]{sommer}}
\end{figure}
\end{frame}
\begin{frame}{Sprachverarbeitende Systeme 2}
\begin{itemize}
\item Architektur eines Compilers:
\begin{itemize}
\item lexikalische Analyse
\item Symboltabelle
\item Syntaxanalyse
\item Syntaxbaum
\item Semantikanalyse
\item Codegenerator
\end{itemize}
\end{itemize}
\begin{figure}
\begin{tikzpicture}
\matrix[ampersand replacement=\&, column sep = 5mm, row sep = 5mm] {
\& \node (p1) [block5] {\tiny
Symboltabelle \\
Syntaxbaum}; \& \\
\node (p2) [block5] {\tiny lexikalische Analyse}; \& \node (p3) [block5] {\tiny syntaktische Analyse}; \& \node (p4) [block5] {\tiny semantische Analyse}; \& \node (p5) [block5] {\tiny Codegenerierung};\\
};
\path [line2] (p1) -> (p2);
\path [line2] (p1) -> (p3);
\path [line2] (p1) -> (p4);
\path [line2] (p1) -> (p5);
\path [line] (p2) -> (p3);
\path [line] (p3) -> (p4);
\path [line] (p4) -> (p5);
\end{tikzpicture}
\caption{Pipes-and-Filter-Architektur für einen Compiler \cite[S. 209]{sommer}}
\end{figure}
\end{frame}
\begin{frame}{Sprachverarbeitende Systeme 3}
\begin{itemize}
\item Problem bei der Pipes-and-Filter-Architektur: Verbindung mit weiteren Werkzeugen nicht möglich
\item Effektiver: Repository-Architektur
\end{itemize}
\begin{figure}
\begin{tikzpicture}
\matrix (table) [matrix of nodes, nodes in empty cells, ampersand replacement=\&, column sep = 10mm, row sep = 10mm] {
\& \node (p1) [block5] {\tiny lexikalische Analyse}; \& \node [block5] (p2) {\tiny syntaktische Analyse}; \& \node (p3) [block5] {\tiny semantische Analyse}; \\
\node (p4) [block5] {\tiny Textformatierer}; \& \node [block5, minimum height = 1em] (p11) {\tiny abstrakter Syntaxbaum}; \& \node [block, minimum height = 1em] (p12) {\tiny Grammatik\-definition}; \&[-5mm] \node [block5] (p5) {\tiny Optimierer}; \\
\node (p6) [block5] {\tiny Editor}; \& \node [block5, minimum height = 1em] (p13) {\tiny Symbol-\\tabelle}; \& \node [block5, minimum height = 1em] (p14) {\tiny Ausgabe\-definition}; \&[-5mm] \node [block5] (p7) {\tiny Codegenerator}; \\
};
\begin{scope}[on background layer]
\node (p10) [fit=(p11)(p12)(p13)(p14),fill=blue!50]{Repository};
\end{scope}
\path [line2] (p10) -> (p2);
\path [line2] (p10) -> (p3);
\path [line2] (p10) -> (p4);
\path [line2] (p10) -> (p5);
\path [line2] (p10) -> (p1);
\path [line2] (p10) -> (p6);
\path [line2] (p10) -> (p7);
\end{tikzpicture}
\caption{Repository-Architektur für ein sprachverarbeitendes System \cite[S. 209]{sommer}}
\end{figure}
\end{frame}
\begin{frame}[allowframebreaks]
\frametitle{Quellen}
\renewcommand{\bibfont}{\scriptsize}
\printbibliography[heading=none]
\end{frame}
\end{document}