diff --git a/cours/G54/20081104-Seance3 b/cours/G54/20081104-Seance3 new file mode 100644 index 0000000..52afbc8 --- /dev/null +++ b/cours/G54/20081104-Seance3 @@ -0,0 +1,63 @@ +G54 +Jeudi 4 décembre 2008 +DUC : Le diagramme de cas d'utilisation ++ +DSQ : Diagramme de séquences + +====== Cours ====== + +===== DUC ===== + +==== Introduction ==== + + +Cahier des charges graphique. +Pas forcément pour les informaticiens car expliqué dans les grandes écoles de commerce, etc. + +Concepts présentés : + * Utilisateurs + * Système + * Fonction du système + * Droits d'accès + * Relations entre les cas d'utilisation + +ACTEUR = Quelqu'un qui aura quelque chose à faire avec mon logiciel + +Si on raye la tête de l'acteur (bonhomme) c'est un acteur EXTERNE. + +==== Rendre service ==== + +Le cas d'utilisation doit rendre un SERVICE à l'utilisateur (saisir le nom ne rend pas service à l'utilisateur). + +Les fonctions capitalisées (réutilisées) sont importantes, il faut alors prendre l'inclusion pour ce faire. + +Information sur les locataires : cas très général, qui sera simplement un menu ou un item de menu qui va donner accès à des sous - fonctions. Donc c'est abstrait + + +==== Accompagnement ==== + +Chaque UseCase s'accompagne : + * d'une description + * d'un diagramme de séquence + +Une description de UseCase il faut facilement une page. C'est pas quelques lignes d'explications. + +===== DSQ ===== + +Verticalement les barres représentent les objets + +Horizontalement les flèches représentent les échanges entre objets + +Généralement la barre de gauche est l'utilisateur (c'est pas un objet). + +Ensuite on peut voir l'IHM (ensemble des interactions que l'utilisateur peut avoir avec le système). + +==== Notation ==== + +Souligné : c'est une instance, qu'elle soit nommée ou pas + +Le modèle IHM ne doit pas centraliser l'intelligence métier ! + +sd : sequence diagram + + diff --git a/cours/G54/20081120-Seance1 b/cours/G54/20081120-Seance1 index f422e0f..3a57994 100644 --- a/cours/G54/20081120-Seance1 +++ b/cours/G54/20081120-Seance1 @@ -2,6 +2,8 @@ Jeudi, 20 nov 2008 G54 Séance 1 : Modélisation objet avancée, Présentation de la modélisation objet +Annexes : 'Polycopié Rappels DCA - DCC' et diapos polycopiées supplémentaires p22 à 27 + 36 +Exercice : 'Packager' ====== Présentation du programme ====== diff --git a/cours/G54/20081120-Seance1~ b/cours/G54/20081120-Seance1~ deleted file mode 100644 index d6bce30..0000000 --- a/cours/G54/20081120-Seance1~ +++ /dev/null @@ -1,54 +0,0 @@ -Jeudi, 20 nov 2008 -G54 - -Séance 1 : Modélisation objet avancée, Présentation de la modélisation objet - -====== Présentation du programme ====== - -===== Architecture 3 tiers ===== - -Tout se centre autour d'une architecture 3 tiers, avec trois types d'objets : - - * interface (IHM) - * métier (logique applicative) - * peristance (SGBD) - -===== Architecture ===== - -L'avenir du développement objet est d'avoir une plateforme de développement, comme si nous voulions compiler des modèles. - -Deux strates d'applications : - - * Concepteur métier : quelqu'un qui analyse (pas forcément du métier) - * Architecte logiciel : - -Le but est de paramétrer chaque couche, afin d'agir sur le développement au niveau du PIM, de la plateforme. - -===== Petit historique ===== - -En 1990, OMT (Roumbough) sortait, puis BOUCH sorti sa méthode (du même nom que son nom de famille), puis Jacobson s'est joint à eux pour sortir en 1997 UML. - -Object Management Group (OMG) - -===== Modeling ===== - -UML est un langage visuel, graphique, mais c'est un langage ! - -Il permet de : - * visualiser - * spécifiser - * structurer - -Mais UML n'est PAS UNE MÉTHODE. - -Il ne propose pas de démarche, mais seulement une façon de représenter les choses. - -====== Rappels ====== - -===== 3 types de propriétés ===== - - * individuelles - * collectives : souligné, et préfixé par *s-* (ex: nombre d'étudiant, dans la classe étudiant) - * communes : souligné, et préfixé par *c-* (ex: nombre de pattes des insectes) - - diff --git a/cours/G54/20081120-TP1 b/cours/G54/20081120-TP1 new file mode 100644 index 0000000..7254569 --- /dev/null +++ b/cours/G54/20081120-TP1 @@ -0,0 +1,6 @@ +TP1 du vendredi 21 novembre 2008 +G54 - Modélisation objet avancée + +Fichiers joints : Expressions arithmétiques 'exprArith.pdf' + +But du TP : arriver à faire un UML (DCA) qui représente un arbre binaire. diff --git a/cours/G54/20081127-Seance2-greve b/cours/G54/20081127-Seance2-greve new file mode 100644 index 0000000..e69de29 diff --git a/cours/G54/exprArith.pdf b/cours/G54/exprArith.pdf new file mode 100644 index 0000000..a830c26 Binary files /dev/null and b/cours/G54/exprArith.pdf differ diff --git a/cours/P51/20081120-Seance1 b/cours/P51/20081120-TP1 similarity index 99% rename from cours/P51/20081120-Seance1 rename to cours/P51/20081120-TP1 index d7c113e..46242e8 100644 --- a/cours/P51/20081120-Seance1 +++ b/cours/P51/20081120-TP1 @@ -1,5 +1,5 @@ Jeudi, 20 nov 2008 -Séance 1 +TP1 ====== Comparaison ====== diff --git a/cours/P51/20081121-Seance2 b/cours/P51/20081121-Seance1 similarity index 98% rename from cours/P51/20081121-Seance2 rename to cours/P51/20081121-Seance1 index a99ac5f..2e8e62c 100644 --- a/cours/P51/20081121-Seance2 +++ b/cours/P51/20081121-Seance1 @@ -1,7 +1,8 @@ 21 novembre 2008 -Séance 2 +Séance 1 Les threads +https://tetras.u-strasbg.fr/prive/pedagogie/LP/P51/index.php?menu=101 ====== Cours ====== diff --git a/cours/P51/20081121-Seance2~ b/cours/P51/20081121-Seance2~ deleted file mode 100644 index 6947502..0000000 --- a/cours/P51/20081121-Seance2~ +++ /dev/null @@ -1,127 +0,0 @@ -21 novembre 2008 -Séance 2 - -Les threads - -====== Cours ====== - -Le but de ce cours est d'utiliser la puissance des nouveaux processeurs pour faire des applications rapides. - -threads = sous partie d'un processus, donc se lance plus vite qu'un processus et prend moins d'espace mémoire -Faire un thread implique une nouvelle pile d'exécution et de nouveaux registres alloués. - -===== Les Threads, dans Java ===== - -Dans la classe Java.lang.Thread, il faut l'interface *Runnable :*, et la méthode *run()* (qui ne prend pas d'arguments). - -Faire un thread en Java : - * soit on étend (sous - classer) un thread (à l'aide d'extends) - * soit on implémente *Runnable* à notre classe Java. - -===== Comment choisir quelle méthode utiliser ? ===== - -Comme Java n'accepte pas l'héritage multiple, mieux vaut implémenter qu'étendre si on a déjà étendu notre classe Java avec une autre. - -Implémenter "marche à tout les coups", contrairement à l'autre méthode. - -===== Gestion des priorités ===== - -Si un thread n'est pas actif, il ne consommera pas de temps CPU, vu qu'il est mis de côté. - -MAX_PRIORITY et MIN_PRIORITY sont des variables définies dans la classe Thread. - -===== Concurrence d'accès ===== - -Pour éviter l'interblocage, on utilise le mot clé *synchronized* pour gérer les concurrences d'accès. - -==== Concurrence d'accès sur une méthode ==== - -Le verrou est sur l'instance de la classe et pas sur la classe elle même - -Mettre un verrou pour une instance d'un champ statique (static) n'est pas la bonne solution !!! - -==== Contrôler l'accès à un objet ==== - -Utile si la classe a été créée sans être prévue/pensée pour les Threads. - -Ceci permet d'utiliser une classe dans des Threads. - -===== Groupes de Threads ===== - -Seulement si on a beaucoup de threads (en faisant des *ThreadGroup*). - -Permet de lancer un ensemble de threads sans avoir à les instancier l'un après l'autre. - -====== Exercice ====== - -===== Démonstration du cas de l'executor ===== - -3 producteurs ont une liste de produits. Ils gèrent une file d'attente. - -Les consommateurs 1 et 2 tentent d'accéder à la file d'attente. - -Il faut gérer les processus inactifs et la synchronisation. - -* * * - - -Executor ex = | Executors.new SingleThread(); - | Executors.new ThreadPool(2); - -for (int i=0 ; i < 1 000 ; i++) - ex.execute(new Runnable() { - public void run() { - System.out.println("o") - } - }); - - - -Dans les exécuteurs il n'y a pas de gestion de dépendances, donc on ne sait pas si le 5ième envoyé sera exécuté après le 4ième : ça faut le faire à la main. - -===== Cas d'interblocage ===== - -Tout objet - - -class DeadLock { - private final Object lock1 = new Object(); - private final Object lock2 = new Object(); - - void a() throws Interrupted Exception { - lock1.wait(); - lock2.notify(); - } - - void b() throws Interrupted Exception { - lock2.wait(); - lock1.notify(); - } -} - - -Un thread appelle la méthode a() : - * Le lock1 passe en attente. - -Un second thread appelle la méthode b() : - * Il se met en attente d'un notify (comme le lock1) - -Donc cela fait un verrou mortel, car on en sort pas. Pourquoi : - * lock1 attend lock1.notify (qui est dans lock2) - * lock2 attend lock2.notify (qui est dans lock1, lui même en attente d'un notify) - -Nous sommes donc dans un DeadLock. - -===== Explications ===== - -wait() : suspend un thread courant -notify(): réactive UN thread qui a fait un *wait()* sur l'instance -notifyAll(): réactiver TOUS les threads qui ont fait un *wait()* sur l'instance - -Quand un producteur aura fini de produire, il va activer UN thread pour le consommateur : pour pas mettre sur la paille le second consommateur. - - - - - - diff --git a/cours/P51/20081128-Seance2 b/cours/P51/20081128-Seance2 new file mode 100644 index 0000000..8bf5c4b --- /dev/null +++ b/cours/P51/20081128-Seance2 @@ -0,0 +1,87 @@ +28 novembre 2008 +Séance 2 + +Cf. https://tetras.u-strasbg.fr/prive/pedagogie/LP/P51/index.php?menu=203 + +====== Cours ====== + +===== Interface principales ===== + + * PreparedStatement et CallableStatement proviennent de Statement + * CallableStatement : procédures stockées + * 'DatabaseMetaData', peut être récupéré à partir d'un objet 'Connection' => informations sur la base de données + * DataSource : plutôt que faire des connexions à la base de données on va se connecter à la source de données qui peut être une base virtuelle (un genre) + +===== Classes principales ===== + +Date n'est pas la même classe dans java.sql et java.util => 2 façons différentes d'appréhender la chose. + +===== Pilotes ===== + +Type III : utile pour de l'embarqué par exemple, car assez léger +Type IV : les meilleurs, mais pas toujours disponibles (payants) + +===== Connexion à une BDD ===== + +jdbc:oracle:thin:@grive.u-strasbg.fr:1521:BASE + + * jdbc : pilote + * oracle : type de base de données + * thin : pilote léger d'oracle (cas particulier) + * @grive.u-strasbg.fr : adresse du serveur + * 1521 : port d'accès + * BASE : nom de la base de données + +==== La classe Connection ==== + +prepareStatement : requête paramétrée cachée sur le serveur +prepareCal : procédure stockée + +isClosed est généralement à vrai quand c'est NOUS qui avons utilisé la méthode close() pour fermer la connexion à la base de données. + +==== Requête de consultation ==== + +Il ne faut pas considérer que le ResultSet peut tout contenir et donc que nous pouvons faire next() ET previous(). Cela dépend de l'implémentation du pilote JDBC utilisé pour la base de données utilisée. + +==== Correspondance entre types Java et SQL ==== + +getFloat sur un NULL : donne 0 +Pour faire que de l'affichage, on peut faire getString() + +==== Modification de la base ==== + +execute UPDATE renvoie un entier qui défini le nombre de lignes modifiées dans la base de données. + +==== Instructions SQL paramétrées ==== + +Les points d'interrogation définissent les paramètres qui seront donnés plus tard. + +Il est possible d'utiliser des variables nommées à la place des points d'interrogations : à vérifier. + +==== Procédure SQL stockées ==== + +Peut éviter de faire des transferts de données entre la BDD et le client (lourd ou web). Donc autant tout faire sur le serveur si pas besoin de plus. + +Permet aussi d'être indépendant des BDD. + +==== Résumé des méthodes de l'interface 'Statement' ==== + +addBatch : Optimisation de la relation avec le serveur + +==== Les méta - données ==== + +Grâce aux métadatas d'un ResultSet sur une base de donnée on peut savoir quelle version de JDBC est adaptée + +==== RowSet ==== + + = Abstraction autour d'un ResultSet. + +====== Exemple ====== + +HSQLDB : permet de faire une BDD entièrement en Java, ce qui permet de bosser sur nos cours sans soucis de BDD. + + + + + + diff --git a/cours/S5B/20081120-Seance1 b/cours/S5B/20081120-Seance1 index 9d22624..d1279bc 100644 --- a/cours/S5B/20081120-Seance1 +++ b/cours/S5B/20081120-Seance1 @@ -2,5 +2,5 @@ Séance 1 du 20 nov. 2008 Présentation du programme de Sécurité des systèmes d'information -Cf. Fichier PDF +Cf. Fichier PDF 'Cours0 Pres.pdf' diff --git a/cours/S5B/20081120-TP1 b/cours/S5B/20081120-TP1 new file mode 100644 index 0000000..9a2e66d --- /dev/null +++ b/cours/S5B/20081120-TP1 @@ -0,0 +1,7 @@ +TP1 du jeudi 20 novembre 2008 +S5B - Sécurité des systèmes d'information + +Cf. Fichiers PDF suivants: +- MV Howto.pdf +- TP0 VMw.pdf + diff --git a/cours/S5B/20081127-Seance2-greve b/cours/S5B/20081127-Seance2-greve new file mode 100644 index 0000000..e69de29 diff --git a/cours/S5B/20081127-TP2-greve b/cours/S5B/20081127-TP2-greve new file mode 100644 index 0000000..e69de29 diff --git a/cours/S5B/20081204-Seance3 b/cours/S5B/20081204-Seance3 new file mode 100644 index 0000000..ff64f9b --- /dev/null +++ b/cours/S5B/20081204-Seance3 @@ -0,0 +1,77 @@ +P5B +Jeudi 4 décembre 2008 + +Introduction à la sécurité + +====== Fichiers joints ====== + +Cf. Sur tetras/Pédagogie + +====== Cours ====== + +===== Hachage, résumé ou condensé ===== + +Exemple d'utilisation d'un hachage : + * Pour le mot de passe + * Pour charger un exécutable sur un réseau (exécutable= données sensisbles) + * Connexion à un site avec un certificat : évite le fishing + * Changement des commandes de base comme ls, ps, pwd, etc. permet l'intrusion d'une machine, donc on fait un processus qui recalcule le condensé MD5 de ces commandes par rapport à une installation saine => très intéressant + utile + +===== Chiffrement symétrique ===== + +S'appuie sur une clé secrète, au travers des algorithmes suivants : + * DES + * 3-DES + * RC4, RC5 + * AES + +Atouts : performance et rapidité +Inconvénients : Génération, Distribution, Partage et Stockage => comment on choisit la clé secrète, comment la partager et la distribution de la clé secrète ? + +===== Chiffrement asymétrique ===== + +Clé publique, clé privée + +3 algorithmes : + * DH + * RSA => multinationale (entreprise) + * ECC + +A et B génèrent chacun une clé (bi - clé) => clé publique + clé privée + +A transmet sa clé publique à B, B transmet sa clé publique à A. + +On garde confidentialité et intégrité. + +===== Qu'est ce qu'un certificat ===== + +Pour garantir les échanges de clés publiques, on utilise une **Autorité de Certification** ou **Tiers de confiance**. + +Le certificat : + * authentifie les personnes + * signe les documents + * chiffrer + * signe les certificats + +===== Tiers de Confiance et ICP ===== + +ICP = Infrastructure à Clé Publique +PKI = Public Key Insfrastructure +Architecture complexe avec : + * AC Autorité de Certification + * AE Autoeiré d'Enregistrement + * OC Opérateur de Certification + +U -> OC identification et contrôle -> AE validation -> AC délivre le certificat -> AE distribue AE + +Actuellement on utiliser le certificat X509v3 ! + + + + + + + + + + diff --git a/cours/S5B/Cours2 IntroSec.pdf b/cours/S5B/Cours2 IntroSec.pdf new file mode 100644 index 0000000..73da5d3 Binary files /dev/null and b/cours/S5B/Cours2 IntroSec.pdf differ diff --git a/cours/S5B/Cours3 Commun.pdf b/cours/S5B/Cours3 Commun.pdf new file mode 100644 index 0000000..110cd66 Binary files /dev/null and b/cours/S5B/Cours3 Commun.pdf differ diff --git a/cours/S5B/Cours4 Crypto.pdf b/cours/S5B/Cours4 Crypto.pdf new file mode 100644 index 0000000..021a5d2 Binary files /dev/null and b/cours/S5B/Cours4 Crypto.pdf differ diff --git a/cours/S5B/Cours5 Services.pdf b/cours/S5B/Cours5 Services.pdf new file mode 100644 index 0000000..cbb6f20 Binary files /dev/null and b/cours/S5B/Cours5 Services.pdf differ diff --git a/cours/S5B/Cours6 ArchiSec.pdf b/cours/S5B/Cours6 ArchiSec.pdf new file mode 100644 index 0000000..a20847e Binary files /dev/null and b/cours/S5B/Cours6 ArchiSec.pdf differ diff --git a/cours/S5B/Cours7 Avances.pdf b/cours/S5B/Cours7 Avances.pdf new file mode 100644 index 0000000..462fe5e Binary files /dev/null and b/cours/S5B/Cours7 Avances.pdf differ diff --git a/cours/S5B/MV Howto.pdf b/cours/S5B/MV Howto.pdf new file mode 100644 index 0000000..fb33050 Binary files /dev/null and b/cours/S5B/MV Howto.pdf differ diff --git a/cours/S5B/TP1 SecMail.pdf b/cours/S5B/TP1 SecMail.pdf new file mode 100644 index 0000000..93b8e50 Binary files /dev/null and b/cours/S5B/TP1 SecMail.pdf differ diff --git a/cours/S5B/TP2 Ssl.pdf b/cours/S5B/TP2 Ssl.pdf new file mode 100644 index 0000000..1b1b5a1 Binary files /dev/null and b/cours/S5B/TP2 Ssl.pdf differ diff --git a/cours/S5B/TP3 IPSec.pdf b/cours/S5B/TP3 IPSec.pdf new file mode 100644 index 0000000..becf8d5 Binary files /dev/null and b/cours/S5B/TP3 IPSec.pdf differ diff --git a/cours/S5B/ipfw.ko b/cours/S5B/ipfw.ko new file mode 100644 index 0000000..d324695 Binary files /dev/null and b/cours/S5B/ipfw.ko differ