changeset 11:a7ab86cddfad

added other parts but with few content yet
author meillo@marmaro.de
date Thu, 21 Jun 2007 08:23:04 +0200 (2007-06-21)
parents 3f937af7e13e
children a7bdc1211d3a
files andereMuster.tex antiPatterns.tex detailed-observer.tex einleitung.tex
diffstat 4 files changed, 778 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/andereMuster.tex	Thu Jun 21 08:23:04 2007 +0200
@@ -0,0 +1,151 @@
+% @file
+% @brief   Referat DesignPatterns `Andere Muster'
+% @author  Julian Haug
+% @since   2007-06-21
+
+
+\documentclass{beamer}
+
+
+%  \usepackage[T1]{fontenc}
+  \usepackage[utf8]{inputenc}
+  \usepackage{ngerman}
+  \usepackage{graphicx}
+  \usepackage[automark]{scrpage2}
+  \input{Style01}
+
+
+
+\begin{document}
+
+
+\title{Design Patterns ``Andere Muster''}
+\date{\today}
+
+\author{Julian Haug}
+
+%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
+
+\frame{
+  \titlepage
+}
+
+
+
+
+
+\section[Outline]{}
+\frame{
+  \tableofcontents
+}
+
+
+
+
+\section{Andere Arten von Mustern}
+
+
+\frame{ \frametitle{Andere Arten von Mustern}
+
+  \begin{block}{Andere Arten von Mustern}
+    \begin{itemize}
+      \item Gang of Four motivieren viele Autoren zu weiteren Veröffentlichungen
+      \item Problematik: ein Muster lässt sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren
+      \item Es entstanden mehrere Arten von Mustern
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{Beispiele anderer Muster}
+
+  \begin{block}{Architekturmuster}
+    \begin{itemize}
+      \item beschreiben typische Software-Architekturen
+      \item bestimmen nicht ein konkretes Teilproblem, sondern den Grundaufbau der Anwendung
+      \item Lässt sich in 4 verschiedene Kategorien einteilen
+      \begin{itemize}
+        \item Mud-to-structure: hilft die Unmengen von Komponenten und Objekten eines Softwaresystems zu organisieren.
+        \item Verteilte Systeme: unterstützten die Verwendung verteilter Ressourcen und Dienste in Netzwerken
+        \item Interaktive Systeme: helfen Mensch-Computer-Interaktionen zu strukturieren
+        \item Adaptive Systeme: unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen.
+      \end{itemize}
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{Idom}
+
+  \begin{block}{Definition}
+    \begin{itemize}
+      \item Beschreibt konkrete Implementierung eines Entwurfsmusters
+      \item ist programmiersprachenspezifisch
+    \end{itemize}
+  \end{block}
+
+  \begin{block}{Anwendung}
+    \begin{itemize}
+      \item Konkrete Implementierung eines Entwurfsmusters.
+      \item Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.)
+      \item Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung)
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{Weitere Beispiele}
+
+  \begin{block}{Weitere Beispiele}
+    \begin{itemize}
+      \item Analysemuster \\ (beschreiben typische Fälle der Anforderungsanalyse)
+      \item Kommunikationsmuster \\ (beschreiben Kommunikationswege zwischen Personen einer Organisation)
+      \item Organisationsmuster \\ (beschreiben Elemente der Strukturen von Organisationen)
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{Tipps zur Anwendung}
+
+  \begin{block}{}
+    \begin{itemize}
+      \item 
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+\section{Zusammenfassung}
+\frame{ %\frametitle{Zusammenfassend}
+  \begin{block}{Zusammenfassung}
+  \begin{itemize}
+    \item 
+    \item 
+    \item 
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Fazit}
+    \begin{itemize}
+      \item 
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+}
+
+
+\end{document}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/antiPatterns.tex	Thu Jun 21 08:23:04 2007 +0200
@@ -0,0 +1,146 @@
+% @file
+% @brief   Referat DesignPatterns `Anti-Patterns'
+% @author  Julian Haug
+% @since   2007-06-21
+
+
+\documentclass{beamer}
+
+
+%  \usepackage[T1]{fontenc}
+  \usepackage[utf8]{inputenc}
+  \usepackage{ngerman}
+  \usepackage{graphicx}
+  \usepackage[automark]{scrpage2}
+  \input{Style01}
+
+
+
+\begin{document}
+
+
+\title{Design Patterns ``Anti-Patterns''}
+\date{\today}
+
+\author{Julian Haug}
+
+%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
+
+\frame{
+  \titlepage
+}
+
+
+
+
+
+\section[Outline]{}
+\frame{
+  \tableofcontents
+}
+
+
+
+
+\section{Anti-Patterns}
+
+
+\frame{ \frametitle{Anti-Patterns}
+
+  \begin{block}{Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um}
+    \begin{itemize}
+      \item durch das Wissen ihrer Existenz diese zu vermeiden
+      \item bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben
+    \end{itemize}
+  \end{block}
+
+    \pause
+
+  \begin{block}{Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung}
+    \begin{itemize}
+      \item Projektmanagement-Anti-Patterns
+      \item Architektur- bzw. Design-Anti- Patterns
+      \item Meta-Patterns
+      \item Organisations-, Prozess- Anti-Patterns
+      \item \textbf{Programmierungs-Anti-Patterns}
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{Programmierungs-Anti-Patterns}
+
+  \begin{block}{}
+    \begin{itemize}
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+\section{Zusammenfassung}
+\frame{ %\frametitle{Zusammenfassend}
+  \begin{block}{Zusammenfassung}
+  \begin{itemize}
+    \item 
+    \item 
+    \item 
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Fazit}
+    \begin{itemize}
+      \item 
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+}
+
+
+
+\section{Fragen}
+\frame{ \frametitle{Fragen?}
+  \vspace{5ex}
+  \centerline{\huge ?}
+}
+
+
+%% Erklaerung des Vorgehens
+%% Frage: war es erfolgreich?
+%\frame{ \frametitle{}
+%
+%  \begin{block}{}
+%  \end{block}
+%
+%}
+
+
+\frame{ \frametitle{Abschließend}
+  \begin{block}{Verwendete Software}
+  \begin{itemize}
+    \item Debian GNU/Linux
+    \item \LaTeX-Beamer und \texttt{pdflatex}
+    \item Vim
+    \item qiv und ImageMagick
+    \item Mercurial
+  \end{itemize}
+  \end{block}
+
+  \begin{block}{}
+    \vspace{3ex}
+    \centerline{\textbf{Danke für eure Aufmerksamkeit}}
+  \end{block}
+}
+
+
+
+\end{document}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/detailed-observer.tex	Thu Jun 21 08:23:04 2007 +0200
@@ -0,0 +1,382 @@
+% @file
+% @brief   Referat DesignPattern `Observer'
+% @author  markus schnalke <meillo@marmaro.de>
+% @since   2007-05-30
+
+
+\documentclass{beamer}
+
+
+  \usepackage[T1]{fontenc}
+  \usepackage[latin1]{inputenc}
+  \usepackage{ngerman}
+  \usepackage{graphicx}
+  \usepackage[automark]{scrpage2}
+  \input{Style01}
+
+
+
+\begin{document}
+
+
+\title{Design Pattern ``Observer''}
+\date{\today}
+
+\author{Markus Schnalke}
+
+%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
+
+\frame{
+  \titlepage
+}
+
+
+
+
+
+\section[Outline]{}
+\frame{
+  \tableofcontents
+}
+
+
+
+
+\section{Vorgehensweise}
+
+\frame{ \frametitle{Von der anderen Seite}
+
+  \begin{block}{Gründe}
+    Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
+    Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
+  \end{block}
+  \pause
+  \begin{block}{Meine Vorgehensweise}
+    Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
+    das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
+    bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
+    sollte.
+  \end{block}
+
+  % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
+
+}
+
+
+\section{Erarbeitung des Observers}
+
+\frame{ \frametitle{Ein Beispiel}
+
+  \begin{block}{Die Situation}
+    \begin{itemize}
+      \item Personen die verkaufen möchten
+      \item Personen die kaufen möchten
+      \item Sie wollen/sollen sich nicht kennen
+      \item Möglichst effektives Vorgehen
+    \end{itemize}
+  \end{block}
+  \pause
+  \begin{block}{Vorschläge?}
+    \begin{itemize}
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\subsection{Ansatz}
+\frame{ \frametitle{Ansatz}
+
+  \begin{block}{Mögliche Vorgehen}
+  \begin{itemize}
+    \item Personen direkt ansprechen
+    \item Laut in die Menge rufen
+    \item Den Freunden erzählen, die es dann weitererzählen
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Probleme}
+    \begin{itemize}
+      \item Man weiß nicht wer Interesse hat
+      \item nicht mal wieviele
+      \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
+      \item ... oder sie sind taub
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+\subsection{Erarbeitung einer Lösung}
+
+\frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
+
+  \begin{block}{Funktionsweise}
+  \begin{itemize}
+    \item Man kann Zettel anpinnen
+    \item Hingehen und nach neuen Zetteln schauen
+    \item Zettel lesen
+    \item Zettel abnehmen
+    \item Jeder der ein paar Fähigkeiten hat kann es
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Probleme}
+    \begin{itemize}
+      \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
+      \item Man kann wichtige Zettel verpassen
+      \item Zettel sollten nicht weggenommen werden können
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+
+\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
+
+  \begin{block}{Lösung}
+  \begin{itemize}
+    \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
+    \item Pinnwand und Sekretärin sind fortan eine Einheit
+    \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
+    \item (Sie schreibt mit lesbarer Schrift)
+    \item Sie verhindert, dass Zettel abgenommen werden
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Bestehendes Problem}
+    \begin{itemize}
+      \item Man läuft immer noch oft unnötig zur Pinnwand
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
+
+  \begin{block}{Lösung}
+  \begin{itemize}
+    \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
+    \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
+    \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
+    \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
+  \end{itemize}
+  \end{block}
+
+}
+
+
+\subsection{Zusammenfassung}
+
+% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
+% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
+\frame{ \frametitle{Zusammenfassung des Beispiels}
+
+  \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
+    \begin{itemize}
+      \item Man kann neue Zettel anpinnen lassen
+      \item Man kann sich als Interessierter anmelden (und auch abmelden)
+      \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
+      \item Sie können dann zur Pinnwand gehen und sie sich anschauen
+    \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Eure Meinung?}
+    \begin{itemize}
+      \item Ist diese Struktur zufriedenstellend?
+      \item Erfüllt sie alle Anforderungen?
+      \item Was fehlt?
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+
+
+
+\section{Nun zum Pattern}
+
+
+\frame{ \frametitle{Überleitung}
+
+  \begin{block}{Neue Namen}
+    \begin{itemize}
+      \item Pinnwand-Sekretärin-Einheit -> ``Subject''
+      \item Die Zettel auf der Pinnwand -> ``subjectState''
+      \item Interessenten -> ``Observers''
+    \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Schnittstellen}
+    Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''.
+  \end{block}
+
+}
+
+
+\frame { \frametitle{UML-Diagramm des Observers}
+  \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
+}
+
+
+% Daten aus der Beschreibung des Observers von GoF
+% in welche Gruppen wird er eingeordnet
+\frame{ \frametitle{Beschreibung des Observers}
+
+  \begin{block}{Klassifizierung}
+    Verhaltensmuster, objektbasierend
+  \end{block}
+
+  \begin{block}{Auch bekannt als}
+    Publish-Subscribe, Dependents
+  \end{block}
+
+  \begin{block}{Zweck}
+    Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
+    % todo: besser formulieren
+  \end{block}
+
+  \begin{block}{Kurzbeschreibung}
+    Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
+    werden können, und um die abhängigen Objekte über Zustandsänderungen zu
+    informieren.
+    % todo: Formulierung überdenken
+  \end{block}
+
+}
+
+
+\subsection{Beispiele}
+% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
+% nicht aber (Blog + RSS)
+\frame{ \frametitle{Der Observer in der Praxis}
+
+  \begin{block}{Beispiele}
+    \begin{itemize}
+      \item Observer ist sehr verbreitet
+      \item v.a. MVC (Model = Subject; View = Observer)
+      \item Mailinglisten
+      \item Ebay Such-Abo
+    \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Aber}
+    \begin{itemize}
+      \item nicht Blog mit RSS-Feed!
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\subsection{Erweiterungen}
+% Erweiterungen, verbleibende Probleme, Kompromisse beim Design
+\frame{ \frametitle{}
+
+  \begin{block}{}
+  \end{block}
+
+}
+
+
+
+\section{Zusammenfassung}
+\frame{ %\frametitle{Zusammenfassend}
+  \begin{block}{Zusammenfassung}
+  \begin{itemize}
+    \item 
+    \item 
+    \item 
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Fazit}
+    \begin{itemize}
+      \item 
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+}
+
+
+\section{Fragen}
+\frame{ \frametitle{Fragen?}
+  \vspace{5ex}
+  \centerline{\huge ?}
+}
+
+
+% Erklaerung des Vorgehens
+% Frage: war es erfolgreich?
+\frame{ \frametitle{}
+
+  \begin{block}{}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{Abschließend}
+  \begin{block}{Verwendete Software}
+  \begin{itemize}
+    \item Debian GNU/Linux
+    \item \LaTeX-Beamer und \texttt{pdflatex}
+    \item Vim
+    \item qiv und ImageMagick
+    \item Mercurial
+  \end{itemize}
+  \end{block}
+
+  \begin{block}{}
+    \vspace{3ex}
+    \centerline{\textbf{Danke für eure Aufmerksamkeit}}
+  \end{block}
+}
+
+
+% Code (Beispiel-Implementierung)
+
+
+
+
+
+
+%\input{main2.tex}
+
+
+\end{document}
+
+
+
+
+
+
+%\subsubsection{Fehlteilmanagement}
+%\frame{ \frametitle{Fehlteilmanagement}
+%  %\includegraphics[width=10cm]{Pics/cc.png}
+%}
+
+% \vspace{2ex}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/einleitung.tex	Thu Jun 21 08:23:04 2007 +0200
@@ -0,0 +1,99 @@
+% @file
+% @brief   Referat DesignPatterns `Einleitung'
+% @author  Markus Rundel
+% @since   2007-06-21
+
+
+\documentclass{beamer}
+
+
+%  \usepackage[T1]{fontenc}
+  \usepackage[utf8]{inputenc}
+  \usepackage{ngerman}
+  \usepackage{graphicx}
+  \usepackage[automark]{scrpage2}
+  \input{Style01}
+
+
+
+\begin{document}
+
+
+\title{Design Patterns ``Einleitung''}
+\date{\today}
+
+\author{Markus Rundel}
+
+%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
+
+\frame{
+  \titlepage
+}
+
+
+
+
+
+\section[Outline]{}
+\frame{
+  \tableofcontents
+}
+
+
+
+
+\section{Vorgehensweise}
+
+
+\frame{ \frametitle{Ein Beispiel}
+
+  \begin{block}{Die Situation}
+    \begin{itemize}
+      \item Personen die verkaufen möchten
+      \item Personen die kaufen möchten
+      \item Sie wollen/sollen sich nicht kennen
+      \item Möglichst effektives Vorgehen
+    \end{itemize}
+  \end{block}
+  \pause
+  \begin{block}{Vorschläge?}
+    \begin{itemize}
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame { \frametitle{Interaktions-Diagramm des Observers}
+  \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} }
+}
+
+
+
+\section{Zusammenfassung}
+\frame{ %\frametitle{Zusammenfassend}
+  \begin{block}{Zusammenfassung}
+  \begin{itemize}
+    \item 
+    \item 
+    \item 
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Fazit}
+    \begin{itemize}
+      \item 
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+}
+
+
+\end{document}
+
+