\documentclass[a4]{beamer}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage{listings}
\usepackage{color}

\title{SEE : Projet STAN}
\author{Guillaume Libersat <glibersat@linux62.org>}
\date{Mardi 15 Janvier 2008}

\usecolortheme{dolphin}
\usefonttheme{default}
\useinnertheme{rounded}
\useoutertheme{shadow}

\begin{document}

\maketitle

\begin{frame}
  \tableofcontents[subsectionstyle=hide]
\end{frame}

\section{Vérification à posteriori}

\begin{frame}
  \frametitle{Vérification à posteriori}
  
  Fonctionnement
  \begin{enumerate}
  \item Lecture des règles du DSL
  \item Lecture d'une classe (Bcel)
  \item Vérification des accès des attributs
  \item Lecture d'une signature de méthode
  \item Vérification des règles
  \item Rejet ou non de la signature
  \end{enumerate}

\end{frame}

\begin{frame}
  \frametitle{Le DSL}

  Caractéristiques
  \begin{itemize}
  \item Grammaire implémentée avec AntLR[1]
  \item Génère un AST
  \item Création des règles au cours de la lecture
  \end{itemize}

\pause

  Sémantique des règles

\begin{tabular}{|l|l|l|l|l|l|l|}
\hline
      & $I_p$   & $I_s$ & $C_p$ & $C_s$ & $O_p$ & $O_s$ \\ \hline
$I_p$ & $\surd$ &  $\surd$  & $\surd$ & $\surd$   &$\surd$    & $\surd$\\ \hline
$I_s$ & $\chi$  & $\surd$   &  $\chi$ & $\bigtriangledown$    & $\chi$   & $\diamondsuit$ \\ \hline
\end{tabular}

\begin{itemize}
\item $\surd$ : Toujours accepté
\item $\chi$ : Toujours refusé
\item $\bigtriangledown$ : Règle ``strict secret'' du DSL
\item $\diamondsuit$ : Règle ``share with'' du DSL
\end{itemize}

\end{frame}

\begin{frame}
  \frametitle{Le DSL}

  Trois classes principales
  \begin{itemize}
  \item DSLReader
  \item PolicyManager (+Policy)
  \item FlowChecker (+Flow)
  \end{itemize}

  \includegraphics[scale=0.6]{stan.png}

\end{frame}

\begin{frame}
  \frametitle{Le DSL}

  Programme indépendant
  \begin{itemize}
  \item Prend en entrée
    \begin{itemize}
    \item Une classe ou un package
    \item Un fichier de règles DSL
    \end{itemize}

\pause
  \item Utilise GNU Getops pour les paramètres
\pause
  \item Format de sortie facilement analysable (script?)
  \end{itemize}

\bigskip

  Exemple :

  [E]\{test.A\}\{m1\} Illegal Secret to Public flow : test.B(Argument \#2) -> int(Return)

\end{frame}

\begin{frame}
  \frametitle{Le DSL : conclusion}

  Ce qui fonctionne :
  \begin{itemize}
  \item Vérification des flots
  \item Respect des règles du DSL
  \end{itemize}

\pause
\bigskip

  Ce qui ne fonctionne pas :
  \begin{itemize}
  \item La prise en compte de tout l'héritage
  \item La prise en compte des packages (pour le DSL)
  \end{itemize}
  
\end{frame}

\section{Vérification à la volée}

\begin{frame}
  \frametitle{Question7 (ou ``\textit{là où ça commence à être moins drôle}'')}

  Choix
  \begin{itemize}
  \item Semblait plus ``bas niveau''
  \item Aucune connaissance bytecode
  \end{itemize}

\end{frame}

\begin{frame}
  \frametitle{Question7a : identification de la ligne}

  Fonctionne en partie
  \begin{itemize}
  \item Réutilisation des classes de la Question 6
  \item Intégration dans ``\textit{MethodAnalyzer}'' et ``\textit{Frame}''
  \end{itemize}

\bigskip
\pause

  Quel est le réel bon emplacement ?
  \begin{itemize}
  \item ``\textit{MethodAnalyzer}''
    \begin{itemize}
    \item Trop ``haut'', pas d'accès à tous les liens
    \end{itemize}
\pause
  \item ``\textit{Frame}''
    \begin{itemize}
    \item avec ``\textit{createLink}'', trop bas
\pause
    \item ``\textit{\_new\_makePoint}'', ``\textit{\_new\_makePointTo}'', ... ?
    \end{itemize}
  \end{itemize}

\end{frame}

\begin{frame}
  \frametitle{Question7b : backtracing}

  Beaucoup d'heures investies...

\pause
\bigskip

  Mais rien de produit.

\pause
\bigskip

  Deux axes
  \begin{enumerate}
  \item Stocker les liens élémentaires et remonter lors d'une détection
  \item Utiliser le bytecode pour suivre le flot
  \end{enumerate}

\end{frame}

\section{Conclusion}

\begin{frame}
  \frametitle{Conclusion}

  Je me suis bien cassé les dents sur la question 7...

  mais
  \begin{itemize}
  \item Découverte du bytecode
  \item Exercice très pédagogique
  \item Vision de Java différente
  \end{itemize}

\pause

  Quelques chiffres
  \begin{itemize}
  \item \~{}90\% du temps passé à lire et comprendre (doc?)
  \item \~{}30\% du temps passé sur la question 1
  \end{itemize}

\pause

  Ce qui est certain :
  \begin{itemize}
  \item Nous nous y sommes pris trop tard !
  \end{itemize}

\end{frame}

\begin{frame}
  \frametitle{Références}

  [1] Antlr : http://www.antlr.org


\end{frame}  



\end{document}
