[Dev OpenGP] [62] Details in "state of the art" section in report |
[ Thread Index |
Date Index
| More opengp.tuxfamily.org/development Archives
]
Revision: 62
Author: alband85
Date: 2009-03-19 02:36:30 +0100 (Thu, 19 Mar 2009)
Log Message:
-----------
Details in "state of the art" section in report
Modified Paths:
--------------
externals/Com/Rapport/tex/rapport.tex
Removed Paths:
-------------
externals/Com/Rapport/tex/rapport.loa
externals/Com/Rapport/tex/rapport.out
externals/Com/Rapport/tex/rapport.tex.backup
Deleted: externals/Com/Rapport/tex/rapport.loa
===================================================================
--- externals/Com/Rapport/tex/rapport.loa 2009-03-18 20:16:28 UTC (rev 61)
+++ externals/Com/Rapport/tex/rapport.loa 2009-03-19 01:36:30 UTC (rev 62)
@@ -1,2 +0,0 @@
-\contentsline {algocf}{\numberline {1}{\ignorespaces Fusion de deux arbres XML}}{16}{algocfline.1}
-\contentsline {algocf}{\numberline {2}{\ignorespaces R\IeC {\'e}organisation des \texttt {id}}}{17}{algocfline.2}
Deleted: externals/Com/Rapport/tex/rapport.out
===================================================================
--- externals/Com/Rapport/tex/rapport.out 2009-03-18 20:16:28 UTC (rev 61)
+++ externals/Com/Rapport/tex/rapport.out 2009-03-19 01:36:30 UTC (rev 62)
@@ -1,27 +0,0 @@
-\BOOKMARK [0][-]{chapter*.2}{Introduction}{}
-\BOOKMARK [-1][-]{part.1}{I \311tude pr\351liminaire}{}
-\BOOKMARK [0][-]{chapter.1}{Analyse de l'existant}{part.1}
-\BOOKMARK [1][-]{section.1.1}{Principe des GPO \(Group Policy Objects\)}{chapter.1}
-\BOOKMARK [1][-]{section.1.2}{\311tat de l'art}{chapter.1}
-\BOOKMARK [0][-]{chapter.2}{Analyse fonctionnelle : expression du besoin}{part.1}
-\BOOKMARK [1][-]{section.2.1}{Identification du besoin}{chapter.2}
-\BOOKMARK [1][-]{section.2.2}{Validation du besoin}{chapter.2}
-\BOOKMARK [1][-]{section.2.3}{Diagramme b\352te \340 cornes}{chapter.2}
-\BOOKMARK [1][-]{section.2.4}{Diagramme des interactions}{chapter.2}
-\BOOKMARK [1][-]{section.2.5}{Validation du besoin}{chapter.2}
-\BOOKMARK [0][-]{chapter.3}{Situations de vie}{part.1}
-\BOOKMARK [1][-]{section.3.1}{Cycle de vie}{chapter.3}
-\BOOKMARK [1][-]{section.3.2}{Diagramme pieuvre}{chapter.3}
-\BOOKMARK [1][-]{section.3.3}{Situations de vie}{chapter.3}
-\BOOKMARK [-1][-]{part.2}{II Conception}{}
-\BOOKMARK [0][-]{chapter.4}{Gestion de la configuration}{part.2}
-\BOOKMARK [1][-]{section.4.1}{Structuration de la configuration : sch\351ma XML}{chapter.4}
-\BOOKMARK [1][-]{section.4.2}{Manipulation de la configuration}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.2.1}{Fusion d'arbres XML}{section.4.2}
-\BOOKMARK [2][-]{subsection.4.2.2}{G\351n\351ration de fragments XML}{section.4.2}
-\BOOKMARK [0][-]{chapter.5}{Architecture de l'application}{part.2}
-\BOOKMARK [-1][-]{part.3}{III R\351alisation}{}
-\BOOKMARK [0][-]{figure.5.2}{Table des figures}{part.3}
-\BOOKMARK [0][-]{chapter*.7}{Liste des tableaux}{part.3}
-\BOOKMARK [0][-]{chapter*.8}{Algorithmes}{part.3}
-\BOOKMARK [-1][-]{chapter*.9}{Annexes}{}
Modified: externals/Com/Rapport/tex/rapport.tex
===================================================================
--- externals/Com/Rapport/tex/rapport.tex 2009-03-18 20:16:28 UTC (rev 61)
+++ externals/Com/Rapport/tex/rapport.tex 2009-03-19 01:36:30 UTC (rev 62)
@@ -74,7 +74,7 @@
La société Novell propose la solution \emph{eDirectory} permettant l'harmonisation des identités, des ressources, des périphériques et des stratégies, mais celle-ci est limitée aux environnements supportés par Novell\footnote{Windows 2000, Windows Server 2003, SUSE Linux Enterprise Server, Red Hat Enterprise Linux, Novell NetWare, Sun Solaris, IBM AIX et HP-UX}. De plus, sa licence propriétaire ne permet pas le portage vers d'autres plateformes.
-Il n'existe pas de plateforme générique permettant d'administrer de manière centralisée un ensemble de machines Unix.
+Il n'existe pas de plateforme générique permettant d'administrer de manière centralisée un ensemble de machines Unix. La plupart de administrateurs systèmes utilisent actuellement des scripts personnels ou encore stockent de la configuration au moyen d'un outil de gestion de versions\footnote{Principalement \emph{Subversion} (\emph{git}, bien qu'en fort développement n'est pas adapté à ce type d'utilisation)} et la déploient au moyen de \emph{Makefiles}.
\chapter{Analyse fonctionnelle : expression du besoin}
\section{Identification du besoin}
@@ -196,47 +196,48 @@
\multicolumn{2}{|c|}{\textsc{Fonction}} & \textsc{Critères} & \textsc{Niveaux} & \textsc{Flexibilité} \\ \hline
FP\ref{itm:mep}.1
& \boitecol{\colfonc}{Appliquer une configuration données à un ensemble hiérarchique de postes clients autorisés depuis un serveur central de manière sécurisée}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & \boitecol{\colcrit}{OS, versions}
+ & \boitecol{\colniv}{---}
+ & F(3) \\ \hline
FP\ref{itm:mep}.2
& \boitecol{\colfonc}{Ne pas permettre l'accès aux données de configuration à des machines non-autorisées}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & \boitecol{\colcrit}{Validité de l'authentification}
+ & \boitecol{\colniv}{Validité du certificat, du mot de passe, du jeton...}
+ & F(0) \\ \hline
FC\ref{itm:mep}.1
& \boitecol{\colfonc}{Fonctionner dans une grande majorité de configurations réseau}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & \boitecol{\colcrit}{Possibilité de routage des paquets}
+ & \boitecol{\colniv}{Oui, non}
+ & F(2-3) \\ \hline
FC\ref{itm:mep}.2
& \boitecol{\colfonc}{Assurer la compatibilité du client avec différents annuaires}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & \boitecol{\colcrit}{Existence d'interfaces}
+ & \boitecol{\colniv}{---}
+ & F(2) \\ \hline
FC\ref{itm:mep}.3
& \boitecol{\colfonc}{Être suffisamment léger pour autoriser un grand nombre de postes clients sans demander \og{}trop\fg{} de ressources}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & \boitecol{\colcrit}{\begin{itemize}\item Algorithmes \item Codage\end{itemize}}
+ & \boitecol{\colniv}{\begin{itemize}\item Optimisations \item Compilé/interprété...\end{itemize}}
+ & F(2-3) \\ \hline
FC\ref{itm:mep}.4
- & \boitecol{\colfonc}{Assurer la compatibilité du client pour une majorité de configurations logicielles (bibliothèques, interpréteurs...}
+ & \boitecol{\colfonc}{Assurer la compatibilité du client pour une majorité de configurations logicielles (bibliothèques, interpréteurs...)}
& \boitecol{\colcrit}{TODO}
& \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & F(5) \\ \hline
FC\ref{itm:mep}.5
& \boitecol{\colfonc}{Suivre la politique de sécurité en vigueur}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & \boitecol{\colcrit}{Politique de sécurité}
+ & \boitecol{\colniv}{---}
+ & F(1) \\ \hline
FC\ref{itm:mep}.6
& \boitecol{\colfonc}{Être scalable}
- & \boitecol{\colcrit}{TODO}
+ & \boitecol{\colcrit}{\begin{itemize}\item Stockage de la configuration \item Authentification clients\end{itemize}}
& \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
+ & F(2) \\ \hline
\end{tabular}
\end{small}
\end{turn}
+ F(0) : aucune flexibilité -- F(5) : flexibilité maximale
\end{center}
\end{minipage}
@@ -426,7 +427,7 @@
\begin{turn}{90}
\includegraphics{../figures/uml/class-1}
\end{turn}
- \caption{Diagramme de classes}
+ \caption{Diagramme de classes (\emph{package} \textsf{ogp})}
\end{figure}
\addcontentsline{toc}{chapter}{Table des figures}
Deleted: externals/Com/Rapport/tex/rapport.tex.backup
===================================================================
--- externals/Com/Rapport/tex/rapport.tex.backup 2009-03-18 20:16:28 UTC (rev 61)
+++ externals/Com/Rapport/tex/rapport.tex.backup 2009-03-19 01:36:30 UTC (rev 62)
@@ -1,439 +0,0 @@
-\documentclass[a4paper,11pt,oneside]{report}
-\usepackage[utf8]{inputenc}
-\usepackage{amsfonts, amsmath, amsthm}
-\usepackage[a4paper]{geometry}
-\usepackage[pdftex]{graphicx}
-\usepackage[colorlinks=true, urlcolor=black, linkcolor=black, citecolor=black, pdfhighlight =/O]{hyperref}
-\usepackage{url}
-\usepackage{emp}
-\usepackage{rotating}
-\usepackage[lined,linesnumbered,boxed,french]{sty/algorithm2e}
-\usepackage[frenchb]{babel}
-
-
-%% Insertion de légende hors des flottants
-%%%% macro dans le pr ́ambule %%%%
-\makeatletter
-\def\captionof#1#2{{\def\@captype{#1}#2}}
-\makeatother
-%%%% fin macro %%%%
-
-% Title Page
-\newcommand{\pdftitle}[1]{\title{#1}\hypersetup{pdftitle={#1}}}
-\pdftitle{OpenGroupPolicy}
-\author{
- \begin{tabular}{rl}
- Alban Dericbourg & \href{mailto:alban.dericbourg@xxxxxxxxxx?subject=[OGP]}{\texttt{alban.dericbourg@xxxxxxxxxx}} \\
- Nicolas François & \href{mailto:nicolas.francois@xxxxxxxxxx?subject=[OGP]}{\texttt{nicolas.francois@xxxxxxxxxx}}
- \end{tabular}
-}
-\hypersetup{pdfauthor={Alban Dericbourg, Nicolas François}}
-
-
-
-\newcommand{\xmlunion}[2]{\mathrm{union}\left({#1},{#2}\right)}
-\newtheorem{definition}{Définition}[subsection] % les définitions et les théorèmes sont
-\newtheorem{theorem}{Théorème}[section] % numérotés par section
-
-
-\begin{document}
-\maketitle
-
-\begin{abstract}
- %TODO: résumé à rédiger
-\end{abstract}
-
-\includegraphics{../figures/uml/class-1}
-
-%\setcounter{tocdepth}{2}
-\tableofcontents
-
-\chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}
-toto
-
-\part{Étude préliminaire}
-
-\chapter{Analyse de l'existant}
-
-\section{Principe des GPO (\emph{Group Policy Objects})}
-Les GPO (stratégies de groupe) sont des fonctions de gestion centralisée de la famille Windows. Elles permettent la gestion des ordinateurs et des utilisateurs dans un environnement \emph{Active Directory} en incluant la gestion des ordinateurs déconnectés, la gestion des utilisateurs itinérants ou la gestion de la redirection des dossiers ainsi que la gestion des fichiers en mode déconnecté.
-
-\begin{figure}[ht!]
- \centering
- \includegraphics[width=.5\textwidth]{../figures/misc/arbre-conf}
- \caption{Exemple d'organisation en OU}\label{fig:ExOrgaOU}
-\end{figure}
-
-Celles-ci s'appliquent à des OU (\emph{Organisational Units} ou unités organisationnelles) qui peuvent contenir d'autres OU, des utilisateurs, des groupes d'utilisateurs ou encore des machines. Elles fournissent ainsi une structure hiérarchique à un domaine et permettent d'appliquer de manière globale une politique ou une opération d'administration. Sur l'exemple de la figure \ref{fig:ExOrgaOU} :
-\begin{itemize}
- \item une GPO appliquée à l'OU1 s'appliquera aux machines $M_1$, $M_2$ et $M_3$ ainsi qu'à l'utilisateur $U_1$ (par \og{}héritage\fg{} au niveau des OU3 et OU4) ;
- \item une GPO appliquée à l'OU4 ne s'appliquera qu'aux machines $M_2$ et $M_3$ ainsi qu'à l'utilisateur $U_1$.
-\end{itemize}
-Les différentes GPO peuvent éventuellement être contradictoires. Dans ce cas, c'est celle définie \og{}au plus près\fg{} qui a priorité.
-
-\section{État de l'art}
-À ce jour, le concept de GPO n'existe que sur les systèmes Microsoft Windows.
-
-La société Novell propose la solution \emph{eDirectory} permettant l'harmonisation des identités, des ressources, des périphériques et des stratégies, mais celle-ci est limitée aux environnements supportés par Novell\footnote{Windows 2000, Windows Server 2003, SUSE Linux Enterprise Server, Red Hat Enterprise Linux, Novell NetWare, Sun Solaris, IBM AIX et HP-UX}. De plus, sa licence propriétaire ne permet pas le portage vers d'autres plateformes.
-
-Il n'existe pas de plateforme générique permettant d'administrer de manière centralisée un ensemble de machines Unix.
-
-\chapter{Analyse fonctionnelle : expression du besoin}
-\section{Identification du besoin}
-Il a été exprimé le besoin de :
-\begin{itemize}
- \item disposer d'un outil permettant la gestion de la configuration d'un parc machine de type \og{}Unix\fg{} ;
- \item cet outil étant générique (pas de spécificité pour un Unix précis ou une distribution donnée) ;
- \item avec une compatibilité avec les outils d'administration Microsoft Windows (\emph{Active Directory}, \emph{GPO}...).
-\end{itemize}
-
-La finalité est de fournir aux administrateurs système un outil d'administration de parc hétérogène Unix / Windows.
-
-\section{Validation du besoin}
-\begin{itemize}
- \item \textbf{À qui le produit rend-il service ?}\\
- Aux administrateurs système gérant des parcs Unix ou hétérogènes Unix / Windows.
- \item \textbf{Sur quoi agit le produit ?}\\
- Configuration des machines du parc.
- \item \textbf{Pour quoi faire ?}\\
- Gérer la configuration de manière centralisée et sécurisée.
- \item \textbf{Dans quel but ?}\\
- Obtenir une configuration homogène et facilement applicable sur l'ensemble des machines.
- \item \textbf{Pourquoi ?}\\
- Gagner en fiabilité et en simplicité.
- \item \textbf{Quand ?}\\
- À chaque déploiement de parc machine, ajout de machine, évolution de la configuration.
- \item \textbf{Où ?}\\
- Depuis n'importe quelle machine.
- \item \textbf{Quelles causes pourraient faire disparaître le besoin ?}\\
- Disparition des systèmes Unix, disparition des parcs machine en entreprise.
- \item \textbf{À quelles échéances prévisibles ?}\\
- Aucune.
- \item \textbf{Avec quelle probabilité ?}\\
- Négligeable.
- \item \textbf{Quelles causes pourraient faire évoluer le besoin ?}\\
- Apparition de nouveaux OS non-Unix et non-compatibles \emph{Active Directory}.
- \item \textbf{À quelles échéances ?}\\
- Décénie.
- \item \textbf{Avec quelles probabilités ?}\\
- Faible à modérée.
-\end{itemize}
-
-\section{\texorpdfstring{Diagramme \og{}bête à cornes\fg{}}{Diagramme bête à cornes}}
-
-\begin{center}
- \includegraphics[width=.5\textwidth]{../figures/af/bac}
- \captionof{figure}{\caption{Diagramme bête à cornes}\label{fig:beteacornes}}
-\end{center}
-
-\section{Diagramme des interactions}
-Les facteurs principaux suivants peuvent influer sur le résultat (figure \ref{fig:ddinteractions}) :
-\begin{itemize}
- \item version d'\emph{Active Directory} s'il y en a un en place ;
- \item puissance du serveur hébergeant l'annuaire (LDAP) ;
- \item diversité des systèmes en présence ;
- \item présence de \emph{firewalls} ;
- \item configuration du réseau (NAT...) ;
- \item version de l'annuaire LDAP ;
- \item version des logiciels sur la machine cliente ;
- \item existence de machines non-autorisées ;
- \item existence d'attaquants ;
- \item taille du réseau.
-\end{itemize}
-
-\begin{center}
- \includegraphics[width=.6\textwidth]{../figures/af/ddinteractions}
- \captionof{figure}{\caption{Diagramme des interactions}\label{fig:ddinteractions}}
-\end{center}
-
-\section{Validation du besoin}
-\begin{description}
- \item[Niveau 1] Le besoin général à satisfaire est de permettre à l'administrateur système d'administrer simplement un parc de machines (éventuellement hétérogène).
- \item[Niveau 2] Le besoin à satisfaire est de permettre à l'administrateur système de gérer la conguration d'un ensemble de machines de manière centralisée.
- \item[Niveau 3] Le besoin est de permettre à à l'administrateur système de gérer la conguration d'un ensemble de machines organisées hiérarchiquement de manière centralisée.
-\end{description}
-
-\chapter{Situations de vie}
-\section{Cycle de vie}
-Le cycle de vie est composé des différentes situations que le produit est ammené à rencontrer depuis sa conception jusqu'à se destruction. Elles sont ici classées par ordre chronologique.
-\begin{enumerate}
- \item Définition des objectifs
- \item Analyse des besoins et faisabilité
- \item Conception générale\label{itm:concgen}
- \item Conception détaillée\label{itm:concdet}
- \item Codage
- \item Tests unitaires
- \item Intégration
- \item Qualification
- \item Documentation
- \item Mise en production\label{itm:mep}
- \item Maintenance
-\end{enumerate}
-Dans la suite, on traitera exclusivement de la mise en production (situation \ref{itm:mep}). La conception (situations \ref{itm:concgen} et \ref{itm:concdet}) seront explicitées en partie \ref{part:conception} (page \pageref{part:conception}).
-
-\section{\texorpdfstring{Diagramme \og{}pieuvre\fg{}}{Diagramme pieuvre}}
-\begin{center}
- \includegraphics[width=.6\textwidth]{../figures/af/dpieuvre}
- \captionof{figure}{\caption{Diagramme \og{}pieuvre\fg{}}\label{fig:dpieuvre}}
-\end{center}
-
-La description des situations de vie associées à ce diagramme est donnée dans le tableau \ref{tab:situationsdevie} page \pageref{tab:situationsdevie}.
-
-\section{Situations de vie}
-%TODO: compléter tableau situations de vie
-\begin{minipage}{.95\textwidth}
-\begin{center}
- \newlength{\colfonc}\setlength{\colfonc}{50mm}
- \newlength{\colcrit}\setlength{\colcrit}{35mm}
- \newlength{\colniv}\setlength{\colniv}{50mm}
- \newcommand{\boitecol}[2]{%
- \parbox[c]{#1}{\centering #2}
- } % \boitecol
- \captionof{table}{\caption{Situations de vie}\label{tab:situationsdevie}}
- \begin{turn}{90}
- \begin{small}
- \renewcommand{\arraystretch}{3}
- \begin{tabular}{|l||c|c|c|c|}
- \hline
- \multicolumn{2}{|c|}{\textsc{Fonction}} & \textsc{Critères} & \textsc{Niveaux} & \textsc{Flexibilité} \\ \hline
- FP\ref{itm:mep}.1
- & \boitecol{\colfonc}{Appliquer une configuration données à un ensemble hiérarchique de postes clients autorisés depuis un serveur central de manière sécurisée}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FP\ref{itm:mep}.2
- & \boitecol{\colfonc}{Ne pas permettre l'accès aux données de configuration à des machines non-autorisées}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FC\ref{itm:mep}.1
- & \boitecol{\colfonc}{Fonctionner dans une grande majorité de configurations réseau}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FC\ref{itm:mep}.2
- & \boitecol{\colfonc}{Assurer la compatibilité du client avec différents annuaires}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FC\ref{itm:mep}.3
- & \boitecol{\colfonc}{Être suffisamment léger pour autoriser un grand nombre de postes clients sans demander \og{}trop\fg{} de ressources}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FC\ref{itm:mep}.4
- & \boitecol{\colfonc}{Assurer la compatibilité du client pour une majorité de configurations logicielles (bibliothèques, interpréteurs...}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FC\ref{itm:mep}.5
- & \boitecol{\colfonc}{Suivre la politique de sécurité en vigueur}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- FC\ref{itm:mep}.6
- & \boitecol{\colfonc}{Être scalable}
- & \boitecol{\colcrit}{TODO}
- & \boitecol{\colniv}{TODO}
- & F(x) \\ \hline
- \end{tabular}
- \end{small}
- \end{turn}
-\end{center}
-\end{minipage}
-
-\part{Conception}\label{part:conception}
-
-\chapter{Gestion de la configuration}
-L'objectif est de représenter la configuration de manière homogène au niveau de l'annuaire et de la conserver sous cette forme \og{}le plus longtemps possible\fg{}. On se propose donc de gérer celle-ci au format XML et de ne la convertir au format natif que lorsque cela est nécessaire (au moment de l'écriture du fichier de configuration sur machine).
-
-\section{Structuration de la configuration : schéma XML}
-%TODO
-
-\section{Manipulation de la configuration}
-%TODO: introduction de la section
-
-\subsection{Fusion d'arbres XML}
-
-\subsubsection{Notations}
-On note :
-\begin{itemize}
- \item $S$ l'ensemble des chaines de caractères ;
- \item $S^*$ l'ensemble des chaines de caractères privé de la chaine vide "".
-\end{itemize}
-
-\subsubsection{Hypothèses}
-On suppose que :
-\begin{enumerate}
- \item \label{hyp:sameschema}les deux arbres que l'on souhaite fusionner valident le même schéma XML ;
- \item \label{hyp:textxorchildren}ce schéma impose qu'une balise contienne soit des balises filles, soit du texte (mais pas les deux) ;
- \item \label{hyp:notwins}ce schéma impose également qu'une balise ne puisse contenir deux balises filles avec le même nom et les mêmes attributs (i.e. mêmes noms et mêmes valeurs) ;
- \item \label{hyp:noorrder}l'ordre des balises n'a pas d'importance pour l'union.
-\end{enumerate}
-\emph{Remarque} : Si un ordre est nécessaire d'un point de vue sémantique, on utilise l'attribut particulier \texttt{id}. Cet attribut sera modifié afin que les balises de l'arbre père soient placées (avec les \texttt{id} dans le même ordre) après celles du fils (avec les \texttt{id} dans le même ordre).
-%TODO: exemple
-
-\subsubsection{Définitions}
-\begin{definition}
-On note $\mathcal{B}$ l'ensemble des balises :
-\[
- \mathcal{B}=\left\lbrace\left( n,A,B,t \right)\left|n\in S^*,A\subset S^*\times S,B\subset\mathcal{B},t\in S^*\right. \right\rbrace
-\]
- Avec :
-\begin{itemize}
- \item $n$ le nom de la balise ;
- \item $A$ l'ensemble des couples $\left( attribut,valeur\right)$ ;
- \item $B$ l'ensemble des balises filles ;
- \item $t$ le texte contenu dans la balise.
-\end{itemize}
-\end{definition}
-\noindent\emph{Remarque} : d'après l'hypothèse \ref{hyp:textxorchildren}, $t=$"" ou $B=\emptyset$.
-
-\begin{definition}
- L'union de deux arbres est définie par :
- \begin{itemize}
- \item si $n_1\neq n_2$ ou $A_1\neq A_2$, alors
- \[
- \xmlunion{\left( n_1,A_1,B_1,t_1\right)}{\left( n_2,A_2,B_2,t_2\right)}=\left\lbrace\left( n_1,A_1,B_1,t_1\right),\left( n_2,A_2,B_2,t_2\right)\right\rbrace
- \]
- \item $\xmlunion{\left( n,A,\emptyset,t_1\right)}{\left( n,A,\emptyset,t_2\right)}=\left( n,A,\emptyset,t_2\right)$ ;
- \item $\xmlunion{\left( n,A,B_1,""\right)}{\left( n,A,B_2,""\right)}=\left( n,A,\xmlunion{B_1}{B_2},""\right)$
- \end{itemize}
-\end{definition}
-
-Calcul de $\xmlunion{B_1}{B_2}$ :\\
-On note :
-\begin{itemize}
- \item $B_1^*$ l'ensemble des balises de $B_1$ qui n'ont pas d'équivalent dans $B_2$. \\
- $B_1^*=\left\lbrace\left( n_1,A_1,B,t\right)\in B_1\left|\not\exists\left( n_2,A_2,B',t'\right)\in B_2\left|n_2=n\wedge A_2=A\right.\right.\right\rbrace$
- \item $b_1^*\left(n,A\right)$ l'ensemble des balises de $B_1$ de nom $n$ et d'attributs $A$ ayant un équivalent dans $B_2$.
- \[
- b_1^*\left( n,A\right)=\left\lbrace\left( n_1,A_1,B,t\right)\in B_1\left|n_1=n \wedge A_1=A \wedge \exists\left( n_2,A_2,B',t'\right)\in B_2\left|n_2=n\wedge A_2=A\right.\right.\right\rbrace
- \]
- \item $B_2^*$ l'ensemble des balises de $B_2$ qui n'ont pas d'équivalent dans $B_1$.
- \item $b_2^*\left(n,A\right)$ l'ensemble des balises de $B_2$ de nom $n$ et d'attributs $A$ ayant un équivalent dans $B_1$.
-\end{itemize}
-
-\begin{theorem}
- \[
- \forall \left(n,A,i\right),\mathrm{card}\left(b_i^*\left(n,A\right)\right)\in\left\lbrace 0,1\right\rbrace
- \]
-\end{theorem}
-\begin{proof}
- D'après l'hypothèse \ref{hyp:notwins}, $\forall \left(n,A,i\right), \mathrm{card}\left\lbrace\left( n',A',B,t\right)\in B_i\left|n'=n\wedge A'=A\right.\right\rbrace\in\left\lbrace 0, 1\right\rbrace$, or $b_i^*\left(n,A\right)$ est inclus dans cet ensemble.
-\end{proof}
-Ainsi :
-\begin{definition}
- On définit l'union de deux ensembles de balises $\xmlunion{B_1}{B_2}$ par :
- \[
- \xmlunion{B_1}{B_2}=B_1^*\cup B_2^*\cup\bigcup_{n,A}\xmlunion{b_1^*\left(n,A\right)}{b_2^*\left(n,A\right)}
- \]
-\end{definition}
-
-\subsubsection{Algorithme}
-L'algorithme \ref{algorithm:XMLMerge} (page \pageref{algorithm:XMLMerge}) présente la mise en \oe uvre de cette méthode. La réorganisation des \texttt{id} est décrite par l'algorithme \ref{algorithm:reorgid} (page \pageref{algorithm:reorgid}).
-
-\begin{algorithm}[hb!]
- \caption{Fusion de deux arbres XML}
- \label{algorithm:XMLMerge}
- \SetKwFunction{Fusionner}{Fusionner}
- \SetKwFunction{Reordonner}{Reordonner\_id}
- \SetKwFunction{FinFusionner}{Fin fusionner}
- \SetKwBlock{Fus}{\Fusionner{parent, fils}}{\FinFusionner}
- \Entree{arbre parent, arbre fils}
- \Fus{
- \eSi{parent.$B$ = $\emptyset$}{%Then
- \Retour{fils}\;
- }
- {%Else
- $\text{parent}.B \leftarrow \text{\Reordonner{parent.$B$, fils.$B$}}$\;
- $B_{1}^{*} \leftarrow \emptyset$\;
- $b_{1}^{*} \leftarrow \emptyset$\;
- \PourCh{$b_1 \in \text{parent}.B$}{
- \PourCh{$b_2 \in \text{fils}.B$}{
- \eSi{$b_1.n=b_2.n$ et $b_1.A = b_2.A$}{
- $b_1^* \leftarrow \left\lbrace\left(\left(n,A\right),b_1\right)\right\rbrace \cup b_1^*$\;
- }
- {%Else
- $B_1^* \leftarrow \left\lbrace b_1 \right\rbrace \cup B_1^*$\;
- }%eSi
- }%PourCh
- }%PourCh
- \PourCh{$b_2 \in \text{fils}.B$}{
- \PourCh{$b_1 \in \text{parent}.B$}{
- \eSi{$b_2.n=b_1.n$ et $b_2.A = b_1.A$}{
- $b_2^* \leftarrow \left\lbrace\left(\left(n,A\right),b_2\right)\right\rbrace \cup b_2^*$\;
- }
- {%Else
- $B_2^* \leftarrow \left\lbrace b_2 \right\rbrace \cup B_2^*$\;
- }%eSi
- }%PourCh
- }%PourCh
- $res \leftarrow \left( \text{parent}.n, \text{parent}.A, \emptyset, \emptyset \right)$\;
- $res.B \leftarrow B_1^* \cup B_2^*$\;
- \PourCh{$\left(\left(u,A\right),b\right) \in b_1^*$}{
- $res.B \leftarrow res.B \cup \text{\Fusionner{$(b,b_2^*\left(n,A\right)$}}$\;
- }%PourCh
- \Retour{$res$}
- }%eSi
- }%Fus
-\end{algorithm}
-
-\begin{algorithm}[ht!]
- \caption{Réorganisation des \texttt{id}}
- \label{algorithm:reorgid}
- \SetKwFunction{Reordonner}{Reordonner\_id}
- \SetKwFunction{FinReordonner}{Fin reordonner\_id}
- \SetKwBlock{Reo}{\Reordonner{parent, fils}}{\FinReordonner}
- \Entree{parent, fils}
- \Reo{
- $res \leftarrow \emptyset$\;
- $i_\mathrm{max} \leftarrow 0$\;
- \PourCh{$b_2 \in \text{fils}.B$ }{
- $res \leftarrow res \cup \left\lbrace b_2 \right\rbrace$\;
- \Si{$\text{est\_present}\left(b_2.\mathtt{id}\right)$ et $b_2.\mathtt{id} > i_\mathrm{max}$}{
- $i_\mathrm{max} \leftarrow b_2.\mathtt{id}$\;
- }%Si
- }%PourCh
- \PourCh{$b_1 \in \text{pere}.B$}{
- \Si{$\text{est\_present}\left(b_1.\mathtt{id}\right)$}{
- $b_1.\mathtt{id} \leftarrow b_1.\mathtt{id} + i_\mathrm{max} + 1$\;
- $res \leftarrow res \cup \left\lbrace b_1 \right\rbrace$\;
- }%Si
- }%PourCh
- \Retour{$res$}\;
- }%Reo
-\end{algorithm}
-
-
-\subsection{Génération de fragments XML}
-On s'intéresse ici à la conversion d'un fichier de configuration ou d'un fragment de fichier de configuration vers un format XML.
-%TODO: génération de fragments XML
-
-\chapter{Architecture de l'application}
-%TODO: architecture de l'appli (chapter)
-
-\begin{figure}
- \centering
- \includegraphics[width=.75\textwidth]{../figures/arch/layers}
- \caption{Architecture de l'application}
-\end{figure}
-
-
-\part{Réalisation}
-%TODO: réalisation (part)
-
-\addcontentsline{toc}{chapter}{Table des figures}
-\listoffigures
-
-\addcontentsline{toc}{chapter}{Liste des tableaux}
-\listoftables
-
-\addcontentsline{toc}{chapter}{Algorithmes}
-\listofalgorithms
-
-\appendix
-\addcontentsline{toc}{part}{Annexes}
-\part*{Annexes}
-
-\end{document}