WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Conception, Implémentation d'une Base de Données pour la Gestion d'un Organisme et Administration Réseau à distance sur base des outils libres "Cas de Projet Limete Université Cardinal Malula"

( Télécharger le fichier original )
par Blaise LUSIKILA LUAMBASU
Ecole supérieure des métiers de l'informatique et du commerce (ESMICOM) - Licence 2007
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

INTRODUCTION GENERALE

A l'heure actuelle, les problèmes du développement de la République Démocratique du Congo, RDC en sigle sont étroitement liés à la maîtrise respectivement de la conception, l'implémentation et l'administration Réseau à distance sur base des outils libres. Qui prennent une importance croissante sans cesse pendant que le monde informatique est devenu un petit village planétaire1(*). Ceux-ci constituent la préoccupation majeure des organismes tant nationaux qu'internationaux, touchés directement ou indirectement par des difficultés créées par ce paramètre.

Actuellement, l'Administration de Réseau Informatique et la gestion de base de données à l'instar d'autres ressources informatiques occupent une place prépondérante parmi ces ressources. Sans une bonne maîtrise de ces dernières, aucune entreprise ne peut espérer un avenir, un développement dynamique, surtout que les équilibres dans ces domaines sont fragiles.

Ainsi, l'Administration de Réseau Informatique apparaît comme l'une des préoccupations de maîtrise pour tout Informaticien qui se respecte dans ce 21e siècle car elle permet à l'entrepreneur de suivre l'évolution des cinq axes importants cernés par International Standard Organisation, ISO, en sigle que nous aurons l'occasion de décrire par la suite dans ce travail.

0. PRESENTATION DU PROJET

D'abord, un projet est un regroupement d'acteurs et de ressources en vue de réaliser des objectifs identifiés dans un délai et par les moyens prévus en faisant appel ou non à des moyens extérieurs.

Un projet consiste à réaliser une idée ayant un caractère nouveau. Dans le cadre de notre travail, pour sanctionner la fin du second cycle en informatique, notre projet est intitulé «  CONCEPTION, IMPLEMENTATION D' UNE BASE DE DONNEES POUR LA GESTION D' UN ORGANISME ET L'ADMINISTRATION RESEAU A DISTANCE SUR BASE D' OUTILS LIBRES » .

I. PROBLEMATIQUE ET HYPOTHESE

I.1. Problématique

D'abord, la problématique est un ensemble de questions précises que l'on se pose au sujet d'une étude ou recherche spécifique2(*).

A l'heure actuelle, l'administration réseau dans sa globalité á déjà réussi son pari et s'impose dans tous les secteurs de la vie active d'un informaticien.

A cet effet, le Projet Limete Université Cardinal Malula, PLUCM, en sigle cherche aussi à profiter les avantages offerts par la Conception, l'Implémentation d'une base de données et l'administration de Réseaux à distance sur base des outils libres.

En ce qui concerne notre travail, nous nous sommes posés les questions ci-après :

· Qu'est-ce que l'administration de réseau à distance ?

· Comment cette administration à distance sera-t-elle réalisée au site ciblé dans le cadre de Projet Limeté/Université Cardinal Malula?

· Quel serait l'apport de notre travail au sein de cet organisme ?

· Par quelle voie peut-t-on retrouver le reçu d'un étudiant à distance en temps réel afin de rendre inutile son déplacement physique?

· Les administratifs, les partenaires de la Commune de Watermael Bois Fort et de l'Ecole Internationale de Bruxelles, sont-ils capables de connaître la situation générale , financière et autre de Projet Limeté/Université Cardinal Malula en entrant directement dans la base de données se trouvant à distance ?

· Quels sont les mécanismes que cette application doit utiliser pour permettre les apprenants, les formateurs, les administratifs, les partenaires à accéder dans la base de données d'une façon sécurisée ?

· Quel sera le coût global d'Implantation du nouveau système ?

Toutes ces questions sous-tendent notre problématique et ne manquent pas d'intérêt.

I.2. Hypothèse

L'hypothèse est une réponse qui permet de prédire la vérité vraisemblable au regard des questions soulevés par la problématique et dont la recherche vérifie le bien fondé ou le mauvais côté de cette recherche3(*).

En vue de remédier aux inquiétudes soulevées au travers des questions posées ci haut, nous pensons que les systèmes actuels de gestion des apprenants, élèves , de la bibliothèque , recettes du cyber café a besoin d'un réaménagement.

Nous pensons que l'informatisation de Projet Limete Université Cardinal Malula et la gestion de leur Réseau Informatique à distance sur base de logiciel Libre serait idéale.

II. CHOIX ET INTERET DU SUJET

Notre travail présente un intérêt à la fois théorique et pratique.

Sur le plan théorique : ce travail veut faire bénéficier au Projet Limete Université Cardinal Malula les avantages de notre savoir faire accumulé durant notre formation au second cycle à l' ECOLE SUPERIEURE DES METIERS D' INFORMATIQUE ET DE COMMERCE, ESMICOM en sigle. En plus cette étude nous permet d'élever le niveau de connaissance sur la gestion informatique, les bases de données et l'administration de Réseau par les diverses documentations mises à notre possession afin de suppléer la carence de cours théoriques.

Sur le plan pratique : cette étude est une contribution capitale et inoubliable car elle permet au apprenant, gestionnaire et/ou partenaire de Projet Limete Université Cardinal Malula d'obtenir de notre part, une proposition optimale pour mieux administrer le réseau et gérer toutes leurs activités.

Car nous sommes convaincus que ce système qui sera mis en application apportera des innovations pour la gestion des activités et l'administration de leur réseau d'une façon distante. En plus, il diminuera les erreurs dans l'administration de leur réseau informatique, le suivi, la gestion des recettes, la gestion des apprenants ainsi que le gestion de la bibliothèque.

Il sera ici question de se rendre de l'application réelle des principes ou formules relatives à l'administration de réseau informatique et la gestion de base de donnée particulièrement au sein du Projet Limeté/Université Cardinal Malula à Limete/Kingabwa à Kinshasa et se fera d'une façon sécurisée.

Un autre intérêt important est que, les corps administratifs qui sont à Kinshasa et ceux qui sont à l'étranger (les partenaires de la commune de watermael bois fort et de l'école Internationale de Bruxelles) tous vont commencer à suivre l'évolution du projet au même moment. Au lieu d'attendre les gérants de Kinshasa puissent leurs envoyer le rapport au format Excel ou Word comme toujours. Ainsi pour bien analyser cette étude, il nous faut un plan cohérant.

III. DELIMITATION DU SUJET

Il est affirmé qu'un travail scientifique pour être bien précis, doit être délimité. Raison pour laquelle, nous n'allons pas aborder toutes les questions liées à l'administration de réseau à distance et la Conception de base de données car elles paraient une matière très complexe. Ainsi, nous avons pensé limiter notre étude dans le temps et dans l'espace.

Dans le temps, nous avons considéré les données allant de décembre 2007 jusqu'à juin 2008 ;

Dans l'espace, notre étude est limitée à la Conception, Implémentation d'une base de donnée pour la gestion d'un organisme et l'administration de réseau à distance sur base des outils libres au sein du Projet Limeté/Université Cardinal Malula.

IV. METHODES ET TECHNIQUES UTILISEES

IV.1. Méthodes

Est un ensemble d'opération mise en oeuvre pour atteindre un ou plusieurs objectifs4(*).

En d'autres termes, une méthode est un ensemble des normes permettant de sélectionner et coordonner les recherches.

Quatre méthodes ont été utilisées pour l'élaboration de notre projet :

IV.1.1. Méthode historique

Elle nous a permis de remonter dans le temps pour avoir un aperçu général de notre terrain de recherche qui est le Projet Limete Université Cardinal Malula.

IV.1.2. Méthode analytique

Au moyen de cette méthode, nous sommes parvenus à décomposer les différents éléments du système dans le but de définir et d'en dégager les spécifiés.

IV.1.3. Méthode structuro fonctionnelle

Basée sur la structure, elle nous a facilité la tâche de comprendre les difficultés actuelles en analysant la structure et les fonctions actuelles du système.

IV.1.4. Méthode MERISE

Est une méthode de conception, de développement et de réalisation des projets informatiques ou système d'informations5(*).

La méthode est basée sur la séparation des données et des traitements à effectuer en plusieurs modèles. La dénomination MERISE est une abréviation qui signifie Méthode d'Etude de Réalisation Informatique par Sous Ensemble.

IV.1.5. Méthode PERT (Program Evaluation and Review Technic)

Est une représentation axée sur la logique d'enchaînement des t?ches laquelle nous a beaucoup servi pour l'évaluation de notre projet.

IV.2. Techniques

Est définie comme étant comme un processus concret qui permet à un chercheur de récolter les informations nécessaires, les analyser afin de tirer une conclusion6(*).

Trois techniques ont été utilisées pour l'élaboration de notre mémoire :

IV.2.1. Techniques d'interview

L'interview consistant en un jeu de question - réponse, cette technique nous a permis de poser des questions auprès de personnel de Projet Limete Université Cardinal Malula. Afin d'avoir les réponses concernant notre étude.

IV.2.2. Techniques documentaires

Elle nous a facilité la collecte et la consultation des différents documents et ouvrages relatifs à notre étude.

IV.2.3. Techniques d'observation

Elle nous a permis de s'approcher du terrain de recherche pour appréhender ce qui se fait et comment cela se fait.

V. CAHIER DE CHARGE

Le cahier des charges comporte quatre volets encadrant et orientant le travail : Administrer et centraliser toutes les informations concernant le réseau informatique de Projet Limeté/Université Cardinal Malula à distance, les recommandations portant sur l'interface graphique, les fonctionnalités attendues et les spécifications concernant l'architecture de l'application.

V.1. Administration et Centralisation de Réseau

L'objectif de ce travail est d'administrer et centraliser toutes les informations concernant le réseau informatique à distance :

o Services (vérifier que les services sont bien fonctionnels) ;

o Sécurité (contrôle de firewall, détection d'intrusions...) ;

o Machine (état du système de fichiers, chargement mémoire et CPU, ...) ;

o Réseau (engorgement du réseau, bande passante, table de routage, ...) ;

V.2. Architecture de l'application

Aucune installation côté client ne doit être nécessaire pour accéder dans la base de donnée.

Deux entrées doivent être prévues : l'une publique, l'autre protégée par login et mot de passe donnant accès en plus des données accessibles à partir de l'entrée publique, aux informations relatives à la finance du projet Limeté/UCM, au nombre d'apprenant et élève des écoles de Kingabwa en formation en cours ou historique, au module de recherche et à l'interface de gestion de la base de données.

La gestion des données doit être centralisée et facilitée par une application dédiée.

La gestion de date historique de la bibliothèque est obligatoire pour faciliter les administratifs et partenaires de voir quels sont les livres préférés dans la bibliothèque.

Le serveur d'application doit être accessible via une page d'accueil.

V.3 Fonctionnalités

L'ensemble des fonctionnalités standard d'un viewer doit être disponible (zoom, déplacement, interrogation d'objet, module de recherche, calcul de salaire de personnel, affichage à échelle souhaitée, sortie image et impression).

La gestion des couches doit être simple et facilement accessible.

Possibilité d'effectuer des requêtes par attribut.

La navigation et l'utilisation des fonctionnalités doivent être intuitives et améliorées par rapport à celles d'un viewer.

V.4. Interface graphique

L'interface graphique doit être simple et ergonomique. Optimisation pour Microsoft Internet explorer 6.0 (résolution 1024*768 pixels).

L'application doit enfin être livrée avec un guide de maintenance et d'utilisation détaillant la distribution et l'architecture du serveur, les étapes de son installation ainsi que les manipulations fréquentes (comme l'ajout de nouveau apprenant ou élève ou le paramétrage de l'affichage).

VI. SUBDIVISION DU TRAVAIL

Notre travail comprendra quatre parties dont la première sera consacré à l'évaluation de notre projet cette partie comporte 2 chapitres à savoir :

La deuxième portera sur l'administration de réseau à distance au Projet Limete/ Université Cardinal Malula. Cette seconde partie comprend 7 chapitres.

Tandis que la troisième parlera de la conception de la base de donnée au Projet Limete Université Cardinal, cette troisième partie comprend 3 chapitres.

En fin la quatrième partie clôturera sur la programmation de l'application et son implémentation.

Toutes ces parties seront passés en revu.

VII. PLANNING PREVISIONNEL DU PROJET

VII.1. PLANIFICATION

VII.1.1. Planification

VII.1.2. Découpage du projet

VII.2. PLANNING PREVISIONNEL DE REALISATION DU PROJET

VII.3.MODELE D' ORDONNANCEMENT

VII.4. TECHNIQUE PERT

VII.4.1. Recensement et Déroulement des Tâches

VII.4.2. Estimation des durées et des coûts

VII.4.3. Elaboration du Graphe

VII.4.4. Graphe du Projet

VII.4.5. Graphe Pert avec niveau

VII.4.6. Recherche de Chemin Critique

VII.4.6.1. Calcul du Chemin Critique

VII.4.7. Chemin Critique

VII.4.8. Calcul des dates au plus Tôt et au plus Tard

VII.4.9. Calcul des Marges.

VII.4.9.1. Marges Total (MT)

VII.4.9.2. Marges. Libre (ML)

VII.4.10. Graphe d'ordonnancement

VII.5. TABLEAU DES SYNTHESES

VII.6. ELABORATION DU CALENDRIER

VII.7. CONCLUSION SUR LA TECHNIQUE PERT

VII.8. LES REGLE DE L'ART.

Formule du taux de capacité réseau*(*).

TC=N x 100 / N+

N : Nombre d'ordinateurs existant

N+ : Nombre d'ordinateurs à ajouter

TC : Taux de Croissance exprimé en %

VIII. PLAN DU TRAVAIL

PREMIERE PARTIE : EVOLUTION DU PROJET ET ETUDE PREALABLE.

DEUXIEME  PARTIE : ADMINISTRATION DE RESEAU A DISTANCE AU PLUCM.

TROISIEME PARTIE : CONCEPTION DE BASE DE DONNEE AU PLUCM.

QUATRIEME PARTIE : PROGRAMMATION ET IMPLEMENTATION.

Chapitre 1. ORGANISATION DU TRAVAIL

Pour la réalisation de ce projet, nous avons disposé d'une totale liberté d'organisation et d'une large marge de manoeuvre dans le choix de la solution, les éléments de cadrage étant définis en amont, dans le cahier des charges.

Après la phase assez rapide de diagnostic portant sur le matériel et les données, nous avons dû travailler en tant que prestataire externe. En effet, aucun poste adapté n'était disponible et aucune compétence à la gestion de base de données et développement orienté web (notamment php) susceptible de nous aider n'existaient en interne.

Comme il a été dit, cette mission était encadrée par le responsable informatique du Projet Limeté Université Cardinal Malula, lequel a aussi des responsabilités au sein du service financier et technique. Il ne s'agissait donc pas de coordonner cette mission avec le travail d'un service ou d'un agent en particulier, mais de produire un outil conforme aux attentes en termes de fonctionnalités et aux prescriptions techniques détaillées dans le cahier des charges. De notre côté, notre démarche avait une forte dimension technique.

Connaissant déjà le monde de l'entreprise, cette organisation devait nous permettre de nous adapter à une autre façon de travailler caractérisée par une plus grande responsabilisation.

Entre la phase d'inventaire (matériels et données) et celle du déploiement du serveur sur le site, l'essentiel de la mission a donc consisté en un travail de développement en local sur notre poste personnel.

La liste des activités de notre projet est reprise dans le tableau ci-dessous :

Code Activité

LIBELLET ACTIVITE

Activité Antérieure

Durée/ Jour

Coût/Dollar

a

Enquête et entretien

_

6

55

b

conception du système d'information

a

18

35

c

Prép. des données/choix solution

b

22

60

d

Inventaire du matériel

c

23

20

e

commande du mat, et logiciel

d

12

3500

f

Développement

e

6

2600

g

Configuration serveur/nouveau système

e, f

15

50

h

Contrôle/Ajustement

g

30

75

i

Formation

h

12

220

a) Graphe Bruit

1

2

3

4

5

6

7

8

9

10

e(12) g (15)

d(23)

H(30)

F(6)

c(22) i(12)

f ` 0

b(18)

a(6)

Sommet ou étape

b) Calculs des Rangs

Rn est le nombre d'étape maximal

Rn-1 = [10] = R9

Rn-2 = [9] = R8

Rn-3 = [8] = R7

Rn-4 = [7] = R6

Rn-5 = [6] = R5

Rn-6 = [5] = R4

Rn-7 = [4] = R3

Rn-8 = [3] = R2

Rn-9 = [2] = R1

Rn-10 = [1] = R0

c) Graphe ordonné

g

1

2

3

4

5

6

7

8

9

10

d e

h

c

f f ` i

b

a

R0 R1 R2 R3 R4 R5 R6 R7 R8 R9

d. Matrices Booléenne

Cette matrice booléenne nous aidera à contrôle notre graphe, la présence d'un arc est symbolisée par le chiffre un (1), tandis que l'absence d'un arc est symbolisée par le chiffre zéro (0).mais le chiffre un (1) peut être remplacé par la valeur réelle de l'arc pour obtenir ainsi une matrice valuée (qui a de valeur réelle)

MATRICE BOOLEEN

 

1

2

3

4

5

6

7

8

9

10

1

0

1

0

0

0

0

0

0

0

0

2

0

0

1

0

0

0

0

0

0

0

3

0

0

0

1

0

0

0

0

0

0

4

0

0

0

0

1

0

0

0

0

0

5

0

0

0

0

0

1

0

0

0

0

6

0

0

0

0

0

0

1

0

0

0

7

0

0

0

0

0

0

0

1

0

0

8

0

0

0

0

0

0

0

0

1

0

9

0

0

0

0

0

0

0

0

0

1

10

0

0

0

0

0

0

0

0

0

0

e) Matrice valuée

Le chiffre un (1) peut être remplacé par la valeur réelle de l'arc pour obtenir ainsi une matrice valuée (qui a de valeur réelle), comme ceci.

MATRICE VALUEE

 

1

2

3

4

5

6

7

8

9

10

1

0

6

0

0

0

0

0

0

0

0

2

0

0

18

0

0

0

0

0

0

0

3

0

0

0

22

0

0

0

0

0

0

4

0

0

0

0

23

0

0

0

0

0

5

0

0

0

0

0

6

0

0

0

0

6

0

0

0

0

0

0

12

0

0

0

7

0

0

0

0

0

0

0

15

0

0

8

0

0

0

0

0

0

0

0

30

0

9

0

0

0

0

0

0

0

0

0

12

10

0

0

0

0

0

0

0

0

0

0

F) Recherche De T?ches de la Date Au Plus Tôt Et Date Au Plus Tard

F.1 Date Au Plus Tôt (dto)

La date au plus tôt (dto) est la date la plus rapprochée à laquelle il est possible de réaliser une étape2(*) sa formule est dto(x) = Max {dto (y) + d (i)}. dto (x) est considéré comme 2e étape, dto (y) est considéré comme 1e étape et i comme une tâche.

f.i.1 calcul

Dto (1) = 0

Dto (2) = Dto (1) + d(a) = 0 + 6 = 6

Dto (3) = Dto (2) + d(b) = 6 + 18 = 24

Dto (4) = Dto (3) + d(c) = 24 + 22 = 46

Dto (5) = Dto (4) + d(d) = 46 + 23 = 69

Dto (6) = Dto (5) + d(e) = 69 + 6 = 75

Dto (7) = Max Dto (5) + d(e) = Max 69 +12 = 81 (qui est la valeur maximum)

Dto(6) + d(f `) 75 + 0

Dto (8) = Dto (7) + d(g) = 81 + 15 = 96

Dto (9) = Dto (8) + d(h) = 96 + 30 = 126

Dto (10) = Dto (9) + d(i) = 126 +12 = 138

f.2 Date Au Plus Tard (Dta)

La date au plus tard (dta) est la date à laquelle il faut absolument commencer une tâche afin de la réaliser3(*). Sa formule est dta(y) = Min dta (x) - d (i)

Dta (10) = 138

Dta (9) = Dta (10) - d(i) = 138 - 12 = 126

Dta (8) = Dta (9) - d(h) = 126 - 30 = 96

Dta (7) = Dta (8) - d(g) = 96 - 15 = 81

Dta (6) = Dta (7) - d(f `) = 81 - 0 = 81

Dta (5) = Max Dta (6) + d(f) = Max 81 +6 =69

Dta(7) + d(e) 81+ 12

Dta (4) = Dta (5) - d(d) = 69 - 23 = 46

Dta (3) = Dta (4) - d(c) = 46 - 22 = 24

Dta (2) = Dta (3) - d(b) = 24 +18 = 6

Dta (1) = Dta (2) - d(a) = 6 + 6 = 0

G(15) h(30)

0 0

1

6 6 2

24 24 3

46 46 4

69 69 5

75 81 6

81 81 7

96 96 8

126 126 9

138 138 10

E(12)

D(23)

C(22) f ` 0

12

B(18) f(6)

a(6)

g. Marge Libre

La marge libre d'une tâche ML (i) est le délai de la mise en route de la tâche (i) sans compromettre la dto de l'étape(y). Sa formule est ML (i) = Dto (x) -d (i), sur base de cette formule que nous allons chercher les marges libre des nos tâches.

g.1 Calcul

ML (a) =dto (2) - dto (1) -d(a) = 6- 0 -6 = 0 tâche critique

ML (b) = dto (3) - dto (2) - d(b) = 24 - 6 - 18 = 0 tâche critique

ML ( c) = dto (4) - dto (3) - d( c) = 46 - 24 -22 = 0 tâche critique

ML ( d) = dto (5) - dto (4) - d( d) = 69 - 46 23 = 0 tâche critique

ML (e ) = dto (6) - dto (5) - d ( e ) = 75 - 69 -12 = - 6 tâche non critique

ML (f ) = dto (7) - dto (6) - d ( f ) = 81 - 75 -6= 0 tâche critique

ML (f `) = dto (7) - dto (6) - d (f ` ) = 81 - 75 - 0 = 6 tâche non critique

ML (g ) = dto (8) - dto (7) - d ( g ) = 96 - 81 -15 = 0 tâche critique

ML (h ) = dto (9) - dto (8) - d ( h ) = 126 - 96 -30 = 0 tâche critique

ML (i ) = dto (10) - dto (9) - d ( i ) = 138 - 126 -12 = 0 tâche critique

Pour que nous puisons déterminer les chemins critiques, lesquelles sont les chemins que nous allons suivre, il nous faut utiliser cette formule (dta - dto).

h. Marge Total

La marge total MT(i) qui est la tâche (i) le délai que nous avons disposer pour la mise en route de la tâche (i) sans modifier la dta de l'étape (y) ( x étant le sommet initial de la tâche (i) et y son sommet terminal. Sa formule est MT(i) = dta (y) - dto(x) - d(i). dta (y) est le sommet terminal, dto (x) est le sommet initial

h.1 Calcul

Mt(a) = dta(2) - dto(1) - d(a) = 6 - 0 - 6 = 0

Mt(b) = dta(3) - dto(2) - d(b) = 24 - 6 - 18 = 0

Mt(c) = dta(4) - dto(2) - d(c) = 46 - 24 - 22 = 0

Mt(d) = dta(5) - dto(3) - d(d) = 69 - 46 - 23 = 0

Mt(e) = dta(7) - dto(4) - d(e) = 81 - 69 - 12 = 6

Mt(f) = dta(6) - dto(5) - d(f) = 81 - 69 - 6 = 6

Mt(g) = dta(7) - dto(6) - d(f') = 81 - 75 - 0 = 6

Mt(h) = dta(8) - dto(7) - d(g) = 96 - 81 - 15 = 0

Mt(i) = dta(9) - dto(8) - d(h) = 126 - 96 - 30 = 0

Mt(j) = dta(10) - dto(9) - d(i) = 138 - 126 - 12 = 0

NB: - si dto et dta c'est à dire si dto = dta alors l'étape est critique

- lorsque la ml (i) marge libre est égale marge totale mt(i) alors la tâche est critique

i. Interprétation de Résultat de Date Et Marge

i.1 les étapes (dto et dta)

Code étape

Dto

Dta

Observation

1

2

3

4

5

6

7

8

9

10

0

6

24

46

69

75

81

96

126

138

0

6

24

46

69

81

81

96

126

138

Etape critique

Etape critique

Etape critique

Etape critique

Etape critique

Etape non critique

Etape critique

Etape critique

Etape critique

Etape critique

 

i.2.les tâches ml (i) et mt(i)

 

Code activité

Ml (i)

Mt (i)

Observation

A

B

C

D

E

F

F'

G

H

I

 

0

0

0

0

-6

0

6

0

0

0

0

0

0

0

0

6

6

0

0

0

Tâche critique

Tâche critique

Tâche critique

Tâche critique

Tâche non critique

Tâche critique

Tâche critique

Tâche critique

Tâche critique

Tâche critique

j. Chemin Critique

Le chemin critique est celui qui relie toute les tâches dont la marge totale (mt) est nul c'est-à-dire a, b, c, d, e, g, h, i

k. Présentation de Résultat

k.a. durée global de notre projet : est égale à 138 jours qui est dta(10) et dto(10)

k.b. coût total du projet :

Formule :

Application :

= 55 + 35 + 60 + 20 + 3.500 + 2.600 + 50 + 75 + 220 = 6615$

Chapitre 2. ETUDE PREALABLE

2.0. DEFINTION ET BUT

2.0.1. Définition

L'étude d'opportunité, est aussi appelée étude préalable, est l'étude qui permet à un informaticien de préparer la décision relative à la nécessité d'informatiser ou de n'est pas informatiser le traitement de l'information, le changement d'ordinateurs ou encore l'achat des nouveaux matériels7(*).

Cette étude fournira les informations nécessaires aux responsables de Projet Limete/UCM pour la prise des décisions concernant les modifications des objets, des nouvelles méthodes du système afin d'améliorer les performances et en déduire les coûts.

L'étude d'opportunité est une étude menée afin de déterminer s'il y a nécessité d'automatiser ou pas l'application ou l'entreprise sous l'étude.

Cette étude d'opportunité se divise en 4 parties :

- L'analyse de l'existant ;

- Le critique de l'existant ;

- La proposition des solutions nouvelles ;

- Le choix de la nouvelle solution.

2.0.2. But

Le but de cette étude est de recueillir les données qui vont servir à l'élaboration du diagnostic en vue de la recherche et de choix de solution pour améliorer les performances, les qualités ainsi que la capacité8(*).

Elle permet de prendre une connaissance générale et suffisante de l'entreprise afin d'en faire la synthèse et de concevoir la solution.

Dans notre cas, nous allons analyser les activités du système de gestion de recette, apprenant, bibliothèque et administration de réseau informatique au Projet Limete Université Cardinal Malula dans la commune de LIMETE, à Kinshasa, République Démocratique du Congo.

2.1. PRESENTATION DE PL/UCM

2.1.1. Situation Géographique

PROJET LIMETE UNIVERSITE CARDINAL MALULA, PL/UCM en sigle, est situé sur l'avenue Kingabwa dans la commune de LIMETE, à Kinshasa capitale de la République Démocratique du Congo.

2.1.2 Historique

Après avoir constaté les difficultés des étudiants dans le cours d'informatique, difficultés liées au manque de matériel informatique (ordinateurs), l'Université Cardinal Malula, par son Comité de gestion, a formulé le présent Projet qui a été conçu dans sa phase préliminaire par Monsieur Anastase Nzeza et Madame Anne Louise Flynn au mois de février 2003. L'idée a été présentée auprès des responsables de l'Ecole Internationale de Bruxelles, de la Vénerie (centre culturel de la communauté française de Belgique) et de la Commune de Watermael-Boitsfort afin d'aboutir à un partenariat.

La démarche a permis d'obtenir 12 ordinateurs + une imprimante, 5 onduleurs, un lot d'environ 1700 livres dont une centaine d'ouvrages d'informatique ainsi que l'appui pour le transport vers Kinshasa.

Grâce à l'équipement technologique et aux ouvrages acquis et à acquérir, le Secrétaire Général de l'UCM, nommé Coordinateur du projet a recruté une petite équipe pour démarrer les activités de la première phase du projet (2004-2007).

2.1.3. Personnel

Le Projet Limete Université Cardinal Malula est dirigé par :

1. le Recteur d' Université Cardinal Malula : Professeur Charles MAZINGA pour la Représentation et promotion du projet.

2. le Secrétaire Général de l'Université Cardinal Malula : Monsieur Anastase NZEZA, qui assure la Coordination du Projet.

3. Monsieur Thierry MUNGEMA pour l'animation et la Gestion quotidienne du Projet.

4. une équipe de formateurs en Technologie Informatique et Internet, la même équipe assure la maintenance des ordinateurs et de réseaux informatique.

2.1.4 Domaines d'Intervention

Le Projet Limete/Université Cardinal Malula s'est spécialisé dans le domaine de la formation des élèves des écoles partenaires et les jeunes de la Commune de Limeté en particulière et de Kinshasa en général.

Le projet Limete/Université Cardinal Malula maîtrise aussi les protocoles tels que :

HTTP : le protocole utilisé pour les communications web ;

SOAP : le protocole d'échanges utilisé pour la communication avec un service Web ;

DAP : le protocole de communication avec des annuaires ;

SMTP/POP/IMAP : les protocoles utilisés pour le transfert du courrier électronique ; ...

Le projet Limete/Université Cardinal oriente ses activités en trois branches qui sont :

q le centre informatique pour la formation des jeunes et élèves de plusieurs écoles de la Commune de Limete, lequel est opérationnel depuis 2004.

q Le cybercafé pour la population de la Commune de Limete et d'autres, ce cybercafé est opérationnel depuis mars 2005.

q Une bibliothèque pour la jeunesse de la Commune de Limete, qui est opérationnelles depuis août 2005.

2.2. ANALYSE DE L'EXISTANT

2.2.1 Définition et But

L'analyse de l'existant est une étape qui consiste à décortiquer l'organisme concerné ainsi que la manière où il fonctionne à ce moment précis9(*).

L'analyse de l'existant revêt une importance indéniable dans la mesure où elle permet de reproduire le système existant sous ses différents aspects.

Elle consiste notamment ici à étudier :

- les activités de Projet Limete Université Cardinal Malula ;

- les structures et les postes concernés ;

- les documents et les fichiers ;

- les moyens de traitements de l'information ;

- les moyens de circulations des informations ainsi que la manière où les informations circulent.

2.2.2. Etude des activités du Service Concerné

2.2.2.1. But

Le but de cette étude est d'analyser les activités et le fonctionnement de l'organisme concerné.

Pour notre cas, nous voudrions analyser le système de paie de personnel, la recette de cyber café et autre au Projet Limete Université Cardinal Malula dans la commune de LIMETE, ville de Kinshasa, République Démocratique du Congo.

2.2.2.2. Organigramme du service concerné

COORDINATEUR

ANIMATEUR ET GESTIONNAIRE

Cyber Café

Bibliothécaire

Service de la formation

REPRESENTATEUR

2.2.2.3. Description et présentation de la structure

Après une première approche, nous avons constaté que les activités au sein du Projet Limete Université Cardinal Malula se déroulent comme suit :

LE REPRESENTATEUR : il s'occupe de la Représentation et promotion du projet Limete Université Cardinal Malula.

LE COORDONATEUR : s'occupe de la gestion générale du Projet Limete Université Cardinal Malula à savoir :

- La gestion financière du PL/UCM ;

- Edicter les directives ;

- Convoquer et présider les réunions au PLUCM ;

- Vérifier les documents.

L'ANIMATEUR ET GESTIONNAIRE : il est rattaché au COORDONATEUR et s'occupe de :

- La réception et l'expédition de la correspondance ;

- L'encaissement et décaissement des recettes ;

- la paie des Agents de PLUCM ;

- Exécute quelques taches administratives chaque mois.

LE CHEF DE SERVICE IT : il présente le rapport chaque moi d'abord auprès de L' ANIMATEUR, ensuite au TECHNICIEN (Responsable de service IT) de l'école internationale de Bruxelles (Mr. Dante Dianoli) il s'occupe de :

- contrôle de matériel informatique.

2.2.2.4. Etude de poste

Après avoir analysé la structure de structure concernée, on peut alors passer à l'étude de poste de travail. Cette étude doit être réalisée afin de faciliter la collecte des informations par l'établissement d'une liste de poste de travail ainsi qu'une fiche d'étude de poste.

2.2.2.4.1. Liste de poste de travail

Intitulé du poste

Titulaire

Fonction

0.

Représentant

Charles MAZINGA

REPRESENTANT

1.

Gestionnaire

Anastase NZEZA

COORDINATEUR

2

Animation

Thierry MONGEMA

ANIMATEUR

3.

Responsable de service

Médard BATANASWE

RESPONSABLE SERVICE IT

2.2.2.4.2. Description des fiches d'études de poste

2.2.2.4.2.0 Fiche d'étude de poste 0

 

Code : 0HJK5

Désignation du poste : REPRESENTANT

Service auquel est attaché le poste : la représentation

Responsable du poste : Prof. Charles MAZINGA

Taches à accomplir :

Faire la promotion du Projet Limete Université Cardinal Malula

Taches

Fréquence

Délais

Remarques

 

prévus

réel

Représentation

Quotidienne

----

----

 
 
 

----

----

 

Promotion

Mensuelle et annuelle

----

----

 

2.2.2.4.2.1 Fiche d'étude de poste 1

Code : 0HJK5

Désignation du poste : COORDINATEUR

Service auquel est attaché le poste : Gestionnaire

Responsable du poste : Mr. Anastase NZEZA

Taches à accomplir :

gère les activités du Projet Limete Université Cardinal Malula

Taches

Fréquence

Délais

Remarques

 

prévus

réel

Gestion des activités

Quotidienne

----

----

 
 
 

----

----

 

Vérification de documents de gestion

Hebdomadaire

----

----

 

Préside les réunions

Mensuelle et annuelle

----

----

 

2.2.3.4.2.2 Fiche d'étude de poste 2

Code : OlJHGH

Désignation du poste : Animateur

Service auquel est attaché le poste : Animation des activités quotidiennes

Responsable du poste : Mr. Thierry MONGEMA

Taches à accomplir : Animation des activités de Projet limeté Université Cardinal Malula

Taches

Fréquence

Délais

Remarques

prévus

réel

Gestion de correspondance

Quotidienne

----

----

 

Encaissement et décaissement

Quotidienne

----

----

 

Paie des employés

Mensuel

----

----

 

2.2.3.4.2.3. Fiche d'étude de poste 3

Code : OlJHG5

Désignation du poste : Responsable service IT

Service auquel est attaché le poste : Contrôle de Matériel Informatique

Responsable du poste : Mr. Médard BATANASWE

Taches à accomplir : Contrôler le matériel Informatique et faire son rapport auprès de Responsable de service IT de l'école Internationale de Bruxelles

Taches

Fréquence

Délais

Remarques

prévus

réel

Contrôle de Matériel

Quotidienne

----

----

 
 
 
 
 
 

Rapport de Matériel au coordinateur et au Responsable de service IT (ISB)

Mensuel

----

----

 

2.2.2.4.3. Etude de circuit de l'information

2.2.2.4.3.1. Narration

Pour ce qui est de la manière où les informations circulent au sein de service concerné, il est à signaler que, lors de l'arriver d'un internaute, celui-ci se présentera au Cyber Café pour acheter un code chez le moniteur Internet, lequel lui donnera l'accès aux machines du cyber une fois ce code est fini, la machine s'arrête automatiquement.

À la fin de service (jour ou soir), le moniteur doit présenter son rapport auprès de l'animateur gestionnaire.

à la fin du moi l'animateur gestionnaire fera un rapport global d'abord auprès de coordonnateur en suite le téléchargé dans le fichier EXCEL pour l'envoyer à l'école International de Bruxelles et la commune de watermael Boistfort.

La même chose avec le Responsable de service IT pour le rapport de matériel.

Une fois le matériel informatique tombe en panne le responsable de service IT est chargé de réparer si possible ou demander aux autres techniciens de PLUCM de réparer en suite, il va faire un rapport auprès de Responsable de service IT de l'école Internationale de Bruxelles.

2.2.2.5. Etudes de Réseau utilisés

2.2.2.5.1. Définition de Concepts

Un réseau permet de partage des ressources entre plusieurs ordinateurs10(*).

Par ces ressources, nous entendons des données ou des périphériques (imprimante, scanner, ...)

Le réseau permet aux ordinateurs de l'entreprise de partager des ressources matérielles et logicielles : des périphériques, des programmes et des données ainsi qu'aux hommes d'échanger : des messages et des fichiers

Un réseau est un ensemble d'équipements informatiques interconnectés entre eux en vue de se changer de données.

En effet, le PLUCM possède du Wan pour se servir de communication entre la commune de Watermael Boistfort, Ecole Internationale de Bruxelles, la commune de limeté en RDC. Il utilise la topologie en étoiles.

2.2.3.5.2. Description de matériels utilisés

Hub

Connecteur

RJ45

Client

2.2.3.5.3. Présentation de Réseau utilisé

2.2.3.6. Etudes de documents utilisés

2.2.3.6.1. Inventaires des documents existants

Désignation du document

D01

Fiche de Rapport Internet

D02

Fiche de Rapport Formation (élèves des écoles partenaires, adulte de la commune, Etudiant de UCM, Professeur UCM)

D03

Journal de caisse

D04

Reçu ou preuve de paiement

2.2.2.6.2. Description des documents existants

Ici nous allons essayer de décrire quelques documents utilisés au Projet Limeté Université Cardinal Malula.

2.2.2.6.2.1 Fiche de Rapport Journalière

 
 
 
 
 
 
 
 

RAPPORT JOURNALIER INTERNET & IT

Date:

 

Moniteur:

 

 

Jour ou Soir

 

A: RAPPORT FINANCIER

 
 

CODES INTERNET VENDUS

Signature du Moniteur qui reçoit les codes

CODES IT VENDUS

 
 

 

 

 

 
 

CODES INTERNET RESTANT

Signature de Justin ou de l'agent de sécurité

CODES IT RESTANT

 
 

 

 

 

 
 

CODES COMPLEMENTAIRE INTERNET

Nom & Signature du Bénéficier et explication

CODES COMPLEMENTAIRE IT

 
 

 

 
 

 

 
 

 

 
 

 

 
 

 

 
 

 

 

 

 
 

CODES INTERNET SERVIS

100 FC / 20 min

 

150 / heure

CODES IT SERVIS

 
 

 

 
 
 
 

 

 
 

Recettes Internet

PHOTO

IMPRESSION

PHOTOCOPIES

AUTRES

Recettes IT

TOTAL RECETTES

FC

FC

FC

FC

FC

FC

FC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

USD

USD

USD

USD

USD

USD

 

USD

 
 
 
 
 
 
 
 

Moins Dépenses

Pièces Justifictives

 
 
 
 
 
 
 
 
 
 
 
 

Bénéficiaire

Motifs

Montant FC

Montant USD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 

TOTAL DEPENSES

 

 

 
 
 
 
 
 
 
 
 
 
 
 

SOLDE

 

 

 
 
 
 
 
 
 
 

B: RAPPORT TECHNIQUE

Groupe Electrogène

Coupure du Connexion

Coupure du Courant Electrique

Commentaires

De

A

De

A

De

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2.2.6.3 Etude des fichiers existants

2.2.2.6.3.1 Description des fichiers existants

1.2.2.6.3.1.1. Fichier « Fiche Rapport Internet »

Désignation

Code

Support

Localisation

Nbre d'exemplaire.

Fiche Rapport Internet

25ljg5

Fichier Excel dans l'ordinateur n°1

Bureau de l'animateur

1

2.2.2.6.1.2 Fichier « Journal de Caisse en franc Congolais »

Désignation

Code

Support

Localisation

Nbre d'exemplaire.

Fiche Journal de Caisse en franc Congolais

JHGDF

Papier

Classeur

10

2.2.2.6.4. Etude des moyens utilisés

On appelle moyens utilisés, ensemble de matériel et ressources humaines utilisés pour le traitement des informations au cours de l'analyse.

Il est nécessaire de recenser tous les moyens de traitement utilisés au cours cette étude sur les moyens utilisés, notre objectif primordial sera de faire ressortir tous les moyens humains au sein de Projet Limete Université Cardinal Malula d'une part et tous les moyens matériels existant d'autre part.

L'étude des moyens utilisés sera subdivisée en 2 parties :

- Etude des moyens humains ;

- Etude des moyens matériels.

2.2.2.6.4.1. Etude des moyens matériels

Cette étude consistera à recenser les différents matériels au sein de Projet Limete Université Cardinal Malula, pour traiter les informations de l'application sous étude.

MATERIEL

DESCRIPTION

QTE

LOCATION

ETAT

Clavier

Qwerty

6

Salle IT

Bon

0

Cybercafé

-

8

Park salle IT

Bon

Azerty

1

Salle IT

Bon

11

Cybercafé

Bon

Souris

 

11

Salle IT

Bon

3

Salle IT

Mauvais

11

Cybercafé

Bon

 

 

 

 

 

PC

Compaq PIII 933

4

Salle IT

Bon

2

Salle IT

Mauvais

7

Cybercafé

Bon

4

Park salle IT

Mauvais

Compaq PIII 650

10

Salle IT

Bon

4

Cybercafé

Bon

 

2

Park salle IT

Mauvais

 

 

 

 

 

Ecran

Compaq 15 pouces

12

Salle IT

Bon

Mauvais

5

Cybercafé

Bon

Mauvais

Compaq 17 pouces

8

Salle IT

Bon

Mauvais

8

Cybercafé

Bon

Mauvais

 

 

 

 

 

Imprimante

HP Laser Jet 5N

1

Park salle IT

Mauvais

Imprimante

HP Deskjet 3840

1

Park salle IT

Bon

Onduleur

MGE 1100 VA

4

Cybercafé

Bon

Onduleur

MGE 1100 VA

1

Salle IT

Bon

Projecteur

Pro screen 4600

1

Salle IT

Mauvais

Stabilisateur

Semtoni 3000W

1

Salle IT

Bon

Stabilisateur

EMKAY 3000W

1

Salle IT

Bon

Stabilisateur

Jacob's

1

Cybercafé

Bon

Appareil photo Num

Sony

5

Coffre

Bon

2.2.2.6.4.2. Etude des moyens humains

Cette étude des moyens humains est toujours nécessaire pour mieux comprendre les qualifications du personnel

Poste

Nbre de Personne

Fonction

Qualification

Ancienneté

Salaire net

0

Représentant

1

Représentant

Recteur à l' UCM

-----------

----------

1

Gestionnaire

1

Coordonnateur

Sec.Gén. à UCM.

----------

----------

2

Animateur

1

Animateur Gestionnaire

Etudiant L2 Droit

-----------

------------

3

Responsable IT

1

Chef IT

Gradué à ISC

------------

-----------

2.3. CRITIQUE DE L'EXISTANT

La critique de l'existant, appelée aussi bilan de l'existant, va nous aider à l'évaluation du système existant par rapport à l'analyse faite au Projet Limete Université Cardinal Malula sous étude tout en établissant un diagnostic.

Ce diagnostic est établit dans le but de rechercher des solutions futures à des problèmes posés.

Le but de la critique de l'existant est d'établir un diagnostic précis sur les procédures utilisées, relever les anomalies, les qualités et les défauts du système existant.

Par ailleurs, deux aspects sont toujours dégagés lors de cette critique dont l'un est positif et l'autre positif.

Ces deux aspects méritent d'être soulevés étant donné que le besoin de la perfection sera toujours souhaité par les utilisateurs en vue de bon fonctionnement.

2.3.1. Aspects positifs

Au terme de l'analyse de l'existant, il convient d'avouer que le Projet Limete Université Cardinal Malula a au moins un système d'organisation bien défini du point fonctionnel et organisationnel.

Cependant, le Projet Limete Université Cardinal Malula ne pourra renforcer l'efficience de ses services s'il arrive à surmonter les insuffisances constatées.

Le Projet Limete Université Cardinal Malula ainsi que son personnel offre :

- un bon contrôle de matériel ;

- des matériels informatique bien protégé par les onduleurs et stabilisateurs ;

- une bonne circulation des informations et transparence des documents entre les partenaires ;

- une bonne collaboration et transmissions des informations entre eux.

2.3.2. Aspects négatifs

- Les documents étant conservés dans les classeurs à papiers, l'accès est difficile étant donné il faut toujours une recherche sérieuse pour retrouver un document tel que : un reçu d'un étudiant et tant d'autres ;

- pour que le coordonnateur puisse voir le recette produit pendant la journée, il faut qu'il se déplace, venir obligatoirement au Projet limeté/UCM.

- Le lenteur considérable dans le traitement de l'information ;

- Le suivi de document est très fatiguant à cause de volume élevé des informations ;

- Le Projet Limete Université Cardinal Malula ne possède que deux stabilisateurs, cinq onduleurs pour toutes les salles dont 4 pour les machines connectées à l'Internet plus ou moins 12 ordinateurs et un stabilisateur, un onduleur et un stabilisateur pour le service IT plus ou moins 15 machines. Cependant, ces derniers sont vieillis. Pour cette insuffisance des onduleurs et stabilisateurs, les matériels informatiques tombent toujours en panne (soit bloc d'alimentation brûlé soit système d'exploitation endommagé...);

- Le Projet Limete Université Cardinal Malula n'a pas de logiciel approprié pour gérer toutes les données en local ou à distance.

- Le Projet Limete Université Cardinal Malula n'a pas un moyen d'administrer leur réseau à distance.

2.4. PROPOSITION DE SOLUTION

A la lumière des anomalies qui viennent d'être reprises dans le système existant, nous pouvons proposer deux solutions, l'une manuelle et l'autre automatique, dans le but d'améliorer la performance et le bon fonctionnement du système existant.

2.4.1. Solution manuelle

La solution manuelle consiste en une simple réorganisation du système en reconduisant les qualités tout en conservant le traitement manuel.

Cette proposition qui ne garantit en rien la rapidité dans l'exécution des tâches, occasionnera des erreurs de manipulation et fatiguera le personnel dans le traitement des informations.

2.4.1.1. Les Avantages

- L'achat de nouvel équipement du bureau ;

- Modification de l'organigramme et une nouvelle conception des fichiers et des documents ;

- Solution moins coûteuse et facile à implanter car elle prendra moins de l'espace.

2.4.1.2. Les Inconvénients

- Les procédures des traitements des informations restent toujours manuelles et la fatigue humaine peut faire commettre les erreurs de temps à autre ;

- Il n'y a pas une grande sécurité des informations car les supports utilisés restent les papiers ;

- Encombrement du bureau par les documents ;

- Accès facile aux informations par des personnes non autorisées.

2.4.1.3. Solution informatique

La solution informatique a l'avantage de traiter des informations avec la rapidité et précision, de rendre fiable la gestion de l'information.

Elle présente aussi l'inconvénient d'engager des grosses dépenses pour son installation, le coût à la formation des agents et autres.

2.4.1.3.1. les Avantages

L'introduction d'une part de l'administration réseau à distance va améliorer :

- la rapidité de détection des erreurs dans le réseau et les ordinateurs ;

- la capacité de modifier le paramètre d'une machine même à distance sans que l'administrateur réseau se déplacer.

D'autre part la conception, l'implémentation d'une base de donnée au Projet Limete Université Cardinal Malula va encore améliorer :

- la sécurité des informations ;

- la bonne circulation des informations entre les partenaires externes ou internes par exemple en temps réel;

La réduction des certaines t?ches et éviter l'encombrement des fichiers ;

- la conservation des informations avec une longue durée grâce à des supports informatiques ;

- la réduction de l'espace ainsi que le volume en ce qui concerne le support de stockage des informations ;

- l'impression des informations en cas de besoin et à temps réel même à distance.

2.4.1.3.2. Les Inconvénients

- Le coût de maintenance des machines est quasiment élevé ;

- L'achat des consommables informatiques tels que ajoute des onduleurs et stabilisateurs.

- La formation des utilisateurs afin de maîtriser l'outil et les logiciels nécessaires ;

- Interruption du travail lors d'une coupure brusque du courant électrique et surtout que les onduleurs et les stabilisateurs sont insuffisants ainsi que le groupe électrogène est déjà vieilli.

2.5. CHOIX DE SOLUTION

Compte tenu des inconvénients cités ci haut et dans le souci de produire des meilleures applications, nous pensons mettre un système automatique où la machine serait vraiment importante pour alléger certaines taches.

En comparant les avantages de deux solutions proposées précédemment, nous opterons pour la solution automatiquement ou informatique pour des raisons suivantes :

- la prise en charge par la machine (ordinateur) tous les traitements afin d'éviter les erreurs et fournir les résultats fiables dans un bref délai à l'intérieur du pays comme à l'extérieur du pays ;

- administrer les machines du réseau à l'intérieur du pays ou à l'extérieur du pays ;

- les énormes avantages et procédures beaucoup plus satisfaisants.

Chapitre 1. EXAMEN GENERAL DE LA THEORIE DES LOGICIELS LIBRES

1.0. DEFINTION ET APERÇU DE LOGICIEL LIBRE

1.0.1 Définition

Pour être qualifié de logiciel libre, un logiciel doit être disponible sous des conditions répondant à des critères stricts. La Free Software Foundation et le projet Debian étudient avec soin chaque licence de logiciel pour déterminer si le logiciel est libre (selon leurs critères respectifs0(*)).

1.0.1.1. Free Software Foundation

La FSF maintient une définition du logiciel libre basée sur quatre libertés1(*) :

· Liberté 0 : La liberté d'exécuter le programme, pour tous les usages.

· Liberté 1 : La liberté d'étudier le fonctionnement du programme.

o Ceci suppose l'accès au code source.

· Liberté 2 : La liberté de redistribuer des copies.

o Ceci comprend la liberté de vendre des copies.

· Liberté 3 : La liberté d'améliorer le programme et de publier ses améliorations.

o Ceci suppose l'accès au code source.

La liberté 3 encourage la création d'une communauté de développeurs améliorant le logiciel et permet la création d'une branche de développement dérivée concurrente, notamment en cas de désaccord entre développeurs.

La FSF insiste sur le fait que «libre» ne doit pas être compris comme «gratuit». Cette confusion est particulièrement possible en anglais, où «libre» et «gratuit» se traduisent par «free», et «logiciel libre» s'écrit «free software». Pour lever cette confusion, la phrase «Free as in "free speech", not as in "free beer"» («Libre comme dans liberté d'expression, pas comme dans bière gratuite») est souvent répétée par les promoteurs des logiciels libres. Concernant l'aspect financier, notons que les logiciels libres se trouvent gratuitement sur Internet et qu'il existe en parallèle des entreprises spécialisées dans la vente et le soutien de logiciels libres, une des plus connues dans ce domaine étant Red Hat. Chacun a bien sûr le droit de redistribuer gratuitement ou non un logiciel libre, quel que soit le moyen par lequel il l'a acquis.

La FSF précise la définition: ces libertés doivent être irrévocables; on doit pouvoir en jouir sans devoir prévenir un tiers; on doit pouvoir redistribuer le programme sous toute forme, notamment compilée, et le code source doit être accessible pour jouir des libertés d'étude et d'amélioration; on doit pouvoir fusionner des logiciels libres dont on n'est pas soi-même l'auteur. La FSF accepte des restrictions mineures quant à la façon dont un logiciel modifié doit être présenté lorsqu'il est redistribué.

1.0.1.2. Debian

En tant que distribution Linux rassemblant des milliers de logiciels libres de toutes provenances, le projet Debian est confronté à des problèmes un peu différents, la FSF se concentrant plus sur le développement de logiciels. Debian a développé Les principes du logiciel libre selon Debian2(*) également connus sous l'acronyme DFSG (pour Debian Free Software Guidelines). Ils comprennent la non-discrimination des utilisateurs et des usages.

Ils précisent les restrictions acceptables en matière de préservation du code source de l'auteur original. Debian accepte explicitement l'exigence que la distribution d'une forme modifiée d'un logiciel libre se fasse sous un autre nom que le logiciel original. On peut noter à ce propos que les noms de plusieurs logiciels libres sont des marques déposées: par exemple Linux , Mozilla et Apache.

1.0.2. Bref aperçu sur les logiciels libres

Un logiciel libre est un logiciel dont la licence dite libre donne à chacun le droit d'utiliser, d'étudier, de modifier, de dupliquer, de donner et de vendre le logiciel. Richard Stallman a formalisé la notion de logiciel libre dans la première moitié des années 1980 puis l'a popularisée avec le projet GNU et la Free Software Foundation (FSF).

Depuis la fin des années 1990, le succès des logiciels libres, notamment de Linux, suscite un vif intérêt dans l'industrie informatique et les médias 1. Les logiciels libres constituent une option face à ceux qui ne le sont pas, qualifiés de « propriétaires».

La notion de logiciel libre ne se confond ni avec celle de logiciel gratuit ( freewares), ni avec celle de sharewares, ni avec celle de domaine public. De même, les libertés définies par un logiciel libre sont beaucoup plus étendues que le simple accès au code source, ce qu'on appelle souvent logiciel Open Source ou «à sources ouvertes». Toutefois, la notion formelle de logiciel Open Source telle qu'elle est définie par l' Open Source Initiative est reconnue comme techniquement comparable au logiciel libre.

Voici le Logo copyleft (« gauche d'auteurs ») symbolise l'obligation de conserver le droit de copier

1.0.3. Quelques logiciels libres

Parmi les logiciels libres les plus connus du grand public figurent :

· le noyau de système d'exploitation Linux

· le navigateur web Mozilla Firefox (Quoique ce statut soit contesté dans les dernières versions)

· le serveur HTTP Apache

· le logiciel de retouche d'image, The Gimp

Les gestionnaires de base de données MySQL et PostgreSQL

Ce chapitre nous a aidé de procéder à l'étude minutieuse des logiciels libres afin de mieux les appréhender et déblayer le terrain pour le chapitre suivant.

Chapitre 2. LA METHODE APPLICABLE POUR L'ADMINISTRATION DE RESEAU

Dans ce chapitre, nous allons axer notre étude sur la méthode d'administration de réseau à distance applicable dans notre travail en vue d'administrer et centraliser d'une façon distante le réseau de Projet Limete/Université Cardinal Malula. Nous pouvons d'abord, présenter les concepts dans un premier temps. Le protocole SNMP qui est le standard de fait dans ce domaine sera ensuite passé en revue.

La mise en pratique de SNMP est présentée au travers la mise en oeuvre du package NET-SNMP.

2.0. GENERALITES SUR L'ADMINISTRATION DE RESEAU

On peut se poser à quoi correspond le concept d'administration de réseau. L'ISO (International Standard Organization) a cerné 5 axes :

· La gestion des anomalies (Fault Management). L'objectif de l'administration réseau est d'avoir un réseau opérationnel sans rupture de service (taux de disponibilité à 99,999 % par exemple soit quelques secondes d'indisponibilité par an), ce qui définit une certaine Qualité de Service (QoS) offerte par l'opérateur à l'abonné. On doit être en mesure de localiser le plus rapidement possible toute panne ou défaillance. Pour cela, on surveille les alarmes émises par le réseau, on localise un incident par un diagnostic des alarmes, on journalise les problèmes...

· La gestion de la configuration réseau (Configuration Management). Il convient de gérer la configuration matérielle et logicielle du réseau pour en optimiser l'utilisation. Il est important que chaque équipement, chaque compteur... soit parfaitement identifié de façon unique à l'aide d'un nom ou identificateur d'objet OID (Object Identifier).

· La gestion des performances (Performance Management). Il convient de contrôler à tout moment le réseau pour voir s'il est en mesure d'écouler le trafic pour lequel il a été conçu.

· La gestion de la sécurité (Security Management). On gère ici les contrôles d'accès au réseau, la confidentialité des données qui y transitent, leur intégrité et leur authentification.

· La gestion de la comptabilité (Accounting Management). L'objectif est de gérer la consommation réseau par abonner en vue d'établir une facture.

En fait, on s'aperçoit qu'un administrateur système d'un réseau local d'une entreprise, d'un campus, d'une école administre aussi son réseau. Il le fait sans trop de problèmes mais les difficultés s'amoncellent dès que la taille du réseau devient importante. La solution est alors de rationaliser, de normaliser les choses et l'on a proposé des normes d'administration de réseau.

L'ISO a proposé dans les années 80 la norme CMIS/CMIP (Common Management Information Service ISO 9595, Common Management Information Protocol ISO 9596) comme protocole d'administration de réseau et définit un cadre général au niveau architecture (ISO 7498).

En parallèle, l'IAB (Internet Activities Board) approuve le protocole SNMP (Simple Network Management Protocol) comme solution à cours terme et CMOT (CMIP Over TCP) à plus long terme. Au début des années 90, SNMP, plus simple, devient alors standard de fait et est adopté par de nombreux constructeurs. C'est le protocole d'administration de réseau des réseaux IP mais aussi des réseaux des opérateurs comme pour les réseaux ATM !

2.1. LES CONCEPTS DE SNMP

2.1.1. Introduction

Bien qu'issu du monde IP, le protocole SNMP (Simple Network Management Protocol) développé dans les années 80 reprend beaucoup des idées du protocole CMIS/CMIP de l'ISO.

SNMP est défini dans la RFC 1157 (Request For Comments). Il utilise le concept d'application Client/Serveur bien connu dans le monde IP :

· Sur chaque équipement administrable s'exécute un programme serveur : l'agent SNMP. Cet agent gère les informations relatives à l'équipement et sont stockées dans une base de données propre : la MIB (Management Information Base).

· On retrouve une station d'administration côté client qui interagit avec un ou plusieurs agents SNMP : le manager SNMP. Le manager est généralement une application possédant une interface graphique élaborée pour plus de convivialité. On peut citer comme exemple de manager le produit commercial Openview de HP.

 On retrouve donc 3 éléments importants dans SNMP :

· Une base de donnée (MIB) gérée par chaque agent SNMP et modifiable éventuellement par un manager SNMP. Les RFC 1156 et 1213 définissent la MIB-I (version 1) puis la MIB-II qui remplace la précédente, c'est à dire les objets que doit gérer tout agent SNMP.

· Une structure commune et un système de représentation des objets de la MIB : le SMI (Structure of Management Information, RFC 1155).

· Un protocole d'échange entre manager et agent : le protocole SNMP (RFC 1157). Le protocole SNMP a évolué pour intégrer les aspects de confidentialité et d'authentification. Seule la version 1 de SNMP est décrite ici. C'est d'ailleurs la seule version adoptée et utilisé par tous.

Chapitre 3. MISE EN OEUVRE DE NET-SNMP SOUS LINUX

Ce chapitre nous montre comment mettre en oeuvre le NET-SNMP SOUS LINUX étant donné que celui-ci est un système d'exploitation que nous utilisons pour l'administration de réseau à distance dans notre travail. Sachant que la mise en oeuvre de SNMP sous Linux se fera en utilisant le standard de fait dans le logiciel libre : le package NET-SNMP.

Le projet NET-SNMP appelé anciennement UCD-SNMP a été historiquement développé par l'université américaine Carnegie Mellon University (CMU) puis amélioré et maintenu maintenant par l'université américaine University of California Davis (UCD).

NET-SNMP est en fait Net-SNMP est un ensemble d'applications utilisées pour implémenter le protocole SNMP (v1, v2c & v3) utilisant ã la fois l'IPv4 & IPv6. Et un ensemble d'outils et de fonctionnalités :

· Une API (Application Programming Interface) d'accès à SNMP.

· Un agent SNMP extensible.

· Des commandes en ligne pour interroger des agents SNMP.

· Des commandes en ligne pour gérer et générer des TRAPs SNMP.

· Une version de la commande UNIX netstat utilisant SNMP.

Un browser de MIB SNMP (tkmib) écrit en Tk

NET-SNMP est porté sur différents systèmes et en particulier sur :

· Linux (noyaux 2.4 à 1.3).

· HP-UX (10.20 à 9.01 et 11.0).

· Ultrix (4.5 à 4.2).

· Solaris (2.8 à 2.3) et SunOS (4.1.4 à 4.1.2).

· NetBSD (1.5alpha à 1.0).

· FreeBSD (4.1 à 2.2).

· Win32.

· ...

NET-SNMP supporte SNMPv1, SNMPv2 et SNMPv3 que ce soit côté agent SNMP comme du côté manager SNMP via les commandes en ligne NET-SNMP.

3.1. INSTALLATION DE NET-SNMP

L'installation de NET-SNMP est des plus traditionnels sous Linux :

Décompression :

# cd

# tar xvzf net-snmp-5.0.2.tar.gz

# ln -s net-snmp-5.0.2 net-snmp

Configuration. On choisira d'utiliser par défaut SNMPv1 :

# cd ~/net-snmp

# ./configure

Compilation :

# make

Installation :

# make install 

Les commandes Linux NET-SNMP sont recopiées dans le répertoire /usr/local/bin et /usr/local/sbin qu'il faudra rajouter à sa variable d'environnement PATH.

Les fichiers correspondants aux MIBs exploités côté manager SNMP par les commandes en ligne NET-SNMP sont sous /usr/local/share/snmp/mibs.

3.1.1. Configuration et lancement de l'agent SNMP NET-SNMP

L'agent SNMP NET-SNMP est l'exécutable snmpd sous /usr/local/sbin. Il possède un fichier de configuration général s'appelant snmpd.conf à copier sous /usr/local/share/snmp. Un exemple de fichier qu'il faudra bien sûr modifier en fonction de ce que l'on veut faire est fourni. C'est le fichier EXAMPLE.conf sous ~/net-snmp.

On pourra consulter l'aide en ligne sur la structure de ce fichier (# man snmpd.conf).

Les champs les plus importants sont :

Déclaration d'une machine et d'un réseau IP ayant accès à l'agent SNMP, local et mynetwork de communauté tst :

# sec.name source community

com2sec local localhost tst

com2sec mynetwork 192.9.201.0/24 tst

 

Déclaration de groupes d'accès aux objets de la MIB de l'agent SNMP pour local et mynetwork :

####

# Second, map the security names into group names:

# sec.model sec.name

group MyRWGroup v1 local

group MyRWGroup v2c local

group MyROGroup v1 mynetwork

group MyROGroup v2c mynetwork

Accès en lecture/écriture aux objets de la MIB de l'agent pour l'accès local et lecture seulement pour l'accès mynetwork :

####

# Finally, grant the 2 groups access to the 1 view with different

# write permissions:

# context sec.model sec.level match read write notif

access MyROGroup "" any noauth exact all none none

access MyRWGroup "" any noauth exact all all none

 Autorisation de la génération de TRAPs SNMP en direction d'un manager SNMP de la machine localhost de communauté tst :

####

# Traps and v2 traps enabled and sent to localhost

#

# command host manager community

trapsink localhost tst

trap2sink localhost tst

 

Renseignement de l'objet sysLocation  de la branche system :

syslocation ENSEIRB, Bordeaux, France

Renseignement de l'objet sysContact de la branche system :

syscontact Kadionik <kadionik@enseirb.fr>

L'utilitaire snmpconf permet de créer le fichier snmpd.conf de façon interactive et conviviale sans en connaître exactement sa structure.

Création rapide du fichier snmpd.conf à la première utilisation :

# snmpconf -g basic_setup

Mode interactif :

# snmpconf

Après création du fichier snmpd.conf avec les valeur décrites précédemment et recopie sous /usr/local/share/snmp, il ne reste plus qu'à lancer l'agent snmpd :

# snmpd

On pourra lancer dans une autre fenêtre un sniffer réseau comme tcpdump pour voir les échanges agent SNMP/manager SNMP :

# tcpdump -vv -i lo

3.1.2. Tests de l'agent SNMP NET-SNMP

Le test de l'agent SNMP NET-SNMP se fait en utilisant un manager SNMP. Dans le cas du package NET-SNMP, on a accès à des commandes en ligne sous /usr/local/bin permettant d'émettre des requêtes SNMP.

Il convient d'abord de configurer son environnement Linux. Pour accéder aux objets de la MIB d'un agent sous forme symbolique et non sous forme décimale OID, il faut aller lire l'ensemble des fichiers MIB sous /usr/local/share/snmp/mibs :

#

# PATH

#

PATH=$PATH:/usr/local/bin:/usr/local/sbin

#

# MIBS : forces to read all MIB files under /usr/local/share/snmp/mibs

#

MIBS=ALL

#

# exporting all variables

#

export PATH MIBS

 Les principales commandes utiles notées globalement snmpxxx sont :

· snmpget : envoi d'une requête SNMP GET pour obtenir une information sur un objet de la MIB d'un agent SNMP distant.

· snmpset : envoi d'une requête SNMP SET pour mettre à jour la valeur d'un objet de la MIB d'un agent SNMP distant.

· snmpgetnext : envoi d'une requête SNMP GETNEXT et donne aussi la valeur de l'objet suivant de la MIB d'un agent SNMP distant si toutefois il en existe un.

· snmpwalk : cette commande fonctionne comme snmpgetnext mais permet de balayer complètement une branche de la MIB d'un agent SNMP distant.

· snmptranslate : permet de convertir un objet d'une MIB représenté sous sa forme décimale OID en sa forme symbolique et réciproquement.

L'utilitaire snmpconf permet de créer le fichier snmp.conf de façon interactive et conviviale sans en connaître sa structure pour configurer par défaut l'usage des commandes snmpxxx précédentes (choix de la version du protocole SNMP par défaut, communauté...). Le fichier ainsi créé sera à recopier sous /usr/local/share/snmp.

Une fois l'agent SNMP lancé sur sa machine comme précédemment, il est ensuite possible de le tester avec les commandes snmpxxx.

Correspondance OID et nom symbolique :

# snmptranslate 1.3.6.1.2.1.1.3.0

SNMPv2-MIB::sysUpTime.0

Représentation sous forme graphique de la branche system de la MIB par analyse de l'ensemble des fichiers MIB sous /usr/local/share/snmp/mibs  :

# snmptranslate -Tp -IR system

+--system(1)

|

+-- -R-- String sysDescr(1)

| Textual Convention: DisplayString

| Size: 0..255

. . .

 Récupération par SNMPv1  de la valeur courante de l'objet sysUpTime géré par l'agent SNMP de la machine localhost :

# snmpget -v 1 -c tst localhost system.sysUpTime.0

SNMPv2-MIB::sysUpTime.0 = Timeticks: (12908) 0:02:09.08

Récupération de la valeur courante de l'objet sysUpTime avec SNMPv2c :

# snmpget -v 2c -c tst localhost system.sysUpTime.0

SNMPv2-MIB::sysUpTime.0 = Timeticks: (13966) 0:02:19.66

Récupération de la valeur courante des objets sysLocation et sysContact (renseignés dans le fichier snmpd.conf)  :

# snmpget -v 1 -c tst localhost system.sysLocation.0

SNMPv2-MIB::sysLocation.0 = STRING: ENSEIRB, Bordeaux, France

# snmpget -v 1 -c tst localhost system.sysContact.0

SNMPv2-MIB::sysContact.0 = STRING: lusikila <blaise_apakumu@yahoo.fr>

Parcours de la branche system de la MIB de l'agent SNMP :

# snmpwalk -v 1 -c tst localhost system

SNMPv2-MIB::sysDescr.0 = STRING: Linux poire1 2.4.18-3 #1 Thu Apr 18 07:31:07 EDT 2002 i586

SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs

SNMPv2-MIB::sysUpTime.0 = Timeticks: (28119) 0:04:41.19

SNMPv2-MIB::sysContact.0 = STRING: lusikila <blaise_apakumu@yahoo.fr>

SNMPv2-MIB::sysName.0 = STRING: poire1

SNMPv2-MIB::sysLocation.0 = STRING: ENSEIRB, Bordeaux, France

. . .

Affection d'une nouvelle valeur à l'objet sysLocation de la MIB de l'agent avec SNMPv1 :

# snmpset -v 1 -c tst localhost system.sysLocation.0 s "coucou"

Error in packet.

Reason: (noSuchName) There is no such variable name in this MIB.

Failed object: SNMPv2-MIB::sysLocation.0

Affection d'une nouvelle valeur à l'objet sysLocation.0 de la MIB de l'agent avec SNMPv2c :

# snmpset -v 2c -c tst localhost system.sysLocation.0 s "coucou"

Error in packet.

Reason: notWritable (that object does not support modification)

Failed object: SNMPv2-MIB::sysLocation.0

En comparant le résultat des 2 dernières commandes, on voit que SNMPv1 ne définit pas en retour de code d'erreur, ce que corrige SNMPv2c. Dans notre cas, on essaye de modifier un objet de la MIB de l'agent SNMP distant accessible en lecture seulement !

La trace tcpdump générée par l'exécution de la commande :

# snmpget -v 1 -c tst localhost sysUpTime.0

est la suivante :

# tcpdump -vv -i lo

tcpdump: listening on lo

15:17:54.733310 poire1.1092 > poire1.snmp: [udp sum ok] |30|26|02|01{ SNMPv1 |04|03C=tst |a0|1c{ GetRequest(28) |02|04R=691700679 |02|01|02|01|30|0e |30|0c|06|08system.sysUpTime.0|05|00} } (DF) (ttl 64, id 0, len 68)

15:17:54.734564 poire1.snmp > poire1.1092: [udp sum ok] |30|29|02|01{ SNMPv1 |04|03C=tst |a2|1f{ GetResponse(31) |02|04R=691700679 |02|01|02|01|30|11 |30|0f|06|08system.sysUpTime.0=|43|03127125} } (DF) (ttl 64, id 0, len 71)

On voit que la communauté (ici tst) qu'il faut considérer comme un mot de passe circule en clair sur le réseau avec SNMPv1 !

Il est à noter que l'on peut aussi générer des TRAPs SNMP en direction d'un manager SNMP d'une machine en utilisant la commande snmptrap. Le démon snmptrapd (sous /usr/local/sbin) peut être utilisé comme collecteur pour traiter les TRAPs SNMP. Il utilise le fichier de configuration snmptrapd.conf à recopier sous /usr/local/share/snmp. Ce fichier de configuration peut être généré en utilisant l'outil snmpconf comme précédemment. On verra l'utilisation des TRAPs SNMP lors du contrôle à distance par SNMP d'un système électronique.

3.1.3. Présentation du protocole SNMP

Le système de gestion de réseau est basé sur trois éléments principaux: un superviseur, des noeuds (ou nodes) et des agents. Dans la terminologie SNMP, le synonyme manager est plus souvent employé que superviseur. Le superviseur est la console qui permet à l'administrateur réseau d'exécuter des requêtes de management. Les agents sont des entités qui se trouvent au niveau de chaque interface, connectant l'équipement managé (noeud) au réseau et permettant de récupérer des informations sur différents objets.

Switchs, hubs, routeurs et serveurs sont des exemples d'équipements contenant des objets manageables. Ces objets manageables peuvent être des informations matérielles, des paramètres de configuration, des statistiques de performance et autres objets qui sont directement liés au comportement en cours de l'équipement en question. Ces objets sont classés dans une sorte de base de données appelée MIB (« Management Information Base »). SNMP permet le dialogue entre le superviseur et les agents afin de recueillir les objets souhaités dans la MIB.

L'architecture de gestion du réseau proposée par le protocole SNMP est donc fondée sur trois principaux éléments :

Les équipements managés (managed devices) sont des éléments du réseau (ponts, hubs, routeurs ou serveurs), contenant des « objets de gestion » (managed objects) pouvant être des informations sur le matériel, des éléments de configuration ou des informations statistiques ;

Les agents, c'est-à-dire une application de gestion de réseau résidant dans un périphérique et chargé de transmettre les données locales de gestion du périphérique au format SNMP ; Les systèmes de management de réseau (network management systems notés NMS), c'està-dire une console à travers laquelle les administrateurs peuvent réaliser des tâches d'administration.

Concrètement, dans le cadre d'un réseau, SNMP est utilisé:

- pour administrer les équipement de réseau (Ordinateur, Onduleur, Hub, Routeur, Serveur.... ) au Projet Limete Université Cardinal Malula.

- pour surveiller le comportement des équipement du PL/UCM...

Une requête SNMP est un datagramme UDP habituellement à destination du port 161. Les schémas de sécurité dépendent des versions de SNMP (v1, v2 ou v3). Dans les versions 1 et 2, une requête SNMP contient un nom appelé communauté, utilisé comme un mot de passe. Il y a un nom de communauté différent pour obtenir les droits en lecture et pour obtenir les droits en écriture. Dans bien des cas, les colossales lacunes de sécurité que comportent les versions 1 et 2 de SNMP limitent l'utilisation de SNMP à la lecture des informations car la communauté circule sans chiffrement avec ces deux protocoles. Un grand nombre de logiciels libres et payants utilisent SNMP pour interroger régulièrement les équipements et produire des graphes rendant compte de l'évolution des réseaux ou des systèmes informatiques (MRTG, Cacti, Nagios,...).

Le protocole SNMP définit aussi un concept de Trap. Une fois défini, si un certain évènement se produit, comme par exemple le dépassement d'un seuil, l'agent envoie un paquet UDP à un serveur. Ce processus d'alerte est utilisé dans les cas où il est possible de définir simplement un seuil d'alerte. Dans nombre de cas, hélas, un alerte réseau ne devrait être déclenchée qu'en corrélant plusieurs événements.

3.1.3.1. Les Trames

La trame SNMPv1 est complètement encodée en ASN.1 [ISO 87]. Les requêtes et les réponses ont le même format :

3.1.3.2. Les Paquet SNMP

La version la plus utilisée est encore la version 1. Plusieurs versions 2 ont été proposées par des documents de travail, mais malheureusement, aucune d'entre elles n'a jamais été adoptée comme standard. La version 3 est actuellement en voie d'être adoptée. On place la valeur zéro dans le champ version pour SNMPv1, et la valeur 3 pour SNMPv3.

La communauté permet de créer des domaines d'administration. La communauté est décrite par une chaîne de caractères. Par défaut, la communauté est « PUBLIC ».

3.1.3.3. Le PDU sa 3e Version

Cette nouvelle version du protocole SNMP vise essentiellement à inclure la sécurité des transactions. La sécurité comprend l'identification des parties qui communiquent et l'assurance que la conversation soit privée, même si elle passe par un réseau public.

Cette sécurité est basée sur 2 concepts :

- USM (User-based Security Model)

- VACM (View - Based Access Control Model)

3.1.3.3.1. USM - User-based Security Model

Trois mécanismes sont utilisés. Chacun de ces mécanismes a pour but d'empêcher un type d'attaque.

3.1.3.3.1.1. L'authentification

L'authentification empêche un intrus vienne changer le paquet SNMPv3 en cours de route et de valider le mot de passe de la personne qui transmet la requête.

3.1.3.3.1.1.1. Schéma d'authentification du SNMPv3

1. Le transmetteur groupe des informations à transmettre avec le mot de passe.

2. On passe ensuite ce groupe dans la fonction de hachage à une direction.

3. Les données et le code de hachage sont ensuite transmis sur le réseau.

4. Le receveur prend le bloc des données, et y ajoute le mot de passe.

5. On passe ce groupe dans la fonction de hachage à une direction.

6. Si le code de hachage est identique à celui transmis, le transmetteur est authentifié.

3.1.3.3.1.2. Le Cryptage

Le cryptage empêche quiconque de lire les informations de gestions contenues dans un paquet SNMPv3.

Avec SNMPv3, le cryptage de base se fait sur un mot de passe « partagé » entre le manager et l'agent. Ce mot de passe ne doit être connu par personne d'autre. Pour des raisons de sécurité, SNMPv3 utilise deux mots de passe : un pour l'authentification et un pour le cryptage. Ceci permet au système d'authentification et au système de cryptage d'être indépendants. Un de ces systèmes ne peut pas compromettre l'autre.

SNMPv3 se base sur DES (Data Encryption Standard) pour effectuer le cryptage.

1.3.4.1.2.1. Cryptage des données du SNMPv3

On utilise une clé de 64 bits (8 des 64 bits sont des parités, la clé réelle est donc longue de 56 bits) et DES encrypte 64 bits à la fois. Comme les informations que l'on doit encrypter sont plus longues que 8 octets, on utilise du chaînage de blocs DES de 64 bits.

Une combinaison du mot de passe, d'une chaîne aléatoire et d'autres informations forme le « Vecteur d'initialisation ». Chacun des blocs de 64 bits est passé par DES et est chaîné avec le bloc précédent avec un XOR. Le premier bloc est chaîné par un XOR au vecteur d'initialisation. Le vecteur d'initialisation est transmis avec chaque paquet dans les « Paramètres de sécurité », un champ qui fait partie du paquet SNMPv3.

Contrairement à l'authentification qui est appliquée à tout le paquet, le cryptage est seulement appliqué sur le PDU.

1.3.4.1.3. L'estampillage du temps

L'estampillage du temps empêche la réutilisation d'un paquet SNMPv3 valide déjà transmis par quelqu'un.

Par exemple, si l'administrateur effectue l'opération de remise à jours d'un équipement, quelqu'un peut saisir ce paquet et tenter de le retransmettre à l'équipement à chaque fois que cette personne désire faire une mise à jour illicite de l'équipement. Même si la personne n'a pas l'autorisation nécessaire, elle envoie un paquet, authentifié et encrypté correctement pour l'administration de l'équipement.

On appelle ce type d'attaques le « Replay Attack ». Pour éviter ceci, le temps est estampillé sur chaque paquet. Quand on reçoit un paquet SNMPv3, on compare le temps actuel avec le temps dans le paquet. Si la différence est plus que supérieur à 150 secondes, le paquet est ignoré.

SNMPv3 n'utilise pas l'heure normale. On utilise plutôt une horloge différente dans chaque agent. Ceux-ci gardent en mémoire le nombre de secondes écoulées depuis que l'agent a été mis en circuit.

Ils gardent également un compteur pour connaître le nombre de fois où l'équipement a été mis en fonctionnement. On appelle ces compteurs BOOTS (Nombre de fois ou l'équipement a été allumé) et TIME (Nombre de secondes depuis la dernière fois que l'équipement a été mis en fonctionnement).

La combinaison du BOOTS et du TIME donne une valeur qui augmente toujours, et qui peut être utilisée pour l'estampillage. Comme chaque agent a sa propre valeur du BOOTS/TIME, la plate-forme de gestion doit garder une horloge qui doit être synchronisée pour chaque agent qu'elle contacte. Au moment du contact initial, la plateforme obtient la valeur du BOOTS/TIME de l'agent et synchronise une horloge distincte.

3.1.3.3.2. VACM - View- based Access Control Model

Permet le contrôle d'accès au MIB. Ainsi on a la possibilité de restreindre l'accès en lecture et/ou écriture pour un groupe ou par utilisateur.

3.1.3.3.2.1. La trame SNMPv3

Le format de la trame SNMPv3 est très différent du format de SNMPv1. Ils sont toutefois codés tous deux dans le format ASN.1 [ISO 87]. Ceci assure la compatibilité des types de données entres les ordinateurs d'architectures différentes.

Pour rendre plus facile la distinction entre les versions, le numéro de la version SNMP est placée tout au début du paquet.

Ce schéma montre clairement les différents champs du paquet SNMPv3. Toutefois, le contenu de chaque champ varie selon la situation. Selon que l'on envoie une requête, une réponse, ou un message d'erreur, les informations placées dans le paquet respectent des règles bien définies dans le standard.

Chapitre 4. UTILISATION DE SNMP AU PL/UCM

Pour administrer les différents équipements, nous utilisons le protocole SNMP. Pour ce faire, il faut installer sur les machines Net-SNMP. Net-SNMP est une collection d'applications utilisées pour implémenter SNMP v1, SNMP v2c, SNMP v3 en utilisant à la fois IPv4 et IPv6.

Nous avons rapatrié les packages Net-SNMP suivant via les dépôts de Red Hat :

Net-snmp

o Snmpd (daemon) : agent qui répondra aux requêtes SNMP

o Snmptrapd (daemon) : application qui recevra les notifications SNMP Net-snmp-utils : contient les divers outils (snmpwalk, snmpget, ?)

Une fois les packages installés, il suffit de lancer le daemon snmpd et on peut déjà interroger l'agent avec des petits utilitaires du genre de Getif.

4.1. CONFIGURATION

4.1.1. Création d'un utilisateur v3

Pour créer un utilisateur v3 (snmpd doit être arrêté). Il suffit d'ajouter les lignes suivantes au tout début du fichier /etc/snmp/snmpd.conf

createUser MonUtilisateur MD5 "MonMot2passe" DES MonMot2PasseDES rouser MonUtilisateur.

MonUtilisateur : nom d'utilisateur

MonMot2passe : authentication protocol pass phrase (qui se transformera en MD5)
MonMot2PasseDES : privacy protocol pass phrase (qui servira pour le cryptage des données en DES)

4.1.2. Le fichier snmpd.conf

Ensuite, modifier le fichier comme suit :

####

# First, map the community name "public" into a "security name"

# sec.name source community

com2sec Local monserveur.domain.tld ma_communaute_ro

####

# Second, map the security name into a group name:

# groupName securityModel securityName

group LocalGroup usm Local

####

# Third, create a view for us to let the group have rights to:

# Make at least snmpwalk -v 1 localhost -c public system fast again.

# name incl/excl subtree mask(optional)

view allview included .1.3.6

view systemview included .1.3.6.1.2.1.1

view systemview included .1.3.6.1.2.1.25.1.1

29 Net-SNMP3(*) :

30 Getif4(*) :

####

# Finally, grant the group read-only access to the systemview view.

# group context sec.model sec.level prefix read write notif

access LocalGroup "" usm authPriv exact allview none none

chercher les mots : syslocation et syscontact et les modifier en conséquence : syslocation Rack 6, Armoire 9, Societe, Ville, Province, Pays

syscontact Departement Informatique <adresse-mail@domain.cd> lancer le service snmpd ( # /etc/init.d/snmpd start )

rééditer le fichier précédent et supprimer la ligne « create user? »

Chapitre 5. ADMINSTRATION DE MATERIELS

5.1. LES CONTROLES DES UPS

Les UPS sont un des éléments importants dans une infrastructure de serveurs. Lors d'une coupure de courant, ils prennent instantanément le relais le temps que le courant revienne ou au pire des cas peuvent arrêter les serveurs de manière « propre ». Il est important dès lors, de vérifier leur état de fonctionnement.

Nous souhaitons qu'au Projet Limete/Université Cardinal Malula, le serveur soient protégé par un UPS de marque MGE UPS SYSTEMS et le modèle Pulsar Evolution.

5.1.1. La Connectique

Les UPS peuvent être reliés par câble séries ou USB. Dans cas de Projet Limete Université Cardinal Malula, le serveur dispose d'une prise USB et d'un connecteur série à l'arrière. Suite à quelques problèmes avec le câble série, nous allons relier le UPS en USB.

5.1.2. Les Logiciels

Pour administrer les UPS nous avons besoin de deux logiciels, lesquels sont nécessaires : UPSmon et Drivers Nut.5(*)

5.1.2.1. UPSmon

Upsmon est un processus client qui a la responsabilité de la partie la plus importante d'administration couper correctement le système quand le courant est épuisé. Il peut faire appel à d'autres programmes dans le but de notifier des évènements de l'alimentation.

5.1.2.2. Drivers Nut

Le driver libre NUT (Network UPS Tools) est un logiciel libre largement soutenu par le fabricant MGE qui y contribue beaucoup, dont les deux atouts principaux sont :

Universalité : fonctionne avec la plupart des UPS du marché, quelque soit leur connectique (liaison série, USB, ...)

Client/serveur : un serveur tourne sur la machine à laquelle est branchée l'UPS, ce qui permet ã tout le réseau de connaître ã tout moment l'état du système, et éventuellement d'envisager les actions nécessaires le cas échéant (batterie faible ?).

5.1.3. Nagios dans tout cela

L'administration de l'UPS est très simple ã mettre en oeuvre avec Nagios.

5.1.3.1. Présentation du plugin

Il existe un plugin officiel du coté de Nagios qui permet d'administrer les UPS ã l'aide de Nut. Ce plugin essaye de déterminer le statut de l'UPS sur une machine locale ou distante. Si l'UPS est en ligne ou en calibrage, le plugin retournera un état OK. Si la batterie est en fonctionnement, il retournera un état Warning. Si l'UPS est coupé ou a une batterie faible, le plugin retournera un état Critical.

La définition du service approprié est aussi simple que pour le reste. Cependant, il faut bien entendu définir la commande.

5.1.3.1.1. Définition de la commande

Voici la définition de la commande :

define command(

command_name check_ups

command_line $USER1$/check_ups -H $HOSTADDRESS$ -u $ARG1$
I

Le plugin prend comme argument l'adresse de l'hôte et le nom de l'UPS. Voyons ensuite la définition du service.

5.1.3.1.2 Définition du service

Rien de bien compliqué :

define service(

use local-service

host _name HOST A

service_description UPS

check_command check_ups!myups

I

Un service local, sur le serveur HOST A. Une courte description du service et enfin la ligne de commande.

Nous pouvons constater que le plugin contrôle la charge utile, le pourcentage de charge et l'utilisation de celle-ci.

Chapitre 6. UTILISATION D'UN SCRIPT A DISTANCE VIA SNMP

Le protocole SNMP permet d'obtenir un nombre incroyable d'informations sur l'hôte distant.

Malheureusement, on ne peut pas obtenir toutes les informations que l'on souhaite... Cela peut s'arranger en ajoutant des informations simplement dans la MIB.

6.1. DES PLUGINS SUPPLEMENTAIRES

Au Projet Limete Université Cardinal Malula, nous utiliserons deux PlugIns. Il serait nécessaire de placer soi-même sur les hôtes distants.

Le premier Plugin est check_connections.pl. Il fait partie des PlugIns officiels de Nagios. Il permet d'obtenir le nombre de connections TCP ouverts pour un processus et/ou un utilisateur.

Le deuxième Plugin est check_diskio. Il est téléchargeable6(*). Il permet de connaître le nombre de secteurs lus par seconde. Les PlugIns peuvent être placés où on le souhaite sur l'hôte. Dans notre cas, nous les ai placé dans /usr/lib(64)/nagios/plugins.

6.2. LA CONFIGURATION DE L'AGENT SNMP

On peut placer les lignes suivantes où on le souhaite. Mais par rapport aux commentaires déjà présents dans le fichier, nous avons préféré mettre les lignes qui suivent après les commentaires sur :

# Executables/scripts

exec1.3.6.1.4.1.17259.100ldaptcpconn-check /usr/lib64/nagios/plugins/check_connections.pl -C ns-slapd -w 500 -c 800

exec 1.3.6.1.4.1.17259.101 DiskIOsda /usr/lib64/nagios/plugins/check_diskio -w 100 -c 200 -d sda

6.2.1. Définition de la commande et des services sur le serveur

Bien entendu, il faut définir la commande et le service respectif aux lignes précédentes.

define command(

command_name check_snmp

command_line $USER1$/check_snmp -H $HOSTADDRESS$ -o $ARG1$ -r "OK" $USER4$ }

define service(

use ldap-service

host _name mxisrv1

service_description LDAP Connections

check_command check_snmp!1.3.6.1 .4.1 .1 7259.100.1 01 .1 }

define service{

use host-service

host _name mx1srv1,mx1srv2,mx1srv3,mx1srv7,mx1srv9,mxisrv1,mxisrv2 service_description DiskIOsda

check_command check_snmp!1.3.6.1 .4.1 .1 7259.101.1 01 .1

I

 

Certaines informations que l'on souhaite obtenir de la machine nécessitent donc le lancement d'un Plugin à distance. Seulement, il serait absurde que le Plugin tourne 24h/7j.

Le protocole SNMP permet d'exécuter à distance des scripts notamment. Ce qui est notre cas avec les deux PlugIns plus haut.

Lorsque Nagios fera une requête SNMP sur l'OID 1.3.6.1.4.1.17259.100.101.1 sur mxisrv1 (par exemple), le daemon snmpd va interpréter ce message, va se renseigner dans sa MIB pour obtenir les informations demandées. Pour les obtenir, il va exécuter le Plugin adéquat. Ce Plugin va renvoyer des informations que le daemon va capturer et renvoyer au serveur de contrôle qui lui les analysera et réagira en fonction.

Chapitre 7. LES TRAPS

7.1 UTILISATION DES TRAPS AVEC NAGIOS

Le protocole SNMP définit aussi un concept de trap. Une fois défini, si un certain évènement se produit, comme par exemple le dépassement d'un seuil, l'agent envoie un paquet UDP (port 162) à un serveur. Ce processus d'alerte est utilisé dans les cas où il est possible de définir simplement un seuil d'alerte. Dans nombres de cas, hélas, un alerte réseau ne devrait être déclenchée qu'en unissant plusieurs événements.

7.2 CONFIGURATIONS

Une petite configuration est nécessaire coté serveur et coté client pour que les traps puissent fonctionner. Au projet Limete/Université Cardinal Malula nous Commencerons par le client.

7.2.1 Coté client (l'agent)

Tout d'abord, il faut éditer le fichier /etc/snmp/snmpd.conf et ajouter les lignes suivantes à la fin du fichier. Pour nos tests, nous utiliserons la communauté « public ».

# Définit la communauté par défaut à utiliser quand les traps seront envoyées. trapcommunity public

# Envois des traps de version 1 - HOTE où se trouve le daemon snmptrad [Community [Port]] trapsink 192.1 68.88.129 public 162

# Envois des traps de version 2

trap2sink 192.1 68.88.129 public 162

#Utilisé lors d'envois d'inform ã la place des traps

informsink 192.1 68.88.129 public 162

# Envois de traps lors d'authentification ratée

authtrapenable 1

# Permet d'envoyer des traps lors du changement d'état (Down/Up) des interfaces réseaux

linkUpDownNotifications yes

# Envois des traps pour une liste de problèmes généraux defaultMonitors yes

7.2.2 Coté serveur

Premièrement, il faut créer (ou éditer) le fichier /etc/snmp/snmptrapd.conf et ajouter les lignes suivantes à la fin du fichier.

# On traite de la même façon toutes les interruptions : avec SNMPTT

traphandle default /usr/sbin/snmptt

# On accepte toutes les interruptions

disableAuthorization yes

#on ne journalise pas les interruptions reçues (c'est SNMPTT qui s 'en chargera). On aura quand même une trace de snmptrapd dans syslog, grâce à l'option -Lsd du lanceur (voir ci-dessous). donotlogtraps yes

Pour la petite histoire, snmptrad passe à SNMPTT les éléments de l'interruption qu'il a reçus via les paramètres de la ligne de commande.

Le lanceur du service snmptrapd doit être modifié pour ne pas traduire les OID, mais les laisser sous forme numérique. C'est SNMPTT qui fera la traduction. Il faut modifier /etc/init.d/snmptrapd :

OPTIONS="-On -Lsd -p /var/run/snmptrapd.pid" # Il faut rajouter le -On

Après modification, il suffit de redémarrer le daemon snmptrapd.

7.3 NAGIOS DOIT COMPRENDRE, SNMPTT L'AIDE.

SNMPTT6(*) (SNMP Trap Translator v1.2beta2) est un handler de trap écrit en Perl pour être utilisé avec le programme snmptrapd de Net-SNMP.

7.3.1 Fonctionnement général

1. Un hôte sur le réseau (ou plutôt une application de cet hôte) envoie une interruption SNMP au serveur qui héberge Nagios. Celui-ci la reçoit via le service snmptrapd (qui est en écoute sur le port UDP 162).

2. Snmptrapd la passe ensuite à SNMPTT, dont le rôle est de rendre intelligible l'interruption.

Pour cela, il se base sur la MIB de l'application émettrice, que l'on aura bien sûr récupérée et transformée au préalable pour en nourrir SNMPTT.

3. SNMPTT envoie enfin l'interruption interprétée à Nagios, via le fichier de commandes externes de celui-ci. Il utilise pour cela la commande Nagios submit_check_result.

Dans notre configuration de Nagios, il n'y a qu'un service par hôte qui reçoit les traps SNMP. Cela signifie que si plusieurs traps sont reçus en provenance d'un même hôte, seul le dernier sera affiché.

Par contre, chaque trap reçu générera bien une notification. Pour acquitter une interruption dans Nagios, il faut soit forcer un check immédiat du service (qui fera un ping et remettra l'état à OK), soit soumettre manuellement un check passif, avec l'intitulé "Init", ou "RAZ", par exemple.

7.3.2 Configuration

Nous allons faire fonctionner SNMPTT en mode "stand-alone" ; il sera appelé chaque fois que nécessaire par le gestionnaire d'interruptions snmptrapd. L'initialisation est plus longue dans ce cas, mais le paramétrage plus simple.

Le fichier de configuration /etc/snmp/snmptt.ini doit contenir : [General]

mode = standalone

multiple_event = 1

dns_enable = 1

strip_domain = 1

strip_domain_list = <<END

mon.domaine

END
resolve_value_ip_addresses = 0 net_snmp_perl_enable = 1

net_snmp_perl_best_guess = 0 translate_log_trap_oid = 0

translate_value_oids = 1

translate_enterprise_oid_format = 1 translate_trap_oid_format = 1 translate_varname_oid_format = 1 translate_integers = 1

wildca rd_expansion_separator = " " allow_unsafe_regex = 0

remove_backslash_from_quotes = 0 dynamic_nodes = 0

description_mode = 0

description_clean = 1

[Logging]

stdout_enable = 0

log_enable = 1

log_file = /var/log/snmptt.log

unknown_trap_log_enable = 1

unknown_trap_log_file = /var/log/snmpttunknown.log

statistics_interval = 0

syslog_enable = 1

syslog_facility = local0

syslog_level_debug = <<END

END

syslog_level_info = <<END

END

syslog_level_notice = <<END

END

syslog_level_warning = <<END

END

syslog_level_err = <<END

END

syslog_level_crit = <<END END

syslog_level_alert = <<END END

syslog_level = info

syslog_system_enable = 1 syslog_system_facility = local0 syslog_system_level = warning

[Exec]

exec_enable = 1

pre_exec_enable = 0 unknown_trap_exec =

[Debugging]

DEBUGGING = 0

DEBUGGING_FILE =

DEBUGGING_FILE_HANDLER =

[TrapFiles]

snmptt_conf_files = <<END /etc/snmp/snmptt.conf END

7.3.3 A noter :

Le nom de domaine à supprimer pour ne garder que le nom d'hôte, qui devra être adapté ã l'environnement on travaille, et le fait que le module Perl net-snmp est activé. Il permet l'interprétation étendue des OID.

7.3.4 Compilation des mibs

Il faut maintenant récupérer le ou les fichiers MIB des équipements à superviser, pour les convertir au format SNMPTT. Le but est d'extraire ce qui dans le fichier MIB est un commentaire, pour que SNMPTT le mette en correspondance avec l'OID qui sera reçu.

snmpttconvertmib --in=<fichier MIB> --out=/etc/snmp/snmptt.conf.<equipement> \ --

exec='/usr/local/nagios/libexec/eventhandlers/submit_check_result $r TRAP 1'

Dans le cas où on aurait trop de MIB, on peut exécuter le petit script suivant en tenant compte que toutes les mibs se trouvent dans /usr/share/snmp/mibs/ :

for i in /usr/share/snmp/mibs/ *.txt

> do

> /usr/sbin/snmpttconvertmib --in=$i --out=/etc/snmp/snmptt.conf \ --exec='/usr/lib/nagios/plugins/eventhandlers/submit_check_result $r TRAP 1

> done

Ce qui va donc permettre de prendre en compte toutes les mibs dans le répertoire précédemment cité et les ajouter dans le fichier snmptt.conf. On aura quelques lignes dans le genre :

EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal

FORMAT A coldStart trap signifies that the SNMP entity, $*

EXEC /usr/lib/nagios/plugins/eventhandlers/submit_check_result $r TRAP 1 "A coldStart trap signifies that the SNMP entity, $*"

SDESC

A coldStart trap signifies that the SNMP entity,

supporting a notification originator application, is

reinitializing itself and that its configuration may

have been altered.

Variables:

EDESC

7.3.5 Dans Nagios

Le principe est d'utiliser, pour recevoir les interruptions SNMP, des services passifs mais aussi volatiles, car si nous recevons une deuxième interruption pour le même hôte avant que la première ait été remise à OK, nous voulons être notifié à nouveau.

Pour cela, il faut (par exemple) définir un service générique pour les traps SNMP, dérivé de mon service générique général :

define service{

name snmptrap-service

use generic-service

register 0

service_description TRAP

is_volatile 1

check_command check-host-alive

max_check_attempts 1

normal_check_interval 1

retry_check_interval 1

passive_checks_enabled 1

check_period none

notification_interval 31536000

contact_groups admins
}

Et le dériver pour chaque machine supervisée, par exemple :

define service{

host _name Ubuntu

use snmptrap-service

contact_ groups admins

}

Tout d'abord, il y a la commande check-host-alive (un simple ping) qui permet de remettre à OK l'état du service en forçant un contrôle actif. D'autre part, l'intervalle de notification est artificiellement long : un an ici. Il permet d'éviter de recevoir régulièrement des notifications pour la même interruption (tant que le service n'est pas ramené à l'état OK), laissant penser qu'une nouvelle interruption, identique à la précédente, a été reçue. Le problème est qu'il faut redémarrer Nagios au moins une fois par an.

7.3.6Quelques Tests

Coté client (agent), il suffit de redémarrer simplement le daemon SNMPD pour qu'un évènement se produise dans les logs du serveur (manager) :

# tail -f /var/lo g/snmptt.log

Tue May 29 14:20:38 2007 .1.3.6.1.4.1.8072.4.0.2 Normal "Status Events" 192.1 68.88.1 28 - An indication that the agent is in the process of being shut down.

Tue May 29 14:20:40 2007 .1.3.6.1.6.3.1.1.5.1 Normal "Status Events" 192.1 68.88.128 - A coldStart trap signifies that the SNMP entity,

Chapitre 1. CONCEPTION DES BASES DE DONNEES

I.0.INTRODUCTION

Cette présentation n'est pas une partie complète sur la conception de Bases de données, mais une première approche destinée à préciser la démarche et les concepts nécessaires que nous allons utilisé pour construire une base de donnée cohérente dans notre projet.

Les démarches que nous allons présentés dans ces pages est un cas de Projet Limete Université Cardinal Malula et permettent de construire et d'utiliser des bases de données "réelles" à usage professionnel.

Aussi longtemps que nous venons de bâtir une bonne fondation dans la partie précédente laquelle, le travail était de mettre tous les mécanismes permettant d'administrer le Réseau de Projet Limete Université Cardinal Malula. Maintenant nous allons procédé à :

1. Utilisation pratique de la démarche de conception de bases de données

2. Conception et utilisation de bases de données relationnelles.

I.1. ETUDE CONCEPTIELLE

I.1.1. Définition

- L'étude conceptuelle nous permet d'établir un schéma conceptuel des données de traitement lesquelles, constituent une base de référence stable indépendante de tout matériel ou logiciel de base.

- L'étude conceptuelle est aussi un processus qui consiste à définir des principes de gestion, aboutissant à des modèles conceptuels de données et de traitements.

- L'étude conceptuelle se définit généralement comme une étude de premier niveau et d'évaluation préliminaire d'un projet. Le niveau de confiance dans les estimations est d'environ +/- 30%. Les études conceptuelles ne sont pas suffisamment précises pour permettre un engagement définitif sur la viabilité économique d'un projet. Après identification d'un projet potentiel, une étude conceptuelle peut être entreprise sur plusieurs variantes d'un projet pour identifier les scénarios potentiels et le temps requis pour entreprendre des études plus poussées3(*).

I.1.2. But

L'étude conceptuelle a pour but  de :

- développer les caractéristiques essentielles de la solution à émerger ;

- grossir la solution retenue lors de l'étude d'opportunité ;

- décrire les principes des solutions indépendamment de moyens utilisés.

2.0 GENERALITES

2.0.1 Notions de base de données

Une base de données est un ensemble structuré d'informations non redondantes dont l'organisation est régie par un modèle de données.

Les deux mots clefs qui nous interviennent dans la définition d'une base de données sont :

Structuration (à l'aide du modèle de données) et non répétition (non redondance ou redondance minimale) des données.
Construire une base de données consiste à regrouper les données en paquets "homogènes", les (entités, tables), chaque entité (table) étant composée d'un nombre fini de données élémentaires, les Attributs ou Champs, la répétition (redondance) des attributs devant être minimale. Le modèle de données que nous avons utilisée dans ce travail est le modèle "entités-associations".

2.0.2. Quelques définitions relatives aux bases de données

La base de données peut être definit de plusieurs façons, pour cette raison nous nous ciblons quelques définitions qui sont :

- Une base de données est une collection de données d'un domaine déterminé ;

- Une base de données est un ensemble d'informations bien ordonnées qui sont en relation les uns des autres ;

- Une base de données est un ensemble d'informations exhaustives et non redondants nécessaires à une série d'application automatisée et qui en assure la gestion ;

- Une base de données est un ensemble d'informations normalisées en liaison logique les unes des autres qui après avoir été saisies une seule fois permet de fournir aux différents échelons de la hiérarchie les informations actualisées pour agir à temps réel.

2.0.3. Caractéristiques d'une base de données

- Elle n'accepte pas la redondance, c'est-à-dire aucune donnée ne sera répétée dans la base de données ;

- Elle n'accepte pas l'incohérence des données ;

- Les données doivent être structurées dans la base de données ;

- Elle assure la sécurité des informations ;

- Elle doit être indépendante des programmes et des données, elle doit permettre la prise en compte facile de nouvelles applications.

2.0.4. Objectifs d'une base de données

La base de donnée a beaucoup d'abjectifs parmi lesquels nous pouvons citer :

- Eviter les redondances et les incohérences des données qui entraînaient fatalement une approche où les données seraient reparties dans des différents fichiers sans connexion entre eux.

- Offrir un langage de haut niveau pour la définition et la manipulation des données ;

- Contrôler l'intégrité entre plusieurs utilisateurs et la confidentialité des données ;

- Assurer l'indépendance entre les données et les traitements.

2.0.5. Quelques définitions de concepts

- Une classe d'entité ou d'objet est un ensemble composé d'entités ou objets de même type, c'est-à-dire dont la définition est la même ;

- Une propriété peut être définie comme étant une information élémentaire permettant l'identification d'un objet ou d'une entité5(*) ;

- Un identifiant ou une propriété clé est une propriété particulière permettant de caractériser de façon univoque une entité ou un objet6(*). Une propriété clé ou identifiant peut être primaire ou secondaire (étrangère) ;

· Elle est primaire lorsqu'elle répond aux critères d'univocité et de non nullité.

· Elle est secondaire lorsqu'elle est utilisée dans une autre entité pour référence à une entité où elle est définie comme clé primaire.

- Une Propriété signalétique est la propriété faisant référence aux autres propriétés de la classe d'entités ;

- Une propriété de situation est la propriété définissant une situation ou un événement dans un objet ou une entité ;

- Une association est un lien sémantique qui peut exister entre deux entités c'est-à-dire c'est le lien qui permet de mettre en relation deux entités en donnant l'ensemble de caractéristique du système7(*).

- Une cardinalité est une modélisation des participations minimum et maximum d'une entité ou d'un objet8(*). Une cardinalité permet de caractériser le lien qui existe entre une entité et l'association à laquelle elle est située.

La cardinalité nous permet de caractériser le lien qui existe entre une entité et la relation à laquelle elle est reliée.

La cardinalité d'une relation est composée d'un couple comportant une borne maximale (1 ou n : décrit le nombre maximum de fois qu'une quantité peut participer à une relation) et une borne minimale (0 ou 1 : décrit le nombre minimum de fois qu'une entité peut participer à une relation).

- Le Formalisme reconnu par MERISE exige que :

· L'objet soit représenté par un rectangle dans lequel on indique le nom de l'entité ainsi que ses propriétés ;

· La relation soit représentée par une ellipse ou hexagone dans laquelle on indique son nom ainsi que ses propriétés.

3.0 CONCEPTION DE BASE DE DONNEES DANS NOTRE CAS

Pour la conception de notre Base de données, nous avons impliqué 3 étapes fondamentales :

1. Analyse des documents : construction du dictionnaire des données.

2. Structuration du dictionnaire des données : détermination des entités et associations.

3. Mise en relation des entités : Schéma des données.

A 1.Analyse des documents

La première étape, dans la construction d'une base de données, consiste à réunir tous les documents représentatifs des données que l'on souhaite modéliser.

Le terme "documents" doit être ici pris dans un sens large. Il peut s'agir en effet soit de documents papier, soit de documents magnétiques (enregistrement d'entretiens, disque ou disquette informatique)... soit de tout autre support utilisable pour conserver des informations.

A.2. Documents de travail

Pour notre cas, nous allons illustré les différentes étapes de conception d'une base de données en utilisant, la gestion tout entière de Projet Limete Université Cardinal suivent les différents domaines du travail notamment, la formation des élèves, étudiants, professeur de l'Université Cardinal Malula, les Recette de Cybercafé, la Gestion de la Bibliothèque...

A savoir que nous avons déjà énuméré une bonne partie de ces documents dans notre première partie du travail.

Nous pouvons aussi ajouter les documents suivants :

LISTE DES APPRENANTS DU PLCUM

N° apprenant

Nom Apprenant

Post Nom Apprenant

Prénom Apprenant

Titre Apprenant

Catégorie Apprenant

1

Balegnela

Ntosule

Nancy

Mademoiselle

élève

2

Mulumba

Katoto

Fiston

Monsieur

Etudant

3

Mwamba

Tumba

Fifi

Madame

Apprenante

4

Likofo

kazadi

Tresseur

Monsieur

Professeur UCM

5

Lilomba

Mukuma

Franc

Monsieur

Professeur UCM

6

lokombo

talaka

Bijoux

Mademoiselle

élève

FICHE DE PAYE PAR APPRENANT

N° APPRENANT : 1 BALENGELA NTOSULE

N°MODULE

LIBELLE MODULE

MONTANT PAYE

 MONNAIE

1

INITIATION

10

DOLLARS

2

WORD

10

DOLLARS

TOTAL PAYE

20

DOLLARS

FICHE DE PAYE PAR APPRENANT

N° APPRENANT : 1 BALENGELA NTOSULE

N°MODULE

LIBELLE MODULE

MONTANT PAYE

 MONNAIE

1

INITIATION

5500

Franc

2

WORD

5500

Franc

TOTAL PAYE

11.000

Franc

FICHE DES AGENTS

N° personnel

Nom

Post Nom

Prénom

Catégorie

TITRE

1

Lusikila

Luambasu

BLAISE

administrateur

Monsieur

2

Batanaswe

 

Médard

utilisateur

Monsieur

...

...

 

...

...

...

15

Tinda

 

Laurant

utilisateur

Monsieur

FICHE DES APPRENANTS

N° Apprenant

Nom

Post Nom

Prénom

Catégorie

TITRE

1

Luaka

Lubuma

Joel

élève

Monsieur

2

Gumbo

Sitina

Fiston

Apprenant

Monsieur

...

...

 

...

...

...

14

Lomami

Titumba

Titina

Prof.ucm

Madame

15

Longo

Matina

trésor

Etudiant

Monsieur

A.3. Règles de gestion :

o Un livre concerne un et un seul emprunt historique.

o Un emprunt historique peut concerner zéro ou plusieurs livres.

o Un apprenant peut avoir effectuer Zéro ou plusieurs emprunt historiques.

o Un emprunt historique est effectué par un et un seul apprenant.

A.4. Dictionnaire des données

Partant des documents, la phase d'analyse consiste à en extraire les informations élémentaires (non décomposables) qui vont constituer la future base de données.

La réunion de l'ensemble des données élémentaires, que l'on appelle des attributs ou des champs, constitue le dictionnaire des données. Chaque attribut (champ) du dictionnaire de données peut être caractérisé par les propriétés suivantes :

Propriété

Signification

Mnémonique

Abréviation du nom de l'attribut.

Libellé

Libellé contenant la signification précise et le rôle de l'attribut.

Type de donnée

Type de l'attribut : entier, réel, chaîne de caractères, date...

Contraintes d'intégrité

Liste des contraintes sur les valeurs possibles de l'attribut

Règle de calcul

Règle de calcul (d'obtention) de l'attribut correspondant.

Le dictionnaire des données relatives aux documents que le Projet Limete Université Cardinal Malula nous a présenté est le suivant :

DICTIONNAIRE DE DONNEES PL/UCM

agent

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

idagent 

Identification de l'agent

int(11)

Non 

 

prenom 

prenom 

varchar(20)

Non 

 

nom_agent 

nom_agent 

varchar(20)

Non 

 

postnom 

postnom 

varchar(20)

Non 

 

telephone 

telephone 

varchar(20)

Non 

 

email 

email 

varchar(20)

Non 

 

login 

login 

varchar(20)

Non 

 

mot_de_passe 

Mot de passe de l'agent

varchar(20)

Non 

 

site 

site 

varchar(20)

Oui 

NULL 

adresse 

adresse 

varchar(30)

Non 

 

idsexe 

Identification de sexe

int(11)

Non 

idcategorie 

Identification de catégories

int(11)

Non 

date_engag 

date d'engagement de l'agent

varchar(30)

Non 

 

 

 

 

 

 

apprenants

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

idapprenant 

identification de l'apprenant

int(11)

Non 

 

prenom 

prenom 

varchar(20)

Non 

 

nom 

nom 

varchar(20)

Non 

 

postnom 

postnom 

varchar(20)

Non 

 

telephone 

telephone 

varchar(30)

Non 

 

email 

email 

varchar(20)

Non 

 

login 

login 

varchar(30)

Non 

 

mot_de_passe 

mot_de_passe 

varchar(20)

Non 

 

site 

site 

varchar(20)

Non 

 

adresse 

adresse 

varchar(20)

Non 

0000-00-00 

idsexe 

identification de sexe

int(11)

Non 

idcategorie_ap 

identification de catégories apprenants

int(11)

Non 

date_inscription 

date d'inscription de l'apprenant

varchar(20)

Non 

 

idformation 

identification de formation

int(11)

Non 

idecole 

identification de l'école

int(11)

Non 

id_etatcivil 

identification de l'état civil

int(11)

Non 

profession 

profession 

varchar(50)

Non 

 

organisme 

organisme 

varchar(50)

Non 

 

employeur 

employeur 

varchar(20)

Non 

 

activite 

activite 

varchar(50)

Non 

 

occupation 

occupation 

varchar(50)

Non 

 

choisirplucm 

la raison qui a pousé à choisir plucm

varchar(50)

Non 

 

 

 

 

 

 

auteur

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

idauteur 

identification d'auteur

int(11)

Non 

 

nom 

nom 

varchar(30)

Non 

 

nationalite 

nationalite 

varchar(30)

Non 

 

 

 

 

 

 

categories

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

idcategorie 

identification de catégories dans la table catégories

int(11)

Non 

 

categorie 

catégories d'agent

varchar(20)

Non 

 

 

 

 

 

 

categoriesap

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

idcategorie_ap 

identification de catégories dans la table catégories ap

int(11)

Non 

 

categorie_ap 

catégories de l'apprenant

varchar(20)

Non 

 

 

 

 

 

 

charges

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

idcharge 

identification de charge

int(11)

Non 

 

datedepense 

date de dépense

varchar(20)

Non 

 

libdepense 

libellé de dépense

varchar(20)

Non 

 

montantcha 

montant de la charge

float

Non 

idmonnaie 

identification de la monnaie

int(11)

Non 

idagent 

identification de l'agent

int(11)

Non 

idmoment 

identification de moment de la dépense

int(11)

Non 

 

 

 

 

 

chat

 

 

 

 

 

 

 

 

 

Champ

Signification

Type

Null

Défaut

id 

identification

int(11)

Non 

 

pseudo 

pseudo de l'utilisateur

varchar(20)

Non 

 

message 

message qu'il envoie

varchar(200)

Non 

 

 

 

 

 

 

 

 

 

 

 

B.1.Structuration des données

Les informations contenues dans le dictionnaire de données doivent être étudié avec soin en fin qu'elles soient très bien structurées en "paquets" homogènes (entités, tables) dans lesquels la répétition (redondance) d'informations doit être minimale.

Les attributs qui sont calculés (qui ont une règle de calcul) ne doivent pas être pris en compte dans la phase de structuration des données. Ils sont en effet obtenus à partir d'autres attributs, et les inclure dans la phase de structuration introduirait une forme de redondance et donc des possibilités d'incohérence. Dans notre exemple, l'attribut "Moyenne" appartient à cette catégorie.

On dira qu'un ensemble d'attributs est homogène si tous les attributs qui le composent ont un lien "direct".

La redondance à l'intérieur d'un ensemble doit être minimale car la redondance est source d'incohérence. En effet, si la même information est répétée plusieurs fois, cela signifie :

· Qu'elle devra être saisie plusieurs fois, ce qui multiplie les risques d'erreurs de frappe.

· Que lorsqu'elle devra être mise à jour, les modifications devront intervenir à plusieurs endroits d'où des risques de mise à jour partielle.

Pour regrouper les attributs du dictionnaire de données on utilise un élément structurant qui s'appelle la dépendance fonctionnelle (DF).

B.2 Notion de dépendance fonctionnelle (DF)

Pour établir efficacement un modèle entités- associations bien normalisé, on peut étudier au préalable les dépendances fonctionnelles entre les attribues puis, les organiser en graphe de couverture minimale. Cette technique est traditionnellement employée pour normaliser les schémas relationnels, mais elle s'applique très en amont, au niveau des modèles conceptuels.

B.2.1 Dépendance Fonctionnelle dans notre cas

Dans notre base de données plucm, connaissant un numéro d'apprenant, on connaît de manière unique le nom de cet apprenant et, entre autres, sa catégorie.

B.2.2 Définition et Propriétés

Un attribut Y dépend fonctionnellement d'un attribut X si et seulement si une valeur de X induit une unique valeur de Y on note une dépendance fonctionnelle par une flèche simple : XY.

Pour notre cas : si X est le Id_donateur et Y le nom de donateur, alors on a bien XY par contre on pas YX, car plusieurs donateurs de id_donatuer différents peuvent porter le même nom.

B.2.3. Transitivité

Si X Y et Y Z alors X Z

Pour notre cas, on as id_recu id_apprenant nom_apprenant, donc on a aussi id_recu nom_apprenant. Mais la dépendance fonctionnelle id_recu nom_apprenant est dite transitive, car il faut passer par le id_apprenant pour l'obtenir.

Au contraire, la dépendance fonctionnelle id_apprenant nom_apprenant est directe, seules les dépendances fonctionnelle directes nous intéressent, d'autres exemples sont données dans le tableau suivant :

DEPENDANCES FONCTIONNELLES

DIRECTE ?

id_auteur nom_auteur

id_livre titre livre

id_agent nom_agent

id_charge moment

id_moment moment

id_emprunt titre_livre

id_emprunt date_emprunt

id_recu date_paye

id_recu titre_formation

id_formation lib_formation

Oui

Oui

Oui

Non

Oui

Nom

Oui

Oui

Non

oui

Un attribut Y peut avoir une dépendance fonctionnelle qui repose sur la conjonction de plusieurs attributs auquel cas la dépendance fonctionnelle est dite non élémentaire1(*).les dépendances fonctionnelles non élémentaires sont notées par une flèche unique mais comportant plusieurs points d'entrée ( regroupés autour d'un cercle).

Pour notre cas, la quantité de livre donné par un donateur dans la bibliothèque. Dépend de deux attributs : id_livre et id_donateur. Notons que cett'e dépendance fonctionnelle Id_livre + id_donateur quantité donnée est à la fois nom élémentaire et directe.

Id_livre

Quantité donnée

Id_donateur

Nous avons dans notre le cas une dépendance fonctionnelle non élémentaire, mais directe.

B.3. Graphe de Couverture Minimale

En présentant tous les attributs et toutes les dépendances fonctionnelles directes entre eux, nous obtenons un réseau appelé graphe de couverture minimale de la manière suivante :

Id_livre id_donateur

Titre_livre nom_don

Quantite_donne adresse

Nb_paeges Téléphone

La technique de traduction en un schéma entités associations qui sont, supposé qu'aucun attribut n'a été oublié sur le graphe de couverture minimale et notamment, aucun identifiant. Si ce n'est pas le cas, c'est qu'un identifiant a été omis.

B.3.1 Association sans atributs

La lacune majeure de cette méthode reste tant de même le fait que les associations dont toutes les cardinalités maximales sont n mais qui sont sans attributs ne figurent pas sur le graphe de couverture minimale.

Il faut alors, sont leur inventer temporairement un attribut (comme pour la normalisation des attributs des associations), soit introduire une notation spéciale (par exemple, une dépendance no élémentaire qui ne débouche sur aucun attribut).

Pour rappeler ce cas, nous revenons sur la relation du livres et auteurs il y a pas d'attributs qui dépende à la fois du id_livre et id_auteur (à moins d'imaginer le temps d'apparition à l'écran) et pourtant, les deux non élémentaire et sans enfant, on peut rendre compte de cette situation sur le graphe de couverture minimale et faire ainsi apparaître l'association sur le schéma entités - associations.

Id_auteur id_livre nationalite nb_pages titre_livre

Nom_auteur

B.3.3 Traduction

Id_auteur

Nom

nationalité

Auteur

ecrire

Id_livre

Titre

nb_pages

livre

1, n 1, n

B.3.4. Union de deux Graphes

Nous pouvons unir ces deux graphes pour faire sortir une seule traduction en entités - Associations.

Id_auteur id_livre id_donateur

Nationalité nb_pages nom_don téléphone

nom_auteur titre_livre adresse quantité

B.3.5 Traduction vers un schéma entités - associations

A partir du graphe de couverture minimale, le schéma, le schéma entités - associations normalisé correspondant apparaît naturellement en suivant quelques étapes très simples.

Id_livre

Titre_livre

Nb_pages

Id_donateur

Adresse

Nom

Quantité

Id_auteur

Nom_aut

Nationalité

Nous avons essayé d'identifier les entités et les associations sur le graphe de couverture minimale ainsi, nous avions eu quelques étapes à suivre de près telles que :

1. Repérer et souligner les identifiants.

2. Puis tous les attributs non identifiant qui dépendent directement d'un identifiant et d'un seul, forment une entité (avec l'identifiant bien sur).

3. Ensuite, les dépendece élémentaires entre les identifiants forment les associations binaires dont les cardinalité maximales sont 1 au départ de la dépendance fonctionnelle et n à l'arrivée.

4. Sauf si entre deux identifiants se trouvent deux dépendances fonctionnelles élémentaires réflexives, auquel cas l'association binaire à deux cardinalités maximales valant 1.

Il faut noter qu'à cause de cette point 4 qu'il est préférable de ne pas traduire directement le graphe de couverture minimale en un schéma relationnel.

5. Enfin, les attributs (non identifiants) qui dépendent de plusieurs identifiant sont les attributs d'une association supplémentaire dont les cardinalités sont toutes n.

La traduction du graphe du couverture minimale en un schéma entités - associations normalisé est donné comme suit:

livres

donateur

Id_livre

Tire_livre

Id_donateur

Nom_donateur

Adresse...

1, n

Écrire

Donner

Quantité

auteur

Id_auteur

Nom_auteur

Nationalité

1, n 0, n 1, n

Nous avons trouvé le schéma entités - associations normalisé obtenu à partir du graphe de couverture minimale.

Dans ce genre de traductions, il faut donner un nom aux entités et aux associations, car ce n'est pas le cas pour le graphe de couverture minimale et il reste les cardinalités minimales à établir.

Remarquons également qu'en réalité il faut déjà connaître les entités en présence pour établir correctement, cette technique n'est une aide pour établir les associations entre les entités et pour normaliser les entités et leurs associations jusqu'en troisième forme normale de Boyce-codd).

B.3.6 Gestion des dates et du Caractère historique

Dans la bibliothèque du Projet Limete Cardinal Malula, on peut vouloir stocker les emprunts en cours et / ou les emprunts historiques. Pour les emprunts en cours, la date de retour prévu est un attribut de l'entité livre, car un livre ne peut faire l'objet que d'un seul emprunt en cours, dans ce cas, l'établissement du graphe de couverture minimale ne pose aucun problème.

Par là, nous avons un sérieux problème, car un livre peut faire l'objet de plusieurs emprunts historiques et dans ces conditions, la date d'emprunt est déterminante pour une dépendance fonctionnelle ne peut partir que d'un ou plusieurs identifiants. Ces le signe qu'il manque un identifiants :

Le numéro d'emprunt

Id_livre date_emprunt

Titre_livre

date date

retour retour

Prévu effectif id_apprenant

Nom_appre adresse

Nous devons corrigé ce graphe car une date n'est pas être un identifiant.

Id_livre date_d'emprunt

Tire_livre numéro d'emprunt

Date date id_apprenant

retour retour

prévu effectif

nom_appre adresse

À présent nous avons la facilité de le traduire en un modèle entités- associations.

Id_livre

Tire_livre

livres

Numéro_emprunt

date_emprunt

date_retour_prevu

date_retour_effectif

Emprunt historique

Id_appre

Nom_appre

Postnom_appre

Prenom_appre

Téléphone

E-mail

Login

Password

...

Apprenant

Concerner

Avoir effectué

0, n 1,1

1,1 0,n

Nous avons évité même pour une entité historique, il vaut mieux éviter que la date n'entre dans l'identifiant. Notons que l'entité emprunts historiques supplémentaires qui apparaît après tradition ne peut pas être transformé en une association comme on pourrait le croire au simple examen des cardinalités qui l'entourent, en effet, les attributs de l'association qui en resulterait ne verififieraient pas la normalisation des attributs des associations. Notamment, la date de retour effectif ne dépend pas du numéro de livre et du id_apprenant, mais du id_livre et la date d'emprunt.

La normalisation des entités ne s'applique donc pas aux entités qui ont un caractère historique2(*) . à moins que les dates ne soient regroupées dans une entité séparée, ce qui n'est pas conseillé tant qu'aucune information liée aux dates telles que : caractère férié, par exemple n'est nécessaire.

B.3.7 Méthodologie de base utilisé

Face à notre situation bien définie, nous n'avons pas présenté l'ensemble de démarche pour tous entités ou associations, puis que nous puissions aussi procéder sans établir le graphe de couverture minimale, en procédant par les méthodologies de base qui sont :

1. Identifier les entités en présence ;

2. Lister leurs attributs ;

3. Ajouter les identifiants (nous avons beaucoup plus utiliser les auto incrémentes).

4. Lister leurs attributs ;

5. Calculer les cardinalités ;

6. Vérifier les règles de normalisation et en particulier, la normalisation des entités (c'est à ce stade qu'apparaissent les association non binaires), des associations et leurs attributs ainsi que la troisième forme normale de Boyece-codd ;

7. Effectuer les corrections nécessaires ;

Mais il est parfois plus intuitif d'en passer par l'étude de la dépendance fonctionnelle directe ;

8. Identifier les entités en présence et leurs donner un identifiant (numéro arbitraire ou auto incrémente) ;

9. Ajouter l'ensemble des attributs et leurs dépendances fonctionnelles directes avec les identifiant (en commençant par les dépendances élémentaires) ;

10. Traduire le graphe de couverture minimale obtenu en un schéma entités - associations ;

11. Ajouter les cardinalités minimales et ;

12. A ce stade, la majorité des règles de normalisations devraient être vérifiées, il reste tout de même la normalisation de noms, la présence d'attributs en plusieurs exemplaires et d'associations redondantes ou en plusieurs exemplaires à corriger.

Nous avons gardé également en l'esprit que le modèle doit être exhaustif ( c'est -à - dire contenir toutes les informations nécessaires) et éviter toute redondance que nous ne dirions pas assez, constitué une perte d'espace3(*),une démultiplication du travail de maintenance et un risque d'incohérence.

Il va de soi que cette méthodologie ne doit pas être suivie pas à pas une bonne fois pour toute. Au contraire, il faut itérer plusieurs fois les étapes successives, pour espérer converger vers une modélisation pertinente de la situation de notre travail.

C.1. Construction du schéma des données

La dernière étape consiste à mettre en relation les entités et associations trouvées dans l'étape précédente afin de construire la structure générale des données : le schéma des données.

C.2. Mise en relation des entités

Les entités sont mises en relation par l'intermédiaire des attributs qu'elles possèdent en commun. Les types de relations autorisées pour relier deux entités (associations) appartiennent aux deux catégories suivantes :

· Relation de type 1-1 : à un élément de l'ensemble départ on ne peut faire correspondre qu'un seul élément de l'ensemble d'arrivée et réciproquement.

· Relation de type 1-n : à un élément de l'ensemble de départ on peut faire correspondre plusieurs éléments de l'ensemble d'arrivée. Par application de la méthode, les seules relations possibles entres entités et associations sont des relations de type n-1, soient des dépendances fonctionnelles. Cette étape vise donc à déterminer les dépendances fonctionnelles entre entités et associations : construction du graphe des index.
Pour déterminer les relations entre entités (associations), il faut donc examiner le cardinal de chacune des entités qui interviennent dans la relation.

Dans notre cas, nous avons des relations suivantes :

Entité source

Entité but

Relation sur l'attribut

Type de relation

SEXE

APPRENANT

Id_sexe

1-n

MONNAIES

FORMATION

Id_monnaie

1-n

SEXE

AGENT

idsexe

1-n

LIVRE

DONNER

Id_livre

1-n

DONATEUR

DONNER

Id_donateur

1-n

Si l'on examine la première ligne du tableau, nous avons précisé que la relation entre SEXE et APPRENANT était de type 1-n.
En effet, dans l'entité SEXE, une valeur particulière de l'attribut Idsexe (H ou F) ne sera présente qu'une seule fois (1). En revanche, dans l'entité APPRENANT, la même valeur de l'attribut Idsexe pourra être présente plusieurs fois (n), autant de fois qu'il y a d'apprenants de ce sexe.

C.3. Représentation graphique du schéma des données

Pour avoir une vision synthétique de la structure de la base de données (le schéma des données) on utilise une représentation graphique du type suivant laquelle va prendre toutes les tables qu'on a montrées et celles qu'on n'a pas montrées:

C.3.1.base de donnees pour la gestion de projet limete universite cadinal malula

PAIES

id_paye

# id_agent

Prime

dettes

salbase

saltot

datepaye

RECUS

id_recu

# id_agent

# id_monnaie

# id_apprenant

# id_formation

# id_categorie_ap

datepaye

montantpaye

DONNER

#id_livre

#id_donnateur

quantité

DONATEURS

id_donateur

nom

adresse

AGENTS

id_agent

# id_categorie

# id_sexe

#idetat

nomagent

postnomagent

APPRENANTS

id_apprenant

#id_categorie ap

# id_ sexe

#id_formation

#id_ecole

#idetat

nomappre

postnomappre

CATEGORIESAP

id_categorie ap

categorie ap.

CATEGORIES

id_categorie

categorie

id_categorie

categorie

SEXES

id_sexe

sexe

FORMATIONS

id_formation

lib_formation

prix

# id_monnais

CHARGES

id_charge

date depense

id_agent

#id_moment

#id_monnais

MONNAIS

id_monnais

monnais

MOMENTS

id_moments

id_moments

LIVRES

id_livre

-titre

-editeur

-prix

#id_monnais

PRODUITS

id_produits

datepro

montant pro

#id_agent

id_monnais

#id_source

#id_moment

ECRIRES

#id_livre

#id_auteur

SOURCES

id_source

lib_source

AUTEURS

id_auteur

Nom

EMPRUNT HISTORI

idemprunt

#idlivre

#idaprenant

Dateemprunt

Dateretourpreuvu

dateretoureffective

ECOLE

id_ecole

NomEcole

Adresse...

Etat Civil

idetat

libetat

4.0. QUELQUES ETATS EN SORTIES

A partir de ce Modèle Organisationnel de Données, on peut alors établir la conception de quelques états qui seront établis lors de l'étude opérationnelle ou de l'exploitation.

Lors de la conception des états de sorties, il faut étudier successivement les parties ci-dessous :

- L'entête : rubrique qui ne se répète pas ;

- Le corps ou le détail : rubrique pouvant se répéter ;

- Le pied : rubrique de totalisation.

Pour faciliter ce travail de la conception de quelques états, tous les états de sortie doivent être répertoriés dans une fiche descriptive des sorties.

4.0.1. Fiche Descriptive des sorties

Caractéristiques

1. Mode de sortie

- papier

- écran

2. Volume

- nombre de page : 1 ou n

- nombre de ligne par page : n

- nombre d'exemplaire : 1 ou n

3. Périodicité

Contenus : rubriques

Nombre de rubrique

Nature de rubriques

Liste des états en sortie

Longueur de rubriques

Plusieurs

Etats de sortie

Liste01

Liste02

Liste03

Liste04

Liste05

...

A déterminer

4.0.1.1. Liste de apprenants (liste01)

1. But : permet d'établir la liste de tous les apprenants

2. Source  : Adminstration

3. Modèle

Page Kinshasa, le xx/xx/xxxx

PROJET LIMETE UNIVERSITE CARDINAL MALULA

PL/UCM

Liste de tous les apprenants

Numéro fiche Nom & Post-Nom sexe Profession Adresse Module

xx xxxxxxxxxxx xxxxx xxxxxxxx xxx xxxxxxxxx xxxxxxx xxxxxx

4.0.1.2. Liste de apprenants de sexe masculin (liste02)

But : permet d'établir la liste de tous les apprenants de sexe masculin

Source  : Administration

Modèle

Page Kinshasa, le xx/xx/xxxx

PROJET LIMETE UNIVERSITE CARDINAL MALULA

PL/UCM

Liste de tous les patients de sexe masculin

Numéro fiche Nom & Post-Nom Profession Adresse Module

xx xxxxxxxxxxx xxxxx xxxxxxxx xxxxxxxxx xxxxxxx xxxxxxx

4.0.1.3. Liste de apprenants de sexe féminin (liste03)

1. But : permet d'établir la liste de tous les patients de sexe féminin

2. Source  : Administration

3. Modèle

Page Kinshasa, le xx/xx/xxxx

PROJET LIMETE UNIVERSITE CARDINAL MALULA

PL/UCM

Liste de tous les patients de sexe féminin

Numéro fiche Nom & Post-Nom Profession Adresse Module

xx xxxxxxxxxxx xxxxx xxxxxxxx xxxxxxxxx xxxxxxx xxxxxxx

4.0.1.4. Liste de Reçu (liste04)

1. But : permet d'établir la liste de tous les Reçus

2. Source  : Admininstration

3. Modèle

Page Kinshasa, le xx/xx/xxxx

PROJET LIMETE UNIVERSITE CARDINAL MALULA

PL/UCM

Liste de tous les patients de sexe masculin

Numéro fiche Numéro reçu Montant à payer Montant payé

xx xxxxxxxxxxx xxxxx xxxxxxxx xxxxxxxxx xxxxxxx

4.0.1.5. Reçu (liste05)

1. But : permet d'établir le reçu des apprenants après paiement

2. Source  : Administration

3. Modèle

Page Kinshasa, le xx/xx/xxxx

PROJET LIMETE UNIVERSITE CARDINAL MALULA

PL/UCM

reçu de l'apprenant

Numéro fiche Nom de module Date formation Montant payé

xx xxxxxxxxxxx xxxxx xxxxxxxx xxxxxxxxx xxxxxxxxxx

Chapitre 2. ETUDE OPERATIONNELLE

2.1. GENERALITES

C'est au cours de cette partie, appelée aussi réalisation, dont il sera question de détailler suffisamment la solution qui sera retenue pour l'étape de la programmation.

C'est une analyse détaillée de grand module de traitement conçut lors de l'étude conceptuelle en vue de donner une ouverture aux travaux de la programmation afin de pouvoir rendre l'exploitation possible et aisée pour que la programmation soit aussi possible.

2.2. DESCRIPTION DE MATERIELS

Cette étape nous aide à faire le choix technique c'est-à-dire de présenter les contraintes matérielles (hardware) et du logiciel (software) à utiliser. Afin de permettre l'implémentation de la base de données, nous décrirons deux aspects matériels qui permettront l'évolution synthétique de l'étude opérationnelle.

Ces deux aspects peuvent être soit hardware ou software.

2.2.1. Aspect Hardware

L'hardware est l'ensemble des ressources visibles qui constituent l'architecture palpable de l'ordinateur.

Notre option est fait sur des ordinateurs qui seront utilisés soit comme serveur ou soit comme clients. En ce qui concerne le serveur, notre choix est porté sur l'ordinateur de marque Compaq ProLiant ML310 - P4 2 GHz, par ailleurs, pour les machines clients, nous avons préféré utiliser les matériels de marque Compaq DeskPro EN.

2.2.1.1. Caractéristiques de Compaq ProLiant ML310 - P4 2 GHz

Il comprend la prise en charge de la technologie RAID en option.

- Processeur : INTEL® PENTIUM® 4, 2 GHz

- Mémoire cache : L2 Cache - Advanced Transfer Cache

Installed Size: 512 KB

- RAM : 512 MB / 4 GB (max)

- Carte graphique : 5 au total (2 PCI Express - 3 PCI)

- Disque dur : 180 GB x 6 SATA avec contrôleur RAID

- RAID Level: RAID 0, RAID 1, RAID 10

- Port USB : USB 2.0 (8 ports - 3 avant et 5 arrières)

- Lecteur CD : CD - RW/DVD

CD - R/DVD

- Lecteur disquette : 3.5 pouces de 1.44 MB

2.2.1.2 Caractéristique de Compaq DeskPro EN

- Processeur : INTEL® PENTIUM® III 647 647MHz

- Mémoire cache : L2 - Pipeline Burst, 128 Ko (installé) / 128 Ko (maximum)

- RAM : 64 Mo / 512 Mo (maximum) , DIMM 168 broches

- Carte graphique : AGP 2x - intégré,

- Résolution maxi (externe) : 1280 x 1024 / 24 bits (16,7 millions de couleurs)

- Affichages graphiques pris en charge : VGA (640x480), XGA (1024x768), SVGA (800x600), SXGA (1280x1024)

- Sortie vidéo prise en charge : RGB

- Reseaux :Adaptateur réseau - PCI - intégré

- Protocole de liaison de données : Ethernet, Fast Ethernet

- Protocole réseau / transport : TCP/IP, IPX/SPX, NetBEUI/NetBIOS

- Normes : IEEE 802.3, IEEE 802.3U

- Disque dur : 20 GB

- Port USB : USB 2.0 2ports

- Lecteur CD : CD - RW/DVD

CD - R/DVD

- Lecteur disquette : 3.5 pouces de 1.44 MB

- Ecran : TFT MONITOR 17 pouces

- Souris : PS2 Standard

- Imprimantes : Laser : HP Laser Jet 1010 séries

2.2.3. Aspect Software

Pour définir le software, plusieurs définitions peuvent être utilisées :

Le Software Par opposition à hardware, matériel, un software est un logiciel1(*)1.

Le software peut être considéré comme l'ensemble de programmes, procédés, règles et éventuellement la documentation en relation ou fonctionnement d'un ensemble de données.

Le software est l'ensemble des programmes écrit ou non par les constructeurs d'ordinateurs en vue de permettre un bon fonctionnement aisé.

C'est la partie qui touche l'intelligence artificielle de l'ordinateur, c'est que l'on appelle en français Logiciel.

Pour ce faire, nous utiliserons les logiciels de base et d'applications ci-dessous :

- Pour le serveur : Compaq ProLiant ML310 - P4 2 GHz

· Système d'exploitation  : LUNIX DISTRIBUTION RED HAT

· Système de gestion de base données  : MYSQL

· Langage de programmation : PHP

· Antivirus : NORTON 2007 ANTIVIRUS

· Logiciel d'archivage : WINZIP 9

- Pour les clients : Compaq Despro EN

· Système d'exploitation  : Windows XP ou Linix

· Antivirus : NORTON 2007 ANTIVIRUS

· Logiciel d'archivage : WINZIP 9

· Navigateur  : Internet Explorer, ou autres

Chapitre 3. SYSTEME DE GESTION DE BASE DE DONNEES (SGBD) UTILISE.

3.1. INTRODUCTION

Un SGBD est un logiciel qui joue le rôle d'interface entre les utilisateurs et la Base de Données.

Un SGBD permet de décrire, manipuler et interroger les données d'une Base de Données. Il est chargé de tous les problèmes liés aux accès concurrents, à la sauvegarde et la restauration des données. Il doit de plus veiller au contrôle, à l'intégrité et la sécurité des données.

Nous avons porté notre choix sur MySQL. Car,MySQL est un système de gestion de base de données (SGDB). Selon le type d'application, sa licence est libre ou propriétaire. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels, au même titre que Oracle ou Microsoft SQL Server.MySQL AB a été acheté le 16  janvier  2008 par Sun Microsystems pour un milliard de dollars US1(*).

3.2. CARACTERISTIQUES

MySQL est un serveur de bases de données relationnelles SQL développé dans un souci de performances élevées en lecture, ce qui signifie qu'il est davantage orienté vers le service de données déjà en place que vers celui de mises à jour fréquentes et fortement sécurisées. Il est multi-thread et multi-utilisateurs.

C'est un logiciel libre développé sous double licence en fonction de l'utilisation qui en est faite : dans un produit libre ou dans un produit propriétaire. Dans ce dernier cas, la licence est payante, sinon c'est LGPL qui s'applique. Ce type de licence double est utilisé par d'autres produits.

3.3. SYSTEMES D'EXPLOITATION SUPPORTES

MySQL fonctionne sur de nombreux systèmes d'exploitation différents, incluant AIX, BSDi, FreeBSD, HP-UX, Linux, Mac OS X, NetWare, NetBSD, OpenBSD, OS/2 Warp, SGI Irix, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64 Unix, Windows 95, 98, NT, 2000, XP et Vista.

Les bases de données sont accessibles en utilisant les langages de programmation C, C++, C#, Delphi / Kylix, Eiffel, Java, Perl, PHP, Python, Ruby et Tcl ; une API spécifique est disponible pour chacun d'entre eux. Une interface ODBC appelée MyODBC est aussi disponible. En Java, MySQL peut être utilisé de façon transparente avec le standard JDO.

Depuis le rachat de MySQL AB par Sun, MySQL est devenu officieusement la base de données à utiliser conjointement avec le language de programmation Java, ce qui donne une notoriété supplémentaire au SGDB auprès des entreprises utilisant Java.

3.4. UTILISATION

MySQL fait partie du quatuor LAMP : Linux, Apache, MySQL, PHP. Le couple PHP/MySQL est très utilisé par les sites web et proposé par la majorité des hébergeurs. Plus de la moitié des sites web fonctionennt sous Apache2(*), qui est le plus souvent utilisé conjointement avec PHP et MySQL.

Wikipédia ainsi que de nombreuses autres entreprises et services utilisent MySQL, tels que Google, Yahoo!, YouTube, Adobe, Airbus, Alstom, Crédit agricole, Linden Lab ( Second Life), RATP, URSSAF, AFP, Reuters, BBC News, Leader Price, Système U, Cap Gemini, Ernst & Young, Alcatel- Lucent et d'autres11(*).

MySQL étant récent, il grossit au fil de ses versions. Depuis la version 5, il est possible d'utiliser le PL/SQL originairement développé par Oracle afin d'utiliser des procédures et fonctions stockées ainsi que des déclencheurs. Par ailleurs, MySQL supporte la norme SQL2 (utilisation des JOIN), ce qui fait de lui un SGBD sûr puisque la conformité à cette norme garantira sa compatibilité avec les requêtes normalisées.

Son absence de support des transactions et d'une gestion de l'intégrité des tables automatique (sauf en utilisant certains moteurs comme InnoBD) ne lui permet pas d'être utilisée dans des applications à données particulièrement sensible comme, par exemple, dans les sociétés banquaires, cependant, ses performances étant généralement plus importantes que la majorité des autres systèmes concurrents, et son prix d'implantation nettement inférieur, lui permet d'obtenir un certain succès auprès des entreprises ayants besoin d'une base de données peu onéreuse et/ou performante.

3.5. QUELQUE SYSTEMES DE GESTION DE BASE DE DONNEES

Nous avons essayé de faire une vision sur quelques Systèmes de gestion de base de données les plus utilisées au monde, tout est classé sur le tableau ci-dessou :

Relationnel propriétaire

4D - DB2 - dBase - Informix - MaxDB - Oracle - SQL Server

Relationnel libre

Derby - Firebird - Ingres - MySQL - PostgreSQL

Embarqué

Berkeley DB - SQLite

Autre

Access - FileMaker - HyperFile - OpenOffice.org Base - Paradox

API

JDBC - ODBC - OLE DB - SQL

3.8. SECURITE DE LA BASE DE DONNEES

La sécurité de la base de données consiste à protéger les systèmes contre les éventuels accidents physiques et/ou logiques qui peuvent l'endommage ou l'anéantir.

Pour ne pas être surpris par ces accidents, nous proposons les mesures de sécurités ou mesures préventives telles que :

- Le BACK UP ;

- La duplication de la base de données ;

- Le verrouillage (interdiction d'écriture) sur la base de données pour les utilisateurs non autorisées ;

- Pas de suppression sans duplication ;

- Le stockage de tous les BACK UP en dehors des installations informatiques et de l'entreprise.

Pour notre cas, nous avons choisi la méthode de Backup automatique dans le logiciel, la méthode verrouillage automatique (avec interdiction d'écriture) sur la base de données pour les utilisateurs non autorisés.

3.9. CREATION DES BASES DE DONNEES ET DES TABLES POUR LE PLUCM

-- phpMyAdmin SQL Dump

-- version 2.6.1

-- http://www.phpmyadmin.net

--

-- Serveur: localhost

-- Généré le : Mercredi 20 Août 2008 à 11:59

-- Version du serveur: 4.1.9

-- Version de PHP: 4.3.10

--

-- Base de données: `plucm`

--

-- --------------------------------------------------------

--

-- Structure de la table `agent`

--

CREATE TABLE `agent` (

`idagent` int(11) NOT NULL auto_increment,

`prenom` varchar(20) NOT NULL default '',

`nom_agent` varchar(20) NOT NULL default '',

`postnom` varchar(20) NOT NULL default '',

`telephone` varchar(20) NOT NULL default '',

`email` varchar(20) NOT NULL default '',

`login` varchar(20) NOT NULL default '',

`mot_de_passe` varchar(20) NOT NULL default '',

`site` varchar(20) default NULL,

`adresse` varchar(30) NOT NULL default '',

`idsexe` int(11) NOT NULL default '0',

`idcategorie` int(11) NOT NULL default '0',

`date_engag` varchar(30) NOT NULL default '',

PRIMARY KEY (`idagent`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;

--

-- Contenu de la table `agent`

--

-- --------------------------------------------------------

--

-- Structure de la table `apprenants`

--

CREATE TABLE `apprenants` (

`idapprenant` int(11) NOT NULL auto_increment,

`prenom` varchar(20) NOT NULL default '',

`nom` varchar(20) NOT NULL default '',

`postnom` varchar(20) NOT NULL default '',

`telephone` varchar(30) NOT NULL default '',

`email` varchar(20) NOT NULL default '',

`login` varchar(30) NOT NULL default '',

`mot_de_passe` varchar(20) NOT NULL default '',

`site` varchar(20) NOT NULL default '',

`adresse` varchar(20) NOT NULL default '0000-00-00',

`idsexe` int(11) NOT NULL default '0',

`idcategorie_ap` int(11) NOT NULL default '0',

`date_inscription` varchar(20) NOT NULL default '',

`idformation` int(11) NOT NULL default '0',

`idecole` int(11) NOT NULL default '0',

`id_etatcivil` int(11) NOT NULL default '0',

`profession` varchar(50) NOT NULL default '',

`organisme` varchar(50) NOT NULL default '',

`employeur` varchar(20) NOT NULL default '',

`activite` varchar(50) NOT NULL default '',

`occupation` varchar(50) NOT NULL default '',

`choisirplucm` varchar(50) NOT NULL default '',

PRIMARY KEY (`idapprenant`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=72 ;

--

-- Contenu de la table `apprenants`

--

-- ---------------------------------------------------------

-- Structure de la table `auteur`

--

CREATE TABLE `auteur` (

`idauteur` int(11) NOT NULL auto_increment,

`nom` varchar(30) NOT NULL default '',

`nationalite` varchar(30) NOT NULL default '',

PRIMARY KEY (`idauteur`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--

-- Contenu de la table `auteur`

--

INSERT INTO `auteur` VALUES (2, 'walt Desney Productions', 'Francais');

INSERT INTO `auteur` VALUES (3, 'blaise pascal', 'Francais');

-- --------------------------------------------------------

--

-- Structure de la table `categories`

--

CREATE TABLE `categories` (

`idcategorie` int(11) NOT NULL auto_increment,

`categorie` varchar(20) NOT NULL default '',

PRIMARY KEY (`idcategorie`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--

-- Contenu de la table `categories`

--

INSERT INTO `categories` VALUES (1, 'Choisir catégorie');

INSERT INTO `categories` VALUES (2, 'Administrateur');

INSERT INTO `categories` VALUES (3, 'Utilisateur');

-- --------------------------------------------------------

--

-- Structure de la table `categoriesap`

--

CREATE TABLE `categoriesap` (

`idcategorie_ap` int(11) NOT NULL auto_increment,

`categorie_ap` varchar(20) NOT NULL default '',

PRIMARY KEY (`idcategorie_ap`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--

-- Contenu de la table `categoriesap`

Toutes ces instructions SQL nous ont permit de créer notre base de données et les tables, étant donné qu'une base de données est toujours composée de une ou plusieurs tables. Cela nous permettra alors d'exploiter cette base de données créée lors de la programmation ou développement dans le cas de Projet Limete Université Cardinal Malula.

3.10. MODELE LOGIQUE DE TRAITEMENT

3.10.1. Definition

Le Modèle Logique de traitement est une vue qui reflète la vision de l'utilisateur pour les données à travers la procédure algorithmique.

Le Modèle Logique de Traitement est un dialogue qui s'effectue entre l'homme et la machine.

Le Modèle Logique de Traitement comprend la partie visible, la spécification externe de transaction clavier, le cheminement possible d'un écran à un autre après le menu d'accueil.

Certes, l'affichage à l'écran de menu permettra à l'utilisateur de choisir le traitement qu'il désire effectuer.

3.10.2. Présentation de menus

Un menu est un écran physique qui permet à l'utilisateur de porter un choix sur les différentes options correspondantes aux différents types de traitements d'une application ou logiciel que l'on désire c'est-à-dire c'est un répertoire de possibilités offertes à l'opérateur ou l'utilisateur en vue de faire le choix correspondant au traitement désiré.

ACCEUIL

GESTION GENERAL DE PROJET LIMETE UNIVERSITE CARDINAL MALULA

Menu principal

· Agents

· Apprenants

· Productions

· Charges

·  Reçus

· Bibliothèque

· Discussion

· Rapport Journalier

· Déconnexion

Agents

- Ajouter Agents

- Afficher Agents

- Update

Apprenants

- Ajouter Apprenants

- Afficher Apprenants

- Update

- Productions

- Ajouter Production

- Afficher Production

- Update

- Charges

- Ajouter Charge

- Afficher Charge

- Update

- Reçus

- Ajouter Reçu

- Afficher Reçu

- Update

- Bordereau

Bibliothèque

- Ajouter livre

- Afficher livre

- Ajouter Auteur

- Afficher Auteur

- Update

- Discussion

- Ajouter Question

- Rechercher Question

- Update

- Rapport journalier

- Faire le Rapport

- Afficher le Rapport

- Update

Déconnexion

- Déconnexion nous aide à fermer la base de données

3.11. INTERFACE DE L'UTILISATEUR

Ici nous allons présenter quelques Interfaces, lesquelles vont permettre aux utilisateurs d'éfectuer quelques opérations telles que : l'ajout de nouveau apprenant, remise d'un reçu de minerval et autres...

3.11.1. Saisie des apprenants

Numéro

Nom Apprenant

Postnom Apprenant

Prenom de l'Apprenant

Adresse de l'Apprenant

Sexe

Age

Date d'inscription

Heure d'entrée

login

mot de passe

Valider

Numéro

Nom Agent

Postnom Agent

Prenom de l'Agent

Adresse de l'Agent

Sexe

Age

Date d'engagement

Heure d'entrée

login

mot de passe

Valider

3.11.2. Saisie des Agent

3.11.3. Saisies des auteurs

Numéro

Nom auteur :

Postnom auteur :

Nationalit de l'auteur

Valider

DateHeure:

Montant Produit:

Commentaire Produit:

Production en:

Produit par:

Choisir Moment:

Valider

Date payé:

Montant Payé

Nom Apprenant:

Nom Agent:

Module:

Catégories apprenants:

Valider

3.11.4. Saisie des Produits

3.11.5. Saisie des reçus

4. MODELE PHYSIQUE DE DONNEES

4.1. Définition

Un modèle Physique de Données est une étape de définition des données à l'intérieur de la structure physique de l'ordinateur c'est-à-dire le résultat de la décision technique qui a été prise en fonction des objets et des contraintes techniques11(*).

Un Modèle Physique de Données est un formalisme qui permet de préciser le système de stockage employé pour un système de gestion de base de données.

4.2. Règle de passage du Modèle logique de données au Modèle Physique de données

Le passage du Modèle Logique de Données au Modèle Physique de Données exige que les tables qui jusque là sont externe à la base de données se traduisent en fichiers faisant partie intégrante de la base de données.

Ainsi

- les tables décrites au niveau du schéma logique deviennent des fichiers de données appelées « tables » ;

- les propriétés des deviennent des champs de tables ;

- les identifiants deviennent des clés primaires

- les clés héritées deviennent des clés secondaires

4.3. Présentation du Modèle Physique de Données

Table

Code rubrique

Désignation

Nature

Taille

Décimal

Clé

AGENT

idagent 

Identification de l'agent

+

+

Oui

Oui

 

prenom 

prenom 

Texte

35

Non

Non

 

nom_agent 

nom_agent 

Texte

35

Non

Non

 

postnom 

postnom 

Texte

35

Non

Non

 

telephone 

telephone 

Texte

35

Non

Non

 

email 

email 

Texte

10

Non

Non

 

login 

login 

texte

8

Non

Non

 

mot_de_passe 

Mot de passe de l'agent

texte

8

Non

Non

 

site 

site 

Texte

35

Non

Non

 

adresse 

adresse 

Texte

3

Non

Non

 

idsexe 

Identification de sexe

Num

10

Oui

Oui

APPRENANT

 
 
 
 
 
 
 

idapprenant 

identification de l'apprenant

+

+

Non

Oui

 

prenom 

prenom 

Texte

35

Non

Non

 

nom 

nom 

Texte

35

Non

Non

 

postnom 

postnom 

Texte

35

Non

Non

 

telephone 

telephone 

Texte

35

Non

Non

 

email 

email 

Texte

10

Non

Non

 

login 

login 

texte

8

Non

Non

 

mot_de_passe 

mot_de_passe 

texte

8

Non

Non

 

site 

site 

Texte

35

Non

Non

 

adresse 

adresse 

Texte

3

Non

Non

 

idsexe 

identification de sexe

Num

10

Oui

Oui

 

idcategorie_ap 

identification de catégories apprenants

Num

10

Oui

oui

 

date_inscription 

date d'inscription de l'apprenant

date

 

Non

Non

 

idformation 

identification de formation

Num

10

Oui

Oui

 

idecole 

identification de l'école

Num

10

Oui

Oui

 

id_etatcivil 

identification de l'état civil

num

10

oui

Oui

 

profession 

profession 

texte

12

non

nom

 

organisme 

organisme 

Date

8

Non

Non

 

employeur 

employeur 

texte

35

Non

Non

 

activite 

activite 

Texte

35

Non

Non

 

occupation 

occupation 

Texte

40

Non

Non

 

choisirplucm 

la raison qui a pousé à choisir plucm

texte

30

Non

Non

DONATEUR

id_donnateur 

identification de donateur

+

+

Non

oui

 

nom 

nom 

texte

30

non

non

 

adresse 

adresse 

texte

30

Non

Non

 

telephone 

telephone 

Date

8

Non

Non

 

email 

email 

Texte

30

Non

Non

 

mot_de_passe 

mot de passe de donateur 

texte

30

Non

nom

Chapitre 1. PROGRAMMATION DE L'APPLICATION

1.1. DEFINITION

Une programmation est un ensemble des activités qui consiste à transformer les données entrant en données sortant suivant la logique de traitement bien déterminée appelée Logique de programmation12(*).

Un programme est un ensemble d'instruction logique que l'on soumet à l'ordinateur pour résoudre un problème bien déterminé13(*).

1.1.1. Choix de méthode de programmation

La mise sur pied d'un programme a toujours exigé le respect d'énormes règles informatiques, appelée aussi méthode de programmation informatique, qui ne sont d'autres que des méthodes utilisées par un informaticien et d'autre part le langage lié à cette méthode.

Parmi les méthodes de programmation, nous distinguons :

- La programmation classique ;

- La programmation structurée et modulaire ;

- La programmation orientée objet.

1.1.2. La programmation classique

C'est une programmation empirique c'est-à-dire caduque et obsolète dans laquelle on utilise le système de renvoie (Goto) souvent dans le système d'exploitation DOS ou MS-DOS et qui présente comme conséquence :

- Le non respect de séquence dans le traitement des instructions (à cause de goto)

- La non fiabilité

- La non efficacité

1.1.3. La programmation structurée et modulaire

La programmation modulaire et structurée consiste à décomposé logiquement un problème en sous problèmes faciles à résoudre et à respecter les principes d'utilisation des concepts (la séquence, les structures d'alternatives et les structures d'itérations qui permettent d'éviter l'utilisation de renvoie avec Goto)

Lorsque tous les sous problèmes sont résolus alors le problème est résolu.

Les différentes étapes utilisées sont :

· La conception et l'analyse

- définir les objectifs généraux : c'est le problème que le client pose et les besoins d ce dernier ;

- définition des objectifs fonctionnels : sont les grandes lignes ou idées à suivre dans la mise sur pieds de l'application

- définition des objectifs de système : étude détaillée de grande lignes conçues dans l'étape fonctionnelle

- définir les interfaces utilisateurs : prévoir le masque de saisie pour les informations à saisir (les fiches)

- définir les bases de données : structures des différents tables qui regrouperont les données les données à traiter ou à saisir ou éditer (selon définis).

- Définir les test : ce que les programmes doivent faire et ne doivent pas faire. Vérification du résultat par rapport aux besoins des utilisateurs.

· La programmation structurée et modulaire

- faire la logique du problème dans un langage pseudo code

- conversion des instructions en langage informatique

· Le test

- faire le test individuel (par objet) entre les différents modules pour voir leur fiabilité ;

- faire le test collectif (ensemble par le système)

1.1.4. La programmation orientée objet

La Programmation Orientée Objet (POO) est une extension de la programmation structurée qui intensifie la réutilisation du code et l'encapsulation de données avec des fonctionnalités.

La Programmation Orientée Objet (POO) est un modèle de programmation qui se démarque des modèles classiques en cherchant à décomposer de manière structurelles les programmes en entités, appelées objets, qui possèdent un état (variable) et un comportement (fonction ou méthode).

la Programmation Orientée Objet est caractérisée par l'héritage (permet à un objet de récupérer les caractéristiques d'un autre objet (attributs et méthodes) et de celui ajouter de nouvelle caractéristique) et le polymorphisme (permet d'attribuer à différents objets une méthode portant le même nom afin d'exprimer la même action, même si l'implémentation de la méthode diffère complètement)

Avant la programmation orientée objet, les données et les opérations (les fonctions) constituaient des éléments distincts.

Vous pouvez comprendre les objets comme si vous comprenez les enregistrements (constitués de champs qui contiennent des données, chaque champ ayant son propre type).

Les enregistrements sont un moyen commode de désigner une collection d'éléments de données variées. Mais Les objets sont également des collections d'éléments de données, à la différence des enregistrements, contiennent des procédures et fonctions (Ces procédures et fonctions sont appelées des méthodes) portant sur leurs données. Les éléments de données d'un objet sont accessibles via des propriétés.

Les propriétés des objets de la Programmation Orienté Objet ont une valeur qu'il est possible de modifier à la conception sans écrire de codes sources.

Pour la création de notre logiciel, notre choix sera porté sur la Programmation Orientée Objet.

1.1.5. Choix de langage de programmation

Notre choix est fait : nous allons nous mettre au PHP pour la conception de notre Application.

Nous allons d'abord commencer à nous faire découvrir PHP dans cette première partie, et nous veillerons à ce que tout ce que nous disons soit le plus clair possible. Si vous me suivez bien.

Nous présentons aussi l'éléPHPant. C'est la mascotte du PHP, C'est un signe de reconnaissance en quelque sorte.


Comme nous savons ce que c'est PHP, mais nous savons que c'est un univers tellement riche et varié qu'on ne peut pas prétendre le connaître entièrement. Il y a toujours quelque chose à découvrir.

1.1.5. Qu'est-ce que c'est PHP ?

Un site c'est l'ensemble de pages web1(*) ou l'ensemble d'informations présentées sous forme de pages, le lien par exemple. Pour aller sur un site web, on tape son adresse, par exemple http://www.plucm.org En tapant l'adresse d'un site web, le navigateur (Firefox par exemple), nous amènera visiter ce site web.

On peut faire beaucoup de choses sur un site web : jouer, discuter, échanger, s'informer etc...

Le langage XHTML est le nouveau nom du langage HTML. Que nous voyions écrit l'un ou l'autre, nous savons que c'est la même chose : c'est le langage qui permet de créer une page web à la base, nous 'écrirons le plus souvent "HTML" (une vieille habitude) pour désigner ce fameux langage qui permet de créer des pages web.
Si nous ne le connaissons pas, nous ne pourrons pas utiliser le PHP.

Pour nous rappeler, le (X) HTML c'est un langage qui nous permet de créer des pages web. En tapant un code spécial (les "tags", ou "balises"), on peut mettre du texte en gras, insérer une image etc...

Et PHP dans tout ça ? C'est un autre langage qui vient se mettre au milieu de ce code HTML.

Il y a toujours du langage HTML autour, mais on trouve au milieu des instructions PHP. Ce que nous allons signaler c'est à savoir manier des lignes de ce type. Oui, ça fait peut-être un peu peur ces caractères bizarres au milieu ($ ; ? > ). Comme nous le voyons, une page qui ne contient que du HTML possède l'extension ".html". Une page qui contient du code PHP, elle a l'extension ".php".
Comme il y a eu plusieurs versions de PHP, il n'est pas rare de rencontrer des extensions .php3 ou .php5. La version actuelle de PHP est la v5.

Ce qu'il faut noter qu'il n'existe pas des pages qui ne contiennent que du PHP ? On a quand même toujours besoin du HTML pour faire une page web.

On ne peut pas y échapper !

En résumé : le HTML est pratique un moment, mais il est limité. A l'aide de PHP, nous allons réaliser bien plus de choses pour la réalisation de notre Travail telles que :

· Un forum, où tout le partenaire de Projet Limete Université Cardinal Malula peut discuter, échanger, s'entraider s'il y a un problème.

· Un Chat, pour ils puissent discuter entre eux en temps réel ou avec leurs apprenants !

· Un livre d'or : pour voire si notre application plaît aux travailleurs, partenaires et apprenants, ils peuvent laisser un message disant que votre application est super, et tout le monde pourra le lire !

· Une newsletter : c'est très facile à mettre en place. Nous rédigons notre newsletter, nous cliquez sur un bouton, et là le mail s'envoit automatiquement à toutes les personnes inscrites à votre newsletter !

· Un compteur de visiteurs, visible ou caché, c'est nous qui voyons ce que nous préférons. Et comme c'est nous qui allons le créer, il n'y aura pas de pub (ceux qui utilisent un compteur avec une pub se font arnaquer nous le dirons de suite.

· Un système de news automatisé : nous allons sur une page, nous tapons le texte de la nouvelle news, et immédiatement après la page d'accueil de notre application s'actualise et tous nos partenaires, apprenants, travailleurs... voient cette news !

· On peut imaginer alors qu'ils réagissent à cette news : ils donnent leur avis, se proposent pour nous aider etc...

PHP peut faire encore beaucoup plus que ça, mais c'était ce que nous avons prévu pour notre application. Ce qu'il faut bien retenir donc, c'est que PHP nous permet de créer des pages web dynamiques, qui se mettent à jour toutes seules sans que nous ayons à passer par là.

En clair, nous pouvons être en vacances aux Bahamas, et notre site continuera à évoluer tout seul !

Autre gros avantage, nous allons nous en rendre compte, PHP inaugure l'ère du Webmaster Fainéant: une fois que nous avons mis notre site en place, il se met à jour tout seul, se transforme, sans que nous ayons à lever le petit doigt.

1.1.6. Différences entre HTML et PHP

Ce que nous allons signaler maintenant, ce n'est pas très compliqué, et pourtant beaucoup de gens se lancent dans le PHP sans le savoir ! Nous faisons l'effort de comprendre comment ça marche (ça nous prendra beaucoup de temps), non seulement nous allons gagner beaucoup de temps ensuite, mais en plus nous comprendrons ce que nous ferons.

De quoi nous allons parler ? Nous allons expliquer ce qui se passe exactement quand un visiteur veut aller sur notre site web. Il tape l'adresse, mais ensuite La page s'affiche, d'accord, mais entre-temps que s'est-il passé ?

Ca c'est vraiment important, parce qu'en HTML et en PHP ça ne fonctionne pas vraiment pareil.

Il y a une notion fondamentale à connaître : les relations entre le client et le serveur.

· Le client : celui qu'on appelle "le client", c'est la machine qui demande le service ou la page à distance. qui êtes tranquille pépère installé devant son ordinateur, et qui demandez à voir une page web. Tous les visiteurs d'un site web sont des clients. nous va représenter l'ordinateur du client par cette machine :

· Le serveur : il n'y en a qu'un seul. Le serveur, c'est une sorte de gros ordinateur tout le temps connecté à Internet (avec une connexion très rapide). Cet ordinateur est installé quelque part dans le monde ou à Kinshasa au PLUCM, il est tout le temps allumé, et personne n'y touche. Il travaille 24h/24, et ne s'occupe que de distribuer notre application. En d'autres termes, personne ne joue dessus
Sa fonction, il contient notre application sur son disque dur, et dès qu'un client demande à voir une information, il la lui envoie. Pour représenter le serveur, nous allons utiliser cette machine (notez qu'en général le serveur n'a pas d'écran : ça ne sert à rien puisque personne ne travaille dessus) :

Eh bien: le serveur est un ordinateur qui envoie des reponse aux clients qui le lui demandent. Et il travaille sans arrêt comme un forcené.

Bien, maintenant nous allons montrer le petit plus qui fait toute la différence entre une page HTML et une page PHP.

a)Avant : en HTML

nous rappellons qu'une page HTML possède l'extension .html, comme exemple.html
nous n'allons pas entrer dans les détails, mais en gros voici comment ça fonctionne pour une page HTML :


Il y a 2 étapes :

1. Le client (c'est un travailleur par exemple) demande à voir une information. Il va donc faire une demande au serveur : "S'il te plaît, envoie-moi la page affichierlivre.html".

2. Le serveur lui répond en lui envoyant la page affichierlivre.html: "Tiens, voici la page que tu m'as demandée".

Tout ça se passe très poliment bien entendu le client voulait consulter la page affichierlivre.html sur notre application :

il l'a demandée au serveur qui gère cette application, et le serveur lui a envoyé la page que le client voulait. La page s'affiche alors sur l'écran du client, sous ses yeux.

Cela se passe à chaque fois que vous consultez une page HTML. Mais qu'est-ce qui peut bien changer avec PHP ?

b) Maintenant : en PHP

Il y a une étape qui vient s'ajouter entre les deux : la page PHP est générée par le serveur avant l'envoi. Schématiquement ça donne ça :


Voyons à nouveau les étapes :

1. Le client demande à voir une page PHP. Pour lui il n'y a aucune différence. Il demande la page au serveur, toujours aussi poliment : "S'il te plaît, envoie-moi la page affichierlivre.php".

2. Mais là, il y a une étape très importante, qui fait toute la différence en PHP. Le serveur n'envoie pas de suite la page au client. Il la génère. En effet, le client n'est pas capable de lire une page PHP (seul le serveur sait faire ça). Le client ne peut lire que des pages HTML.
Ce que fait le serveur est simple : il va transformer la page PHP en page HTML, pour que le client puisse la lire.

3. Enfin, une fois que la page est générée, elle ne contient plus que du code HTML. Le serveur peut l'envoyer au client : "Tiens, voici la page que tu as demandée".

Nous allons en dire un peu plus sur cette deuxième étape : celle de la génération de la page. Il est important de bien comprendre ce qui s'y passe. Que veut dire "génération de la page PHP" ? Nous montrons un bout de code PHP au début.

Code : PHP

1

<?php echo("Vous êtes le travailleur n°" . $nbre_visiteurs);?>

Les ordinateurs des clients ne savent pas lire ce code PHP : ils ne connaissent que le HTML. C'est donc au serveur de transformer le code PHP en HTML. Le code PHP contient des instructions. Il demande au serveur d'effectuer des actions : donner l'heure, le nombre de personnes connectées sur le site etc... Bref, le PHP donne des ordres au serveur.

Ce genre de choses était impossible en HTML. Avec PHP, c'est possible, et nous verrons que ça change tout.

Nous n'oublions pas qu'une page PHP contient aussi du code HTML.

Tant qu'il y a du code HTML, le serveur n'y touche pas. Dès qu'il tombe sur du code PHP, il le lit, il l'exécute (il fait ce que le code lui demande), et il transforme ça en HTML.

En fin de compte, la page générée ne contient plus que du HTML :

Le client peut alors la lire.

Ce qui est particulier ici, c'est que cette page générée est destinée à un seul client. Quand un nouveau client se présente, le serveur recommence à générer une page HTML.


Ca veut dire qu'en fait la page générée peut être à chaque fois unique. C'est bien ça qui est génial par rapport au HTML : en HTML la page envoyée était toujours la même, le serveur envoyait juste le fichier. En PHP, le serveur travaille pour le client et lui offre une page personnalisée.

Notons que la génération de la page peut prendre du temps (quelques millisecondes en fonction de la taille de la page).

Cela veut dire que le serveur doit être plus puissant pour pouvoir traiter du PHP qu'un serveur HTML normal... comme le cas dans notre application , ce n'est pas un personnel, partenaire ou apprenant qui va demander une page PHP, mais plutôt plusieurs en même temps !

Chapitre 2. UTILISATION DE PHP POUR NOTRE APPLICATION

2.1. INTRODUCTION

Comme le chapitre précèdent l'a indiqué et balayé le chemin, c'est maintenant que nous allons faire nos premiers pas en PHP. Nous avons créé un dossier dans lequel tout nos fichiers seront logés.

Mais pour se connecter nous avons tenu compte des attaques qui arrivent souvent lors de la transmission de message et de mot de passe.

1. Attaque « Man in the middle »

L'attaque « Man in the middle » consiste pour le pirate à se brancher sur la ligne entre nous et le serveur, à écouter ce qui transite, puis, au bon moment, à essayer de prendre notre place.

Dans l'exemple suivant, blaise est le pseudonyme d'un administrateur se connectant au site, pascal est l'identifiant de session.

Schématisation d'une attaque Man in the middle

Cette technique est très facile à mettre en place dans les entreprises ou les universités, car il y a souvent une seule passerelle entre internet et le reste du réseau. Cela signifie que toute donnée envoyée sur internet par un ordinateur du réseau sera susceptible d'être « entendue ». Le pire scénario se produit lorsque le matériel est un peu vieux ou que l'installation a été réalisée à moindre coût et que les boîtiers permettant la mise en réseau sont des hubs et non des switchs.

Le hub, lorsqu'il reçoit un message provenant d'un ordinateur, se contente de l'amplifier et de l'envoyer à tout le monde, alors que le switch n'envoie qu'à la bonne machine. Ce qui veut dire qu'avec un logiciel comme Ethereal sur un réseau constitué de hubs (il y en a encore beaucoup), un hacker pourrait prendre la place de n'importe quel membre sur n'importe quel site ouvert depuis le réseau.

1.1. Les vols

Nous avons vu comment il est possible pour un hacker d'écouter le réseau. Mais que peut-il voler exactement ?

1.2. Session

Pour voler une session, il suffit de récupérer l'identifiant de session. Cet identifiant est unique et propre à une et une seule session à un instant donné. L'identifiant de session en PHP peut être transmit par deux moyens, cookie ou url.

Le passage par URL est une faille de sécurité. Imaginons ce cas de figure : nous naviguons sur un site qui transmet l'identifiant de session par URL, par exemple un forum comme phpBB. Un visiteur (mal intentionné) que nous nommerons Mr X, poste un message avec un lien sur son site perso, avec en général beaucoup de pipo pour attirer les gens. Sur ce site, Mr X a écrit un script qui récupère la variable globale $_SERVER['HTTP_REFERER'] qui contient la dernière adresse visitée, c'est-à-dire celle du forum avec l'identifiant de session dedans. Le script de Mr X va repérer cet identifiant et Mr X pourra alors l'utiliser pour voler la session.

Que ce soit par URL ou par cookie, l'attaque du "Man in the middle" permet de récupérer l'identifiant de session.

.3. Mot de passe

Le pire scénario, le vol du mot de passe. Ce vol est aussi le plus dur, car le hacker n'a souvent qu'un seul essai, lors de la phase d'identification (ou d'inscription). Dans un espace membre classique, autant lors de l'inscription que de la connexion, le mot de passe circule en clair.

1.4. Cookie

Il existe 2 types de cookie permettant l'identification : le cookie de session, tel qu'on l'a vu précédemment, ne contenant en général que l'identifiant de session, et un cookie dit « d'autologin » qui permet à un visiteur de ne pas saisir de nouveau son login et son mot de passe lors d'une visite ultérieure. Le vol peut, comme on l'a vu, se faire par l'attaque du "Man in the middle", mais peut aussi se faire par un vol physique (pour les cookies d'autologin en général). Une personne utilise votre PC, fouille dans vos cookies et copie par exemple sur une clé USB les cookies d'autologin qui l'intéressent. Elle les copie chez elle, et se connecte ensuite directement sur votre compte sur le site concerné. La seule solution pour éviter ceci est de ne pas faire de cookie d'autologin et de forcer le visiteur à se reconnecter manuellement à chaque fois.

2. chiffrement et hash en php contre l'attaque man in the middle

2.1. Protection contre le vol de mot de passe

Pour éviter le vol du mot de passe, il faut limiter, voire proscrire, sa transmission et son stockage en clair. À la place, on va manipuler un hash, beaucoup sécurisé car il est (théoriquement) impossible à inverser. En pratique, c'est "réversible". Le hacker utilisera par exemple des dictionnaires pour obtenir le mot de passe en clair. Nous verrons comment lui compliquer la vie avec la technique du grain de sel.

2.1.1. Utilité du hash

Le hash est un procédé de chiffrement irréversible. Ceci implique qu'on ne peut appliquer la transformation inverse, et qu'on ne peut donc que comparer les hashs entre eux. L'avantage est que personne, y compris le webmaster, n'a accès aux mots de passe des membres.

Il existe deux principaux algorithmes de hash, le MD5 et le SHA1
Le MD5 est déprécié et NE DOIT PLUS ETRE UTILISE. En effet, une faille dans l'algorithme a été trouvée, permettant de diminuer considérablement le nombre d'opérations nécessaires à un inversement par rapport à une attaque force brute. De plus, et c'est le plus inquiétant, il a été montré qu'il était possible de créer volontairement des collisions avec un document donné. En effet, les hashs MD5 sont constitués de 32 caractères alphanumériques, soit 3632= 6.3349 combinaisons possibles. Ainsi, le nombre de hashs possibles est limité. Or, nous réalisons des hashs de chaîne de caractères (strings, fichiers...) de taille indeterminée et pour la plupart bien plus grandes que 32 caractères. Par exemple, nous pouvons constituer 21556 chaînes de 1000 caractères alphanumériques.

Nous avons donc une infinité de chaîne de caractères pouvant donner un hash précis et il est maintenant possible de déterminer instantanément les autres chaînes de caractères à partir d'une des chaînes et du hash.

Il est donc recommandé d'utiliser des algorithmes plus robustes, comme le SHA1 ou le SHA-256. Mais il faut bien garder en tête qu'un algorithme est reconnu comme fiable uniquement car il n'a pas encore été craqué. Ainsi, le SHA1 est déjà sur la pente descendante.

Maintenant que nous avons présenté le principe du hash et les principaux algorithmes, nous allons voir un exemple pratique de mise en place côté serveur et côté client.

 

nous pouvons tester un code de ce type sur notre serveur pour avoir la liste des hashs supportés par notre installation de PHP.

Afficher la liste des hashs supportés

print_r(hash_algos());

Résultat

Array

(

[0] => md4

[1] => md5

[2] => sha1

[3] => sha256

[4] => sha384

[5] => sha512

[6] => ripemd128

[7] => ripemd160

...

);


2.1.2. Mise en place
2.1..2-a. Coté serveur

Le hash coté serveur empêche, en cas de vol de la base de donnée par intrusion sur le serveur, de fournir au hacker tous les mots de passe en clair des membres du site. Il faut savoir que la plupart des membres ne possèdent que 2 ou 3 mots de passe qu'ils utilisent sur presque tous les sites. Nous devons donc nous assurer de notre côté de l'intégrité des mots de passe de ses visiteurs. Pour effectuer un hash coté serveur, il existe la fonction SHA1 incorporée à PHP.

On l'appelle lors de l'inscription du membre puis, à chaque connexion, on compare les 2 hashs.

2.1. 1. Présentation des interfaces de l'application

Quand l'utilisateur lance l'application, une page d'accueil s'ouvre pour lui donner l'accès de choisir s'il est apprenant ou agent de PLUCM.

2.2.1.1. Interface d'accueil

2.2.2. Interface d'Inscription des Apprenants

Dès l'inscription des apprenants : élèves des écoles de Kingabwa, Abutant adule de la commune de Limete/Kingabwa..., son mot de passe doit déjà être hasher avant d'aller dans la base de données.

2.2.3. Interface d'Identification

Les utilisateurs doivent s'identifier avant d'entrer dans la base de données à l'aide d'un login et mot de passe, or le mot de passe nous l'avons hasher lors de l'inscription. En effet, l'utilisateur lors de la connexion doit comparer son mot de passe hasher avec celui qui ce trouve dans le serveur distant.

// L'utilisateur peut maintenant se connecter avec sécurité.

2.2.4. Interface de menu

Après la connexion, l'utilisateur entre dans l'application où il trouvera tout le menu possible pour son travail. Ce même menu qui va nous guider partout dans l'application sans reprendre les codes. Cela se fait à l'aide de la fonction include de php.

2.2.4. Fenetre de recherche à distance

Cette interface de recherche de reçu permet à l'étudiant qui est à distance, après avoir se connecter avec son login et mot de passe tels que : le login « cyna » et le mot de passe « 123456 » pour l'apprenante Nancy Balegnela. Il peut voire ou imprimer tout ce qu'elle a payé comme frais sans se déplacer pour venir au plucm connaître sa solde.

Ceci est le resulta de recherche faite par l'apprenante Nancy d'une façon distante.

2.2.5. Calcule de paie de parsonnel

Cettre fenetre nous aide à calculer le salaire de personnel de PLUCM ici, le salaire est considé comme prime.

Ceci est la fiche de paie de l'agent TINDA après le calcule par l'animateur de Projet Limete Université Cardinal Malula.CONCLUSION GENERALE

Nous voici à la fin de notre Travail qui s'intitule : CONCEPTION, IMPLEMENTATION D'UNE BASE DE DONNEES POUR LA GESTION D'UN ORGANISME ET ADMINISTRATION DE RESEAU A DISTANCE SUR BASE D'OUTIL LIBRE. Nous avons pris le cas de PROJET LIMETE UNIVERSITE CARDINAL MALULA. Pour franchir la fin de notre second cycle de licence.

Alors qu'en plein 21ème siècle, l'informatique est un critère de l'alphabétisation, la conception et l'implémentation d'une base de données pour la gestion générale d'une entreprise ou organisme et l'administration de réseau à distance sur base d'outil libre dans notre pays, la République Démocratique du Congo n'a pas encore évolué.

Raison pour laquelle nous nous sommes assignés le devoir ainsi l'objectif de concevoir et implémenter une base de données qui sera partagée en réseau pour la gestion générale de Projet Limete Université Cardinal Malula.

De ce qui précède, il est difficile de prétendre avoir eu une solution idéal, toutefois nous espérons avoir répondu tant soi peu à notre problématique et confirmé nos hypothèses.

En effet, ce travail étant une oeuvre humaine, n'est pas un modèle unique et parfait, c'est pourquoi nous restons ouvert à toutes les critiques et sommes prêts à recevoir toutes les suggestions et remarques tendant à améliorer d'avantage cette étude seront les bienvenus. Etant donné que tout travail informatique a été toujours l'oeuvre d'une équipe.

En ce qui concerne la présentation de notre application, nous singalons d'avance que nous n'avons pas présenté toutes les interfaces, ceux qui aurons les desirs de les voir toutes, nous les recommandons dans le site web de Projet Limete Université Cardinala Malula : www.plucm.org Bientôt sur le web.

PAGE D'ACCUEIL

<html>

<title>Projet Limete Université Cardinal Malula</title>

<body>

<div align="center">

<table border="0" width="100%">

<tr>

<td width="100%" align="center">

<?php

include('includes/corps.php');

?>

</td>

</tr>

</table>

</div>

</html>

</body>

<?php

include('includes/footer.php');

?>

<?php

include('includes/footer2.php');

?>

INSCRIPTION DES APPRENANTS BIEN HASHER

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

<title>Formulaire des agents de PLUCM</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

</head>

<body>

<?php include("menu.php");?>

<p><center>Ceci est le formulaire dans lequel tout le livre de Projet Limete Université Cardinal Malula se trouve!</center></p>

<style type="text/css">

.contenu

{

border-width:3px;/*Epaisseur de la bordure */

border-color:blue;/*Couleur de la bordure */

border-collapse: collapse; /* Colle les bordures entre elles */

border-style:solid;/*Type de bordure */

font-size:14px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

text-align:justify;

}

.contenu2

{

font-size:17px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

}

</style>

</head>

<body>

<div align="center">

<table class="contenu">

<tr><td colspan="6" height="30"><span class="contenu2"><center>Incription des agents de Projet Limete/UCM dans la base de données</center></span></td></tr>

<form name="" method="post" action="insertagent.php">

<tr><td width="100" height="30">Prénom:</td><td><input type="text" name="prenom" value="" /></td><td></td><td></td></tr>

<tr><td width="100">Nom :</td><td><input type="text" name="nom" value="" /></td><td>Postnom:</td><td><input type="text" name="postnom" value=""/></td></tr>

<tr><td width="100" height="30">telephone:</td><td><input type="text" name="telephone" value="" /></td><td>Adresse E-mail:</td><td><input type="text" name="email" value="" /></td></tr>

<tr><td width="100" height="30">Mot de Passe:</td><td><input type="password" name="mot_de_passe" value=""/></td><td>login:</td><td><input type="text" name="login" value="" /></td></tr>

<tr><td width="100" height="30">Confirmer:</td><td><input type="password" name="mot_de_passe2" value=""/></td><td></td><td></td></tr>

<tr><td width="100" height="30">adresse:</td><td><input type="text" name="adresse" value="" /></td><td>Site Internet:</td><td><input type="text" name="site" value="" /></td></tr>

<tr><td width="100" height="30">Votre sexe:</td><td><select name="sexe" size="1"/>

<?php

mysql_connect("localhost","root","");

mysql_select_db("plucm");

$query=mysql_query("SELECT* FROM sexe");

mysql_close();

while($query1=mysql_fetch_array($query))

{

echo"<option value=".$query1['idsexe'].">".$query1['libsexe']."</option>";

}

?>

</select></td><td></td><td></td></tr>

<tr><td width="100" height="30">Votre Catégorie:</td><td><select name="categorie" size="1"/>

<?php

mysql_connect("localhost","root","");

mysql_select_db("plucm");

$query=mysql_query("SELECT* FROM categories");

mysql_close();

while($query2=mysql_fetch_array($query))

{

echo"<option value=".$query2['idcategorie'].">".$query2['categorie']."</option>";

}

?>

</select></td><td></td><td></td></tr>

<tr><td width="100" height="30">Date Engagement:</td><td><input type="text" name="date_engag" value="" /></td><td></td><td></td></tr>

<tr><td colspan="2" height="30"><div align="center"><input type="submit" value="valider" name="" /></div></td></tr>

</form>

<?php

mysql_connect("localhost", "root", "");

mysql_select_db("plucm");

if (isset($_POST['prenom'])AND isset($_POST['nom'])AND isset($_POST['postnom']) AND isset($_POST['telephone'])AND isset($_POST['email'])AND isset($_POST['mot_de_passe'])AND isset($_POST['mot_de_passe'])AND isset($_POST['mot_de_passe2']) AND isset($_POST['login'])AND isset($_POST['site'])AND isset($_POST['adresse'])AND isset($_POST['date_engag']))

{

$prenom= mysql_real_escape_string(htmlspecialchars($_POST['prenom'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité

$nom= mysql_real_escape_string(htmlspecialchars($_POST['nom'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité

$postnom=

mysql_real_escape_string(htmlspecialchars($_POST['postnom']));

$telephone=

mysql_real_escape_string(htmlspecialchars($_POST['telephone']));

$email=

mysql_real_escape_string(htmlspecialchars($_POST['email']));

$mot_de_passe=

mysql_real_escape_string(htmlspecialchars(sha1($_POST['mot_de_passe'])));

$login=

mysql_real_escape_string(htmlspecialchars($_POST['login']));

$adresse=

mysql_real_escape_string(htmlspecialchars($_POST['adresse']));

$site=

mysql_real_escape_string(htmlspecialchars($_POST['site']));

$sexe=

mysql_real_escape_string(htmlspecialchars($_POST['sexe']));

$categorie=

mysql_real_escape_string(htmlspecialchars($_POST['categorie']));

$date_engag=

mysql_real_escape_string(htmlspecialchars($_POST['date_engag']));

//nous pouvons maitenant enregistrer

mysql_query("INSERT INTO agent VALUES('','$prenom','$nom','$postnom','$telephone','$email','$login','$mot_de_passe','$site','$adresse','$sexe','$categorie','$date_engag')");

}

mysql_close();

?>

</table>

</div>

</body>

</html>

IDENTIFICATION

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Identification de l' agent</title>

<style type="text/css">

.contenu

{

border-width:3px;/*Epaisseur de la bordure */

border-color:red;/*Couleur de la bordure */

border-collapse: collapse; /* Colle les bordures entre elles */

border-style:solid;/*Type de bordure */

font-size:14px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

text-align:justify;

}

.contenu2

{

font-size:17px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

}

</style>

</head>

<body>

<div align="center">

<table border="0">

<td>

<p align="center"><img border="1"src="logomalula.png"width="750"height="150"></td>

</tr>

</table>

</div>

<div align="center">

<table class="contenu">

<tr><td colspan="2" height="30"><span class="contenu2"><center>Paramètres de connexion</center></span></td></tr>

<form name="" method="post" action="connexion.php">

<tr><td width="100">Votre Nom:</td><td><input type="text" name="login" value="" /></td></tr>

<tr><td width="100" height="30">Mot de passe:</td><td><input type="password" name="pass" value="" /></td></tr>

<tr><td colspan="2" height="30"><div align="center"><input type="submit" value="valider" name="" /></div></td></tr>

</form>

</table>

</div>

</body>

</html>

Pour que la connexion soit réelement établit, il faut entrer dans le dexième fichier connxion.php.

<?php

session_start();//demarre la session

$_SESSION = array();//detruit toutes les variables de session

session_destroy();//ferme la session

session_start();

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>connexion</title>

</head>

<body>

<?php

mysql_connect("localhost","root","");

mysql_select_db("plucm");

if (isset($_POST['login']) AND isset($_POST['pass']))

{

if ($_POST['login']!=NULL AND $_POST['pass']!=NULL)

{

$log=mysql_real_escape_string(htmlspecialchars($_POST['login']));

$pass=mysql_real_escape_string(htmlspecialchars($_POST['pass']));

$agent=mysql_query("SELECT* FROM agent,sexe, categories WHERE agent.login='$log' AND agent.idsexe=sexe.idsexe AND agent.idcategorie=categories.idcategorie");

mysql_close();

$agent1=mysql_fetch_array($agent);

if($agent1['login']!=$log){}

if($agent1['mot_de_passe']!=sha1("$pass"))

{

?>

<div align="center"><font color="#FF0000" face="Trebuchet MS" size="2">**le Gestionnaire de cette base de donnée a constaté que, votre Identifiant ou le mot de passe est invalide. Veuillez les corriger SVP!!!**<br /></font></div>

<?php include("login.php");?>

<?php

}

else//si identifiant correct

{

$_SESSION['log1']=$log;

$_SESSION['pass1']=$pass;

$_SESSION['log']=$agent1['login'];

$_SESSION['pass']=$agent1['mot_de_passe'];

$_SESSION['nom']=$agent1['nom_agent'];

$_SESSION['postnom']=$agent1['postnom'];

$_SESSION['prenom']=$agent1['prenom'];

$_SESSION['libcategorie']=$agent1['categorie'];

$_SESSION['telephone']=$agent1['telephone'];

$_SESSION['sexe']=$agent1['libsexe'];

?>

<?php include("menu.php");?>

<?php

}

}

else

{

?>

<div align="center"><font color="#FF0000" face="Trebuchet MS" size="2">**Champs vide**<br /></font></div>

<?php include("login.php");?>

<?php

}

}

else//si le champs n'existe pas

{

?>

<div align="center"><font color="#FF0000" face="Trebuchet MS" size="2">**Accès securisé !!!**<br /></font></div>

<?php include("login.php");?>

<?php

}

?>

</body>

</html>

Menu

<?php

session_start();//demarre la session

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Analyse des activités de PL/UCM</title>

<style type="text/css">

*{padding:0; margin:0;}

body{font-size:62.5%; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;}

.menu{white-space:nowrap /*IE hact*/; float:left; width:100%;

background:rgb(225,225,225); color:rgb(0,0,0); font-size:130%; text-align:left}

.menu ul{list-style-type:none;}

.menu ul li{float:left; z-index:auto !important/*Non-IE6*/; z-index:1000/*IE6*/; border-right:solid 1px rgb(175,175,175);}

.menu ul li a{ float:none !important/*Non-IE6*/; float:left/*IE-6*/; display:block; height:2.1em; line-height:2.1em; padding:0 16px 0 16px; text-decoration:none; font-weight: normal; color:rgb(100,100,100)}

.menu ul li ul{display:none; border:none;}

/*Non-IE6 hovering*/

.menu ul li:hover{position:relative;}

.menu ul li:hover a{background-color:rgb(210,210,210); text-decoration: none; color:#0000FF}

.menu ul li:hover ul{display:block; width:10.0em; position:absolute; z-index:999; top:2.0em; margin-top:0.1em; left:0;}

.menu ul li:hover ul li a{white-space:normal; display:block; width:10.0em; height:auto; line-height:1.3em; margin-left:-1px; padding:4px 16px 4px 16px; border-left:solid 1px rgb(175,175,175);border-bottom:solid 1px rgb(175,175,175); background-color:rgb(237,237,237); font-weight:normal; color:rgb(50,50,50);}

.menu ul li:hover ul li a:hover{background-color:rgb(210,210,210); text-decoration:none; color:#0000FF;}

/*IE6 hovering*/

.menu table{position:absolute; top:0; left:0; border-collapse:collapse;}

.menu ul li a:hover{position:relative /*IE hack*/; z-index:1000/*IE hack*/; background-color:rgb(210,210,210); text-decoration:none; color:#0000FF;}

.menu ul li a:hover ul{display:block; width:10.0em; position:absolute; z-index:999; top:2.0em; left:0; margin-top:0.1em;}

.menu ul li a:hover ul li a{white-space:normal; display:block; width:10.0em; height:1px; line-height:1.3em; padding:4px 16px 4px 16px; border-left:solid 1px rgb(175,175,157); border-bottom:solid 1px rgb(175,175,175); background-color:rgb(237,237,237); font-weight:normal; color:rgb(50,50,50);}

.menu ul li a:hover ul li a:hover{background-color:rgb(210,210,210); text-decoration:none; color:#0000FF;}

@media print{.menu{float:left; width:900px; border:none; background:rgb(240,240,240); color:rgb(75,75,75); font-size:1.0em; font-size:130%;}}

.presentation

{

border-width:1px;/*Epaisseur de la bordure */

border-color:#3399FF;/*Couleur de la bordure */

border-collapse: collapse; /* Colle les bordures entre elles */

border-style:solid;/*Type de bordure */

}

</style>

<!--2e style commence la programmation en Java Script pour l'annimation de notre adresse URL.-->

<style>

.spanstyle {

position:absolute;

visibility:visible;

top:-50px;

font-size:10pt;

font-family:Arial;

font-weight:bold;

color:white;

}

body {

background-color: #0099CC;

}

.style10 {

color: #0033FF;

font-weight: bold;

}

</style>

<script>

/*

Ce script se nomme :

Texte qui suit la souris :-)

*/

var x,y

var step=10

var flag=0

var message='www.plucm.org '

message=message.split("")

var xpos=new Array()

for (i=0;i<=message.length-1;i++) {

xpos[i]=-50

}

var ypos=new Array()

for (i=0;i<=message.length-1;i++) {

ypos[i]=-50

}

function handlerMM(e){

x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX

y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY

flag=1

}

function makesnake() {

if (flag==1 && document.all) {

for (i=message.length-1; i>=1; i--) {

xpos[i]=xpos[i-1]+step

ypos[i]=ypos[i-1]

}

xpos[0]=x+step

ypos[0]=y

for (i=0; i<message.length-1; i++) {

var thisspan = eval("span"+(i)+".style")

thisspan.posLeft=xpos[i]

thisspan.posTop=ypos[i]

}

}

else if (flag==1 && document.layers) {

for (i=message.length-1; i>=1; i--) {

xpos[i]=xpos[i-1]+step

ypos[i]=ypos[i-1]

}

xpos[0]=x+step

ypos[0]=y

for (i=0; i<message.length-1; i++) {

var thisspan = eval("document.span"+i)

thisspan.left=xpos[i]

thisspan.top=ypos[i]

}

}

var timer=setTimeout("makesnake()",30)

}

</script>

</head>

<script>

for (i=0;i<=message.length-1;i++) {

document.write("<span id='span"+i+"' class='spanstyle'>")

document.write(message[i])

document.write("</span>")

}

if (document.layers){

document.captureEvents(Event.MOUSEMOVE);

}

document.onmousemove = handlerMM;

makesnake()

</script>

<!-- Copyright 2005 Macromedia, Inc. All rights reserved. -->

<title>Entertainment - Calendar</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<link rel="stylesheet" href="file:///C|/Program Files/EasyPHP1-8/www/mm_entertainment.css" type="text/css" />

<style type="text/css">

<!--

.style2 {color: #333333}

.style3 {font-weight: bold}

.style4 {color: #FF0000}

.style5 {

color: #FF0000;

font-family: Arial;

font-size: 12px;

}

.style7 {font-size: large}

.style9 {color: #FF0000; font-weight: bold; }

.style11 {

color: #FF0000;

font-style: italic;

font-weight: bold;

}

.style12 {font-size: 18px; color: #FF0000;}

-->

</style>

</head>

<body>

<body>

<?php if($_SESSION['log']!=$_SESSION['log1'])

{

}

if($_SESSION['pass']!=$_SESSION['pass1'])

{?>

<div align="center">

<font face="Times New Roman, Times, serif" size="2" color="red"><table width="650"><tr><td><div align="right"><u>Session de </u>:

<?php echo $_SESSION['sexe'];?>,

<?php echo $_SESSION['nom'];?> -

<?php echo $_SESSION['postnom'];?> -

<?php echo $_SESSION['prenom'];?> /

<u>son Téléphone est</u>: <?php echo $_SESSION['telephone'];?></div></td></tr></table></font>

<table class="presentation" border="2">

<tr>

<td>

<div class="menu">

<!--un menu de navigation-->

<ul>

<li><a href="login.php">Accueil</a></li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Les Agents<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="insertagent.php">Ajouter</a></li>

<li><a href="affichieragent.php">Affichier Agents</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Apprenants<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="apprenant.php">Ajouter</a></li>

<li><a href="affichierapprenants.php">Affichier Etudiants</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Production<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="produitsseule.php">Ajouter</a></li>

<li><a href="affichierlesproduits.php">Affichier les Produitions</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Charges<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="charge.php">Ajouter</a></li>

<li><a href="affichiercharges.php">Affichier Charges</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Les reçus<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="recu.php">Ajouter</a></li>

<li><a href="affichierrecu.php">Affichier</a></li>

<li><a href="rechercherrecu.php">Recherche Reçu</a></li>

<li><a href="lien.html">Bordereau</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">La Bibliothéque<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="livre.php">Ajouter Livre</a></li>

<li><a href="affichierauteur.php">Affichier les Auteurs</a></li>

<li><a href="emprunt.php">Ajouter emprunts histo</a></li>

<li><a href="affichierlesemprunts.php">Affichier emprunts historiques</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Discussion<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="accueil.php">Une Question</a></li>

<li><a href="lien.html">Rechercher</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Rapport Journalier<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="produits.php">faire le Rapport</a></li>

<li><a href="affichierrapport.php">Affihier Rapports</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<!--un menu de navigation avec sous-menus-->

<ul>

<li><a href="#">Accessoires<!--[if IE 7]><!--></a><!--<![endif]-->

<!--[if lte IE 6]><table><tr><td><![endif]-->

<ul>

<li><a href="calculatrice3.php">Calcule Simple</a></li>

<li><a href="lien.html">Update</a></li>

</ul>

<!--[if lte IE 6]></td></tr></table></a><![endif]-->

</li>

</ul>

<ul>

<li><a href="connexion.php">Deconnexion</a></li>

</ul>

</div>

</td>

</tr>

<tr>

<td><br />

<div align="center">Bienvenue !!!<br />

La Conception,Implémentation d'une base de données pour la gestion Général de Projet Limeté Université Cardinal Malula<br />

Et l'Administration de son Reseau à Distance sur Base d'outil Libre</div>

</td>

</tr>

</table>

<?php

}

else

{

include("connexion.php");

}

?>

<?php include("connecter.php");?>

</body>

</html>

Recherche

rechercherecu.php

<?php

session_start();//demarre la session

?>

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

<title>FAITES VOTRE RECHERCHE ICI</title>

<?php include("menu.php");?>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>

<body>

<p><center>FAITES VOTRE RECHERCHE ICI!</center></p>

<center>

<style type="text/css">

.contenu

{

border-width:3px;/*Epaisseur de la bordure */

border-color:red;/*Couleur de la bordure */

border-collapse: collapse; /* Colle les bordures entre elles */

border-style:solid;/*Type de bordure */

font-size:14px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

text-align:justify;

}

.contenu2

{

font-size:17px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

}

</style>

</head>

<html>

<head>

</head>

<body>

<form name="" method="post" action="rechercherrecu1.php">

<tr><td width="100" height="60">Récherche par nom:</td><td><input type="text" name="nom" value="" /></td><td>Postnom:</td><td><input type="text" name="postnom" value="" /></td><td></td></tr>

<tr><td colspan="3" height="30"><div align="center"><input type="submit" value="RECHERCHE DE REÇU" name="" /></div></td></tr>

</form>

</head>

</body>

</html>rechercherrecu1.php

Résultat de la recherche

<!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=iso-8859-1" />

</head>

<body>

<p><center><b>VOTRE PREUVE DE PAIEMANT!</b></center></p>

<p><center><h>=============================</h></center></p>

<center>

<style type="text/css">

.contenu

{

border-width:3px;/*Epaisseur de la bordure */

border-color:red;/*Couleur de la bordure */

border-collapse: collapse; /* Colle les bordures entre elles */

border-style:solid;/*Type de bordure */

font-size:14px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

text-align:justify;

}

.contenu2

{

font-size:17px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

}

</style>

<html>

<head>

<body>

<?php

If ($_POST['nom']!=NULL AND $_POST['postnom']!=NULL)

{

$nom= $_POST['nom'];

$postnom= $_POST['postnom'];

?>

<?php

echo'<table class="contenu" width ="70%">';

echo'<tr>';

echo'<td width="100" colspan ="5">';

echo'<b><center>Projet Limete Université Cardinal Malula</center></b>';

echo'<b><center>==========</center></b>';

echo'</td width="100" colspan="5">';

echo'<td width="100%" colspan ="5">';

echo'</td width="100" colspan="5">';

echo'</tr>';

echo'<tr>';

echo'<td colspan ="7">';

echo'<center><b>Imprimez votre preuve de paiement</b></center>';

echo'<center><b>===============================</b></center>';

echo'</td colspan="5">';

echo'</tr>';

mysql_connect("localhost","root","");

mysql_select_db("plucm");

$query5=mysql_query("SELECT* FROM recu,agent,apprenants,formations,categoriesap,monnaies WHERE apprenants.nom='$nom'AND apprenants.postnom='$postnom' AND recu.idagent=agent.idagent AND recu.idapprenant=apprenants.idapprenant AND recu.idformation=formations.idformation AND recu.idcategorie_ap=categoriesap.idcategorie_ap AND recu.idmonnaie=monnaies.idmonnaie");

mysql_close();

while($query6=mysql_fetch_array($query5))

{

echo'<tr>';

echo'<td colspan ="5">';

echo'<b>Nom Apprenant:</b>';

echo $nom;

echo'</td >';

echo'<td>';

echo'<b><center>Categorie:</center></b>';

echo '<center>';

echo $query6['categorie_ap'];

echo'</center>';

echo'</td>';

echo'</tr>';

echo'<table class="contenu" width ="70%">';

echo'<tr>';

echo'<td width="100" colspan ="5">';

echo'</td width="100" colspan="5">';

echo'</tr>';

echo'<tr>';

echo'<td width="100">';

echo'<b>DATE PAYE:</b>';

echo'</td>';

echo'</td>';

echo'<td width="100"colspan="2">';

echo'<b>MONTANT:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>FORMATION:</b>';

echo'</td>';

echo'<td width="100">';

echo'<center>Signature Percepteur</center>';

echo'</td>';

echo'</tr>';

echo'<tr>';

echo'<td>'.$query6['datepaye'].'</td>';

echo'<td>'.$query6['montantpaye'].'</td>';

echo'<td>'.$query6['monnaie'].'</td>';

echo'<td>'.$query6['lib_formation'].'</td>';

echo'</tr>';

echo'</table>';

}

}

else

echo"Veuillez entrer votre NOM ET POSTNOM CORRECT,si vous êtes apprenant au Projet Limete Université Cardinal Malula";

?>

</head>

</body>

</html>

L'affichage de toute la production

affichierlesproduits.php

<?php

session_start();//demarre la session

?>

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

<title>Formulaire des Apprenants de PLUCM</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>

<body>

<?php include("menu.php");?>

<p><center>Ceci est la liste des auteurs !</center></p>

<center>

<style type="text/css">

.contenu

{

border-width:3px;/*Epaisseur de la bordure */

border-color:red;/*Couleur de la bordure */

border-collapse: collapse; /* Colle les bordures entre elles */

border-style:solid;/*Type de bordure */

font-size:14px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

text-align:justify;

}

.contenu2

{

font-size:17px; font-family:Trebuchet MS, Verdana, Arial, Helvetica, sans-serif;

}

</style>

</head>

<html>

<head>

<title>voici tous les produits</title>

</head>

<body>

<?php

echo'<table border="2" width ="100%">';

echo'<tr>';

echo'<td width="100">';

echo'<b>Date:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Moniteur:</b>';

echo'</td>';

echo'</td>';

echo'<td width="100">';

echo'<b>Code Vendus:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Codes Restants:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Codes Servis:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Codes Perdus:</b>';

echo'</td>';

echo'<td width="100"colspan="2">';

echo'<b>Recette:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Sources:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Service:</b>';

echo'</td>';

echo'<td width="100">';

echo'<b>Commentaires:</b>';

echo'</td>';

echo'<td width="100"colspan="2">';

echo'<center><b>Action</b></center>';

echo'</td>';

echo'</tr>';

mysql_connect("localhost","root","");

mysql_select_db("plucm");

// --------------- Etape 1-----------------

// nous allons chercher à créer des pages et écrit les liens vers chacune des pages

// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page

$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)

// On récupère le nombre total de messages

$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM produits');

$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];

// On calcule le nombre de pages à créer

$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);

// Puis on fait une boucle pour écrire les liens vers chacune des pages

echo 'Page : ';

for ($i = 1 ; $i <= $nombreDePages ; $i++)

{

echo '<a href="affichierlesproduits.php?page=' . $i . '">' . $i . '</a> ';

}

mysql_connect("localhost","root","");

mysql_select_db("plucm");

// --------------- Etape 2 ---------------

// Maintenant, on va afficher les messages

// ---------------------------------------

if (isset($_GET['page']))

{

$page = intval($_GET['page']); // On récupère le numéro de la page indiqué dans l'adresse (affichierlesproduits.php?page=4)

}

else // La variable n'existe pas, c'est la première fois qu'on charge la page

{

$page = 1; // On se met sur la page 1 (par défaut)

}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL

$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM produits ORDER BY idproduit DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse))

{

}

mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)

mysql_connect("localhost","root","");

mysql_select_db("plucm");

$query5=mysql_query("SELECT* FROM produits,agent,monnaies,sources,moments WHERE

produits.idagent=agent.idagent AND produits.idsource=sources.idsource AND produits.idmonnaie=monnaies.idmonnaie AND produits.idmoment=moments.idmoment");

mysql_close();

while($query6=mysql_fetch_array($query5))

{

echo'<tr>';

echo'<td>'.$query6['datepro'].'</td>';

echo'<td>'.$query6['nom_agent'].'</td>';

echo'<td>'.$query6['codevendu'].'</td>';

echo'<td>'.$query6['coderestant'].'</td>';

echo'<td>'.$query6['coderecu'].'</td>';

echo'<td>'.$query6['codeperdu'].'</td>';

echo'<td>'.$query6['montantpro'].'</td>';

echo'<td>'.$query6['monnaie'].'</td>';

echo'<td>'.$query6['libsource'].'</td>';

echo'<td>'.$query6['libmoment'].'</td>';

echo'<td>'.$query6['commentaire'].'</td>';

echo'<td width="25">';

echo'<center><a href="modifier"><img src="../Plucm/fag.jpg"title="Modifier"/></a></center>';

echo'</td>';

echo'<td width="25">';

echo'<center><a href="modifier"><img src="../Plucm/fag.jpg"title="Supprimé"/></a></center>';

echo'</td>';

echo'</tr>';

}

echo'</table>';

?>

</p>

</head>

</body>

</html>

BIBLIOGRAPHIE

1. Ouvrages

· Frédéric Couchet et Benoît Sibaud, Enjeux des logiciels libres face à la privatisation de la connaissance,2005, éditions Charles Léopold Mayer

· Florent Latrive, Du bon usage de la piraterie : culture libre, sciences ouvertes . 2004, éditions Exils.

· Harvard University Press. The success of open source Steven Weber, 2006

· Jean-Paul Smets-Solanes et Benoît Faucon. Logiciels libres. Liberté, égalité, business., 1999, éditions Edispher.

· Linus Torvalds, David Diamond, Il était une fois Linux. L'extraordinaire histoire d'une révolution accidentelle.. 2001, éditions Osman Eyrolles Multimédia.

· Michael Kofler ( 2005), MySQL 5 : Guide de l'administrateur et du développeur ( ISBN 2212116330

· Perline, Thierry Noisette, La bataille du logiciel libre - Dix clés pour comprendre.. 2004, réédition augmentée 2006, éditions La Découverte.

· Philippe Aigrain, Cause commune de, 2005, éditions Fayard.

· Paul Dubois, Stefan Hinz, Carsten Pedersen ( 2004), MySQL - Guide officiel ( ISBN 2-7440-1782-5)

· Tribune Libre - Ténors de l'Informatique Libre. Sous la direction de Chris DiBona. 1999, Éditions O'Reilly.

2. Note de cours

Dido MBUYAMBA : Méthode d'Analyse Informatique, 2ème Graduat ARGBD, ESMICOM 2006 - 2007

MAVINGA: comception de systèmes d'informations, Cours 2ème Licence, ESMICOM 2007 - 2008

MANIONGA: Methode de Conduite de Projet Informatique, ESMICOM, année 2007-2008

MANIONGA: Initiation de Projet Informatique, 2ème Licence, ESMICOM 2007- 2008.

NTUMBA: Méthode de Recherche Scientifique, 2ème Licence, ESMICOM 2007 - 2008

OKIT'OLEKO: Technologie de l'Internet, L1info, ESMICOM 2006 - 2007

OKIT'OLEKO: Télématique, Ecole Supérieur de Métier le l'Informatique et de Commerce, 2005.-2006.

OKIT'OLEKO: Conception d'architecture de réseau, Ecole Supérieur de Métier le l'Informatique et de Commerce, 2006.-2007.

3. WEBIOGRAPHIE

http://fr.wikipedia.org/wiki/logiciel_libre

http://www.net-snmp.org

http://www.networkupstools.org

http://linux.developpez.com/cours/upsusb/

http://eu1.networkupstools.org/compat/stable.html

http://www.id.ethz.ch/people/allid list/corti/gnu software

http://www.snmptt.org

http://fr.wikipedia.org/wiki/logicil_libre

http://www.wtcs.org/snmp4tpc/getif.htm

http://www.met-chem.com/fr/services/

http://dictionnaire.phpmyvisites.net/definition-Software-13015.htm

Sun acquires MySQL, blogs.mysql.com

http://fr.wikipedia.org/wiki/Apache_HTTP_Server#Historique

http://fr.wikipedia.org/wiki/Apache_HTTP_Server#HistoriqueTABLE DE MATIERE

Chapitre 0. INTRODUCTION GENERALE 1

0. PRESENTATION DU PROJET 1

I. PROBLEMATIQUE ET HYPOTHESE 2

I.1. Problématique 2

I.2. Hypothèse 3

II. CHOIX ET INTERET DU SUJET 3

III. DELIMITATION DU SUJET 4

IV. METHODES ET TECHNIQUES UTILISEES 5

IV.2. Techniques 6

V. CAHIER DE CHARGE 6

VI. SUBDIVISION DU TRAVAIL 8

VII. PLANNING PREVISIONNEL DU PROJET 8

VIII. PLAN DU TRAVAIL 10

Chapitre 1. ORGANISATION DU TRAVAIL 11

I. TABLEAU DES ACTIVITES 13

Chapitre 2. ETUDE PREALABLE 19

PRESENTATION DE PL/UCM....................................................................20

ANALYSE DE L' EXISTANT........................................................................21

Présentation de Réseau utilisé au PLUCM......................................... 27

CRITIQUE DE L'EXISTANT.................................................................................32

PROPOSITION DE SOLUTION.............................................................................33

2.5. CHOIX DE SOLUTION 35

Chapitre 1. EXAMEN GENERAL DE LA THEORIE DES LOGICIELS LIBRES 37

1.0. DEFINTION ET APERCU DE LOGICILE LIBRE 37

1.0.1 Définition 37

1.0.2. Bref aperçu sur les logiciels libres 38

Chapitre 2. LE METHODE APPLICABLES POUR L'ADMINISTRATION DE RESEAUX 40

2.0. GENERALITE SUR L'ADMNISTRATION DE RESEAU 40

2.1. LES CONCEPTS DE SNMP 41

2.1.1. Introduction 41

Chapitre 3. MISE EN OEUVRE DE NET-SNMP SOUS LINUX 43

3.1. INSTALLATION DE NET-SNMP 44

3.1.1. Configuration et lancement de l'agent SNMP NET-SNMP 44

3.1.2. Tests de l'agent SNMP NET-SNMP 46

3.1.3. Présentation du protocole SNMP 50

Chapitre 4. UTILISATION DE SNMP AU PL/UCM 55

4.1. CONFIGURATION 55

4.1.1. Création d'un utilisateur v3 55

4.1.2. Le fichier snmpd.conf 55

Chapitre 5. ADMINSTRATION DE MATERIELS 57

5.1. LES CONTROLES DES UPS 57

5.1.1. La Connectique 57

5.1.2. Les Logiciels 58

5.1.3. Nagios dans tout cela 58

Chapitre 6. UTILISATION D'UN SCRIPT A DISTANCE VIA SNMP 60

6.1. DES PLUGINS SUPPLEMENTAIRES 60

6.2. LA CONFIGURATION DE L'AGENT SNMP 60

6.2.1. Définition de la commande et des services sur le serveur 60

Chapitre 7. LES TRAPS 62

7.1 UTILISATION DES TRAPS AVEC NAGIOS 62

7.2 CONFIGURATIONS 62

7.2.1 Coté client (l'agent) 62

7.2.2 Coté serveur 63

7.3 NAGIOS DOIT COMPRENDRE, SNMPTT L'AIDE. 63

Chapitre 1. CONCEPTION DES BASES DE DONNEES 69

I.0.INTRODUCTION 69

I.1. ETUDE CONCEPTIELLE 69

I.1.1. Définition 69

I.1.2. But 70

2.0 GENERALITES 70

2.0.1 Notions de base de données 70

2.0.2. Quelques définitions relatives aux bases de données 71

2.0.3. Caractéristiques d'une base de données 71

2.0.4. Objectifs d'une base de données 71

2.0.5. Quelques définitions de concepts 72

3.0.3. Conception de Base de données dans notre cas 73

4.0. QUELQUES ETATS EN SORTIES 89

4.0.1. Fiche Descriptive des sorties 89

Chapitre 2. ETUDE OPERATIONNELLE 92

2.1. GENERALITES 92

2.2. DESCRIPTION DE MATERIELS 92

2.2.1. Aspect Hardware 92

2.2.3. Aspect Software 92

Chapitre 3. SYSTEME DE GESTION DE BASE DE DONNEES (SGBD) UTILISE. 195

3.1. INTRODUCTION 95

3.2. CARACTERISTIQUES 95

3.3. SYSTEMES D'EXPLOITATION SUPPORTES 96

3.4. UTILISATION 196

3.7. QUELQUE SYSTEMES DE GESTION DE BASE DE DONNEES 97

3.8. SECURITE DE LA BASE DE DONNEES 97

3.9. CREATION DES BASES DE DONNEES ET DES TABLES POUR LE PLUCM 98

3.10. MODELE LOGIQUE DE TRAITEMENT 102

3.10.1. Definition 102

3.10.2. Présentation de menus 102

3.11. INTERFACE DE L'UTILISATEUR 103

4. MODELE PHYSIQUE DE DONNEES 106

4.1. Définition 106

4.2. Règle de passage du Modèle logique de données au Modèle Physique de données 106

4.3. Présentation du Modèle Physique de Données 107

Chapitre 1. PROGRAMMATION DE L'APPLICATION 109

1.1. DEFINITION 109

1.1.1. Choix de méthode de programmation 109

1.1.2. La programmation classique 109

Chapitre 2. UTILISATION DE PHP POUR NOTRE APPLICATION 118

2.1. INTRODUCTION 118

2.1. 1. Présentation des codes sources et des interfaces de l'application 122

CONCLUSION GENERALE............................................................ ...... .. 127

BIBLIOGRAPHIE 148

* 1 OKIT'OLEKO, note de cours de technologie de l'Internet, L1info, ESMICOM 2006 - 2007 p.32

* 2 NTUMBA, note de cours de Méthode de Recherche Scientifique, 2ème Licence, ESMICOM 2007 - 2008, P. 22

* 3 NTUMBA, Op. Cit, P. 23

* 4 NTUMBA, Op. Cit, P. 24

* 5 MAVINGA, Cours conception de systèmes d'informations, , 2ème Licence , ESMICOM 2007 - 2008, P. 12

* 6 NTUMBA, Op. Cit, P. 25

* * OKIT'OLEKO, Note de cours, Conception d'architecture de réseau informatique, ESMICOM, 2e Licence ARGBD, .2007-2008

* 2 MANIONGA, Note de Cours, Méthode de Conduite de Projet Informatique, ESMICOM, année 2007-2008

* 32 MANIONGA, Op. Cit., P. 13

* 7 MANIONGA, Cours de Initiation de Projet Informatique, 2ème Licence, ESMICOM 2007- 2008, P. 20

* 8 idem

* 9 MAVINGA, Op. Cit., P. 12

* 10 OKIT'OLEKO, Cours de Télématique, Ecole Supérieure de Métier le l'Informatique et de Commerce, 2005.-2006, P.12

* 0 http://fr.wikipedia.org/wiki/logicil_libre

* 1 idem

* 2 http://fr.wikipedia.org/wiki/logicil_libre

* 3 http://www.net-snmp.org

* 4 http://www.wtcs.org/snmp4tpc/getif.htm

* 5 http://www.networkupstools.org

* 6 http://www.id.ethz.ch/people/allid list/corti/gnu software

* 6 http://www.snmptt.org

* 3 http://www.met-chem.com/fr/services/

* 5 DONKING, Note de cours de base de données, ESMICOM, 2007-2008

* 6 idem

* 7 DONKING, Op. Cit, P. 149

* 8 DONKING, Op. Cit, P. 150

* 1 DONKING, note de cours Base de Données, année 2007-2008, ESMICOM

* 2LUFUNGULA, cours conception de base de donnée, année 2003-2004, UCM

* 3DONKING, Op. Cit., P.49

* 11 http://dictionnaire.phpmyvisites.net/definition-Software-13015.htm

* 1. Sun acquires MySQL, blogs.mysql.com

* 2. http://fr.wikipedia.org/wiki/Apache_HTTP_Server#Historique

* 11 Dido MBUYAMBA, Op. Cit., P.49

* 12 Pierre MORVAN, Dictionnaire Informatique, LAROUSSE, Paris 1991, P. 243

* 13 Dido MBUYAMBA, cours Programmation Orientée Objet sous DELPHI et INTERBASE, 1ER Licence ARGBD - RTM, ESMICOM 2006 -2007, P. 17

* 1 OKIT'OLEKO, cours Initiation à la Technologie de L'Internet L1, ESMICO,2006-2007






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius