
<cdc>
   <entete>
   		<avantTitre>Cahier de charges du </avantTitre>
      <titre>PPD (2007-2008) par matières</titre>
   </entete>
   <liste-de-termes>
      <terme type="concept" id="PROG-SYS-01" rubrique="Programmation Système">
         <nom-complet>PS-01-Préalable</nom-complet>
         <explication>
            <definition>
Le <Gras>projet</Gras> contenant un serveur servant des clients. Le serveur est sensé mettre en place un processus
fils pour chaque client arrivant sur le serveur. 
<nl/><nl/> 
Le serveur est en C.
<nl/><nl/> 
On ajoute au serveur une console de gestion, programmée en Java qui remplit les fonctions suivantes :
<enumeration> 
	<item>- supervision des arrêts, mise en veille et réactivation du serveur</item>
	<item>- visualisation dynamique de la charge du serveur</item>
	<item>- récolte des messages de trace fonctionnelle avec redistribution dans des fichiers journaux</item>
	<item>- affichage dynamique du dernier message d'état.</item>
	<item>- affichage des sessions "de groupe" en cours</item>
</enumeration>  
<nl/><nl/> 
La console écrite en Java ne pouvant communiquer avec les IPC du serveur, le serveur doit mettre en place 
un agent de transfert, écrit en C, auquel la console se connectera par un socket. L'agent doit être capable : 
<enumeration> 
	<item>- de remonter des messages à la console, ces messages étant des réponses</item>
	<item>- de récupérer les ordres provenant de la console</item>
	<item>- de recevoir les informations et signaux du serveur</item>
</enumeration>  
<nl/><nl/>  
C'est la SEULE FACON SIMPLE de faire communiquer du C et du Java dans des processus séparés.
<nl/><nl/>  
L'agent de transfert est donc un simple "proxy" de la console d'affichage en Java. Il est constitué d'un processus
indépendant du serveur, capable de communiquer avec ses éléments et de contrôler son processus principal. 
<nl/><nl/> 
La console, écrite en Java ne peut se connecter à l'agent de transfert qu'une fois celui-ci démarré et en attente.
 <nl/><nl/> 
Il doit prendre en charge : 
<enumeration> 
	<item>
		- <lien nature-de-relation="concept">
				<cible><identifiant-cible ancre="VOIE-DE-COMMANDE"/></cible>
				<contenu>PS-02 Une voie de commande</contenu></lien>
	</item>
	<item>
	- <lien nature-de-relation="concept">
				<cible><identifiant-cible ancre="VISUALISATION-MONITORING-DYNAMIQUE"/></cible>
				<contenu>PS-03 Visualisation monitoring dynamique</contenu></lien>
	</item>
</enumeration>  
					</definition>
         </explication>
      </terme>
      <terme type="concept" id="VOIE-DE-COMMANDE" rubrique="Programmation Système">
         <nom-complet>PS-02- une voie de commande</nom-complet>
         <explication>
            <definition>
            Une voie de commande entre le logiciel "console de supervision" et le serveur, fonctionnant
						en commande-réponse. L'agent exécute les commandes suivantes :
						<enumeration>
							<item>						 
							<ancre id="PROGSYS CMD-01"/> - Arrêt complet du serveur après terminaison des requêtes en cours
							</item>
							<item>
							<ancre id="PROGSYS CMD-02"/> - Arrêt brutal du serveur
							</item>
							<item>
							<ancre id="PROGSYS CMD-03"/> - Mise en veille du serveur (arrêt de prise en compte des requêtes avec fourniture d'un code d'erreur)
							</item>
							<item>
							<ancre id="PROGSYS CMD-04"/> - Reprise du serveur
							</item>
							<item>
							<ancre id="PROGSYS CMD-05"/> - Reprise du serveur avec relecture de la configuration
							</item>
							<item>
							<ancre id="PROGSYS CMD-06"/> - Elimination d'un processus fils
							</item>
						</enumeration>						

						</definition>
         </explication>
      </terme>
      <terme type="concept" id="VISUALISATION-MONITORING-DYNAMIQUE" rubrique="Programmation Système">
         <nom-complet>PS-03 Visualisation monitoring dynamique</nom-complet>
         <explication>
            <definition>
            <ancre id="PROGSYS MONITOR-01"/> 
						La visualisation des processus et des sessions s'effectue par la mise en place d'une mémoire
						partagée, d'une taille prédéfinie pour un certain nombre de clients servis. 
						<nl/><nl/> 
						<ancre id="PROGSYS MONITOR-02"/> (Optionnel) 
						A compter d'un certain taux de remplissage, serveur et agent DOIVENT RENEGOCIER LA TAILLE de cette mémoire
						pour pouvoir prendre en charge plus de fils. La mémoire peut donc doubler, puis tripler, etc.
						On ne rétablit la mémoire initiale que quand le nombre de fils revient en dessous de la taille initiale.
						Le serveur et la console devront convenir de ce redimensionnement pour que tout se passe bien.
						<nl/><nl/> 
						<ancre id="PROGSYS MONITOR-03"/> 
						La mémoire partagée doit contenir :
						<enumeration>
							<item>- les descripteurs de processus fils qui en permettent l'affichage en console</item>
						- <item>- les descripteurs de "session de groupe en cours" qui décrivent la session collective dans laquelle
						des clients qui travaillent ensemble sur l'application Idequip.</item>
						</enumeration>
						<nl/><nl/>
						Définition : un descripteur est une structure de description qui rassemble les données utiles à l'observation
						des objets décrits.
						<nl/><nl/> 
						<ancre id="PROGSYS MONITOR-04"/> 
						L'agent remonte à la console les changements dans les descripteurs
						
						</definition>
         </explication>
      </terme>
   
      <terme type="concept" id="RSX-01" rubrique="Réseau">
         <nom-complet>RSX-01</nom-complet>
         <explication>
            <definition>
            Tous les utilisateurs ne sont pas au même endroit.
            En cours de fonctionnement, les uns et les autres peuvent se déplacer.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-02" rubrique="Réseau">
         <nom-complet>RSX-02</nom-complet>
         <explication>
            <definition>
            Les données sont éclatées sur plusieurs sites, ce qu'on pourra simuler 
            par des tables de mêmes structures.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-03" rubrique="Réseau">
         <nom-complet>RSX-03</nom-complet>
         <explication>
            <definition>
            	Les utilisateurs possèdent des droits différenciés (R/W/D/C) pour accéder aux données et aux traitements.
							Les utilisateurs gèrent leur mot de passe.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-04" rubrique="Réseau">
         <nom-complet>RSX-04</nom-complet>
         <explication>
            <definition>
						Un point d'observation "central" peut recueillir les statistiques de fonctionnement.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-05" rubrique="Réseau">
         <nom-complet>RSX-05</nom-complet>
         <explication>
            <definition>
						En cas de panne d'un serveur, le moniteur central est alerté et le serveur est (s'il se peut) re-démarré.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-06" rubrique="Réseau">
         <nom-complet>RSX-06</nom-complet>
         <explication>
            <definition>
						Toutes les liaisons sont en intranet-extranet.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-07" rubrique="Réseau">
         <nom-complet>RSX-07</nom-complet>
         <explication>
            <definition>
						 Un système de proxy débrayable permet de crypter les données en ligne.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-08" rubrique="Réseau">
         <nom-complet>RSX-08</nom-complet>
         <explication>
            <definition>
		       	Chaque serveur se coordonne avec un serveur de secours auquel il s'efforce de transmettre les modifications de données au fur et à mesure.
						Ce dispositif est débrayable et facultatif.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="RSX-09" rubrique="Réseau">
         <nom-complet>RSX-09</nom-complet>
         <explication>
            <definition>
						Un serveur est initialisé par télé-chargement depuis le point d'administration.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="COO-DP-01" rubrique="Conception et design patterns">
         <nom-complet>COO-DP-01</nom-complet>
         <explication>
            <definition>
						L'architecture client/serveur doit respecter le pattern Modèle Vue Contrôleur.
						</definition>
         </explication>
      </terme>
       <terme type="concept" id="COO-DP-02" rubrique="Conception et design patterns">
         <nom-complet>COO-DP-02</nom-complet>
         <explication>
            <definition>
						La gestion de l'aide de l'IHM-Java doit respecter le pattern Chaîne de responsabilités.
						</definition>
         </explication>
      </terme>
       <terme type="concept" id="COO-DP-03" rubrique="Conception et design patterns">
         <nom-complet>COO-DP-03</nom-complet>
         <explication>
            <definition>
						L'implémentation de l'utilisation d'objets par un objet Client doit respecter les patterns 
						Fabrique et Fabrique Abtraite. A part le programme principal et la classe concrète 
						de Fabrique, toutes les autres classes ne doivent connaître les objets qu'ils utilisent
						qu'à travers une interface.
						</definition>
         </explication>
      </terme>
       <terme type="concept" id="COO-DP-04" rubrique="Conception et design patterns">
         <nom-complet>COO-DP-04</nom-complet>
         <explication>
            <definition>
						L'implémentation des classes dont les objets ont un comportement contextuel
						doit respecter le pattern Etat
						</definition>
         </explication>
      </terme>
       <terme type="concept" id="COO-DP-05" rubrique="Conception et design patterns">
         <nom-complet>COO-DP-05</nom-complet>
         <explication>
            <definition>
						L'implémentation des classes dont les objets ont un comportement contextuel
						doit respecter le pattern Etat
						</definition>
         </explication>
      </terme>
       <terme type="concept" id="COO-DP-06" rubrique="Conception et design patterns">
         <nom-complet>COO-DP-06</nom-complet>
         <explication>
            <definition>
						L'accès à la base de données doit être implémenté en utilisant le pattern Façade. 
						En particulier, la technologie d'accès à la base et le type de la base doivent
						être transparent pour les objets clients qui utilisent la façade.
						</definition>
         </explication>
      </terme>
      
      <terme type="concept" id="IHM-JAVA-01" rubrique="IHM et Java">
         <nom-complet>IHM-JAVA-01</nom-complet>
         <explication>
            <definition>
						Les composants graphiques des IHM Java doivent provenir du package javax.swing.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="IHM-JAVA-02" rubrique="IHM et Java">
         <nom-complet>IHM-JAVA-02</nom-complet>
         <explication>
            <definition>
						Vous devez utiliser des gestionnaires de placement 
						pour agencer vos composants grahiques dans l'IHM
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="IHM-JAVA-02" rubrique="IHM et Java">
         <nom-complet>IHM-JAVA-03</nom-complet>
         <explication>
            <definition>
						Vous devez faciliter à l'extrême l'utilisation de l'IHM avec des raccourcis clavier
						et en créant de écouteurs d'événements : fenêtre, souris ,et actions sur des boutons ou des
						items de menus.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="IHM-JAVA-04" rubrique="IHM et Java">
         <nom-complet>IHM-JAVA-04</nom-complet>
         <explication>
            <definition>
						Les choix des écouteurs et des composants graphiques doivent respecter 
						la charte graphique.
						</definition>
         </explication>
      </terme>
      
      <terme type="concept" id="BDD-01" rubrique="Bases de données">
         <nom-complet>BDD-01</nom-complet>
         <explication>
            <definition>
						Définir une partie du traitement du côté du serveur de bases de données à travers
						des procédures et des fonctions stockées.
						</definition>
         </explication>
      </terme>
      
      <terme type="concept" id="BDD-02" rubrique="Bases de données">
         <nom-complet>BDD-02</nom-complet>
         <explication>
            <definition>
						Utilisation de triggers au delà de l'auto incrémentation des identifiants.
						</definition>
         </explication>
      </terme>

      <terme type="concept" id="BDD-03" rubrique="Bases de données">
         <nom-complet>BDD-03</nom-complet>
         <explication>
            <definition>
						La base de données doit être modélisée en objet. On pourra utiliser le mapper
						de Rational Rose pour générer le script de création de la base
						</definition>
         </explication>
      </terme>
      
      <terme type="concept" id="BDD-04" rubrique="Bases de données">
         <nom-complet>BDD-04</nom-complet>
         <explication>
            <definition>
						Vous devez fournir un MCD Entité-Association (Merise) conforme à votre modélisation 
						objet.
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="ID-EQUIP-01" rubrique=" IDEQUIP">
         <nom-complet>ID-EQUIP-01</nom-complet>
         <explication>
            <definition>
						L'architecture technique du projet IDEquip<nl/>
						<imageArel src="ArchitectureIDEquip.jpg"/> 
						</definition>
         </explication>
      </terme>
      <terme type="concept" id="ID-EQUIP-02" rubrique=" IDEQUIP">
         <nom-complet>ID-EQUIP-02</nom-complet>
         <explication>
            <definition>
            Pour cette année, les fonctionnalités utilisateurs d'ID'Equip  à implémenter sont :
            <enumeration>
            	<item>- La création, modification et suppression de post-it</item>
            	<item>- L'implémentation de deux opérateurs appliqués sur un ensemble de post-its parmi la liste ci-dessous
            		<enumeration>
										 <item>- regrouper en familles, faire une synthèse</item>
										 <item>- trier,</item>
										 <item>- filtrer,</item>
										 <item>- ordonnancer,</item>
										 <item>- hiérarchiser,</item>
										 <item>- classer,</item>
										 <item>- organiser en cartes à deux et trois dimensions</item>
								</enumeration>
							</item>
						</enumeration>
						</definition>
         </explication>
      </terme>
      
 
      
      
	  </liste-de-termes>
</cdc>