MàJ deux ou trois semaines de cours

This commit is contained in:
olivier 2008-12-05 08:25:20 +01:00
parent fa26da8678
commit a5abfaf0bc
26 changed files with 246 additions and 184 deletions

View File

@ -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

View File

@ -2,6 +2,8 @@ Jeudi, 20 nov 2008
G54 G54
Séance 1 : Modélisation objet avancée, Présentation de la modélisation objet 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 ====== ====== Présentation du programme ======

View File

@ -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)

6
cours/G54/20081120-TP1 Normal file
View File

@ -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.

View File

BIN
cours/G54/exprArith.pdf Normal file

Binary file not shown.

View File

@ -1,5 +1,5 @@
Jeudi, 20 nov 2008 Jeudi, 20 nov 2008
Séance 1 TP1
====== Comparaison ====== ====== Comparaison ======

View File

@ -1,7 +1,8 @@
21 novembre 2008 21 novembre 2008
Séance 2 Séance 1
Les threads Les threads
https://tetras.u-strasbg.fr/prive/pedagogie/LP/P51/index.php?menu=101
====== Cours ====== ====== Cours ======

View File

@ -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 <u>verrou est sur l'instance de la classe</u> 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.
* * *
<code java>
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")
}
});
</code>
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
<code java>
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();
}
}
</code>
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.

View File

@ -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.

View File

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

7
cours/S5B/20081120-TP1 Normal file
View File

@ -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

View File

View File

View File

@ -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 !

Binary file not shown.

BIN
cours/S5B/Cours3 Commun.pdf Normal file

Binary file not shown.

BIN
cours/S5B/Cours4 Crypto.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
cours/S5B/MV Howto.pdf Normal file

Binary file not shown.

BIN
cours/S5B/TP1 SecMail.pdf Normal file

Binary file not shown.

BIN
cours/S5B/TP2 Ssl.pdf Normal file

Binary file not shown.

BIN
cours/S5B/TP3 IPSec.pdf Normal file

Binary file not shown.

BIN
cours/S5B/ipfw.ko Normal file

Binary file not shown.