Sunteți pe pagina 1din 83

RAPPORT de Projet de Fin d’Année

THEME : Développement s’un site web pour les jeunes


marocains nommé Affaires.ma en CakePHP

Réalisé par :

MANI Mohammed Adil

Encadré par :

Mr. ETTIFOURI Hassan


Mr. DAHANE Oualid
Mr. LAZAAR Mohammed

Année Universitaire : 2014/2015


Au terme de notre projet fin d’étude, je tiens à remercier toutes les personnes, qui
par leurs conseils, leurs suggestions ou par leur simple présence m’ont permis de rendre
mon travail aussi instructif et efficace que plaisant.

Je remercie tout spécialement mes encadreurs : Mr ETTIFOURI Hassan, Mr DEHANE


Ilyass et Mr LAZAAR Mohammed pour leur encadrement tout au long de ce projet, leur
patience, leur disponibilité et leurs conseils toujours avisés.

Je remercie également Mr Toumi BOUCHENTOUF qui m’as permis personnelement


de corriger toutes fausses idées concernant la gestion des projets que je croiyais inutile.

Enfin, mes remerciements vont à tous les enseignants de SUPMTI Oujda pour la
qualité de la formation qu'ils m’ont fournie et tous les membres du jury pour avoir accepté
de juger ce modeste travail.

Rapport de projet de fin d’année Page 2


Je dédie mon travail 

A celui qui m’a indiqué la bonne voie en me rappelant que la


volonté fait toujours les grands hommes…
A mon père.

A celle qui a attendu avec patience les fruits de sa bonne


éducation.
A la femme que je ne pourrai jamais payer ses sacrifices…
A ma mère.

A mon frère, ma sœur ainsi que toute ma famille avec tous mes
sentiment de respect, d’amour, de gratitude et de
reconnaissance.

A tous le corps proffesoral et administratif de SUPMTI Oujda.

A toutes l’équipe NEXT Generation IT.

A tous mes amis et tous ceux qui me sont chers …

Rapport de projet de fin d’année Page 3


I. PRÉSENTATION.................................................................................................................................................8
II. MODÈLE MERISE...............................................................................................................................................9
a) Dictionnaire de données..........................................................................................................................9
b) Modèle Conceptuel de Données (MCD)................................................................................................22
c) Modèle Logique de Données (MLD)......................................................................................................27

I. PRÉSENTATION...............................................................................................................................................33
II. APPLICATION SUR LE PROJET.............................................................................................................................33
a) Diagrammes de cas d’utilisation:..........................................................................................................35
b) Descriptiosn textuelles..........................................................................................................................38
c) Diagramme de séquence .....................................................................................................................45

I. INTRODUCTION...............................................................................................................................................49
II. TYPES DE VULNÉRABILITÉS ............................................................................................................................50
III. SIMULATION D’ATTAQUES................................................................................................................................51

II.

L’objectif principale de ce projet et de développer un site web nommé Affaires.ma


développé en CakePHP tous en incluant les pricipes de sécurité informatique dedans.

Rapport de projet de fin d’année Page 4


Ce site web permettera aux utilisateurs de trouver trop d’informations diverses sans
passer par plusieurs Site web : Les licences et Masters, les écoles des ingénieurs, les
locations de voitures, les oranisateurs des fêtes, les promotions des grandes surfaces et
encore plus.

Ce projet permettera au directeurs des écoles inscrits et aux responsables des


locations de voiture d’avoir une interface d’adminisatration sécirisé par un login et un mot
de passe afin de pouvoir gérer leurs informations.

Mot clés : CakePHP – Sécurité – BruteForce – XSS – SQLInjection – FileUpload –


HTML5 & CSS3.

Dans le cadre de projet de fin d’année, nous avons travaillé sur un site web sous le
nom de domaine Affaires.ma collectant toutes les nouveautés et informations qui
intéressent les marocains en général et surtout les jeunes dans leurs vie estudiantine et
professionnelle.

Affaires.ma est un site web dédié à tous ceux qui veulent trouver une promotion au
Maroc, une orientation pour les études ou bien des offres d’emplois, un annuaire et les
sociétés de locations de voitures par région avec une grille de disponibilité des voitures. Ce
site web va aider les visiteurs à l’organisation de leurs fêtes aussi en plus de ça Affaire.ma

Rapport de projet de fin d’année Page 5


vas offrir le service Allo Ouvrier pour la 1ere fois au Maroc.

Ce Projet, va offrir encore aux locations inscrites sur le site, une interface
d’administration qui leurs permettra de modifier leurs véhicules, les interventions réalisés
ainsi que la grille de disponibilité.

Pour réaliser un tel projet de telle grandeur, le suivie d’une méthodologie de gestion
d’une part et d’analyse et conception d’une autre part devient une obligation.

 La gestion du projet est une tâche primordiale pour pouvoir faire un suivi exacte et
juste pour l’avancement du projet, La méthodologie SCRUM est utilisée pour la
gestion de ce projet.
 La définition et la conception de la base de données sont l’une des étapes les plus
décisives dans la réalisation de notre projet, car elle représente la base de toute
l’application et elle est faite en utilisant MERISE.
 La modélisation du système à l’aide d’une bonne méthodologie d’analyse garantie
d’une part la cohérence des données et traitements et donc la validité d’une
application et d’autre part la pérennité des développements réalisés grâce à une
« maintenabilité » accrue, cette partie est réalisée par le langage de modélisation
UML.

Rapport de projet de fin d’année Page 6


Rapport de projet de fin d’année Page 7
I. Présentation
Pourquoi l'analyse conceptuelle? Qu'est-ce-que l'analyse conceptuelle?

Merise : est une méthode de conception, de développement et de réalisation de


projets informatiques. Le but de cette méthode est d'arriver à concevoir un système
d'information. La méthode MERISE est basée sur la séparation des données et des
traitements à effectuer en plusieurs modèles conceptuels et physiques. La séparation des
données et des traitements assure une longévité au modèle. En effet, l'agencement des
données n'a pas à être souvent remanié, tandis que les traitements le sont plus
fréquemment.

La méthode Merise date de 1978-1979, et fait suite à une consultation nationale


lancée en 1977 par le ministère de l'Industrie dans le but de choisir des sociétés de conseil
en informatique afin de définir une méthode de conception de systèmes d'information.

La situation

La situation est toujours ainsi au point de départ :

Un problème de gestion Un outil informatique


Un utilisateur doit décider, agir… dans son Un ordinateur + ses logiciels
organisation. Il a besoin d'information pour
résoudre un problème particulier. Il veut PC
automatiser certains traitements.

  L'usage de l'outil n'est pas immédiat ; une préparation est indispensable pour définir
une solution informatisée.
La construction méthodique d'une solution informatique repose sur deux principes :
- une progression par étapes
- la distinction de différents niveaux d'analyse

La démarche par étapes :

 L’analyse préalable

 La conception de la solution

 Le développement du projet

 La mise en œuvre

Rapport de projet de fin d’année Page 8


II. Modèle merise
a) Dictionnaire de données

Le dictionnaire de données : collecte l'ensemble des données qui seront utilisées en vérifiant
que chaque donnée est indivisible et indépendante des autres. La réalisation de ce
dictionnaire nécessite de :

 collecter l'ensemble des données.


 vérifier les synonymes et doublons : même donnée sous 2 termes différents.
 vérifier les homonymes : deux données différentes sous un même terme.
 vérifier les dépendances et les données calculées : une donnée peut être obtenue à
partir d'une autre ou d'un calcul.
 vérifier qu'il n'y a pas de compilation.
 donner un nom à chaque attribut.

Pour recenser les informations, on utilise essentiellement : 


 L’étude de documents
 Les entrevues
 Parfois les questionnaires 

Pendant la phase de conception, les données recueillies et spécifiées sont inscrites


dans un dictionnaire. Ce dictionnaire est un outil important car il constitue la référence
de toutes les études effectuées ensuite.

Nom Description Type de données Longueur


Table Locations
Id Identifiant de Entier
véhicule
Nom Nom de location Caractère variable(255) 255

Presentation Présentation de Text


location
Ville Ville de location Caractère variable(255) 255

Rapport de projet de fin d’année Page 9


Adresse Adresse de location Text

Tel Téléphone de Caractère variable(10) 10


location
Fix Fix de location Caractère variable(10) 10

Fax Fax de location Caractère variable(10) 10

Email Mail de location Caractère variable(25) 25

Map MAP de location Text

Photo Photo de location Text

Login Login de location Caractère variable(20) 20

Password Password de location Caractère variable(20) 20

Table véhicule
Id Identifiant de Entier
véhicule
Matricule Matricule de véhicule Caractère variable(255) 255

Marque Marque de véhicule Caractère variable(255) 255

Modele Modèle de véhicule Caractère variable(255) 255

Poids_vide Le poids vide de Entier


véhicule
Puissance Puissance de Entier
véhicule
Nbr_places Nombre de places Entier
supporté
Nbr_portes Nombre de portes Entier

Carburant Carburant de Caractère variable(255) 255


véhicule
Consomation_max Consommation Réel
maximale
Consomation_moy Consommation Réel
moyenne
Date_achat Date d’achat de Date
véhicule

Rapport de projet de fin d’année Page 10


Photo_face Photo de face Caractère variable(255) 255

Photo_arrière Photo arrière Caractère variable(255) 255

Photo_salon Photo Salon Caractère variable(255) 255

Photo_profil Photo Profil Caractère variable(255) 255

Dimention_pneu Dimention de pneu Entier

Crique Disponibilité de Boolean


crique
Poste Disponibilité de Boolean
poste
Alarme Disponibilité Boolean
d’alarme
Disponibilité Disponibilité de Boolean
véhicule
Location_id Identifiant de Entier
location

Table Assurance
Id_assurance Identifiant Entier
d’assurance
Numero_ordre Numéro d’ordre de Caractère variable(20) 20
l’assurance
Date_debut_assuran Date de début Date
ce d’activation
d’assurance
Date_fin_assurance Date de fin de Date
validité d’assurance
Prix Somme de paiement Entier

Nbr_places Nombre de places Entier


pour l’assurance
Validite Validité d’assurance, Boolean
la dernière assurance
est toujours la seule
valide.
Created Date d’ajout Date

Vehicule_id Num de véhicule Entier

Table contrôle technique


Rapport de projet de fin d’année Page 11
Id_ct Identifiant de contrôle Entier
technique
Identifiant Identifiant agence de Entier
contrôle technique
Type Type de contrôle Caractère variable(20) 20

Date_controle La date du contôle Date

Date_prochain_contrôle Date du prochain contrôle Date

Defaut-corrige_avec_visite Les défauts à corriger avec Text


demande de visite
Defaut_corrige_sans_visite Les défauts à corriger sans Text
demande de visite
Prix Les prix de visite Entier

Vehicule_id Numéro de véhicule Entier

Validite Validité de contrôle Entier

Created Date de création Date

Table Vidanges
Id Identifiant de vidange Entier

Date_vidange Date de vidange Date

Kilometrage Kilométrage de Entier


vidange
Kilometrage_vidang Kilométrage restant Entier
e pour vidange
Prix Prix de vidange Entier

Agence Agence de vidange Caractère variable(20) 20

Validite Validité de vidange Boolean

Vehicule_id Identifiant de véhicule Entier

Created Date de création Entier

Table vignettes
Id Identifiant de Entier
vignette
Numéro_ordre Numéro d’ordre de Caractère variable(20) 20

Rapport de projet de fin d’année Page 12


vignette
Date_paiement Date de paiement Date

Prix Prix de vignette Entier

Centre Centre de paiement Caractère variable(10) 10

Vehicule_id Identifiant de Entier


véhicule
Annee Année de paiement Entier

Table Enseignants
Id Identifiant Entier
d’enseignant
Nom Nom d’enseignant Caractère variable(25) 25

Presentation Présentation Text


d’enseignant
Photo Photo d’enseignant Entier

Tel Numéro de Caractère variable(10)


téléphone
d’enseignant
Mail Email d’enseignant Caractère variable(255) 255

Facebook Lien de profil Caractère variable(255) 255


facebook
Dn Date de naissance Date

Table Formations
Id Identifiant de Entier
formation
Titre Titre de formation Caractère variable(20) 20

Domaine Domaine de Caractère variable(20) 20


formation
Image Image principale de Text
formation
Enseignant_id Identifiant Entier
d’enseignant
Created Date de création Date

Description Description de la Text


formation
Duree Durée Total de la Caractère variable(20) 20

Rapport de projet de fin d’année Page 13


formation
Table Licences
Id Identifiant de licence Entier

Type Type de licence Caractère variable(20) 20

Ville Ville de licence Caractère variable(20) 20

Ecole Ecole de licence Caractère variable(20) 20

Domaine Domaine de licence Caractère variable(20) 20

Filière Filière de licence Caractère variable(20) 20

Created Date de création Date

Date_fin Date de fin Date


d’inscription
Description Description de la Text
licence
Presentation Présentation de la Text
licence
Condition Condition d’accès Text

Procedure Procédure Text


d’inscription
Pre_requis Prérequis de licence Text

Nb Nombre limites Entier

Dates Les dates Date


importantes
Logo Logo de l’université Text

Abrev Abréviation Caractère variable(20) 20

url Lien d’inscription Caractère variable(255) 255

Table Masters
Id Identifiant de master Entier

Type Type de master Caractère variable(20) 20

Ville Ville de master Caractère variable(20) 20

Ecole Ecole de master Caractère variable(20) 20

Rapport de projet de fin d’année Page 14


Domaine Domaine de master Caractère variable(20) 20

Filière Filière de master Caractère variable(20) 20

Created Date de création Date

Date_fin Date de fin Date


d’inscription
Description Description de la Text
master
Presentation Présentation de la Text
master
Condition Condition d’accès Text

Procedure Procédure Text


d’inscription
Pre_requis Prérequis de master Text

Nb Nombre limites Entier

Dates Les dates Date


importantes
Logo Logo de l’université Text

Abrev Abréviation Caractère variable(20) 20

url Lien d’inscription Caractère variable(255) 255

Table promotions
Id Identifiant de Entier
promotion
Photo Photo de promotion Text

De Source de promotion Caractère variable(25) 25

A Date de fin Date

Slogan Slogan de promotion Caractère variable(255) 255

Description Description de la Text


promotion
Domaine Catégories Text
concernées
Pdf PDF de promotion Caractère variable(255) 255

Surface_id Identifiant de grande Entier


surface

Rapport de projet de fin d’année Page 15


Table Surface
Id Identifiant des Entier
surfaces
Logo Logo de surface Caractère variable(255) 255

Nom Nom de surface Caractère variable(255) 255

Adresse Adresse de surface Caractère variable(255) 255

Fix Fix de surface Caractère variable(255) 255

Mail Mail de surface Caractère variable(255) 255

Type Type de surface Caractère variable(255) 255

Table Ecoles
Id Identifiant d’école Entier

Nom Nom de l’école Caractère variable(255) 255

Abrev Abréaviation d’école Caractère variable(255) 255

Photo_directeur Photo de directeur Caractère variable(255) 255

Mot_directeur Mot de directeur Text

Nom_directeur Nom de directeur Caractère variable(255) 255

Prensentation Présentation de Text


l’école
Organisation Organisation de Text
l’école
Domaines Domaines de Text
formations au sein
de l’école
Tel1 Téléphone 1 Caractère variable(10) 10

Tel2 Téléphone 2 Caractère variable(10) 10

Fix Fix de l’école Caractère variable(10) 10

Fax Fax de l’école Caractère variable(10) 10

Adresse Adresse de l’école Text

Map Map de l’école Text

Rapport de projet de fin d’année Page 16


Site Site web de l’école Caractère variable(255) 255

Email Email de l’école Caractère variable(255) 255

Photo1 Photo 1 pour slider Text

Photo2 Photo 2 pour slider Text

Photo3 Photo 3 pour slider Text

Photo4 Photo 4 pour slider Text

Photo5 Photo 5 pour slider Text

Photo6 Photo 6 pour slider Text

Ville Ville de l’école Caractère variable(255) 255

Table Filières
Id Identifiant de filière Entier

Duree Durée de formation Caractère variable(10) 10

Nom Nom de filière Caractère variable(255) 255

Ecole_id Identifiant de filière Entier

Table Organisations
Id Identifiant Entier
d’organisation
Nom Nom d’organisation Caractère variable(255) 255

Description Description Caractère variable(255) 255


d’organisation
Adresse Adresse Text
d’organisation
Tel Téléphone Caractère variable(10) 10
d’organisation
Fix Fix d’organisation Caractère variable(10) 10

Fax Fax d’organisation Caractère variable(10) 10

Email Email d’organisation Caractère variable(255) 255

Site Site web Caractère variable(255) 255


d’organisation

Rapport de projet de fin d’année Page 17


Logo Logo d’organisation Text Text

Photo1 Photo1 de slider Text

Photo2 Photo2 de slider Text

Photo3 Photo 3 de slider Text

Photo4 Photo 4 de slider Text

Photo5 Photo 5 de slider Text

Photo6 Photo 6 de slider Text

Created Date de création Date

Type Type d’organisation Caractère variable(255) 255

Ville Ville d’organisation Caractère variable(255) 255

Slogan Slogan d’organisation Caractère variable(255) 255

Table : Tables (Mise en place des tables)


Id Identifiant de mise Entier
en place
Organisation_id Identifiant Entier
d’organisateur de
fête
Prix Prix de Mise en place Entier

Photo Photo de mise en Text


Place
Titre Titre de mise en Caractère variable(255) 255
place
Table Vêtements
Id Identifiant de Entier
vêtement
Organisation_id Identifiant Entier
d’organisateur de
fête
Prix Prix de vêtement Entier

Photo Photo de vêtement Text

Titre Nomination de Caractère variable(255) 255


Vêtement

Rapport de projet de fin d’année Page 18


Table Gâteaux
Id Identifiant Entier

Titre Nomination du Caractère variable(255) 255


gâteau
Image Photo du gâteau Text

Organisation_id Identifiant de Entier


l’organisateur des
fêtes
Table Plats
Id Identifiant Entier

Titre Nomination du plat Caractère variable(255) 255

Image Photo du plat Text

Organisation_id Identifiant de Entier


l’organisateur des
fêtes
Table Serveurs
Id Identifiant de serveur Entier

Nom Nom du serveur Caractère variable(255) 255

Sexe Sexe du serveur Caractère variable(10) 10

Ville Ville du serveur Caractère variable(20) 20

Tel Téléphone du Caractère variable(10) 10


serveur
Valide Validité du serveur Boolean

Table Ouvriers
Id Identifiant d’ouvrier Entier

Nom Nom d’ouvrier Caractère variable(255) 255

Mission Mission de l’ouvrier Caractère variable(10) 10

Ville Ville du serveur Caractère variable(20) 20

Tel Téléphone d’ouvrier Caractère variable(10) 10

Rapport de projet de fin d’année Page 19


Valide Validité d’ouvrier Boolean

Table Ouvrier_demandes
Id Identifiant de Entier
demande
Nom Nom de demandeur Caractère variable(25) 25

Mission Mission d’ouvrier Caractère variable(25) 25


demandé
Tel Téléphone de Caractère variable(10) 10
demandeur
Email Email de demandeur Caractère variable(50) 50

Adresse Adresse de Text


demandeur
Habitation Type d’habitation Caractère variable(10) 10

Nature Nature d’entretien Caractère variable(10) 10

Description Description de Test


demande
Table Annuaires
Id Identifiant Entier

Nom Nom Caractère variable(25) 25

Presentation Présentation Text


d’élément d’annuaire
Ville Ville d’élément Caractère variable(10) 10
d’annuaire
Adresse Adresse d’élément Text
d’annuaire
Tel Téléphone d’élément Caractère variable(10) 10
d’annuaire
Fix Fixe d’élément Caractère variable(10) 10
d’annuaire
Fax Fax d’élément Caractère variable(10) 10
d’annuaire
Email Email d’élément Caractère variable(50) 50
d’annuaire
Map MAP d’élément Text
d’annuaire
Photo Photo d’élément Text
d’annuaire
Type Type d’élément Caractère variable(10) 10

Rapport de projet de fin d’année Page 20


d’annuaire
Table Captcha
Id Identifiant Captcha Entier

Image Numéro d’image Entier

Captcha Valeur de captcha Caractère variable(10) 10

Rapport de projet de fin d’année Page 21


b) Modèle Conceptuel de Données (MCD)

Un Modèle Conceptuel de Données est la formalisation de la structure et de la


signification des informations décrivant des objets et des associations perçus d'intérêt dans
le domaine étudié, en faisant abstraction des solutions et contraintes techniques
informatiques d'implantation en base de données.
Un MCD est, dans la culture francophone, exprimé en entité-relation Merise qui comporte
les concepts basiques suivants :

 Entité : modélisation d'un objet d'intérêt (en termes de gestion) pour l'utilisateur,
 Relation : modélisation d'une association entre deux ou plusieurs entités
 Cardinalités : modélisation des participations mini et maxi d'une entité à une relation
 Propriétés : modélisation des informations descriptives rattachées à une entité ou
une relation
 Identifiant : modélisation des propriétés contribuant à la détermination unique d'une
occurrence d’une entité.

Le MCD a pour but d’écrire de façon formelle les données qui seront utilisées par le
système d’information. Il s’agit donc d’une représentation des données, facilement
compréhensible, permettant de décrire le système d’information à l’aide d’entités. Notre
projet est composé de plusieurs systèmes, pour cela nous allons réaliser plusieurs MCD, un
MCD par domaine.

Après l’analyse des données nous avons obtenu les modèles entités relations suivants :

1. MCD pour le système de location des voitures.


2. MCD Pour le système des études et école en ligne.
3. MCD pour le système des organisateurs des fêtes.
4. MCD pour le système du service ALLO Ouvrier.
5. MCD pour le système d’e-Learning.

Rapport de projet de fin d’année Page 22


Locations Vignettes
Id Numérique <O> Id Numérique <O>
Nom Caractère (256) Vehicules Numero_ordre Caractère (20)
Presentation Texte 0,n 0,n Attacher Date_Paiement Date
Appartienir Id Numérique
Ville Caractère (256) 1,1 Prix Entier
1,1 matricule Caractère (256)
Adresse Texte Num_vignette Entier
marque Caractère (256)
Tel Caractère (10) modele Caractère (256) Centre Caractère (256)
Fix Caractère (10) poid-vide Numérique Annee Date
Fax Caractère (10) poid_totapuissancel Numérique Created Date
Email Caractère (256) nbr_places Numérique ...
Photo Texte nbr_portes Numérique
MAP Texte Vidanges
carburant Caractère (256)
Login Caractère (20) consomation_max Numérique Id Numérique
Password Caractère (20) consomation_moy Numérique Date_vidange Date
... Kilometrage Entier
date_achat Date Lier
photo_face Texte 0,n Kilometrage_vidange Entier
Assurances 1,1 Prix Entier
photo_profil Texte
Id Numérique <O> photo_salon Texte Agence Caractère (25)
Numero_ordre Caractère (20) photo_arriere Texte Validite Booléen
Date_debut Date 1,1 Etres crique Booléen Created Date
Date_fin Date Assurée 0,n roue_secour Booléen
Prix Entier poste Booléen Controle_techniques
nbr_places Numérique alarme Booléen Id Numérique <O>
Validite Booléen
Identifiant Caractère (256)
Created Date
0,n 0,n Type Caractère (256)
...
Date_controle Date
Dépendre Date_prochain Date
Avoir
Reservations Defaut_corrige_avec Texte
1,1 Defaut_corrige_sans Texte
Id Numérique 1,1 Resultat Texte
Date_debut Date
Prix Entier
Date_fin Date
Validite Booléen
...
Created Date
...

MCD pour le système de location de voitures

Rapport de projet de fin d’année Page 23


Licences
Masters Filiere Ecoles
Id Numérique <O> Id <Indéfini> <O>
Id Numérique Id Numérique <O> Type Caractère (256)
Type Caractère (256) Duree Entier Nom Caractère (256)
Ville Caractère (256) Ville Caractère (256)
Nom Caractère (256) Abrev Caractère (256)
Domaine Caractère (256) Domaine Caractère (256)
... Logo Texte
Filière Caractère (256) 1,1 Filière Caractère (256)
Photo_directeur Texte Created Date
Created Date Dependre Mot_directeur Texte
Date_fin Numérique Date_fin Numérique
0,n Nom_directeur Caractère (256)
0,n Lancer Description Texte
Description Texte Presentation Texte
1,1 Presentation Texte
Presentation Texte Organisation Texte
Conditions Texte Conditions Texte
Reglement Texte
Procedure Texte 1,1 Procedure Texte
Ouvrir Domaines Caractère (256) Modalite Texte
Modalite Texte 0,n Tel1 Caractère (10)
Pre_requis Texte Pre_requis Texte
Tel2 Caractère (10)
Dossier Texte Dossier Texte
Fix Caractère (10) Nb Entier
Nb Entier Fax Caractère (10) Dates Texte
Dates Texte Avoir Email Caractère (256)
Logo Texte Logo Texte
0,n Adresse Texte
Abrev Caractère (256) Abrev Caractère (256)
MAP Texte Diplomes Texte
Diplomes Texte SiteWeb Caractère (256)
Url Texte Url Texte
Photo1 Texte
... Appartenir Photo2 Texte
0,n Composer
Partenaires Date_debut Photo3 Texte
Id Numérique <O> Date_fin 0,n Photo4 Texte
... 1,1 0,n
Logo Texte Photo5 Texte
Specialite Caractère (256) 0,n Photo6 Texte
Nom Caractère (256) Ville Caractère (256) Formations Cours
Enseignant
... Id Numérique Id Numérique <O>
Id Numérique <O>
Titre Caractère (256) Titre Caractère (256)
Nom Caractère (256)
Animer Domaine Caractère (256) Duree Entier
Presentation Texte 0,n
Photo Texte 0,n Image Texte Formation_id Entier
Tel Caractère (256) Created Date Lien Texte
Description Texte Created Date
Mail Caractère (256)
Duree Entier ...
Facebook Caractère (256)
...
Dn Date
...

MCD Pour le système des études et école en ligne.

Rapport de projet de fin d’année Page 24


Organisations
Gateaux Faire Id Numérique <O>
Id Numérique <O> 1,1 Nom Caractère (256)
Titre Caractère (256) 0,n
Description Texte
Photo Texte Adresse Texte
... Tel Caractère (10)
Vetements Fix Caractère (10)
Id Numérique Presenter Fax Caractère (10)
Titre Caractère (256) 1,1 Email Caractère (256)
Photo Texte 0,n Site Caractère (256)
Taille Entier Logo Texte
Date_sortie Date Photo1 Texte
Photo2 Texte
Plats Photo3 Texte
Photo4 Texte
Id Numérique Exposer
Photo5 Texte
Titre Caractère (256) 1,1 Photo6 Texte
Photo Texte 0,n Created Date
Compositions Texte
... Type Caractère (256)
0,n
Tables Options Caractère (256)
Afficher Ville Caractère (256)
Id Numérique <O> 1,1 Slogan Caractère (256)
Titre Caractère (256) 0,n ...
Photo Texte Appartenir
Prix Entier 0,n
Nbr_places Entier
Couleurs Caractère (256) 1,1
...
Serveurs
Appartenir
Id Numérique <O>
Travailler Id Numérique
Nom Caractère (256)
Sexe Caractère (256) Titre Caractère (256)
0,n Date_debut Date
Photo Texte
Ville Caractère (256) Date_fin Date ...
Tel Caractère (10) ...
Valide Booléen

MCD pour le système des organisateurs des fêtes

Ouvriers Missions
Id Numérique <O> Avoir
Id Numérique <O>
Nom Caractère (256) 1,1 0,n Libelle Caractère (256)
Adresse Texte
Tel Caractère (256)
Ville Caractère (256)
0,n

Demander
Date_limite Date
1,1
Ouv_demandes
Id Numérique Etre Nature
Nom Caractère (256) Id Numérique <O>
Habitation Tel Caractère (256) 1,1 0,n
Avoir Type Libelle Caractère (256)
Id Numérique <O> Email Caractère (256)
0,n 1,1
Libelle Caractère (256) Adresse Texte
Description Texte

MCD pour le système du service d’ALLO Ouvrier

Rapport de projet de fin d’année Page 25


Entre dans
0,n 1,1

Ressource
Apprenant Ecole Filiere Id Numérique
Envoyer 1,1
Nom Numérique Id Numérique Id Numérique NomRessource Texte
0,n Prenom Texte Libelle Texte Category Texte
Nom Numérique Exister
DN Date Abrev Texte
1,1 Texte 0,n
0,n Tel Adresse Texte 0,n

Rapport de projet de fin d’année


Fix Texte Tel Texte Exercice
Message Appartenir
Adresse Texte Fix Texte Id Numérique
Id Numérique Texte Fax Texte Libelle Texte 1,1
0,n Email Lier
Objet Texte Photo Texte Mail Texte ...
Contenu Texte Login Texte Description Texte 0,n
0,n Password Texte Mot_directeur Texte Chapitre 0,n
1,1 ... Logo Texte Groupe
0,n Id Numérique

Page 26
Recevoir Map Texte Id Numérique Libelle Texte 1,1
... Libelle Texte ... Composer
... Cour
0,n
Enseignant 0,n Planifier Id Numérique

MCD pour le système E-learning


Etre Un Titre Texte
Id Numérique 0,n 0,n
1,1 Description Texte 0,n Date_creation Date
Fichier_pdf Texte
... 1,1 ...
Admin Session
Etre Un Seance 0,n
Id Numérique Id Numérique
1,1 Id Numérique
Poste Texte DateDep Date
Date_Dep Date Concerner
... Date_Fin Date
Jour Texte
Heriter Etudiant Tarif Numérique
HD Numérique
Id Numérique HF Numérique Module
1,1 0,n
CNE Caractère (10) ... Id Numérique
... Libelle Texte
Centenir
SommeHorraire Numérique
0,1
c) Modèle Logique de Données (MLD)

Le modèle logique de données consiste à décrire la structure de données utilisée sans


faire référence à un langage de programmation. Il s’agit donc de préciser le type de données
utilisées lors des traitements.

Il s'agit du passage entre le Modèle Conceptuel de Donnée et l'implémentation


physique de la base. Le MLD est lui aussi indépendant du matériel et du logiciel, il ne fait que
prendre en compte l'organisation des données. C'est d'ailleurs le point primordial de la
modélisation : si l'organisation des données est relationnelle (si elles sont "liées" entre elles),
alors le MLD est Relationnel et devient le MLDR, ou Modèle Logique de Donnée Relationnel.
Pour la petite histoire, le MLDR a été inventé par Codd en 1970, et repose sur la Théorie
Ensembliste...

A partir des MCD que nous avons élaborés, nous avons abouti aux MLD suivants :

1. MLD pour le système de location des voitures.


2. MLD Pour le système des études et école en ligne.
3. MLD pour le système des organisateurs des fêtes.
4. MLD pour le système du service ALLO Ouvrier.
5. MLD pour le système d’e-Learning.

- Les MLD ont été généré par le logiciel PowerAMC.

Rapport de projet de fin d’année Page 27


Locations Vignettes
Id Numérique <O> Numero_ordre Caractère (20)
Nom Caractère (256) Vehicules Date_Paiement Date
Presentation Texte Prix Entier
matricule Caractère (256)
Ville Caractère (256) Num_vignette Entier
marque Caractère (256)
Adresse Texte Centre Caractère (256)
modele Caractère (256)
Tel Caractère (10) Annee Date
poid-vide Numérique
Fix Caractère (10) poid_totapuissancel Numérique Attacher Created Date
Fax Caractère (10) Appartienir nbr_places Numérique #Vehicule_id Numérique
Email Caractère (256) nbr_portes Numérique FK_VEHICULE <pi>
Photo Texte carburant Caractère (256)
MAP Texte consomation_max Numérique Vidanges
Login Caractère (20)
consomation_moy Numérique Date_vidange Date
Password Caractère (20)
date_achat Date Kilometrage Entier
PK <ai1> photo_face Texte Kilometrage_vidange Entier
photo_profil Texte Lier
Prix Entier
photo_salon Texte Agence Caractère (25)
photo_arriere Texte Validite Booléen
Assurances crique Booléen Created Date
Numero_ordre Caractère (20) roue_secour Booléen #Vehicule_id Numérique
Date_debut Date poste Booléen
Date_fin Date alarme Booléen FK_Vehicule <pi>
Prix Entier Etres Assurée ...
#Location_id <Indéfini>
nbr_places Numérique PK <pi> Controle_techniques
Validite Booléen Fk_Location <ai>
Created Date Identifiant <pi> Caractère (256)
#Vehicule_id Entier Type Caractère (256)
Date_controle Date
FK_Vehicule <pi>
Date_prochain Date
Identifiant_2 <ai>
Dépendre Defaut_corrige_avec Texte
...
Defaut_corrige_sans Texte
Reservations Resultat Texte
Date_debut Date Avoir Prix Entier
Date_fin Date Validite Booléen
#Vechicule_Id Numérique Created Date
FK_Vehicule <pi> #Vehicule_id Entier
FK_VEHICULE <pi>
...

MLD pour le système de location des voitures.

Rapport de projet de fin d’année Page 28


Licences
Masters Filiere Ecoles
Id <pi> <Indéfini>
Id <pi,fi> Numérique Id <pi,fi> Numérique Id <pi> Numérique
Type Caractère (256)
Type Caractère (256) Duree Entier Nom Caractère (256)
Ville Caractère (256) Nom Ville Caractère (256)
Caractère (256) Abrev Caractère (256)
Domaine Caractère (256) Ecole_id Domaine Caractère (256)
Numérique Logo Texte
Filière Caractère (256) ... Filière Caractère (256)
Photo_directeur Texte
Created Date Created Date
Mot_directeur Texte
Date_fin Numérique
Date_fin Numérique Nom_directeur Caractère (256)
Dependre Description Texte
Description Texte Presentation Texte
Presentation Texte
Presentation Texte Organisation Texte
Conditions Texte
Conditions Texte Reglement Texte
Procedure Texte Lancer Procedure Texte
Domaines Caractère (256)
Modalite Texte Modalite Texte
Ouvrir Tel1 Caractère (10)
Pre_requis Texte Pre_requis Texte
Tel2 Caractère (10)
Dossier Texte Dossier Texte
Avoir Fix Caractère (10)
Avoir Nb Entier
Nb Entier Fax Caractère (10)
Par_Id <pi,fi1> Numérique Dates Texte
Dates Texte Email Caractère (256)
Ecole_Id <pi,fi2> Numérique Logo Texte
Logo Texte Adresse Texte
... Abrev Caractère (256)
Abrev Caractère (256) MAP Texte
Diplomes Texte
Diplomes Texte SiteWeb Caractère (256)
Url Texte Avoir Url Texte
Appartenir Photo1 Texte
#Ecole_id Numérique Appartenir #Ecole_Id Numérique
Photo2 Texte
... Ens_Id <pi,fi2> Numérique ...
Photo3 Texte
Ecole_Id <pi,fi1> Numérique
Partenaires Photo4 Texte
Date_debut Date
Photo5 Texte
Id <pi> Numérique <O> Date_fin Numérique
Photo6 Texte
Logo Texte
Ville Caractère (256)
Specialite Caractère (256)
Appartenir
Nom Caractère (256) Cours
... Formations
Enseignant Id <pi> Numérique
Id <pi> Numérique Composer Titre Caractère (256)
Id <pi> Numérique
Animer Animer Animer Titre Caractère (256) Duree Entier
Nom Caractère (256) Domaine Caractère (256)
Ens_Id <pi,fi1> Numérique Lien Texte
Presentation Texte Image Texte
Id <pi,fi2> Numérique Created Date
Photo Texte Created Date
... #Formation_id Entier
Tel Caractère (256) Description Texte ...
Mail Caractère (256) Duree Entier
Facebook Caractère (256) ...
Dn Date
...

MLD Pour le système des études et école en ligne.

Rapport de projet de fin d’année Page 29


Organisations
Gateaux Id_organisation <pi> Numérique <O>
Faire Nom Caractère (256)
Id <pi> Numérique <O>
Id_organisation <fi> Numérique <O> Description Texte
Titre Caractère (256) Adresse Texte
... Tel Caractère (10)
Vetements Fix Caractère (10)
Fax Caractère (10)
Id <pi> Numérique <O>
Email Caractère (256)
Id_organisation <fi> Numérique <O>
Site Caractère (256)
Titre Caractère (256) Appartenir
Logo Texte
Photo Texte
Presenter Photo1 Texte
Taille Entier
Photo2 Texte
...
Date_sortie Date
Photo3 Texte
Plats Photo4 Texte
Id <pi> Numérique <O> Exposer Photo5 Texte
Id_organisation <fi> Numérique <O> Photo6 Texte
Titre Caractère (256) Created Date
Photo Texte Type Caractère (256)
... Options Caractère (256)
Tables Ville Caractère (256)
Id <pi> Numérique <O> Slogan Caractère (256)
Id_organisation <fi> Numérique <O> Afficher ...
Titre Caractère (256)
Photo Texte
Prix Entier Travailler
Nbr_places Entier
...
Serveurs
Appartenir
Id <pi> Numérique <O> Travailler Id <pi> Numérique
Nom Caractère (256)
Sexe Caractère (256) Travailler Id_organisation <pi,fi2> Id_organisation <fi> Numérique
Ville Caractère (256) Id <pi,fi1> Titre Caractère (256)
Date_debut ...
Tel Caractère (10)
Valide Booléen Date_fin
...

MLD Pour le système des organisateurs des fêtes

Ouvriers Missions
Id <pi> Numérique <O> Id_mission <pi> Numérique <O>
Id_mission <fi> Numérique <O>
Libelle Caractère (256)
Nom Caractère (256) Avoir Date_limite Date
Adresse Texte ...
Tel Caractère (256) Demander
Ville Caractère (256)
...
Ouv_demandes
Id <pi,fi1> Numérique <O>
Id_mission <fi2> Numérique <O> Nature
Nat_Id <fi3> Numérique <O> Etre
Id <pi> Numérique <O>
Habitation Nom Caractère (256) Libelle Caractère (256)
Id <pi> Numérique <O> Avoir Type Tel Caractère (256) ...
Libelle Caractère (256) Email Caractère (256)
Adresse Texte
Description Texte

MLD Pour le système de service ALLO Ouvrir

Rapport de projet de fin d’année Page 30


Apprenant Message
Nom Texte Filiere Id <pi> Numérique <O>
Prenom Texte Id Numérique <O> Objet Texte
DN Date Ecole Libelle Texte Contenu Texte
Tel Texte Groupe Id_Ecole Numérique id_destinateur Numérique
Fix Texte Id <pi> Numérique <O> id_destinataire Numérique
Nom Texte Id <pi> Numérique <O> Pk_Filiere <ai1>
Adresse Texte FK_Ecole <ai2> Pk_Message <pi>
email Texte Abrev Texte Libelle Texte
Adresse Texte id_filiere Texte FK_Apprenant1 <ai1>
photo Texte FK_Apprenant2 <ai2>
login Texte Tel Texte Pk_Groupe <pi>
Fix Texte FK_Filiere <ai>
Password Texte
Fax Texte
Pk_Apprenant <pi> Mail Texte Cour Chapitre
Description Texte id <pi> Numérique <O> Id <pi> Numérique <O>
Mot_directeur Texte Titre Texte Libelle Texte
Logo Texte Seance Date_creation Date Id_cour Numérique
Map Texte fichier_pdf Texte
Id <pi> Numérique <O> PK_Chapitre <pi>

Rapport de projet de fin d’année


PK_Ecole <pi> Jour Texte id_enseignant Numérique FK_Cour <ai>
Date_dep Date id_module Numérique
HD Numérique Pk_Cour <pi>
Enseignant HF Numérique Fk_enseignant <ai1>
id_enseignant Numérique Fk_Module <ai2> Exercice
Id <pi> Numérique <O>
id_cour Numérique
Description Texte Id <pi> Numérique <O>
id_groupe Numérique
id_apprenant Numérique Libelle Texte

Page 31
PK_Seance <pi> Type Texte
Pk_Enseignant <pi> Module
FK_Cour <ai1> Id_chapitre Numérique
FK_Apprenant <ai> Id <pi> Numérique <O>
FK_Groupe <ai2>
Pk_Exercice <pi>
FK_Enseigant <ai3> Libelle Texte
Admin FK_Chapitre <ai>
SommeHoraire Numérique
id <pi> Numérique <O>

MLD Pour le système d’e-learning


Session Pk_Module <pi>
Poste Texte
id_apprenant Numérique id <pi> Numérique <O>
Pk_Admin <pi> Date_dep Date S_M Ressource
... Date_fin Date id_module <pi> Numérique <O> id <pi> Numérique <O>
Etudiant id_session <pi> Numérique <O>
id_session <pi> NomRess Texte
Id <pi> Numérique <O> Tarif Numérique Id_exercice Numérique
CIN Caractère (12) Pk_S_M <ai1> Pk_Ressource <pi>
Id_Apprenant Numérique FK_Session <ai2> Fk_Exercice <ai>
Pk_etudiant <pi> FK_Module <ai3>
Fk_Apprenant
... <ai> Identifiant_4
... <pi>
Rapport de projet de fin d’année Page 32
I. Présentation
Les diagrammes d’UML, sont d’une utilité variable selon les cas, ne sont pas
nécessairement tous produits à l’occasion d’une modélisation.

Les plus utiles pour la maîtrise d’ouvrage sont les diagrammes d’activités, de cas
d’utilisation, de classe, d’objet, de séquence et d’états-transitions qui seront produit dans ce
dossier.

Les diagrammes de composants, de déploiement et de communication sont surtout utiles


pour la maîtrise d’œuvre à qui ils permettent de formaliser les contraintes de la réalisation et
la solution technique, dont on va produire quelques un.

La notion Objet

La programmation orientée objet consiste à modéliser informatiquement un


ensemble d'éléments d'une partie du monde réel (que l'on appelle domaine) en un
ensemble d'entités informatiques. Ces entités informatiques sont appelées objets. Il s'agit de
données informatiques regroupant les principales caractéristiques des éléments du monde
réel (taille, la couleur, ...).
La difficulté de cette modélisation consiste à créer une représentation abstraite, sous forme
d'objets, d'entités ayant une existence matérielle (chien, voiture, ampoule, ...) ou bien
virtuelle (sécurité sociale, temps, ...).

Les méthodes Objet

La modélisation objet consiste à créer une représentation informatique des éléments du


monde réel auxquels on s'intéresse, sans se préoccuper de l'implémentation, ce qui signifie
indépendamment d'un langage de programmation. Il s'agit donc de déterminer les objets
présents et d'isoler leurs données et les fonctions qui les utilisent. Pour cela des méthodes
ont été mises au point. Entre 1970 et 1990, de nombreux analystes ont mis au point des
approches orientées objets, si bien qu'en 1994 il existait plus de 50 méthodes objet.
Toutefois seules 3 méthodes ont véritablement émergé :

Rapport de projet de fin d’année Page 33


 La méthode OMT de Rumbaugh
 La méthode BOOCH'93 de Booch
 La méthode OOSE de Jacobson (Object Oriented Software Engineering)

a) Diagramme de cas d’utilisation


Le diagramme de cas d’utilisation représente la structure des grandes fonctionnalités
nécessaires aux utilisateurs du système et partitionne les besoins fonctionnels du système.

Chaque cas d'utilisation contient un ou plusieurs scénarios qui définissent comment le


système devrait interagir avec les utilisateurs (appelés acteurs) pour atteindre un but ou une
fonction spécifique d'un travail. Un acteur d'un cas d'utilisation peut être un humain ou un
autre système externe à celui que l'on tente de définir.

Les cas d'utilisation tentent d'éviter tout jargon technique et essayent au contraire
d'adopter le langage de l'utilisateur final ou de l'expert du domaine. Les cas d'utilisations
sont souvent écrits à la fois par les analystes, les utilisateurs finaux ou un expert. En UML,
chaque cas d'utilisation est représenté au sein d'un diagramme de cas d'utilisation, chacun
des scénarios de celui-ci étant décrit par un ou plusieurs diagrammes dynamiques :
diagrammes d'activités, de séquence, diagrammes de communication ou d'états-transitions.

Avantages

Les cas d'utilisation sont efficaces pour le recueil des exigences sur la base des
scénarios d'utilisation d'un système car ils se focalisent sur les interactions acteurs / système
selon les choix de leurs utilisateurs. Ils permettent également de préparer les tests de
recette basés sur l'utilisation du système.

Par contre, ils masquent les règles métier derrière les interactions acteurs / système.
Cette « invisibilité directe » des règles cause des problèmes d'accès direct à ces dernières
lorsqu'on est amené à les faire évoluer suite aux changements des besoins.

Rapport de projet de fin d’année Page 34


 Diagramme de cas d’utilisation partie public :

Figure : Use case partie public

- Toutes les relations sans stéréotype sont des relations de types Extends.

Rapport de projet de fin d’année Page 35


 Diagramme de cas d’utilisation pour l’e-learning

Rapport de projet de fin d’année Page 36


a) Description textuelle :
Définir les scénarios de chaque cas d’utilisation ce qui expose de façon détaillée le
dialogue entre les acteurs et les cas d’utilisation.

Scénario

Pour donner une autre définition du cas d’utilisation, on peut dire que c’est une
collection de scénario de succès ou d’échec qui décrit la façon dont un acteur particulier
utilise un système pour atteindre une objectif.

Pour détailler la dynamique du cas d’utilisation, la procédure la plus évidente


consiste à recenser de façon textuelle toutes les interactions entre les acteurs et le système.
Le cas d’utilisation doit avoir un début et une fin clairement identifiés. Il faut aussi préciser
les variantes possibles tout en essayant d’ordonner séquentiellement les descriptions afin
d’améliorer leur lisibilité.

Un scénario est une suite spécifique d’interactions entre les acteurs et le système à
l’étude. On peut dire que c’est une « instance » du cas d’utilisation, un chemin particulier
dans sa combinatoire.

Objectifs

Décrire succinctement le contexte et les résultats attendus du cas d’utilisation.

Pré conditions

Les Pré conditions définissent ce qui doit être vrai en amont du cas d’utilisation pour
que celui-ci puisse démarrer. Elles ne sont pas testées à l’intérieur du cas d’utilisation, mais
sont tenus pour acquises. Souvent, un pré condition implique que le scénario nominal d’un
autre cas d’utilisation s’est déroulé normalement. Certains prés conditions triviales n’ont pas
besoin d’être mentionnées.

Post conditions

Les post conditions définissent ce qui doit être vrai lorsque le cas d’utilisation se
termine avec succès, qu’il s’agisse du scénario nominal ou d’un scénario alternatif.

Scénario nominal

Il s’agit là du scénario principal qui doit se dérouler sans incident et qui permet
d’aboutir au résultat souhaité.

Le cas d’utilisation « Identification  »


Titre : identification

Rapport de projet de fin d’année Page 37


Objectif : Identification d’un administrateur

Acteur Principal :Administrateur ou bien responsable de location.

Acteur secondaire :---------------

Pré conditions :Administrateur ou responsable déjà inscrit

Post conditions : Identification correcte pouvoir accéder au panneau de configuration.

Scénario nominal
1. Cliquer sur se connecter
2. Saisir le Login et mot de passe
3. Valider la saisie.
4. Le système vérifie le login et passe
5. Le système détermine l’utilisateur.
6. Le système affiche le menu général.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire de connexion une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Ajouter Véhicule  »


Titre : Ajouter véhicule

Objectif : Ajout d’un véhicule

Acteur Principal : Responsable de location.

Acteur secondaire : ---------------

Pré conditions : Responsable authentifié.

Post conditions : Ajout correcte d’un véhicule.

Scénario nominal
1. Cliquer sur Ajouter véhicule
2. Le système affiche le formulaire d’ajout

Rapport de projet de fin d’année Page 38


3. Remplir le formulaire
4. Le système vérifie les informations et leurs formes
5. Le système Upload les photos
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Ajouter Organisateur de fêtes»


Titre : Ajouter organisateur

Objectif : Ajout d’un organisateur

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Ajout correcte d’un organisateur.

Scénario nominal
1. Cliquer sur Ajouter organisateur
2. Le système affiche le formulaire d’ajout
3. Remplir le formulaire
4. Le système vérifie les informations et leurs formes
5. Le système Upload les photos
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Ajouter Ecole»


Titre : Ajouter école

Rapport de projet de fin d’année Page 39


Objectif : Ajout d’une école

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Ajout correcte d’une école.

Scénario nominal
1. Cliquer sur Ajouter école
2. Le système affiche le formulaire d’ajout
3. Remplir le formulaire
4. Le système vérifie les informations et leurs formes
5. Le système Upload les photos
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Ajouter Licence»


Titre : Ajouter Licence

Objectif : Ajout d’une licence

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Ajout correcte d’une licence.

Scénario nominal
1. Cliquer sur Ajouter licence
2. Le système affiche le formulaire d’ajout

Rapport de projet de fin d’année Page 40


3. Remplir le formulaire
4. Le système vérifie les informations et leurs formes
5. Le système Upload les photos
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Ajouter Master»


Titre : Ajouter Master

Objectif : Ajout d’un Master

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Ajout correcte d’un Master.

Scénario nominal
1. Cliquer sur Ajouter Master
2. Le système affiche le formulaire d’ajout
3. Remplir le formulaire
4. Le système vérifie les informations et leurs formes
5. Le système Upload les photos
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Rapport de projet de fin d’année Page 41


Le cas d’utilisation « Ajouter Formation en ligne»
Titre : Ajouter formation en ligne

Objectif : Ajout d’une formation

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Ajout correcte d’une formation.

Scénario nominal
1. Cliquer sur Ajouter formation
2. Le système affiche le formulaire d’ajout
3. Remplir le formulaire
4. Le système vérifie les informations et leurs formes
5. Le système Upload les photos
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Ajouter Cours»


Titre : Ajouter Cour

Objectif : Ajout d’un cours

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Ajout correcte d’un cours.

Scénario nominal

Rapport de projet de fin d’année Page 42


1. Afficher liste des formations disponibles
2. Cliquer sur ajouter cour pour la formation.
3. Le système affiche le formulaire d’ajout.
4. Remplir le formulaire
5. Le système vérifie les informations et leurs formes
6. Le système Enregistre dans la Base de données.
7. Le système affiche un message de confirmation.

Scénario alternatif
1. Erreur de saisie
2. Le Système affiche le formulaire d’ajout une nouvelle fois ( Etape 2 )

Le cas d’utilisation « Afficher résultat Master»


Titre : Afficherrésultat Master

Objectif : Affichaged’un résultat master

Acteur Principal : Administrateur

Acteur secondaire : ---------------

Pré conditions : Administrateur authentifié.

Post conditions : Affichage correcte du résultat d’un Master.

Scénario nominal
1. Cliquer sur Afficher résultat
2. Le système affiche la liste des Maters
3. L’administrateur clique sur le Master Concerné
4. Le système Modifie l’attribut résultat à true
5. Le système Enregistre dans la Base de données.
6. Le système affiche un message de confirmation.

Scénario alternatif
1. Pas des scénarios alternatifs

Rapport de projet de fin d’année Page 43


b) Diagramme de séquence :
Après la réalisation du diagramme de cas d’utilisation, on va produire à chaque
description textuelle un diagramme de séquence (Sd) qui permet de représenter les
communications entre objets selon un point de vue temporel, on y met l’accent sur la
chronologie des envois de messages.

On montre ces interactions dans le cadre d'un scénario d'un Diagramme des cas
d'utilisation. Dans un souci de simplification, on représente l'acteur principal à gauche du
diagramme, et les acteurs secondaires éventuels à droite du système. Le but étant de décrire
comment se déroulent les actions entre les acteurs ou objets.

Les périodes d'activité des classes sont symbolisées par des rectangles.

Plusieurs types de messages (actions) peuvent transiter entre les acteurs et objets.

 message simple : le message n'a pas de spécificité particulière d'envoi et de


réception.
 message avec durée de vie : l'expéditeur attend une réponse du récepteur pendant
un certain temps et reprend ses activités si aucune réponse n'a lieu dans un délai
prévu.
 message synchrone : l'expéditeur est bloqué jusqu'au signal de prise en compte par
le destinataire. Les messages synchrones sont symbolisés par des flèches barrées.
 message asynchrone : le message est envoyé, l'expéditeur continue son activité que
le message soit parvenu ou pris en compte ou non. Les messages asynchrones sont
symbolisés par des demi-flèches.
 message dérobant : le message est mis en attente dans une liste d'attente de
traitement chez le récepteur.

L’ensemble des diagrammes de séquence sont les suivants :

Rapport de projet de fin d’année Page 44


Rapport de projet de fin d’année Page 45
1. Introduction
Le Web est devenu un lieu où on peut échanger des informations, mais il est
également devenu un marché à part entière pour la vente et l’achat de biens
matériels.
Les acteurs de ce nouveau marché ont besoin de sécurité sous tous ses
aspects, tels que « la protection de la confidentialité, de l’intégrité, de
l'authentification et de la disponibilité de l’information ». Pour :
 Avoir la confiance des utilisateurs
 Garder la bonne réputation du site et/ou de l’application web
 Augmenter le nombre des utilisateurs/visiteurs de l’apps web
 Avoir plus des clients et augmenter son chiffre d’affaire

Prise de présentation :   FAILLES DE SECURITE DES APPLICATIONS WEB de Mr ETTIFOURI El Hassane

Pour de très nombreuses entreprises, la sécurité des applications web est un


problème clairement sous-estimé. Le risque est cependant bien réel et les
conséquences peuvent avoir des conséquences désastreuses tant d'un point de vue
financier mais aussi d'image de marque.

Les premières attaques réseau exploitaient des vulnérabilités liées à


l'implémentation des protocoles de la suite TCP/IP. Avec la correction progressive de
ces vulnérabilités les attaques se sont décalées vers les couches applicatives et en
particulier le web, dans la mesure où la plupart des entreprises ouvrent leur système
pare-feu pour le trafic destiné au web. 
Le protocole HTTP (ou HTTPS) est le standard permettant de véhiculer les pages
web par un mécanisme de requêtes et de réponses. Utilisé essentiellement pour
transporter des pages web informationnelles (pages web statiques), le web est
rapidement devenu un support interactif permettant de fournir des services en ligne.
Le terme 
d'« application web » désigne ainsi toute application dont l'interface est accessible à
travers le web à l'aide d'un simple navigateur. Devenu le support d'un certain nombre
de technologies (SOAP, Javascript, XML RPC, etc.), le protocole HTTP possède
désormais un rôle stratégique certain dans la sécurité des systèmes d'information. 

Dans la mesure où les serveurs web sont de plus en plus sécurisés, les attaques

Rapport de projet de fin d’année Page 46


se sont progressivement décalées vers l'exploitation des failles des applications web. 

Ainsi, la sécurité des services web doit être un élément pris en compte dès leur
conception et leur développement.

Types de vulnérabilités :

Schéma explicatif : Type de vulnérabilités.

Les vulnérabilités des applications web peuvent être catégorisées de la manière suivante :
 Vulnérabilités du serveur web : Ce type de cas est de plus en plus rare car
au fur et à mesure des années les principaux développeurs de serveurs web ont
renforcé leur sécurisation.
 Manipulation des URL, consistant à modifier manuellement les paramètres
des URL afin de modifier le comportement attendu du serveur web, CakePHP fait l’URL
Re-Writing automatiquement.
 Exploitation des faiblesses des identifiants de session et des mécanismes
d'authentification.
 Injection de code HTML et Cross-Site Scripting.
 Injection de commandes SQL et encore plus.

Rapport de projet de fin d’année Page 47


Le principe de base à retenir d'une manière générale lors de tout
développement informatique est qu'il ne faut pas faire confiance aux données
envoyées par le client. 

Ainsi, la quasi-totalité des vulnérabilités des services web est liée aux
négligences des concepteurs, ne faisant pas de vérifications sur le format des données
saisies par les utilisateurs.

Nous allons traiter dans cette partie les attaques suivantes :


 SQL injection
 XSS
 Brute force
 File Upload

2. Simulation d’attaques
1.SQL injection

 Définition :

Comme son nom l'indique, cette attaque peut être faite en utilisant des
requêtes SQL. De nombreux développeurs web ne sont pas conscients de la façon dont
un attaquant peut manipuler les requêtes SQL. SQL-Injection peut être fait sur une
application web qui ne filtre pas les entrées de l'utilisateur et les fiducies correctement
quel que soit l'utilisateur fournit. L'idée de l'injection SQL est de faire la demande
d'exécuter des requêtes SQL indésirables.

 Exemple

La plupart des applications Web ont une page de connexion. Donc, Supposons
un code PHP, avec lequel nous avons réalisé cette interface.

Rapport de projet de fin d’année Page 48


Lorsque l'utilisateur saisie le login et mot de passe, il sera vérifié dans la page
login.php qui testera l’existence des valeurs POST puis exécutera une requête SQL en
se basant sur les valeurs saisies.

La requête dans le code ci-dessus est vulnérable à SQL-Injection. La requête


SQL est conçue pour correspondre à la connexion donnée et mot de passe (PWD) avec
la base de données. Il fonctionnera correctement si l'utilisateur fournit la connexion et
le mot de passe.
Mais un attaquant peut concevoir l'entrée comme suit:
Dans le champ de nom d'utilisateur, au lieu de fournir un nom d'utilisateur l'attaquant
peut saisir les caractères suivants. << ‘ or 1=1 ; -- >>

Rapport de projet de fin d’année Page 49


L'attaquant va laisser le champ de mot de passe vide.
Lorsque les clics d’attaquant soumettent, les détails seront affichés à login.php.
Dans login.php la requête sera formulée comme suit:

Celle ci-dessus est une requête SQL valide. - et le caractère de commentaire.


Ainsi, les déclarations après - seront traitées comme des commentaires et ne seront
pas exécutées. Maintenant. Donc on va avoir une simple requête comme celle-ci :

Ceci renverra vrai et donnera "Login Success" message.

 Solution :
Le seul moyen éprouvé pour protéger un site web contre les attaques par
injection SQL, est d'utiliser des paramètres SQL.
Les paramètres SQL sont des valeurs qui sont ajoutés à une requête au moment
de l'exécution, d'une manière contrôlée.

Les paramètres sont représentés dans l'instruction SQL par un <<? >>

Rapport de projet de fin d’année Page 50


2. Cross-site Scripting (XSS)

 Définition

XSS est très similaire à SQL-Injection. Avec SQL-Injection nous avons exploité la
vulnérabilité par injection de requêtes SQL comme entrées de l'utilisateur. Dans XSS,
nous injectons le code (essentiellement côté client scripting) au serveur distant.
Attaques XSS sont classés en deux types:
- Non-Persistent : Le script est souvent intégré dans un URL est exécuté sans
être stocké sur un serveur.
- Persistent : C’est lorsque le script est stocké sur le serveur externe (base de
données).
Il est donc récupéré et exécuté à tout moment sur le site par n’importe quel
utilisateur.

 Exemple

Rapport de projet de fin d’année Page 51


Comment savoir si mon site est faillible ?

Lorsque vous transmettez des données (commentaires, postes d’articles,


recherche d’un terme etc.), si un script transmis comme:

<script type="text/javascript">alert('test');</script>

S’il s’exécute, c’est-à-dire que si la boite de dialogue « test » apparait, le site est
faillible. Donc le hacker peut exécuter des scripts, même des requêtes PHP sur votre
site.

 Solution :

Il faut absolument utiliser les fonctions PHP htmlspecialchars() qui filtre les '<'
et '>', htmlentities ou strip_tags() qui filtre toutes les entités html.

Rapport de projet de fin d’année Page 52


Ces fonctions doivent être utilisées sur des entrées utilisateurs qui s’afficheront
plus tard sur notre site.

3. Brute force

 Définition :
Un mot de passe et la cryptographie : attaque qui ne cherche pas à déchiffrer
toutes les informations, mais continuer à essayer une liste de mots de passe différents,
des mots ou des lettres. Par exemple, une attaque par force brute simple peut avoir un
dictionnaire de tous les mots ou les mots de passe couramment utilisés et parcourir
ces mots jusqu'à ce qu'il gagne l'accès au compte. Une attaque par force brute plus
complexe consiste à essayer chaque combinaison de touches dans un effort pour
trouver le mot de passe correct qui déverrouille le cryptage. En raison du nombre de
combinaisons possibles de lettres, de chiffres et de symboles, une attaque de force
brute peut prendre beaucoup de temps pour terminer. Le type de chiffrement utilisé
(64 bits, 128 bits ou 256 bits) peut avoir un impact sur la durée d’attaque.
 Exemple

Dans notre exemple on va utiliser un programme nome Fireforce sur le navigateur


Firefox. Sur le champ de mot de passe (mot de passe correcte est 129), on va générer
notre dictionnaire sur les mots de passes.

Rapport de projet de fin d’année Page 53


:

 Solution
Les mesures suivantes peuvent être utilisées pour se défendre contre les
attaques par force brute:
▪ Exiger les utilisateurs d'avoir des mots de passe complexes
▪ Limiter le nombre de fois qu'un utilisateur peut tenter de se
connecter.

Rapport de projet de fin d’année Page 54


▪ Bloquer les utilisateurs qui dépassent le nombre maximal de
tentatives de connexion.
▪ Utilisation de CAPTCHA : dans notre cas nous avons développé
notre propre système CAPTCHA en PHP et Javascript pour éviter
et empêcher les rebots ayant la possibilité de lire les CAPTCHA
connus d’attaquer notre site web, exemple : Authentification

4.Formulaire d’upload

 Définition :
Un formulaire d'upload est un formulaire permettant d'envoyer des fichiers sur
le serveur d'un site Web tel que des images, des fichiers Word, Excel.... Utilisé par un
pirate, l'envoie de fichier sur site via formulaire est de loin le moyen permettant de
faire le plus de dégâts. Dans le cas où son contrôle serait négligé ou mal réalisé, celui-ci
offre la possiblilité d'envoyer des fichiers PHP directement sur le serveur et fournit au
pirate une passerelle d'accès direct sur le serveur qui héberge le site.
 Exemple :
Principe de piratage d'un formulaire upload :
La méthode la plus couramment utilisée pour faire passer un script PHP sur un
serveur via un formulaire d'upload est l'usurpation du type MIME (Internet Media Type
ou encore content type), le faite de renommer un fichier par (monfichier.jpg.php) …
En effet, si l'on ne touche à rien et que l'on laisse la requête HTTP se poursuivre
normalement alors le code suivant aura l'effet souhaité soit d'arrêter le script et
afficher le message d'erreur. Le fichier n'est pas une image.

Mais certains utilisateurs mal intentionnés n'hésitent pas à remplacer Content-


Type: application/x-httpd-php par Content-Type:image/jpeg. Là, tout le monde
comprend que le code n'affichera pas d'erreur car le content type est bien de type jpeg
alors que le fichier envoyé est un fichier PHP.

Rapport de projet de fin d’année Page 55


On upload le shell c99.php

Puis, On tape l’adresse du shell :

Et Finalement on obtient toutes les informations sur le site, plus les droits de
modification et suppression des documents…

Rapport de projet de fin d’année Page 56


 Solution
Il existe beaucoup de possibilités pour sécuriser un formulaire d'upload que ce
soit dans le cadre d'un upload d'image ou encore un upload de fichier (un exemple
tout bête consiste à ouvrir le fichier (fopen, file) et à vérifier l'absence de balise <?
php<? ?> dans le fichier).
La vérification des extensions est la solution utilisée dans ce projet.

Rapport de projet de fin d’année Page 57


Rapport de projet de fin d’année Page 58
1. Introduction
Dans le projet Affaires.ma, plusieurs technologies Web seront utilisées dans le but de
présenter une application Web des plus intéressantes autant du point de vue de l’utilisateur, pour la
convivialité du site, que du point de vue du développeur, pour l’exploration de technologies
émergentes. Avant de pouvoir commencer le développement, il est important de bien comprendre
ces technologies afin de pouvoir les utiliser à leur plein potentiel. Voici donc, dans les sections
suivantes, une introduction à CSS, HTML5, JavaScript et jQuery, Ajax, PHP5, Framework Symphony et
le Design Pattern MVC.

2. Langages et FrameWork Utilisés :

Rapport de projet de fin d’année Page 59


 HTML5 

HTML5 est la dernière version de HTML, développé par le W3C, en collaboration avec le
WHATWG. Cette nouvelle version a été créée pour améliorer les fonctionnalités se rapportant aux
médias. Étant donné que ces derniers prennent de plus en plus de place dans le Web, il est normal
que cette nouvelle version en prenne compte.

De plus, la version précédente, HTML4, date de 1999, une dizaine d’années plus tôt. Il était donc
plus que temps que HTML se mette à jour, car beaucoup de choses ont changé sur le Web depuis ce
temps. Bien que plusieurs fureteurs Web commencent à se mettre à jour vis-à-vis les nouveaux
éléments de HTML5, celui-ci n’est pas encore à une version finale.

Le code HTML en général sert à structurer un document de page Web. C’est un langage de balise
de texte. Il est le complément des CSS, car on retrouve dans un document HTML toutes les
informations qui seront présentes sur la page Web, tandis que le CSS ajoutera une mise en forme à
ces informations. Pour ce qui est de HTML5 plus spécifiquement, il a été conçu de manière à faciliter
l’intégration de multimédia dans les pages Web. Donc, on retrouve de nouvelles balises et contrôles,
tels que des éléments audio et vidéo. Avec ces ajouts, on peut donc faire beaucoup plus de choses
seulement avec le langage HTML et utiliser moins de modules d’extensions (plug-ins).

 CSS3

Le CSS est apparu pour la première fois en 1994. Il a été inventé par HåkonWium Lie, un
Norvégien d’origine, qui est aujourd’hui le directeur technique d’Opera Software. Ce langage de
programmation a été créé dans le but de permettre aux auteurs d’établir eux-mêmes la mise en
forme des pages Web qu’ils créaient dans le langage HTML. Comme à cette époque rien n’existait
pour effectuer ce travail, CSS vient combler le vide. De plus, la raison pour laquelle CSS a été créé
plutôt que d’ajouter des fonctionnalités de style au langage HTML déjà existant pour les pages Web
est que l’on voulait utiliser HTML uniquement pour la structure du document. Aujourd’hui, le W3C en
définit les standards.

L’objectif principal de ce langage est de permettre la séparation entre la mise en forme et la


structure d’un document d’une page Web. De plus, en définissant toute la mise en forme dans un
fichier séparé, cela évite d’avoir à la redéfinir à chaque nouvelle page, ce qui permet donc une
uniformisation du site Web.

CSS3 a été utilisé dans ce projet, dans plusieurs parties, comme titre exemple :
l’inportation d’un Font pour éviter le problème d’abscence de ce dérnier sur l’ordinateur de
l’utilisateur :

Fichier bootstrap.css

Rapport de projet de fin d’année Page 60


 JavaScript&JQUERY

JavaScript et la bibliothèque jQuery sont de plus en plus utilisés dans le domaine du


développement Web. Ces technologies permettent d’exécuter du code directement dans le
navigateur.

JavaScript est un langage de programmation de script inventé en 1995 par Brendan Eich qui
travaillait alors chez Netscape Communications Corporation. Ce langage est utilisé pour ajouter de
l’interaction aux pages Web.

Au début de l’année 2006, une bibliothèque JavaScript libre est apparue, jQuery, dans le but de
simplifier l’utilisation du langage JavaScript. Aujourd’hui, une bonne partie du développement
JavaScript utilise jQuery.

L’objectif du JavaScript, mais plus précisément de jQuery, est de rendre plus simple l’utilisation
du JavaScript. Le cadre d’application jQuery contient des fonctionnalités comme le parcours et la
modification du DOM, l’ajout d’événements, des effets et des animations, la manipulation
dynamique des feuilles de style, le support de la technologie Ajax et la possibilité d’ajouter des plug-
ins. La bibliothèque jQuery permet de rendre les applications Web encore plus riches en contenu en
ajoutant des effets visuels.

Javascript&Jquery ont été utilisé dans la plupart des pages du projet, leurs utilisation est
primordiale. Exemple d’utilisation :

o Slider
o Validation des formulaires
o Validation du CAPTCHA
o Exécution d’AJAX.
o Effets de FadeIn&FadeOut
o Effet du Hover sur le menu.

 AJAX

Ajax est le nom court pour le groupe de technologies connues sous le nom
AsynchronusJavascript and Xml. Son utilisation principale est de permettre au code client d'accéder à
des fonctionnalités ou des données du serveur de manière asynchrone. De cette façon, les pages
peuvent être mise à jour sans avoir à recharger complètement la page.

Ajax n’est pas officiellement une technologie, mais plutôt l’utilisation du Javascript ou jQuery de
manière à se connecter au serveur en arrière-plan.

Rapport de projet de fin d’année Page 61


Dans les années 1990, la grande majorité des pages Web étaient affichées avec du HTML. Cette
façon de faire commençait à s'essouffler, car elle n'était pas mesure de donner une expérience à la
hauteur des attentes des utilisateurs. Le premier chargement asynchrone de donnée a été pratiqué
avec l’apparition des Java Applets dans les années 1995. En 1999, Microsoft met au point le premier
objet Ajax au point dans un contrôle ActiveX que seul Internet Explorer supportait correctement.
Quelque temps après, les autres fureteurs emboitent le pas et c’est dans les années 2000 avec
l’arrivée des applications comme Outlook Web Access (2000), Gmail (2004) et Google Maps (2005)
que la technologie prend vraiment son envol.

La méthode Ajax permet d’envoyer des requêtes aux serveurs et lorsque les réponses sont
retournées, on réalise une action particulière. Les données envoyées et reçues sont sous la forme
XML et JSON. De plus, il est possible d’agir sur le style d’une page Web avec Ajax en modifiant
certains attributs de la feuille de style CSS.

Ajax a été utilisé dans plusieurs parties pour :

o Remplir des listes déroulantes.


o Charger la messagerie de CHAT sans chargement de page.
o Affichage des sous catégories d’une catégorie.

 PHP5

Le PHP est l’un des langages de scripts permettant au contenu d’une page de se modifier
dynamiquement. Le code réalisé dans ce langage est contenu dans un fichier HTML, ses sections sont
interprétées par le serveur avant d’être transmises au fureteur du client. Le développement majeur
est maintenant supporté par le PHP Group sous la licence PHP. Cet outil de programmation trône au
sommet des langages Web les plus utilisés en 2010. Il est l’outil par excellence pour un nouveau venu
dans le monde d’Internet. Le PHP est devenu la référence dans le monde du web grâce de sa
gratuité, sa facilité et le nombre grandissant et le faible coût des hébergements qui souffre à travers
Internet.

Les bases de cette technologie ont vu le jour en 1994, lorsque le programmeur RasmusLerdorf
met sur pied une bibliothèque pour faciliter le développement de pages Internet. Ces scripts étaient
écrits dans le langage C (CGI) et offraient la possibilité de traiter des formulaires électroniques et de
communiquer avec une base de données. Cette première implémentation fut nommée le PHP/FI, elle
permettait de donner un aspect dynamique au Web. La première version officielle a été publiée au
mois de juin 1995.

L’objectif principal de ce langage est de rendre un site Web dynamique. PHP remplit ce but de
plusieurs façons. Tout d’abord, il donne la possibilité aux développeurs d’accéder à des données
d’une base de données avant d’afficher la page à l’utilisateur. Ensuite, il permet de conserver un état
de la connexion entre le client et le serveur. Il peut, de cette façon, afficher des informations propres
à chacun des utilisateurs. De nos jours, il tend à devenir un langage de script côté serveur comme ces
plus proches compétiteurs. De plus en plus d’outils permettent de faciliter le développement d’une
application complète, avec des bibliothèques et des cadres d’applications.

Rapport de projet de fin d’année Page 62


PHP Native était utilisé pour le développement de site web e-learning.

 CakePHP

CakePHP est un framework PHP qui propose une architecture MVC et des outils
essentiels afin de concevoir rapidement une petite application web ou un simple blog. Basé
sur Ruby on Rails et avec une philosophie de développement (Conventions over
configurations), il a toujours su se faire une petite place parmi les grands framework comme
Laravel, Symfony ou Zend.

Longtemps décrié en raison de son choix de rétro compatibilité avec PHP 4, ce dernier a
tourné une page de son histoire en annonçant la stabilité de sa version 3.0.

Le frameworkCakePHP fournit une base robuste pour votre application. Il peut


gérer tous les aspects, de la requête initiale de l’utilisateur et son cheminement jusqu’au
rendu final de la page web. Et puisque le framework suit les principes du MVC, il vous
permet de facilement personnaliser et offre la plupart des aspects de votre application.

Le framework fournit aussi une structure organisationnelle basique, des noms de


fichier jusqu’aux noms des tables de la base de données, en gardant toute votre
application cohérente et logique. Ce concept est simple mais puissant. Suivez les
conventions et vous saurez toujours exactement où les choses se trouvent et comment
elles sont organisées.

Extrait de documentation officielle de CakePHP

Rapport de projet de fin d’année Page 63


 Design Pattern MVC

L'architecture Modèle/Vue/Contrôleur (MVC) est une façon d'organiser une interface


graphique d'un programme. Elle consiste à distinguer trois entités distinctes qui sont, le
modèle, la vue et le contrôleur ayant chacun un rôle précis dans l'interface.

L'organisation globale d'une interface graphique est souvent délicate. Bien que la façon
MVC d'organiser une interface ne soit pas la solution miracle, elle fournit souvent une
première approche qui peut ensuite être adaptée. Elle offre aussi un cadre pour structurer
une application.

Dans l'architecture MVC, les rôles des trois entités sont les suivants.

Modèle : données (accès et mise à jour)

Vue : interface utilisateur (entrées et sorties)

Contrôleur : gestion des événements et synchronisation

o Rôle du modèle

Rapport de projet de fin d’année Page 64


Le modèle contient les données manipulées par le programme. Il assure la gestion de
ces données et garantit leur intégrité. Dans le cas typique d'une base de données, c'est le
modèle qui la contient.

Le modèle offre des méthodes pour mettre à jour ces données (insertion suppression,
changement de valeur). Il offre aussi des méthodes pour récupérer ses données. Dans le cas
de données importantes, le modèle peut autoriser plusieurs vues partielles des données. Si
par exemple le programme manipule une base de données pour les emplois du temps, le
modèle peut avoir des méthodes pour avoir, tous les cours d'une salle, tous les cours d'une
personne ou tous les cours d'une groupe de Td.

o Rôle de la vue

La vue fait l'interface avec l'utilisateur. Sa première tâche est d'afficher les données
qu'elle a récupérées auprès du modèle. Sa seconde tâche est de recevoir tous les actions de
l'utilisateur (clic de souris, sélection d'une entrées, boutons, …). Ses différents événements
sont envoyés au contrôleur.

La vue peut aussi donner plusieurs vues, partielles ou non, des mêmes données. Par
exemple, l'application de conversion de bases a un entier comme unique donnée. Ce même
entier est affiché de multiples façons (en texte dans différentes bases, bit par bit avec des
boutons à cocher, avec des curseurs). La vue peut aussi offrir la possibilité à l'utilisateur de
changer de vue.

o Rôle du contrôleur

Le contrôleur est chargé de la synchronisation du modèle et de la vue. Il reçoit tous


les événements de l'utilisateur et enclenche les actions à effectuer. Si une action nécessite
un changement des données, le contrôleur demande la modification des données au modèle
et ensuite avertit la vue que les données ont changé pour que celle-ci se mette à jour.
Certains événements de l'utilisateur ne concernent pas les données mais la vue. Dans ce cas,
le contrôleur demande à la vue de se modifier.

Dans le cas d'une base de données des emplois du temps. Une action de l'utilisateur
peut être l'entrée (saisie) d'un nouveau cours. Le contrôleur ajoute ce cours au modèle et
demande sa prise en compte par la vue. Une action de l'utilisateur peut aussi être de
sélectionner une nouvelle personne pour visualiser tous ses cours. Ceci me modifie pas la
base des cours mais nécessite simplement que la vue s'adapte et offre à l'utilisateur une
vision des cours de cette personne.

3.Outils utilisés

Rapport de projet de fin d’année Page 65


 PHP Designer

PhpDesigner est un ensemble intégré de développement Internet.

Créé en 1998, il a depuis lors été régulièrement réécrit pour intégrer chaque nouvelle
génération de logiciels Internet. Il contient de nombreuses fonctionnalités de type PHP,
HTML, CSS, JavaScript, etc.

Le logiciel autorise la création complète d'une vitrine Internet, la personnalisation d'un


site existant ou encore le développement de nouvelles applications Internet.

Il est étudié dans de nombreuses facultés pour l'apprentissage des langages Internet,
dont le HTML, le PHP et le CSS. Il offre une ergonomie adaptée et un espace de travail
personnalisable. Il crée des applications Internet,il assure la réalisation des projets. Il a été
conçu pour optimiser le développement de sites web, seul ou en équipe, la correction du
code (le débogage), et le suivi (le maintien) des projets Internet.

Pour ce projet, nous avons utilisé la version 7 de PHPDesigner.

 Power AMC

PowerAMC est un logiciel de conception créé par la société SDP, qui permet de


modéliser les traitements informatiques et leurs bases de données associées.
Créé par SDP sous le nom AMC*Designor, racheté par Powersoft, ce logiciel est
produit par Sybase depuis le rachat par cet éditeur en 1995. Hors de France, la version
internationale est commercialisée par Sybase sous la marque PowerDesigner.
PowerAMC permet de réaliser tous les types de modèles informatiques. Il reste un
des seuls qui permet de travailler avec la méthode Merise. Selon Riff News, cela permet
d'améliorer la modélisation, les processus, le coû t et la production d'applications.
Les différents types de modèles

Modèle Description

Fournit une représentation formelle des données nécessaires à la


Modèle Conceptuel de gestion d'une entreprise ou à l'exercice d'une activité professionnelle.
Données (MCD) Il est ensuitedérivé en modèle physique directement exploitable par
un SGBDR.

Modèle Libre (MLB) Permet de modéliser graphiquement selon les besoins : architecture
du système et des applications, scénarios de cas d'utilisation des

Rapport de projet de fin d’année Page 66


applications, organigrammes, ou même utiliser sa propre méthode.

Permet d'utiliser des objets dont l'interaction produit certaines


Modèle Orienté Objet
opérations et qui constituent dans leur ensemble un système
(MOO)
d'informations. Dans Power AMC, le standard UML est utilisé.

Spécifie les modalités de mise en œuvre physique d'une base de


Modèle Physique de données. Le MPD est directement dépendant du SGBD cible et permet
Données (MPD) ainsi de traiter les contraintes relatives à l'accès et au stockage des
données.

À l'aide de son diagramme et de son arborescence, une vue globale et


schématique de tous les éléments composant le fichier XML est
Modèle XML (MSX)
obtenue. Cette vue est très utile pour comprendre, vérifier et modifier
la structure complexe d'un fichier XML.

Permet de répliquer des objets depuis une base de données source


Modèle de Fluidité de vers un ou plusieurs moteurs de réplication ou bases de données. Ce
l'Information (MFI) modèle a pour but de fournir une représentation globale de l'ensemble
des réplications.

Modèle documentaire utilisé pour répertorier et décrire les besoins du


Modèle de Gestion des
client qui doivent être satisfaits lors d'un processus de
Exigences (MGX)
développement.

Peut être utilisé comme un document de base pour toute analyse


Modèle de Processus orienté-objet, pour décrire les collaborations entre partenaires de
Métiers (MPM) même niveau et pour modéliser le processus interne à une
organisation.

Spécifie la façon dont les données sont traitées dans le système


Modèle de Traitements
d'information. ces modèles peuvent être importés depuis le logiciel
Merise (MTM)
spécialisé méthodologie Merise.

Rapport de projet de fin d’année Page 67


Modèle d'Architecture La modélisation d’architecture d’entreprise permet d’analyser et de
d'Entreprise (MAE) documenter l’architecture de votre organisation.

4. Captures d’écran
a. Acceuil Affaires.ma

b. Liste des écoles d’ingénieurs

c. Service Allo Ouvrier

Rapport de projet de fin d’année Page 68


d. Passer une demande urgente pour un ouvrier

e. Grille de disponibilité de véhicules

Rapport de projet de fin d’année Page 69


f. Interface d’authentification de location

g. BackOffice

Rapport de projet de fin d’année Page 70


h. Login pour E-learning

i. Erreur de Login

Rapport de projet de fin d’année Page 71


j. Modification d’information d’école

k. Formulaire d’unscription

Rapport de projet de fin d’année Page 72


l. Liste des formations ( enseignant )

m. Modification de profil

Rapport de projet de fin d’année Page 73


n. Messagerie

o. Passage de reclamation
Rapport de projet de fin d’année Page 74
Rapport de projet de fin d’année Page 75
Rapport de projet de fin d’année Page 76
I. Présentation ( GUIDE de SCRUM )
Scrum : un cadre de travail permettant de répondre à des problèmes complexes et
changeants, tout en livrant de manière productive et créative des produits de la plus grande
valeur possible.

Scrum est utilisé depuis le début des années 1990 pour gérer le développement de
produits complexes. Scrum n’est pas en soi un processus ni une méthode de développement
de produits; c’est un canevas pour l’application de divers procédés et techniques de
développement.

Scrum met en évidence l’efficacité relative des pratiques de gestion et de


développement de produit en place, de sorte que ces dernières puissent être améliorées.

Scrum se compose de plusieurs éléments que sont l’Équipe Scrum et ses rôles
associés, les événements, les artéfacts et les règles. Chaque élément a une raison d’être
spécifique qui le rend indispensable à la réussite de l’application de Scrum. Les règles de
Scrum sont les modalités qui lient événements, rôles et artéfacts entre eux. Ces règles sont
décrites tout au long de ce document.

II. Application sur le projet


a. BackLog de produit.

Estimation
ID Importance Tache Déscription par J/H
Modélisation et conception des
0 1 sytèmes différents et dessin sous 7
PowerAMC Conception Merise et UML
1 2 Création de la BD Sous PHPMYADMIN 1
Recherche sur la sécurité Brute Force - XSS - SQLInjection -
2 3 3
informatique UploadFile
3 4 Simulation, Test et Solutions Tests avec PHP NATIVE 2
4 5 Choix et integration des templates BackOffice et FrontOffice 1
En tant qu'adminstrateur je
6 souhaite faire les mises à jours sur
5 toutes les 28 tables de Affaires.ma CRUD 10
En tant que visiteur je souhaite Avec les informations importantes
6 7 voir la litste des masters et licences dans la 1ere interface : Libelle - Ville - 2
disponibles Date importante et Domaine
En tant que visiteur je souhaite
En utilisant JQUERY ( FadeIn et
7 8 filtrer les licences et masters par 2
FadeOut )
ville
En tant que visiteur je souhaite Avec les informations importantes
8 9 voir la liste des formations dans la 1ere interface : Libelle - 1
disponibles Formateur - Durée et Domaine

Rapport de projet de fin d’année Page 77


En tant que visiteur je souhaite En utilisant JQUERY ( FadeIn et
9 10 1
filtrer les formations par domaine FadeOut )
Avec les informations importantes
En tant que visiteur je souhaite
10 11 dans la 1ere interface : Nom - Adresse - 1
voir la liste des locations
Tel et FAX
En tant que visiteur je souhaite En utilisant JQUERY ( FadeIn et
11 12 1
filtrer la liste des locations par ville FadeOut )
En tant que visiteur je souhaite avec les information importantes dans
12 13 Consulter les liste des écoles la 1ere interface : Abréviation - 1
d'ingénieurs Domaines de formation.
En utilisant JQUERY ( FadeIn et
13 14 En tant que visiteur je souhaite 1
FadeOut )
filtrer les écoles par ville
Avec les informations importantes
En tant que visiteur je souhaite
14 15 dans la 1ere intérface : Nom - Slogan - 1
voir la liste des organisateurs des
Logo - Déscription - Domaines
fêtes
En utilisant JQUERY ( FadeIn et
15 16 En tant que visiteur je souhaite 1
FadeOut )
filtrer les organisateurs par ville
En tant que visiteur je souhaire
16 17 choisir entre les types des Ajouter des sous élements au menu 1
organisateurs sous un menu.
En tant que visiteur je souhaite
Vérification Avec CAPTCHA - Attaques
17 18 remplir un formulaire pour devenir 1
XSS ou SQLInjection
serveur
Avec les informations importante dans
En tant que Visiteur je souhaite
18 19 la 1ere intérface : Nom - Ville - 1
consulter l'annuaire
Domaine - Infos de contact
En tant que visiteur je souhaite En utilisant JQUERY ( FadeIn et
19 20 1
filtrer l'annuaire par domaine FadeOut )
En tant que visiteur je souhaite Affichage dans un tableaux dee liste
20 21 1
profiter du service ALLO Ouvrier des ouvriers disponibles
En tant que visiteur je souhaite En utilisant JQUERY ( FadeIn et
21 22 1
filtrer les ouvriers par domaine FadeOut )
En tant que visiteur je souhaite Vérification Avec CAPTCHA - Attaques
22 23 1
m'inscrir en tant qu'ouvrier XSS ou SQLInjection
En tant que visiteur je souhairte Remplissage d'un formulaire et
23 24
passer une demande urgente CAPTCHA 1
En tant que visiteur Je souhaite
24 25 voir la grille de disponibilité de Sous forme d'un planning d'un mois
voitures. 2
En tant que visiteur je souhaite
25 26 voir la liste des promotions des Avec les informations importantes
grandes surfaces 1
26 27 En tant que Responsable location CAPTCHA et SQLInjection 1
Rapport de projet de fin d’année Page 78
je souhaite me connecter
En tant que Responsable location
27 28
je souhaite ajouter une réservation Pour remplir grille de disponibilité 1
En tant que Responsable location
28 29 je souhaite Faire les mise à jours
de mes voitures Affichage d'une liste et CRUD 1
En tant que Responsable location
je souhaite faire la mise à jours de
29 30 mes Vidanges, Contrôles
techniques, Vignettes et
Assurances Affichage d'une liste et CRUD 2
En tant que Responsable location
30 31
je souhaite Voir les alertes Affichage d'une liste. 1
Modélisation et conception des
31 32 sytèmes différents et dessin sous
PowerAMC pour e-learning Conception Merise et UML 5
32 33 Création de la BD pour E-learning Sous PHPMYADMIN 1
Choix et integration de template
33 34
pour E-learning BackOffice 1
En tant qu'adminstrateur je
34 35 souhaite me connecter à mon
espace E-learning Login et password ( SQLInjection ) 1
En tant qu'adminisrateur je
35 36 souhaite modifier les informations Toutes les informations de l'école ( Pas
de l'écoles de nouvelle insertion ) 1
En tant qu'administrateur je
souhaire faire la mise à jours sur
36 37
les tables : Formations - Filières -
enseignants CRUD 3
En tant qu'administrateur je Affichage sous forme d'un tableaux
37 38 souhaite pouvoir valider une séparé ( Table pour les inscriptions
inscription ou bien la supprimer valides et autre pour les non valides ) 1
En tant qu'enseignant et étudiant
38 39 je souhaite me connecter à mon Login et password ( SQLInjection )
espace e-learning 1
En tant qu'enseignant je souhaite
39 40 faire la mise à jours sur les tables : CRUD
cours - Formations - Informations 2
En tant qu'enseignant je souhaite Messagerie avec design d'une
40 41
envoyer ou recevoir des messages application de CHAT 3
En tant qu'enseignant je souhaite
41 42 CRUD
Envoyer une reclamation 1
En tant qu'enseignant je souhaite
42 43 Faire une conversation Video avec Communication Audio - Video
mes étudiants ( JWPlayer ) 5
43 44 En tant qu'étudiant je souhaite Insertion dans table inscription 1
Rapport de projet de fin d’année Page 79
faire une inscription
En tant qu'étudiant je souhaite voir
44 45 la liste des formations par domaine Affichage de liste des formations par
et y faire inscription domaine et un lien d'inscription. 1
En tant qu'étudiant je souhaite
45 46 participer à une conférence en
ligne JWPLAYER 2
Integration d'ajax dans plusieurs
46 47
parties ( CHAT - LISTES ) - 3
47 48 Test de sécurité En utilisant KALLY 3
48 49 Test de pénetration manuels - 3
Test de rapidité - Validateur W3C En utilisant les outils google web
49 50
et correction des problèmatiques masters et le validateur de W3C 2
TOTAL 93

b. Sprint 0 … Sprint 5

Temps T. re- Temps Temps


N° Tâches Afféctée à Status
éstimé éstimé écoulé Réstant
1 1 MANI Mohammed Adil 28 30 28 0 Done
1 2 MANI Mohammed Adil 4 4 4 0 Done
1 3 MANI Mohammed Adil 12 16 16 0 Done
1 4 MANI Mohammed Adil 8 8 8 0 Done
1 5 MANI Mohammed Adil 4 4 4 0 Done
1 6 MANI Mohammed Adil 40 44 44 0 Done
Total 96 106 104 0
Daily
Burnout Recommandée 4
Estimation 106
Burnout 104
Sprint 0

Temps T. re- Temps Temps


N° Tâches Afféctée à Status
éstimé éstimé écoulé Réstant
2 7 MANI Mohammed Adil 8 10 10 0 Done
2 8 MANI Mohammed Adil 8 6 8 2 Done
2 9 MANI Mohammed Adil 4 4 4 0 Done
2 10 MANI Mohammed Adil : 4 4 4 0 Done

Rapport de projet de fin d’année Page 80


manimohammedadil@gmail.com
2 11 MANI Mohammed Adil : 4 4 4 0 Done
2 12 MANI Mohammed Adil 4 4 4 0 Done
2 13 MANI Mohammed Adil 4 4 4 0 Done
2 14 MANI Mohammed Adil 4 6 6 0 Done
2 15 MANI Mohammed Adil 4 4 4 0 Done
16 MANI Mohammed Adil 4 6 6 0 Done
Total 48 52 54 2
Daily
Burnout Recommandée 4
Estimation 52
Burnout 54
Sprint 1

Temps T. re- Temps Temps


N Tâches Afféctée à Status
éstimé éstimé écoulé Réstant
3 17 MANI Mohammed Adil 4 6 6 0 Done
3 18 MANI Mohammed Adil 4 4 4 0 Done
3 19 MANI Mohammed Adil 4 4 4 0 Done
3 20 MANI Mohammed Adil 4 4 4 0 Done
3 21 MANI Mohammed Adil 4 4 4 0 Done
3 22 MANI Mohammed Adil 4 4 4 0 Done
3 23 MANI Mohammed Adil 4 4 4 0 Done
3 24 MANI Mohammed Adil 4 6 6 0 Done
3 25 MANI Mohammed Adil 8 10 8 0 Done
3 26 MANI Mohammed Adil 4 6 6 0 Done
3 27 MANI Mohammed Adil 4 4 4 0
Total 48 56 54 0
Daily
Burnout Recommandée 4
Estimation 56
Burnout 54
Sprint 2

Temps T. re- Temps Temps


N Tâches Afféctée à Status
éstimé éstimé écoulé Réstant
4 28 MANI Mohammed Adil 4 6 6 0 Done
4 29 MANI Mohammed Adil 4 4 4 0 Done
4 30 MANI Mohammed Adil 8 8 8 0 Done
4 31 MANI Mohammed Adil 4 4 4 0 Done
4 32 MANI Mohammed Adil 20 18 20 2 Done
4 33 MANI Mohammed Adil 4 4 4 0 Done

Rapport de projet de fin d’année Page 81


4 34 MANI Mohammed Adil 4 4 4 0 Done
Total 48 48 50 2
Daily
Burnout Recommandée 4
Estimation 48
Burnout 50
Sprint 3

Temps T. re- Temps Temps


N Tâches Afféctée à Status
éstimé éstimé écoulé Réstant
5 35 MANI Mohammed Adil 4 6 4 0 Done
5 36 MANI Mohammed Adil 4 4 4 0 Done
5 37 MANI Mohammed Adil 12 16 16 0 To verify
5 38 MANI Mohammed Adil 4 4 4 0 Done
5 39 MANI Mohammed Adil 4 6 6 0 Done
5 40 MANI Mohammed Adil 8 8 8 0 Done
5 41 MANI Mohammed Adil 12 12 12 2 Done
Total 48 56 54 2
Daily
Burnout Recommandée 4
Estimation 56
Burnout 54
Sprint 4

Rapport de projet de fin d’année Page 82


Au terme d’un travail aussi laborieux, nous avons pu constater que l’utilisation d’une
bonne méthode d’analyse et une bonne démarche est très importante.

A début de la partie analyse nous avons eux l’impression que c’est un travail pénible
qui peut s’avérer inutile. Mais après un moment de réflexion, nous nous sommes dit que la
partie analyse a toujours été d’une grande importance pour tout projet informatique.

Après la réalisation des différents modèles et diagrammes de notre projet, nous avons
pu voir plus clair et avoir une idée très détaillée sur ce que nous avions à faire.

Nous pouvons entamer la partie réalisation avec plus de confiance et enthousiasme.

Rapport de projet de fin d’année Page 83

S-ar putea să vă placă și