view 05_antiPatterns.tex @ 35:05f432307ba2

trivial change
author meillo@marmaro.de
date Sat, 11 Aug 2007 15:40:50 +0200
parents e7ac382e4a20
children
line wrap: on
line source

% @file
% @brief   Referat DesignPatterns `Anti-Patterns'
% @author  Julian Haug
% @since   2007-06-21


\documentclass{beamer}

  \usepackage[utf8]{inputenc}
  \usepackage{ngerman}
  \usepackage{graphicx}
  \usepackage[automark]{scrpage2}
  \input{Style01}

  \title{Andere Patterns}
  \author{Julian Haug}
  \date{}

\begin{document}

\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}

}


\subsection{Beispiele anderer Muster}

\frame{ \frametitle{Architekturmuster}

  \begin{block}{}
    \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}

}


\subsection{Idom}

\frame{ \frametitle{Idom}

  \begin{block}{Definition}
    \begin{itemize}
      \item Beschreibt konkrete Implementierung eines Entwurfsmusters
      \item ist programmiersprachenspezifisch
    \end{itemize}
  \end{block}

  \pause

  \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}

}


\subsection{Weitere Beispiele}

\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}

}






\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}

}


\subsection{Programmier-Anti-Patterns}
\frame{ \frametitle{Programmierungs-Anti-Patterns}

  \begin{block}{Zwiebel}
    \begin{itemize}
      \item Neue Funktionalität wird um (oder über) die alte gelegt
      \item Häufig bei Erweiterungen
      \item Führt zu vielschichtigem Programmcode (Zwiebel)
    \end{itemize}
  \end{block}

  \pause

  \begin{block}{Lavafluss}
    \begin{itemize}
      \item in Anwendung häuft sich ``toter Quelltext''
      \item Statt zu löschen wird um ihn ``herum'' programmiert
    \end{itemize}
  \end{block}

}


\section{Tipps zur Anwendung}

\frame{ \frametitle{Tipps zur Anwendung}

  \begin{block}{Auswahl eines Entwurfmusters}
    Problem: Viele (ähnliche) Muster kommen in Frage
    \begin{itemize}
      \item Musterkatalog
      \item Genaue Analyse des Problems
    \end{itemize}
  \end{block}

  \pause

  \begin{block}{Verwendung des Musters}
    Problem: Verstehen wie das Muster unser Problem löst
    \begin{itemize}
      \item Strukturdiagramm (UML)
      \item Objekt/Klassenliste
      \item Implementierungsbeispiele
    \end{itemize}
  \end{block}

  \pause

  \begin{block}{Wann sollte KEIN Entwurfsmuster benutzt werden}
    \begin{itemize}
      \item Muster dürfen den Code nicht verkomplizieren
      \item Oft reicht eine Lösung die zwar weniger flexibel aber simpler ist
    \end{itemize}
  \end{block}

}



\section{Zusammenfassung}
\frame{
  \begin{block}{Zusammenfassung}
  \begin{itemize}
    \item Es gibt verschiedene Arten von Mustern – für uns von direkter Bedeutung sind Entwurfs-, Architekturmuster und Idome
    \item Anti-Pattern zeigen welche Fehler man vermeiden sollte
    \item Bei Anwendung von Mustern das Problem genau analysieren, passendes Muster suchen und gegebenenfalls anwenden
  \end{itemize}
  \end{block}
}



\end{document}