Mise à jour (enfin!) du dernier semestre de cours

master
olivier 2009-05-17 16:54:30 +02:00
parent cb99a39ad0
commit 05d2134eab
50 changed files with 10887 additions and 318 deletions

View File

@ -0,0 +1,107 @@
Jeudi 12 février 2009
A61
Pierre.Gancarski@lsirt.u-strasbg.fr
Pôle API
C334
Dernier cours = examen
====== Cours sur RPC ======
Ne jamais dit ON !!!
Il ne faut pas dire le programme boucle, mais dire : ce processus tourne ici, boucle, fait ceci, cela, etc.
On doit être définissable en terme de processus.
Calcul = suite d'instruction
Procédure est comme calcul aussi. C'est mieux que de dire "service".
Pour s'occuper de mettre en relation deux machines (ou plusieurs), il faut :
* réseau
* identifiant
* un langage commun
* un mécanisme pour renvoyer la réponse
Cet ensemble de techniques existent depuis un bout de temps, années 80, et se nomme RPC :
RPC = Remote Procedure Call
===== Problème =====
Comment "permettre" à une personne sur une machine de demander l'exécution d'une procédure sur une autre machine ?
==== Rappel ====
Dans un programme :
<code java>
int a, b;
a = 0; b = 12;
a=f(b);
</code>
<code java>
int f(int x) {
return x++;
}
</code>
* Le MC (?mémoire centrale?) va allouer de l'espace mémoire à A, puis à B.
* Puis la pile va mémoriser l'adresse de retour de la fonction.
* La pile va empiler les paramètres de la fonction (il empile la valeur : 12)
* Il va crée X puis va mettre dedans la valeur du paramètre (12)
* Puis il prend la fonction et fait 12 + 1 = 13 => il remplace X par 13
* Puis il va remplacer A par 13 dans la mémoire centrale
à un appel de fonction correspond un saut. Pour réaliser ce saut il faut empiler les paramètres, c'est à dire créer autant de case que de paramètres. Recopier la valeur des paramètres dans les variables de la fonction et ensuite exécuter la fonction.
La fin de la fonction stocke le résultat, vide la pile, prend l'adresse de retour pour terminer la fonction, et faire ce qu'il faut avec le résultat.
MC = Le tas !!!
----
Si on en venait à mettre la fonction sur une machine M2, le code Java étant sur M1, il nous faudrait :
* Contacter M2
* Demander le numéro de processus dans lequel trouver F
* Prendre F
* Donner les paramètres que la fonction F a besoin
Ceci reviendrait à remplacer a = f(b) par :
<code java>
a = callprc(M2, f, 12);
</code>
Sur la machine M2, on doit avoir une fonction qui attend qu'on lui donne des choses :
<code java>
main {
registerrpc(f);
svc_run();
}
</code>
Où *svc_run* correspond à :
<code java>
(nom, prénom, machine_retour) = attendre();
if (nom == f) {
a= f(paramètre);
}
</code>
Nom = f
prénom = 12
Maintenant que svc_run permet d'appeler la fonction, il doit renvoyer le résultat.
==== Registerrpc ====
A besoin de :
* N° de programme
* N° de version
* N° de fonction
Ceci pourrait se comparer à des numéros de téléphone au sein d'une machine, bien que la machine n'ait qu'une et une seule adresse mais plusieurs codes pour les fonctions.

View File

@ -0,0 +1,37 @@
Vendredi 06 février 2009
A63 Persistance de données
M. LACHICHE
====== Présentation du module ======
Contrôle continu
2 parties : persistance puis XML.
Il faudra connaître Java et les Java Beans
====== Cours ======
Présentation du site Toplink JPA (oracle pour les tutos)
D'après le prof : TOUT est dans la doc. Chaque chapitre est auto - suffisant.
Première chose à faire après avoir été sur le site :
* Télécharger le logiciel (puis prise en main)
* Lire quelques tutos
* Aller sur Glassfish Project
* Voir "Example"
*
Plain ?Old? Java Object = POJO
===== Conseils pour les rendus =====
Préférer VIM plutôt que Netbeans ou Eclipse, ceci pour simplifier l'aide et les tutoriels rendus.
Ne jamais utiliser le code barre comme identifiant dans la BDD pour un objet. Il faut faire un AUTRE identifiant. (au cas où un jour on doit avoir deux code barre identiques).
La librairie permet de gérer pas mal de choses, il faut en profiter ;)

View File

@ -0,0 +1,124 @@
Vendredi 20 février 2009
A63 Persistance de données
M. LACHICHE
====== Cours ======
===== Shadow information =====
Toplink permet d'épargner toute l'instrumentation des attributs d'un objet pour renseigner son état d'insertion, de mise à jour, etc dans la base de données.
===== Mapping de l'héritage =====
Les BDD relationnel ne prennent pas en compte l'héritage => pas une raison pour éviter l'héritage.
Classe abstraite = classe qui ne peut pas avoir d'instance (abstract en java)
Personne est une classe abstraite.
Pour //mapper// l'héritage on a 4 solutions :
* Tout mettre dans une table
* Faire une table par classe concrète
* Faire une table par classe, y compris les abstraites
* Représenter les classes par une structure de classe générique
Les 3 premières solutions sont gérées par TopLink.
====== Exercice ======
On a une couche métier avec des Oiseaux, des Lézards, des Dragons.
Le dragon hérite du lézard et de l'oiseau.
L'oiseau possède les attributs suivants :
* vitesseMaximal
* tailleAiles
Le lézard possède les attributs suivants :
* nombreGriffes
* nombreCouleurs
Le dragon possède les attributs suivants :
* nom
* puissanceFeu
Intitulé de l'exercice : Adapter ce modèle métier aux 4 modèles de base de données expliqués dans le cours.
===== Corrigé =====
==== Solution 1 ====
On doit créer une table : ANIMAL.
Attributs :
* identifiant
* typeAnimal
* nombreGriffe
* nombreCouleur
* tailleAiles
* vitesseMaximale
* nom
* puissanceFeu
==== Solution 2 ====
Trois tables :
* Oiseau
* Lézard
* Dragon
Attributs pour Oiseau :
* id
* vitesseMaximale
* tailleAiles
Attributs pour Lézards :
* identifiant
* nombreGriffes
* nombreCouleurs
Attributs pour Dragons :
* identifiant
* vitesseMaximal
* tailleAiles
* nombreGriffes
* nombreCouleurs
* puissanceFeu
* nom
==== Solution 3 ====
Trois tables :
* Oiseau
* Lézard
* Dragon
Avec chacune leur propres attributs (pas de redondance d'attributs dans Dragon.
Plusieurs solutions :
* soit on met idAnimal partagé par tout le monde, comme avant
* soit on adapte : on met idOiseau et idLézard en clé primaire pour dragon, et idOiseau et idLézard dans leur table respective
==== Solution 4 ====
On reprend le même modèle que dans le cours.
On remplit alors les classes, voilà tout.
----
Séance 3
====== Mapping des associations ======
Dans les SGBD, relation voulait dire association des domaines de la table.
Cependant, cela est actuellement utilisé pour des relations entres les tables.
Clés artificielles pour être indépendant du domaine d'application : si on a besoin de deux objets identiques mais différents pour nous (exemple : code barre des produits)
====== Mapping des propriétés de classe ======
Ne peuvent pas être géré comme des attributs ordinaires car sont là pour UNE classe pas pour ses instances si on veut.

View File

@ -0,0 +1,9 @@
Jeudi 08 janvier 2009
M.DIVOUX
G54 Modélisation objet
====== Mini - projet ======
Titre : Feux tricolores

2100
cours/G54/ASIUTI.uml 100644

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,45 @@
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : Graphic_GUI.java
// @ Date : 09/01/2009
// @ Author :
//
//
package GUI;
public class Graphic_GUI extends Observer.Observer {
public void update() {
}
public void newTrafficLight(TrafficLights.TrafficLight t) {
}
public void changeState() {
}
public void powerOn() {
}
public void powerOff() {
}
public void showState() {
}
public void update() {
}
}

View File

@ -0,0 +1,45 @@
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : Text_GUI.java
// @ Date : 09/01/2009
// @ Author :
//
//
package GUI;
public class Text_GUI extends Observer.Observer {
public void update() {
}
public void newTrafficLight(TrafficLights.TrafficLight t) {
}
public void changeState() {
}
public void powerOn() {
}
public void powerOff() {
}
public void showState() {
}
public void update() {
}
}

View File

@ -0,0 +1,19 @@
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : Observer.java
// @ Date : 09/01/2009
// @ Author :
//
//
package Observer;
public abstract class Observer {
public abstract void update();
}

View File

@ -0,0 +1,30 @@
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : Subject.java
// @ Date : 09/01/2009
// @ Author :
//
//
package Observer;
public abstract class Subject {
public Observer myObservers;
public void notifyObserver() {
}
public void addObserver(Observer o) {
}
public void deleteObserver(Observer o) {
}
}

View File

@ -0,0 +1,28 @@
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : TrafficLight.java
// @ Date : 09/01/2009
// @ Author :
//
//
package TrafficLights;
public class TrafficLight extends Observer.Subject {
private int state;
public static int[] s_StateList() = [1,2,3];
public void change() {
state += 1;
getState();
}
public void getState() {
System.out.println(state);
}
}

Binary file not shown.

View File

@ -0,0 +1,76 @@
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : Pape.java
// @ Date : 19/12/2008
// @ Author :
//
//
public class Pape
{
private int numero;
private String prenom;
private static Pape lePape = null;
public static void main(String args[]){
Pape jp2 = new Pape("Jean - Paul", 2);
System.out.println(jp2.getNomPape());
Pape b16 = new Pape("Benoît", 16);
jp2.nommerPape(jp2.prenom, jp2.numero);
b16.nommerPape(b16.prenom, b16.numero);
System.out.println(b16.getNomPape());
}
public Pape(String nom, int num){
this.prenom = nom;
this.numero = num;
}
public static void nommerPape(String nom, int num)
{
if (lePape == null){
lePape = new Pape(nom, num);
System.out.println("Applaudissez la venue de " + nom + " " + num + " dans la Papautée.");
}
else {
System.out.println("Le pape existe déjà, " + nom + " " + num + " ne peut pas le devenir.");
}
}
public static Pape getPape()
{
return lePape;
}
public static String getNomPape()
{
if(lePape != null){
return "Pape actuel: " + lePape.prenom + " " + lePape.numero;
}
else {
return "Aucun pape n'a été nommé.";
}
}
public static void mortDuPape()
{
if(lePape != null){
lePape = null;
}
else {
System.out.println("Il n'existe pas de Pape actuellement !");
}
}
public String getNom()
{
String nomPape = new String(this.prenom + this.numero);
return nomPape;
}
}

View File

@ -0,0 +1,327 @@
<?xml version="1.0" encoding="UTF-8"?>
<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
<XPD:HEADER>
<XPD:SUBUNITS>
</XPD:SUBUNITS>
<XPD:PROFILES>
<XPD:PROFILE>UMLStandard</XPD:PROFILE>
</XPD:PROFILES>
</XPD:HEADER>
<XPD:BODY>
<XPD:OBJ name="DocumentElement" type="UMLProject" guid="Qj2mGjN7jU+wUDqX/J9FzwAA">
<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
<XPD:ATTR name="#OwnedElements" type="integer">5</XPD:ATTR>
<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="2ary3NrYa0GMSin1iYWQxwAA">
<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="mNnFXa3l+0OdpOlJyG5aMAAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:REF name="DiagramOwner">2ary3NrYa0GMSin1iYWQxwAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="FPWqY3T2QkGLadZgrHj0VwAA">
<XPD:REF name="Diagram">mNnFXa3l+0OdpOlJyG5aMAAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="fYmpUj87dECeJCR2IRZDBAAA">
<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="GjzCeSm7HE+P53NpVuTOYgAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
<XPD:REF name="DiagramOwner">fYmpUj87dECeJCR2IRZDBAAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="zjjQJ8/KZU+NRxxjNNq5bQAA">
<XPD:REF name="Diagram">GjzCeSm7HE+P53NpVuTOYgAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="Ob07tE6nnUO78i7eW/RnNwAA">
<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="vZppBR1+HUm/qr5Kqcq23wAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
<XPD:REF name="DiagramOwner">Ob07tE6nnUO78i7eW/RnNwAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="sP25l6clQEylf4Kjcp8xSgAA">
<XPD:REF name="Diagram">vZppBR1+HUm/qr5Kqcq23wAA</XPD:REF>
<XPD:ATTR name="#OwnedViews" type="integer">2</XPD:ATTR>
<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="o8LfewEVw0uNiPnnEFZt1QAA">
<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
<XPD:ATTR name="Left" type="integer">160</XPD:ATTR>
<XPD:ATTR name="Top" type="integer">80</XPD:ATTR>
<XPD:ATTR name="Width" type="integer">189</XPD:ATTR>
<XPD:ATTR name="Height" type="integer">147</XPD:ATTR>
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="FZhd6/tjrESn5RbGXEr5CAAA">
<XPD:OBJ name="NameLabel" type="LabelView" guid="UOkL0fXHOkK88KN+d2nYWwAA">
<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
<XPD:ATTR name="Text" type="string">Pape</XPD:ATTR>
</XPD:OBJ>
<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="K5SIZfIXoUaSlnXCPSFkIwAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
</XPD:OBJ>
<XPD:OBJ name="PropertyLabel" type="LabelView" guid="anrIKd0roEu12yCf2fErHwAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="/bpC5ZZwdEmPMhB9WKj87QAA">
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="WikhTKQKY0aF+zHtukDYxwAA">
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="7A0XtOhZLUyirUW9Y3lyYQAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedViews[1]" type="UMLAssociationView" guid="bX2JIVMaC0CcPZuQ+bYwHgAA">
<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
<XPD:ATTR name="Points" type="Points">226,80;226,48;396,48;396,136;348,136</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
<XPD:REF name="Head">o8LfewEVw0uNiPnnEFZt1QAA</XPD:REF>
<XPD:REF name="Tail">o8LfewEVw0uNiPnnEFZt1QAA</XPD:REF>
<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="hSfkkIo2+ESke89Tx1Hl5QAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="e9proM3Yz0Wpu28rMmJxUgAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="v/6TmY2EX0CUwk1Q1FqQ5QAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="3ftEaR65MUGKXM9QCqjEuQAA">
<XPD:ATTR name="FontStyle" type="integer">4</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
<XPD:ATTR name="Text" type="string">-lePape</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="g/A7z25CvEWHas2tpdUb0gAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="xlCIJwLgYES8y1wPPwaPngAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="UVFRiD9/80uiagtPHvQqYgAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="UlGrQCpeTUm4PnWWoZZm/QAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="ggq+Bb/DoEmQn2IOeNHrnwAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="hM2XnYEDBUud0d/d+KPmyQAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Left" type="integer">-1116</XPD:ATTR>
<XPD:ATTR name="Top" type="integer">-1120</XPD:ATTR>
<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="nWvIT3PyhEKavFNEKOJXOgAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Left" type="integer">-1116</XPD:ATTR>
<XPD:ATTR name="Top" type="integer">-1120</XPD:ATTR>
<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:ATTR name="#OwnedElements" type="integer">2</XPD:ATTR>
<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="DbSfU3PyYE6N2LAQlK2UaQAA">
<XPD:ATTR name="Name" type="string">Pape</XPD:ATTR>
<XPD:REF name="Namespace">Ob07tE6nnUO78i7eW/RnNwAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">o8LfewEVw0uNiPnnEFZt1QAA</XPD:REF>
<XPD:REF name="Views[1]">/bpC5ZZwdEmPMhB9WKj87QAA</XPD:REF>
<XPD:REF name="Views[2]">WikhTKQKY0aF+zHtukDYxwAA</XPD:REF>
<XPD:REF name="Views[3]">7A0XtOhZLUyirUW9Y3lyYQAA</XPD:REF>
<XPD:ATTR name="#Operations" type="integer">5</XPD:ATTR>
<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="3GuCC3PAIEqimhyIwLKDjAAA">
<XPD:ATTR name="Name" type="string">nommerPape</XPD:ATTR>
<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="8OG9JvAcUEOx2LceOhKoigAA">
<XPD:ATTR name="Name" type="string">nom</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="BehavioralFeature">3GuCC3PAIEqimhyIwLKDjAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="D/HjlADCoUWony5don3SrQAA">
<XPD:ATTR name="Name" type="string">num</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR>
<XPD:REF name="BehavioralFeature">3GuCC3PAIEqimhyIwLKDjAAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="2CiEx4HnIEGO8kQN/zn1ngAA">
<XPD:ATTR name="Name" type="string">getPape</XPD:ATTR>
<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="2RK9uCB/M0ujeIT/vGaUGwAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:REF name="BehavioralFeature">2CiEx4HnIEGO8kQN/zn1ngAA</XPD:REF>
<XPD:REF name="Type_">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="Rhhn3IJa+0qMS8B/pWmfIQAA">
<XPD:ATTR name="Name" type="string">getNomPape</XPD:ATTR>
<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="l2cLgKD4PUSAxBWapanbcQAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="BehavioralFeature">Rhhn3IJa+0qMS8B/pWmfIQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="8AoI/l8L7UarNblAmj3EYwAA">
<XPD:ATTR name="Name" type="string">mortDuPape</XPD:ATTR>
<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="OvYEscq15kumT4x/wdsgSgAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
<XPD:REF name="BehavioralFeature">8AoI/l8L7UarNblAmj3EYwAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="4432x1Vq4USH1BO1XgVYgQAA">
<XPD:ATTR name="Name" type="string">getNom</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="7kQJiWxADkOJHe/joAR/KQAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="BehavioralFeature">4432x1Vq4USH1BO1XgVYgQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:ATTR name="#TypedParameters" type="integer">2</XPD:ATTR>
<XPD:REF name="TypedParameters[0]">2RK9uCB/M0ujeIT/vGaUGwAA</XPD:REF>
<XPD:REF name="TypedParameters[1]" pathname="instancePape">ho7Qbw3TSEmW5HhZ3lAoUAAA</XPD:REF>
<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
<XPD:REF name="Associations[0]">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
<XPD:REF name="Associations[1]">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
<XPD:ATTR name="#Attributes" type="integer">2</XPD:ATTR>
<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="SFMalK1CBEKzNTpovygLFgAA">
<XPD:ATTR name="Name" type="string">numero</XPD:ATTR>
<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="yLHVihhGlEKvNgEpNAoYVwAA">
<XPD:ATTR name="Name" type="string">prenom</XPD:ATTR>
<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[1]" type="UMLAssociation" guid="99ljN4FUyUeJu/GkElsDdAAA">
<XPD:REF name="Namespace">Ob07tE6nnUO78i7eW/RnNwAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">bX2JIVMaC0CcPZuQ+bYwHgAA</XPD:REF>
<XPD:REF name="Views[1]">hSfkkIo2+ESke89Tx1Hl5QAA</XPD:REF>
<XPD:REF name="Views[2]">e9proM3Yz0Wpu28rMmJxUgAA</XPD:REF>
<XPD:REF name="Views[3]">v/6TmY2EX0CUwk1Q1FqQ5QAA</XPD:REF>
<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="cnCrenfkf0iRSJbzedJkRQAA">
<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR>
<XPD:REF name="Association">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
<XPD:REF name="Participant">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">g/A7z25CvEWHas2tpdUb0gAA</XPD:REF>
<XPD:REF name="Views[1]">UVFRiD9/80uiagtPHvQqYgAA</XPD:REF>
<XPD:REF name="Views[2]">ggq+Bb/DoEmQn2IOeNHrnwAA</XPD:REF>
<XPD:REF name="Views[3]">nWvIT3PyhEKavFNEKOJXOgAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="NEClptlY/ESXByUZ/yuH0wAA">
<XPD:ATTR name="Name" type="string">lePape</XPD:ATTR>
<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR>
<XPD:ATTR name="TargetScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Association">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
<XPD:REF name="Participant">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">3ftEaR65MUGKXM9QCqjEuQAA</XPD:REF>
<XPD:REF name="Views[1]">xlCIJwLgYES8y1wPPwaPngAA</XPD:REF>
<XPD:REF name="Views[2]">UlGrQCpeTUm4PnWWoZZm/QAA</XPD:REF>
<XPD:REF name="Views[3]">hM2XnYEDBUud0d/d+KPmyQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="Xwqy/TXVCUGw6DaszFLkxwAA">
<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="8XTkA2u+AUuYCuoKB8wmmgAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:REF name="DiagramOwner">Xwqy/TXVCUGw6DaszFLkxwAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="ZYy0m3cPZUa872gMyua2PgAA">
<XPD:REF name="Diagram">8XTkA2u+AUuYCuoKB8wmmgAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="t9Cpefxbe0iz24jLUmet7wAA">
<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="bLHdkI/TuUaK53xTygR9yQAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:REF name="DiagramOwner">t9Cpefxbe0iz24jLUmet7wAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="d13WhslCxk2yEoS3wF52SQAA">
<XPD:REF name="Diagram">bLHdkI/TuUaK53xTygR9yQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
</XPD:BODY>
</XPD:PROJECT>

View File

@ -0,0 +1,315 @@
<?xml version="1.0" encoding="UTF-8"?>
<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1">
<XPD:HEADER>
<XPD:SUBUNITS>
</XPD:SUBUNITS>
<XPD:PROFILES>
<XPD:PROFILE>UMLStandard</XPD:PROFILE>
</XPD:PROFILES>
</XPD:HEADER>
<XPD:BODY>
<XPD:OBJ name="DocumentElement" type="UMLProject" guid="Qj2mGjN7jU+wUDqX/J9FzwAA">
<XPD:ATTR name="Title" type="string">Untitled</XPD:ATTR>
<XPD:ATTR name="#OwnedElements" type="integer">5</XPD:ATTR>
<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="2ary3NrYa0GMSin1iYWQxwAA">
<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="mNnFXa3l+0OdpOlJyG5aMAAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:REF name="DiagramOwner">2ary3NrYa0GMSin1iYWQxwAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="FPWqY3T2QkGLadZgrHj0VwAA">
<XPD:REF name="Diagram">mNnFXa3l+0OdpOlJyG5aMAAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="fYmpUj87dECeJCR2IRZDBAAA">
<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="GjzCeSm7HE+P53NpVuTOYgAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR>
<XPD:REF name="DiagramOwner">fYmpUj87dECeJCR2IRZDBAAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="zjjQJ8/KZU+NRxxjNNq5bQAA">
<XPD:REF name="Diagram">GjzCeSm7HE+P53NpVuTOYgAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="Ob07tE6nnUO78i7eW/RnNwAA">
<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="vZppBR1+HUm/qr5Kqcq23wAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR>
<XPD:REF name="DiagramOwner">Ob07tE6nnUO78i7eW/RnNwAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="sP25l6clQEylf4Kjcp8xSgAA">
<XPD:REF name="Diagram">vZppBR1+HUm/qr5Kqcq23wAA</XPD:REF>
<XPD:ATTR name="#OwnedViews" type="integer">2</XPD:ATTR>
<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="o8LfewEVw0uNiPnnEFZt1QAA">
<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
<XPD:ATTR name="Left" type="integer">160</XPD:ATTR>
<XPD:ATTR name="Top" type="integer">80</XPD:ATTR>
<XPD:ATTR name="Width" type="integer">189</XPD:ATTR>
<XPD:ATTR name="Height" type="integer">147</XPD:ATTR>
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="FZhd6/tjrESn5RbGXEr5CAAA">
<XPD:OBJ name="NameLabel" type="LabelView" guid="UOkL0fXHOkK88KN+d2nYWwAA">
<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR>
<XPD:ATTR name="Text" type="string">Pape</XPD:ATTR>
</XPD:OBJ>
<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="K5SIZfIXoUaSlnXCPSFkIwAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
</XPD:OBJ>
<XPD:OBJ name="PropertyLabel" type="LabelView" guid="anrIKd0roEu12yCf2fErHwAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="/bpC5ZZwdEmPMhB9WKj87QAA">
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="WikhTKQKY0aF+zHtukDYxwAA">
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="7A0XtOhZLUyirUW9Y3lyYQAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:REF name="Model">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedViews[1]" type="UMLAssociationView" guid="bX2JIVMaC0CcPZuQ+bYwHgAA">
<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR>
<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR>
<XPD:ATTR name="LineStyle" type="LineStyleKind">lsRectilinear</XPD:ATTR>
<XPD:ATTR name="Points" type="Points">226,80;226,48;396,48;396,136;348,136</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
<XPD:REF name="Head">o8LfewEVw0uNiPnnEFZt1QAA</XPD:REF>
<XPD:REF name="Tail">o8LfewEVw0uNiPnnEFZt1QAA</XPD:REF>
<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="hSfkkIo2+ESke89Tx1Hl5QAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="e9proM3Yz0Wpu28rMmJxUgAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">1,5707963267949</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="v/6TmY2EX0CUwk1Q1FqQ5QAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-1,5707963267949</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">15</XPD:ATTR>
<XPD:REF name="Model">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="3ftEaR65MUGKXM9QCqjEuQAA">
<XPD:ATTR name="FontStyle" type="integer">4</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
<XPD:ATTR name="Text" type="string">-lePape</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="g/A7z25CvEWHas2tpdUb0gAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">30</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="xlCIJwLgYES8y1wPPwaPngAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="UVFRiD9/80uiagtPHvQqYgAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-0,523598775598299</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">25</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="UlGrQCpeTUm4PnWWoZZm/QAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">-0,785398163397448</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="ggq+Bb/DoEmQn2IOeNHrnwAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Alpha" type="real">0,785398163397448</XPD:ATTR>
<XPD:ATTR name="Distance" type="real">40</XPD:ATTR>
<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="hM2XnYEDBUud0d/d+KPmyQAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Left" type="integer">-1116</XPD:ATTR>
<XPD:ATTR name="Top" type="integer">-1120</XPD:ATTR>
<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
<XPD:REF name="Model">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="nWvIT3PyhEKavFNEKOJXOgAA">
<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR>
<XPD:ATTR name="Left" type="integer">-1116</XPD:ATTR>
<XPD:ATTR name="Top" type="integer">-1120</XPD:ATTR>
<XPD:ATTR name="Width" type="integer">50</XPD:ATTR>
<XPD:ATTR name="Height" type="integer">8</XPD:ATTR>
<XPD:REF name="Model">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:ATTR name="#OwnedElements" type="integer">2</XPD:ATTR>
<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="DbSfU3PyYE6N2LAQlK2UaQAA">
<XPD:ATTR name="Name" type="string">Pape</XPD:ATTR>
<XPD:REF name="Namespace">Ob07tE6nnUO78i7eW/RnNwAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">o8LfewEVw0uNiPnnEFZt1QAA</XPD:REF>
<XPD:REF name="Views[1]">/bpC5ZZwdEmPMhB9WKj87QAA</XPD:REF>
<XPD:REF name="Views[2]">WikhTKQKY0aF+zHtukDYxwAA</XPD:REF>
<XPD:REF name="Views[3]">7A0XtOhZLUyirUW9Y3lyYQAA</XPD:REF>
<XPD:ATTR name="#Operations" type="integer">4</XPD:ATTR>
<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="3GuCC3PAIEqimhyIwLKDjAAA">
<XPD:ATTR name="Name" type="string">nommerPape</XPD:ATTR>
<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="8OG9JvAcUEOx2LceOhKoigAA">
<XPD:ATTR name="Name" type="string">nom</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="BehavioralFeature">3GuCC3PAIEqimhyIwLKDjAAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="D/HjlADCoUWony5don3SrQAA">
<XPD:ATTR name="Name" type="string">num</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR>
<XPD:REF name="BehavioralFeature">3GuCC3PAIEqimhyIwLKDjAAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="2CiEx4HnIEGO8kQN/zn1ngAA">
<XPD:ATTR name="Name" type="string">getPape</XPD:ATTR>
<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="2RK9uCB/M0ujeIT/vGaUGwAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:REF name="BehavioralFeature">2CiEx4HnIEGO8kQN/zn1ngAA</XPD:REF>
<XPD:REF name="Type_">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="Rhhn3IJa+0qMS8B/pWmfIQAA">
<XPD:ATTR name="Name" type="string">getNomPape</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="l2cLgKD4PUSAxBWapanbcQAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="BehavioralFeature">Rhhn3IJa+0qMS8B/pWmfIQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="8AoI/l8L7UarNblAmj3EYwAA">
<XPD:ATTR name="Name" type="string">mortDuPape</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR>
<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="OvYEscq15kumT4x/wdsgSgAA">
<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">void</XPD:ATTR>
<XPD:REF name="BehavioralFeature">8AoI/l8L7UarNblAmj3EYwAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:ATTR name="#TypedParameters" type="integer">2</XPD:ATTR>
<XPD:REF name="TypedParameters[0]">2RK9uCB/M0ujeIT/vGaUGwAA</XPD:REF>
<XPD:REF name="TypedParameters[1]" pathname="instancePape">ho7Qbw3TSEmW5HhZ3lAoUAAA</XPD:REF>
<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR>
<XPD:REF name="Associations[0]">cnCrenfkf0iRSJbzedJkRQAA</XPD:REF>
<XPD:REF name="Associations[1]">NEClptlY/ESXByUZ/yuH0wAA</XPD:REF>
<XPD:ATTR name="#Attributes" type="integer">2</XPD:ATTR>
<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="SFMalK1CBEKzNTpovygLFgAA">
<XPD:ATTR name="Name" type="string">numero</XPD:ATTR>
<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="yLHVihhGlEKvNgEpNAoYVwAA">
<XPD:ATTR name="Name" type="string">prenom</XPD:ATTR>
<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR>
<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR>
<XPD:REF name="Owner">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[1]" type="UMLAssociation" guid="99ljN4FUyUeJu/GkElsDdAAA">
<XPD:REF name="Namespace">Ob07tE6nnUO78i7eW/RnNwAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">bX2JIVMaC0CcPZuQ+bYwHgAA</XPD:REF>
<XPD:REF name="Views[1]">hSfkkIo2+ESke89Tx1Hl5QAA</XPD:REF>
<XPD:REF name="Views[2]">e9proM3Yz0Wpu28rMmJxUgAA</XPD:REF>
<XPD:REF name="Views[3]">v/6TmY2EX0CUwk1Q1FqQ5QAA</XPD:REF>
<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR>
<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="cnCrenfkf0iRSJbzedJkRQAA">
<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR>
<XPD:REF name="Association">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
<XPD:REF name="Participant">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">g/A7z25CvEWHas2tpdUb0gAA</XPD:REF>
<XPD:REF name="Views[1]">UVFRiD9/80uiagtPHvQqYgAA</XPD:REF>
<XPD:REF name="Views[2]">ggq+Bb/DoEmQn2IOeNHrnwAA</XPD:REF>
<XPD:REF name="Views[3]">nWvIT3PyhEKavFNEKOJXOgAA</XPD:REF>
</XPD:OBJ>
<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="NEClptlY/ESXByUZ/yuH0wAA">
<XPD:ATTR name="Name" type="string">lePape</XPD:ATTR>
<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR>
<XPD:ATTR name="TargetScope" type="UMLScopeKind">skClassifier</XPD:ATTR>
<XPD:REF name="Association">99ljN4FUyUeJu/GkElsDdAAA</XPD:REF>
<XPD:REF name="Participant">DbSfU3PyYE6N2LAQlK2UaQAA</XPD:REF>
<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR>
<XPD:REF name="Views[0]">3ftEaR65MUGKXM9QCqjEuQAA</XPD:REF>
<XPD:REF name="Views[1]">xlCIJwLgYES8y1wPPwaPngAA</XPD:REF>
<XPD:REF name="Views[2]">UlGrQCpeTUm4PnWWoZZm/QAA</XPD:REF>
<XPD:REF name="Views[3]">hM2XnYEDBUud0d/d+KPmyQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="Xwqy/TXVCUGw6DaszFLkxwAA">
<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="8XTkA2u+AUuYCuoKB8wmmgAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:REF name="DiagramOwner">Xwqy/TXVCUGw6DaszFLkxwAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="ZYy0m3cPZUa872gMyua2PgAA">
<XPD:REF name="Diagram">8XTkA2u+AUuYCuoKB8wmmgAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="t9Cpefxbe0iz24jLUmet7wAA">
<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR>
<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR>
<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR>
<XPD:REF name="Namespace">Qj2mGjN7jU+wUDqX/J9FzwAA</XPD:REF>
<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR>
<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="bLHdkI/TuUaK53xTygR9yQAA">
<XPD:ATTR name="Name" type="string">Main</XPD:ATTR>
<XPD:REF name="DiagramOwner">t9Cpefxbe0iz24jLUmet7wAA</XPD:REF>
<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="d13WhslCxk2yEoS3wF52SQAA">
<XPD:REF name="Diagram">bLHdkI/TuUaK53xTygR9yQAA</XPD:REF>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
</XPD:OBJ>
</XPD:BODY>
</XPD:PROJECT>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
Vendredi 09 janvier 2009
P51
====== Groovy ======
Présentation de Groovy
CF. http://groovy.codehaus.org/
====== Grails ======
Présentation de Grails, comme Groovy Rails
CF. http://grails.org/Home
GORB avec Hibernate
H??SQL
JUNIT pour les tests
5min de présentation, puis des questions

View File

@ -0,0 +1,20 @@
Vendredi 16 janvier 2009
P51
Séance 7
====== Aide sur le projet ======
Création d'un schéma de fonctionnement de l'application pour expliquer comment on peut résoudre nos soucis.
SAX Builder => dans JDOM. Permet de parser du XML (puis de gestion de session entre l'interface et le core).
+-------------+ +-------+ +---------+
O/ -> | | -> | | -> | | ---->\
-| | Interface | | Core | | Métier | > BDD (H2)
/ \ -> | | <- | | <- | | <----/
+-------------+ +-------+ +---------+
Cookie 1 Session 1 Session2
Cookie 2

View File

@ -0,0 +1,3 @@
#Fri Jan 09 08:16:41 CET 2009
css-profile//WebContent/index.jsp=org.eclipse.wst.css.core.cssprofile.css2
eclipse.preferences.version=1

View File

@ -1,13 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
BlankoNet</display-name>
<display-name>BlankoNet</display-name>
<servlet>
<description>
</description>
<display-name>
Profile</display-name>
<servlet-name>First Servlet</servlet-name>
<servlet-name>GeneralDispatcher</servlet-name>
<servlet-class>Octopus</servlet-class>
</servlet>
<servlet>
@ -17,19 +16,13 @@
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>First Servlet</servlet-name>
<url-pattern>/core</url-pattern>
<servlet-name>GeneralDispatcher</servlet-name>
<url-pattern>/contacts/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
<servlet-mapping>
<servlet-name>GeneralDispatcher</servlet-name>
<url-pattern>/login/*</url-pattern>
</servlet-mapping>
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</jsp-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
@ -42,4 +35,13 @@
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</mime-mapping>
<jsp-config>
<jsp-property-group>
<description>Toutes les pages</description>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
<include-prelude>/includes/header.jsp</include-prelude>
<include-coda>/includes/footer.jsp</include-coda>
</jsp-property-group>
</jsp-config>
</web-app>

View File

@ -1,129 +0,0 @@
html, body {
position: relative;
top: 0;
left: 0;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
background-color: white;
color: black;
}
a {
color: orange;
text-decoration: underline;
}
div#tete {
position: absolute;
top: 25px;
left: 0;
margin: 0;
padding: 0;
height: 125px;
width: 100%;
background-color: orange;
text-align: center;
}
div#navigation {
position: absolute;
top: 0;
left: 0;
height: 25px;
width: 100%;
margin: 0 0 5px 0;
padding: 0;
font-size: x-small; /* for IE 5.5 */
f\ont-size: small; /* feed to compliant browsers */
}
div#navigation ul {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
list-style-type: none;
clear: both;
}
div#navigation ul li {
height: 25px;
width: auto;
margin: 0;
padding: 0;
float: left;
}
div#navigation ul li a {
display: block;
height: 25px;
width: 100px;
bottom: 0;
line-height: 25px;
text-align: center;
}
div#navigation ul li a:hover {
color: white;
background-color: green;
-moz-border-radius: 10%;
-webkit-border-radius: 10px;
border-radius: 10%;
}
div#contenu {
position: absolute;
height: auto;
top: 180px;
right: 0;
margin: 0;
padding: 0;
}
div#menu {
position: absolute;
top: 150px;
left: 0;
height: 30px;
width: 100%;
margin: 0 0 5px 0;
padding: 0;
font-size: x-small; /* for IE 5.5 */
f\ont-size: small; /* feed to compliant browsers */
}
div#menu ul {
height: 100%;
width: 100%;
padding: 0;
margin: 0;
list-style-type: none;
clear: both;
}
div#menu ul li {
height: 30px;
width: auto;
margin: 0;
padding: 0;
float: left;
}
div#menu ul li a {
display: block;
height: 30px;
width: 100px;
bottom: 0;
line-height: 30px;
text-align: center;
}
div#menu ul li a:hover {
color: white;
background-color: brown;
-moz-border-radius: 10%;
-webkit-border-radius: 10px;
border-radius: 10%;
}

View File

@ -0,0 +1,12 @@
<%@ taglib uri="/WEB-INF/lib/tld/c.tld" prefix="mesTags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<mesTags:url var="ecocho" value="http://ecocho.fr" />
Voici un lien : <a href="${ecocho}">Ecocho.fr</a>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,8 @@
</div>
<div id="bg-bottom-contenu">
<p>Design by wooki</p>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,46 @@
<%@ taglib uri="/WEB-INF/lib/tld/c.tld" prefix="c" %>
<%@ taglib uri="/WEB-INF/lib/tld/fmt.tld" prefix="f" %>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>BlankoNet</title>
<link rel="stylesheet" type="text/css" href="/SocialNet/social.css" />
</head>
<body>
<div id="header">
<div class="centrage">
<h1><span>SocialNet</span></h1>
<ul>
<li><a href="/SocialNet" id="home">Accueil</a></li>
<li><a href="#categories" id="about">Navigation</a></li>
<li><a href="#contenu" id="link">Contenu</a></li>
<li><a href="#" id="contact">Contact</a></li>
</ul>
</div>
</div>
<div id="content">
<div id="side">
<h2 id="categories">Navigation</h2>
<div class="side-bloc">
<ul>
<li><a href="/SocialNet">Accueil</a></li>
<li><a href="/SocialNet/login/">Connexion</a></li>
</ul>
<div class="bottom-side-bloc"></div>
</div>
<h2 id="articles">Contacts</h2>
<div class="side-bloc">
<ul>
<li><a href="/SocialNet/contacts">Liste</a></li>
</ul>
<div class="bottom-side-bloc"></div>
</div>
</div>
<div id="contenu">
<div id="bg-centre-contenu">

View File

@ -1,112 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>BlankoNet</title>
<link rel="stylesheet" type="text/css" href="/BlankoNet/social.css" />
</head>
<body>
<div id="header">
<div class="centrage">
<h1><span>Kit Zikorama</span></h1>
<ul>
<li><a href="#" id="home">Home</a></li>
<li><a href="#" id="about">About</a></li>
<li><a href="#" id="link">Link</a></li>
<li><a href="#" id="contact">Contact</a></li>
</ul>
</div>
</div>
<h2>Introduction</h2>
<p>Soyez le bienvenue sur SocialNET, le r&eacute;seau social qui BLABLA</p>
<div id="content">
<c:out value="Bonjour" /><br/>
<div id="side">
<h2 id="categories">Categories</h2>
<div class="side-bloc">
<ul>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
</ul>
<div class="bottom-side-bloc"></div>
</div>
<h2 id="articles">Articles</h2>
<div class="side-bloc">
<ul>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
</ul>
<div class="bottom-side-bloc"></div>
</div>
<h2 id="articles">Archives</h2>
<div class="side-bloc">
<ul>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
<li><a href="#">Illum molestie</a></li>
</ul>
<div class="bottom-side-bloc"></div>
</div>
</div>
<div id="contenu">
<div id="bg-centre-contenu">
<h2>Tation minim</h2>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<h2>Tation minim</h2>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
<p>Tation minim ut consequat molestie at illum hendrerit eum magna. Hendrerit ullamcorper luptatum consequat duis,
laoreet accumsan et, ea. Consectetuer dolore wisi feugiat nostrud minim feugiat feugiat, ut dolore nisl feugait erat odio
qui feugait. </p>
</div>
<div id="bg-bottom-contenu">
<p>Design by wooki</p>
</div>
</div>
</div>
</body>
</html>
<h2>SocialNET, qu'est ce dont ?</h2>
<p>SocialNET permet de</p>
<ul>
<li>blah</li>
<li>blah</li>
</ul>

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -31,9 +31,9 @@ img {
}
#header h1 span {
position : absolute ;
/* position : absolute ;
top : -9999px ;
left : -9999px ;
left : -9999px ;*/
}
#header .centrage {

View File

@ -29,30 +29,43 @@ import javax.servlet.http.HttpServletResponse;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String uri;
String base;
//String base;
String call;
uri = request.getRequestURI();
base= request.getContextPath();
//base= request.getContextPath();
String tableau[] = uri.split("/");
if(tableau[tableau.length - 1].isEmpty()) {
System.out.println("erreur");
// System.out.println("erreur");
call = null;
}
else {
call = tableau[2];
System.out.println("Chemin: " + call);
// System.out.println("Chemin: " + call);
}
Map parameterList;
parameterList = request.getParameterMap();
if(parameterList.size() > 0){
System.out.println(request.getParameter("nom"));
// System.out.println(request.getParameter("nom"));
}
System.out.println("Base du site: " + base);
// System.out.println("Base du site: " + base);
String redirect = "/index.jsp";
if (call != null) {
}
else if (call == "contacts")
{
redirect = "/index.jsp";
}
else {
redirect = "/error.jsp";
}
ServletContext ctx = getServletContext();
RequestDispatcher rd = ctx.getRequestDispatcher("/index.jsp");
RequestDispatcher rd = ctx.getRequestDispatcher(redirect.toString());
rd.forward(request,response);
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -1,6 +0,0 @@
Séance 1 du 20 nov. 2008
Présentation du programme de Sécurité des systèmes d'information
Cf. Fichier PDF 'Cours0 Pres.pdf'

View File

@ -0,0 +1,9 @@
Jeudi 8 janvier 2009
S5B
M.Grad
Sécurisation des réseaux
Lorsqu'on passe sur Verisign pour un certificat, la clé privée est générée SUR notre ordinateur !

View File

@ -0,0 +1,44 @@
Jeudi 15 janvier 2008
S5B
M. GRAD
Services réseaux sécurisés
----
Acutellement, environ 20% des réseaux sans fil est non sécurisé en milieu URBAIN.
On utilise souvent la clé WEP pour la sécurité, ce qui est trop faible et totalement déraisonnable.
La nouvelle norme de sécurité est IEEE 802.11i, avec WPA.
Il est important d'avoir un système d'authentification, et donc utiliser un protocole tel que EAP. On peut se baser sur des certificats et/ou une authentification par identifiant/mdp.
Présentation du réseau sans fil Osiris, de l'UdS (Cf. Diapo)
====== Architectures réseaux ======
* Avec répéteurs => on fait tomber le réseau avec un broadcast
* Avec commutateurs normaux => tempête de broadcast
* On ajoute spanning tree => plus les tempêtes
* Routeurs => plusieurs domaines de collision
* Avec des vlan, un routeur, plusieurs commutateurs, on fait les réseaux qu'on veut
===== VLAN =====
==== Niv1 ====
Une technique consiste à affecter chaque port d'une armoire de commutateurs, à un VLAN particulier.
==== Niv2 ====
On procède par adresse MAC => il faut recenser les adresses MAC de tout le monde ...
==== Niv3 ====
Par sous réseaux et par protocole
====== IPv6 ======
Présentation d'IPv6 (Cf. Diapos)

View File

@ -0,0 +1,165 @@
Jeudi 29 janvier 2009
Intervention de Pierre DOLIS, expert système et stockage
pierre.dolis@cg67.fr
S5B
====== Présentation de l'auteur et de l'environnement ======
Technicien supérieur territorial au Conseil Général du Bas - Rhin
Guy Dominique KENNEL : Président du Conseil Général du Bas - Rhin
Effectif total du CG67 : 3600 agents
PoE = Power over Ethernet => alimente les périphériques à l'aide du câble ethernet (à travers)
80 instances virtuelles sur 10 serveurs OSX (avec Vmware)
Volumétrie utile de 40 Teraoctets avec sauvegarde sur bande
Auto - hébergement de leur site internet
30Mbits de débit internet par 9 Télécom (par deux liaisons de 15Mbits)
Serveur d'authentification RADIUS (avec des clé ayant un "token", clé générée toute les 30 secondes) pour l'accès Web dit ExtraWeb
70 serveurs qui hébergent des applications clients/serveurs classiques et des progiciels. (tous sous M$)
2 forêts :
* une de production (cg67.fr)
* une d'études (etudes.fr)
====== Infrastructure ======
2 sites :
* Le principal HD (etudes)
* Le secondaire LeVaisseau (cg67.fr)
4700 utilisateurs, 800 groupes, et 4000 ordintateurs
Active Directory fait environ 200 Mo !
===== Courrier =====
Exchange 2003 en cours de migration vers Exchange 2007
Taille : 100 mo par boîte courriel
Serveur de fax pour permettre l'envoi de fax par Outlook
1 500 000 messages par mois, 80Go par mois
500 000 messages de Spam, 1.7 Go
20 Go de pièces jointes externes bloquées
400 Mo de virus bloqués par mois
Le serveur lui même, il n'y a aucun disque dur. Il y a une baie de stockage SAN ailleurs. Technologie/Architecture qui date de 2004 / 2005.
==== Pour 2009 ====
Sommes arrivés à la limite. Donc prise de décision de passer à Exchange 2007 du fait de son architecture 2007.
=> Mise en place d'un cluster de 2 nœuds au niveau des serveurs de boîte au lettres.
CCR = Cluster Continuous Replication, est utilisé pour la nouvelle infrastructure de messagerie.
===== Système de stockage =====
SAN = Storage Area Network, est un système de stockage partagé installé sur un réseau indépendant du LAN (2Gbits)
Permet consolidation et flexibilité au niveau de l'administration.
Acteurs du marché :
* EMC
* IBM
* HP
16 serveurs reliés au SAN du CG67
Cache = augmente performance écriture sur les disques (pour les baies SAN)
Provisioning : présente plus d'espace qu'il n'y en a dans la baie (en vue d'une évolution)
400 Go 10Kpm = 3 000 euros
SATA 500 Go 7200 tours = 700 euros
15 diques par tiroir.
==== Gestion ====
Navisphere (GUI)
SAN Copy et FLARE
SnapView et MirrorView
PowerPath
==== Prévisions 2009 ====
Objectif : acquérir une autre baie de stockage et répliquer les données pour permettre une reprise sur panne rapide (ou transparente)
===== Virtualisation =====
* Réduction des coûtes, matos maintenance
* Amélioration service
* Renforcement de la sécurité
* Simplification administration
* Flexibilité
La virtualisation permet l'allocation dynamique de ressources, mais également un VMFS (Performances élevées, stockage de gros fichiers, accès concurrents depuis plusieurs machines).
VMFS est un système de fichier propre à Vmware.
==== Configuration ====
32Go de ram
Bi Xeon EM64T à 3.2 Ghz et Quadri Xeon
Très consommateurs en ports réseaux
hotspare : disque à côté, en cas de défaillance d'un des 5 disques d'un RAID 5, le hotspare se remplace et s'intègre dans la baie RAID5. On enlève le disque défaillant, on le remplace, et le hotspare redevient en attente.
==== Fonctions avancées ====
* HA : High Availability : assure le redémarrage d'une machine, mais pas l'intégrité des données
* DRS : Distributed Resource Scheduler : déplacement des machines virtuelles en fonction des ressources utilisées
* Gestion de patchs automatisées
* Gestion du "storage" (storage vmotion), déplcement online sur une autre baie de stockage
* Distribution Power Management
* Site Recovery Manager (automatisation des process de disaster recovery)
==== Apports de la virtualisation ====
flexibilité
Migration des VM sans interruption
??
??
==== Perspective 2009 / 2010 ====
Répliquer le tout sur un second site
====== Fonction publique territoriale ======
250 métiers, 60 cadres d'emplois, 8 filières
Catégorie A :
* Administratif : à partir de Licence (Bac + 3)
* Technique : à partir de Bac + 5
Catégorie B :
* Bac
* Bac + 2
Catégorie C :
* Sans condition de diplôme
* BEP/CAP
En fonction des années, il y a des grades, des échelons.
Recrutement se fait principalement par concours (examen à passer).
* partie écrite
* partie orale
il y a des concours externes et internes. Pour les concours internes, c'est après 4 ans de services dans la fonction publique (pour évoluer).
Partie écrite : rédiger une note de synthèse.

View File

@ -0,0 +1,88 @@
====== Sécurisation d'un serveur GNU / Linux ======
But du TP : Exploiter les connaissances acquises durant les cours d'administration système pour sécuriser un serveur GNU / Linux, étape par étape
Eléments pour construire le TP :
* Administration, Tome3 : sécuriser un serveur Linux (nommé ici T3)
* Sécurité Linux (nommé ici Cadenas)
COMPLETER la liste des éléments fournis.
Ressources :
* Isos Linux : http://ftp.u-strasbg.fr/isos/
* Vmware : demander code à M. GRAD (déjà fait)
===== Notes =====
* Reprendre les points données au chap 1 du T3 pour faire un genre de cours rapide sur la sécurité :
* politique de sécurité
* audit (scripts qui testent la sécurité)
* formation des employés
* sécurité physique d'un serveur
* etc.
* Faire ce que nous appelons des "clins d'½il" aux cours de l'année, pour permettre à l'élève de se sentir dans son élément
* Faire un mini - recueil d'astuces pour permettre à l'élève d'avancer rapidement :
* gpg --symetrie fichier
*
===== En vrac =====
* Sauvegarde = une partie de sécurité importante
* Lire manuel de sécurité Debian p1-4
===== Idée(s) de TP =====
* Mot de passe : Martine est utilisateur de la machine, elle possède des droits //sudo// et ne ferme pratiquement jamais son bureau (c'est une tête en l'air). Dans son bureau, à côté de l'écran, se trouve plusieurs photos de son chien **pompom**
* Snif réseau d'un utilisateur ? : donner le log du sniffage
* Mettre un outil de pirate sur le serveur et permettre à l'élève de détecter puis éradiquer ledit outil
* coroner toolkit ?
* t0rn ?
* Faire peut être un joomla ou un drupal ayant une faille connue, l'exploiter pour casser le forum / site, et demander à l'élève de réparer ?
* recherche de la mise à jour
* installation suivant procédure donnée par le site de joomla ou drupal
* Injection SQL / XSS pour détruire un site ?
* Vérification des commandes basiques tels que ls, cd, etc.
===== Tâches à faire =====
* Liste l'ensemble des choses à vérifier :
* mdp trop simple
* bios
* lecture journaux (log)
* accès machine
===== Liste =====
* isolation : le serveur ne doit pas être accessible physiquement => minimum salle sans fenêtre, climatisée (+) et avec porte blindée et digicode, mur en béton armé (pas en plâtre). Idem pour les sauvegardes => pas de clé USB !
* fournir un mdp à chaque utilisateur, ne pas lui laisser le changer (contrôle total de la fragilité des mdps) : 2majuscules, 4 minuscules, 2 chiffres et 2 caractères comme **/**, **;** .
* Donner des instructions à chaque utilisateur :
* Ils doivent apprendre par c½ur le mot de passe
* Supprimer le papier où le mot de passe était => destructeur de documents (chercher le pourcentage de données récupérés par des "malfaiteurs" dans les poubelles)
* ne donner __sous aucun prétexte__ le mot de passe à quelqu'un, quel qu'il soit !
* ne jamais énoncer de vive voix (ni de voix tout court) le mdp
* Si on quitte quelques secondes le poste, on doit VERROUILLER la session
* Sous Microsoft Windows [touche windows] + [L]
* Sous GNU / Linux [Ctrl] + [Alt] + [L] (sous gnome et KDE => non testé ailleurs)
* vérifier que les utilisateurs n'appartiennent pas à des groupes ayant trop de permissions
* vérifier les accès aux serveurs web, si l'utilisateur a le sudo ou pas
* Web : apache, fichiers des sites, etc... => droits sur dossier partagé
* Notamment Samba, NFS (faire NIS), etc...
----
* Minimisation
* Granularité des défenses => plusieurs couches de protection : minimiser les services donc les portes, ajouter de l'audit (= écoute des évènements)
* Que faire en cas de pertes de données ? Où sont les sauvegardes ? Et si le feu a tout détruit ? Où est le serveur de secours ? => les assurances ne paient RIEN si on a pas de quoi redémarrer rapidement !!
* Surveillance
* Vérifier fréquemment l'état du système : courriel envoyé, lecture des journaux, tâches cron pour les sauvegardes
* Désinformation (exemple du livre, avec Hitler qui pensait que le débarquement serait fait au Pas - De - Calais)
* formation, information, sanctions : notices d'utilisations ludiques ? Qui amènent une envie d'être apprises ?
* tutos interactifs ? imagés ?
* La veille informatique : être toujours au courant de ce qui existe / se passe ailleurs

View File

@ -0,0 +1,140 @@
Jeudi 12 février 2009
Cours d'ergonomie
M. PULVERMULLER : pulvermuller@dpt-info.u-strasbg.fr
Ergonomie et ICHM
====== Cours ======
===== Exemples =====
Pour savoir qu'une information parvienne à destination, il faut un panel d'utilisateurs qui iront tester la chose, histoire d'avoir un retour.
Feed - back = retour utilisateur
Guidage : quelque chose qui permet de guider l'utilisateur, soit par un ensemble d'exemples, soit pas un schéma.
Il existe également des guidages textuels par une page adaptée, plus précises, prévue à cela.
Dynamique d'utilisation : quand est ce que cela est utile ? (exemple : panneau d'affichage des trams qui sont visibles que de la voie d'en face ou sur la voie elle même)
Exemple de guidage utile : mettre un libellé devant un code (exemple : carte d'étudiant, on met "Code étudiant", puis on met le code (en comparaison avec les autres codes))
Distinction : comment faire la différence entre deux compteurs comme un compte - tour et un compteur de vitesse ?
=> inutile de faire un lien en gras, tout comme des citations en gras. Il faut distinguer les comportements et les composants de l'IHM pour éviter de les confondre.
Densité d'information : on ne doit pas avoir trop d'informations, il ne FAUT PAS chercher partout. (exemple: quand on a trop d'onglets, on s'y perd)
Pertinence : L'information doit être pertinente à l'utilisateur, bien que cela demande un coût de conception, réalisation, etc.
Compréhension : il faut savoir à quoi sert quoi ! (exemple: si on a des boutons dans l'interface, il faut savoir ce qu'il fait)
NB : Ergonomie = la plus adaptée à l'utilisateur et au métier. L'ergonomie n'est PAS "la plus belle IHM" qui existe.
Confirmation : Toujours être clair pour que la personne sache qu'un clic critique soit parlant. (exemple : au clic pour suppression, afficher un message de confirmation et il doit CONTENIR un détail pour UN objet donné)
===== Ergonomie : Définition =====
L'ergonomie (ou l'étude des facteurs humains) est la discipline scientifique qui vise la compréhension fondamentale des interactions entre les êtres humains et les autres composantes d'un système, et la mise en œuvre de principes et de méthodes afni d'améliorer le bien - être des hommes et l'efficacité globale du système.
En informatique : L'ergonomie informatique a pour objectif l'amélioration du dialogue homme - ordinateur.
On distingue en général l'ergonomie du logiciel et celle du web.
===== ICHM =====
Interface de Communication entre l'Homme et la Machine
===== Directive =====
Les directives sont des recommandations visant à guider l'action des concepteurs dans la réalisation d'une interface entre l'homme et la machine.
===== La couleur et le champ visuel =====
Derrière l'œil nous avons la rétine : bâtonnets et les cônes.
C = captent la couleurs (déficience => daltonisme)
B = contraste + luminosité
Les déficiences font qu'il faille faire attention à ce que nous faisons sur un site pour des utilisateurs potentiellement daltoniens.
Comment décrire une couleur :
* Teinte (hue) => couleur
* Saturation (Saturation) => degré de pureté de la couleur
* Luminosité (Lightness) => plus ou moins de blanc sur la couleur
Dans une IHM on évite de multiplier le nombre de teintes utilisées !!!!
On utilise 5 couleurs MAXIMUM + ou - 2 !
Dans une barre d'outils, trop de couleurs bruitent l'œil de l'utilisateur. il faut donc éviter de mettre trop de couleurs.
Cohérence et attention visuelle : une même couleur doit donner le même effet / même fonctionnalité, même champ de fonctionnalité. (exemple : si on prend des liens bleus pour naviguer, il ne faut PAS de mots en bleu, sinon ambigüité)
Signaux d'attention : HAUTE luminosité et saturation !!!
Le système perceptif aime bien les couleurs complémentaires (à l'exception du rouge/vert).
* Bleu / orange
* Jaune / violet
* Rouge / vert
* Blanc / noir : couleur fondamentales
* Rouge : alarmes erreurs stop
* Jaune : avertissement ou données exigeant de l'attention
* Vert : Normal, OK, Allez
* Bleu saturé : mise en retrait
* Bleu dé-saturé : froid, eau
* Rose (magenta) : alarme secondaire, différenciation de données
Autre couleur : différencation de données
La sensation des couleurs :
* Couleurs chaudes autour du rouge
* Couleurs froides autour du vert/bleu
L'œil perçoit des couleurs en fonction des distances.
CHSCT = condiitons de travail qui viennent et peuvent interdire l'utilisation d'une IHM (à cause des soucis de vision)
Deux couleurs proches sur la bande chromatique ont un effet de profondeur diminué.
L'orange attire l'œil.
Ne JAMAIS juxtaposer le rouge et le vert !
Généralement le jaune et le bleu sont bien reconnus.
Lecture iconographique d'une image, d'une photo, d'un journal, se fait en Z. De en haut à gauche vers en bas à droite.
Mnème = Quantité d'information connu, familière traitée par la mémoire à court terme et caractérisée par son unité.
Le cerveau humain a un certain nombre de mnème (système mnèmotechnique). Donc on garde pas énormément d'information. Lors de l'utilisation d'un logiciel il ne faut pas qu'il garde trop de choses en mémoire.
Implication sur la conception des interfaces :
* minimiser la quantité des données à traiter
* améliorer la qualité des données
===== Les critères d'ergonomie =====
Une interface informatique doit satisfaire deux grands critères :
* Utilité : L'application doit servur un besoin (un système peut respecter tous les critères d'utilisabilité mais peut être inutile)
* utilisabilité : capacité d'un produit à être utilisé avec efficacité dans un contexte d'utilisation défini, pour un besoin déterminé, par des utilisateurs spécifiques
De façon générale, l'utilisabilité d'un système concerne :
* facilité d'utilisation
* facilité d'apprentissage
* efficacité d'utilisation
* utilisation sans erreurs
* satisfaction de ses utilisateurs
==== Vocabulaire ====
* Anxiété de l'information : stress causé par l'incapacité de l'utilisateur à trouver ou à comprendre l'information dont il a besoin : surcharge d'information, manque de clarté de son organisation, insuffisance, présentation trop complexe
* Achitecture de l'information : C'est l'organisation de l'information : comment organiser l'information efficacement pour éviter le phénomène d'anxiété de l'information
* Design centré utilisateur (DCU) : Processus de design effectué autour des besoins et des objectifs des utilisateurs. L'utilisabilité étant une priorité dans cette démarche, les utilisateurs participent au processus
* Design d'interface : Processus global de conception, comment l'utilisateur pourra interagir avec une application (phases d'analyse des besoin, d'architecture de l'information, du design)
* Design de l'information : structure, sélection et présentation de l'information. Englobe l'architecture, la visualisation et la recherche de l'information.
* Facteurs humains
* Guide de l'interface utilisateur (GIU)
* Visualisation de l'information

View File

@ -0,0 +1,179 @@
Vendredi 13 février 2009
Cours d'ergonomie
M. PULLVERMULLER
====== Cours ======
Plusieurs critères après avoir fait des centaines et des centaines d'IHM : critères de Bastien
===== Compatibilité =====
Compatibilité entre le logiciel et son utilisateur (pour une cible particulière d'utilisateur)
* Adéquation du logiciel vis à vis de son utilisateur
* de ses habitudes de travail
* de son contexte (physique et social) de travail (simplifier la vie de l'utilisateur)
* La logique d'utilisation du système doit correspondre à la logique de l'utilisateur : par exemple des liens raccourcis pour des habitudes qu'on a quand on lance le logiciel
* Objectif : minimiser le transcodage de la connaissance entre le métier et le logiciel (utiliser le vocabulaire de l'utilisateur)
* Présenter les informations sous forme utilisable : parler le langage de l'utilisateur
===== Guidage =====
* Moyens mis en ½uvre pour orienter l'utilisateur et lui permettre de s'orienter :
* faire connaître l'état du système : quand on commence des billets SNCF, pendant la recherche il faut informer l'utilisateur qu'on est en cours de recherche
* établir des liens de causalité entre les actions de l'utilisateur et l'état du système
* Objectif : faciliter l'apprentissage et l'utilisation
* Deux niveaux de guidage :
* guidage explicite (on explique des choses à l'utilisateur via un message d'aide ou d'erreur)
* guidage implicite (on s'arrange pour guider l'utilisateur en agissant sur la présentation et l'organisation des informations)
==== Guidage par l'incitation (implicite) ====
Amener l'utilisateur à mener des actions spécifiques :
* Griser les commandes non disponibles
* Donner le format de saisie des données (explicite)
* Compléter les saisies partielles non ambiguës (exemple : Ja -> Janvier)
* Fournir une liste des saisies attendues (liste de sélection par exemple)
* établir des liens explicites entre les différentes valeurs à saisir
==== Guidage par groupement/distinction ====
* Par le format : distinguer visuellement les informations de types différents
* Par la position : rapprocher les commandes de même type (Functional chunking)
NB : Ordre d'utilisation par la fréquence de l'utilisation ou l'importance de l'utilisation !!!
==== Guidage : lisibilité ====
* Les minuscules sont moins discriminantes que les majuscules => dans une page Web il ne faut pas écrire en majuscule, sauf quand c'est indiqué de le faire !
==== Lisibilité et typographie ====
* Choisir une taille correcte : mini 8points, maxi 16 points
* Police de caractère en fonction des critères de lisibilité : une police de caractère à empattement prend plus de place qu'une police sans
* éviter plus de 3 polices de caractères différentes dans une même fenêtre (ou sur plusieurs fenêtres affichées simultanément)
Attention, très contextuel à l'applicatif.
===== Homogénéité =====
* La logique d'utilisation du système doit être constante, tant au niveau des procédures que de la représentation
* Graphsime, localisation, vocabulaire, etc.
* Homogénéité syntaxique des items de menu (courts de préférence)
Les trois petits points indiquent à l'utilisateur qu'il y aura une confirmation ou l'ouverture d'une nouvelle fenêtre.
===== Fléxibilité =====
Souplesse, flexibilité = Capacité de l'IHM à s'adapter à une population variée d'utilisateur :
* différents types d'utilisateurs
* différentes stratégies d'utilisation
Donner tout les moyens/procédures possibles pour atteindre le même objectif mais de façon différente.
Objectif : L'utilisateur choisit la procédure qui lui convient le mieux
Exemple:
* accès par menu, pour les débutants
* par raccourcis clavier (experts)
* Défauts utilisateur / Paramètrage => avec les macros on peut automatiser une tâche, ce qui assure une rapidité optimale !
===== Contrôle explicite =====
* Moyens pour permettre à l'utilisateur de maîtriser/contrôler les traitements réalisés par le système
* Les effets d'une commande doivent être prévisibles aux yeux de l'usager
* Objectifs : Meilleure compréhension du système (modèle mental exact)
* Facteur important d'acceptation du système
* Ex :
* Valider explicitement les commandes importantes ou difficilement réversibles
* Autoriser les interruptions
----
7 mai et 15 Mai TD
22 mai TP : présentation de notre première charte graphique
28 mai TP : pour seconde présentation
Mi - juin rendre la charte d'ergo, la charte graphique et quelques captures d'écran, une ou deux pages HTML de nos écrans montés
----
==== Actions explicites ====
Le système ne doit exécuter que des opérations demandées par l'utilisateur
Ex : action physique de validation, bouton ok ou clic.
===== Les erreurs =====
* Prévoir que l'utilisateur fera des erreurs
* Concevoir des moyens de pallier ce problème
* On doit pouvoir :
* protéger l'utilisateur contre des erreurs : détection de la part du système (saisie des dates, décimaux)
* l'avertir losqu'il a commis une erreur que l'on peut détecter
* corriger ou l'aider à corriger ses erreurs : guider l'utilisateur (étapes à suivre pour rectifier l'erreur)
* Minimiser le risque d'erreur améliore l'utilisabilité du système car les erreurs :
* rallongent le temps de réalisation de la tâche
* perturbent la planification
* diminuent la performance
* Prévenir des erreurs par une analyse des causes
Ne pas disperser l'utilisateur dans son objectif métier.
On doit toujours caller un libellé à gauche (plus simple à parcourir pour faire une recherche dans un écran).
==== Prévention ====
* Rendre clairement visible les changements de mode et les états du système
* éviter les erreurs cognitives (exemple : raccourcis clavier A, B, C, D pour Create, Delete, Append, Backup => il aurait fallu attacher Backup à B, etc.)
* éviter les incohérences
* Mettre en jeu la reconnaissance plutôt que le souvenir :
* Reconnaissance : choisir parmi plusieurs possibilités
* Souvenir : Se rappeler de la valeur à saisir
* La reconnaissance est moins sujette à l'erreur (exemple : utilisation des menus, listes)
* Erreurs motrices
* mouvements difficiles : F1, puis F12 : déplacement de la main d'un bout à l'autre du clavier
* contraintes temporelles
* faciliter le mouvement de la main
* augmenter la taille des objets sélectionnés
* Minimiser l'utilisaterion des modifieurs (Ctrl Alt Shift)
* Agrandir la taille des objets à sélectionner (éventuellement "au survol")
==== Comment gérer les erreurs ? ====
2 niveaux de protection contre les erreurs : prévention et détection (par correction)
Prévenir des erreurs en guidant l'utilisateur (Guidage/incitation) :
* Griser les commandes non disponibles
* Fournir la liste des valeurs possibles
* Indiquer les modes de fonctionnement du systèmes (feed-back)
Détecter les erreurs au plus tôt.
Faciliter la correction des erreurs :
* Message d'erreur pertinent :
* Nature de l'erreur
* Moyens de la corriger
* Rendre possible la correction
* accès et modification partielle => ne pas "scroller pour arriver à l'erreur"
Messages :
* mettre en évidence le champ erroné
* placer le message d'erreur là où l'utilisateur est sensé regarder
* Messages d'erreurs explicits, brefs, non réprobateurs et auto - suffisants
Correction de l'erreur :
* Retour en arrière ("Undo") avec Ctrl + Z
Rendre le message d'erreur **instructif**
Les messages doivent énoncer :
* quelle erreur a été détecté
* quel champ de saisie contient l'erreur
* quelle action correctrice doit être effectuée
===== Charte mentale =====