Académique Documents
Professionnel Documents
Culture Documents
Validation finale
Par : ………………………
Signature :
Remerciement ....................................................................................................4
Introduction .......................................................................................................5
6. Réalisation .............................................................................................. 24
Conclusion ....................................................................................................... 36
Glossaire ......................................................................................................... 37
Netographie ..................................................................................................... 38
Remerciement
Ce rapport présente le travail que j’ai effectué lors de mon stage au sein de
TriTUX qui s’est déroulé du 12/01/2009 au 06/02/2009
1. Etude de l’organisme
TriTUX S.A.R.L. est une SSII Tunisienne née par le regroupement, au sein d'un
réseau professionnel, des compétences provenant de divers horizons et partageant la
même conviction : que les nouvelles technologies de l'information et de la
communication (NTIC) basées sur les logiciels libres, constitueront le choix
fondamental face aux exigences de la société future, société de l'information.
o Domaines d'activité:
o Références de TriTUX:
Page 6 sur 38
Etude de l’organisme
- Assurances BIAT,
- Tunisie Telecom,
- Mobile Services,
- Nouvelair,
- Alva,
- Sameteam,
- PixelJ,
- Attijari Bank,
- Groupe Délice Tunisie.
Direction
Générale
Développeur
Manager
Service
Service
Service Design developpement
documentation
Web
Page 7 sur 38
Présentation du thème du stage
Le schéma ci-dessous explique les huit différentes étapes à suivre durant ce stage.
Page 8 sur 38
Présentation du thème du stage
Etudier le problème
Tester
Page 9 sur 38
Présentation du thème du stage
Phase préliminaire
Etude de l’organisme
Documentation
Interventions dans le
projet
Rédaction du rapport
Page 10 sur 38
Infrastructure informatique
3. Infrastructure informatique
Les ordinateurs :
Marque Processeur Mémoire vive Disque dure
DELL-Dimension 3.6 Ghz 1,5Go 120Go
DELL-Dimension 3.6 Ghz 1,5Go 120Go
DELL-Dimension 3.6 Ghz 1,5Go 120Go
IBM-Thinkpad DualCore 1.8Ghz 2Go
IBM -Thinkpad DualCore 1.8Ghz 2Go 100Go
TOSHIBA-SATELLITE Core2Duo 1.7Ghz 4Go 350Go
TOSHIBA-SATELLITE Core2Duo 1.7Ghz 4Go 350Go
TOSHIBA-SATELLITE Core2Duo 1.7Ghz 4Go 350Go
Il se compose de 4 blocs :
Bloc n°1 :
- Architecture : PC-Intel
- Fréquence du microprocesseur : 3,6
GHz
- Capacité mémoire vive (RAM) : 3 Go
- Taille du disque dure : 250 Go.
- Domaine : moonfish.tux
Page 11 sur 38
Infrastructure informatique
Bloc n°2 :
- Architecture : PC-Intel
- Fréquence du microprocesseur : 2x1 GHz
- Capacité mémoire vive (RAM) : 3 Go
- Taille du disque dure : 300 Go.
- Domaine : shark.tux
- Description : Machines virtuelles (Plusieurs machines virtuelles ayant
chacun son adresse IP)
Bloc n°3 :
- Architecture : PC-Intel
- Fréquence du microprocesseur : 2x1 GHz
- Capacité mémoire vive (RAM) : 3 Go
- Taille du disque dure : 80 Go.
- Domaine : bluefish.tux
- Description : Gère la messagerie vocale sur un réseau IP, VoIP.
Bloc n°4 :
- Nature : JBOD
- Contrôleur/Connecteurs : SCSI
- Nombre maximal de disques dure : 8
- Disques : 120 Go+120 Go +250Go
- Description : Concaténation de disques durs
TriTUX utilise des logiciels libres qui fonctionnement sur la plupart des
distributions GNU/Linux. Les systèmes d’exploitation installés sur les clients sont
Ubuntu-Linux versions 8.04 et 8.10 et Debian 4.0 pour le serveur.
Page 12 sur 38
Infrastructure informatique
Voici une liste des logiciels les plus utilisées par l’entreprise :
Page 13 sur 38
Infrastructure informatique
o Symfony :
Symfony intègre Proprel qui est lui aussi un Framework de mapping objet-
relationnel « ORM » offrant une technique de programmation informatique qui crée
l'illusion d'une base de données orientée objet à partir d'une base de données
relationnelle en définissant des correspondances entre cette base de données et les
objets du langage utilisé. On pourrait le désigner par « correspondance entre monde
objet et monde relationnel ».
Les fichiers de configuration employés par Symfony sont au format YAML qui est
un langage de sérialisation de données comme XML mais plus humain et facile à
interpréter.
Apache, est un logiciel de serveur HTTP produit par l'Apache Software Foundation.
C'est le serveur HTTP le plus populaire du Web. C'est un logiciel libre avec un type
spécifique de licence, nommée licence Apache.
Page 14 sur 38
Infrastructure informatique
Il est noté que Symfony exige l’activation du module REWRITE du serveur web
Apache, ce module permet aux développeurs d’utiliser un format personnalisable
d’adresses URL qui sont compréhensibles par n’importe quel visiteur et facilite la
tache d’indexation par les moteurs de recherche. Il existe différentes manières pour
activer le module RE_WRITE, la plus simple se fait via la commande « a2enmod
rewrite » dans la console de linux.
o MySQL :
o PHP :
Il est noté que les versions 1.0.x de Symfony nécessite les versions 5.2.x et
supérieurs de PHP.
Zend Studio for Eclipse (Version 6.1.0) est un IDE pour les applications PHP
issu de Zend Studio et de la plate-forme Eclipse. Zend Studio for Eclipse offre des
fonctionnalités d'édition de code, de débogage, de refactoring et le support des tests
unitaires.
Page 15 sur 38
Infrastructure informatique
o Subversion :
Subversion (en abrégé svn) est un système de gestion de versions, distribué sous
licence Apache et BSD. Il a été conçu pour remplacer CVS. Ses auteurs s'appuient
volontairement sur les mêmes concepts (notamment sur le principe du dépôt
centralisé et unique) et considèrent que le modèle de CVS est le bon, et que seule
son implémentation est en cause.
o PostgreSQL8.3:
o Trac 0.10.3:
o Firefox :
Mozilla Firefox est un navigateur Web gratuit, développé et distribué par la Mozilla
Foundation aidée de centaines de bénévoles grâce aux méthodes de développement
Open Source et à la liberté du code source.
Page 16 sur 38
Etude préalable
4. Etude préalable
Il s’agit d’un logiciel de suivi de temps nommé TimeIt désigné pour un centre
appel, permettant de comptabiliser le temps consommé par un employé pour une
activité donnée.
TimeIt permet en plus de calculer le temps consommé par un employé dans des
activités de natures différentes tel que :
en état de production,
en pause de déjeuner,
en attente faute de pannes techniques,
en formation,
en réunion…etc.
TimeIt ne peut être exécutée qu’après avoir s’identifier. Pour que chaque
utilisateur puisse s’identifiée indépendamment elle offre aux utilisateurs autorisées la
possibilité de créer plusieurs comptes.
Page 17 sur 38
Etude préalable
Pour différencier les utilisateurs les uns aux autres il faudra que chaque utilisateur
appartienne à un groupe ayant un certain niveau hiérarchique et que chaque groupe
ait une ou plusieurs permissions (voir la figure n°4).
Avoir
1
Groupe Permission
Id
#groupe _parent
* Id
nom
nom
1,n 1,n
Possède
La création d’un nouveau compte d’utilisateur est une procédure très fréquente.
Elle est gérée par les supérieurs de l’entreprise pour chaque recrutement d’un nouvel
employé.
Page 18 sur 38
Etude préalable
Admin
Groupe X Groupe Y
Groupe R
Page 19 sur 38
Etude préalable
o Tâches demandés:
Il est noté que l’assignation des tâches est dirigée par le chef de projet, utilisant
une technique de collaboration employée par la communauté Open Source, l’une des
applications répondant à cette technique est nommée Trac.
Page 20 sur 38
Etude préalable
Comme une bonne solution, on a décidé que chaque groupe aura un poids
définissant son niveau hiérarchique de façon que le groupe le plus haut
hiérarchiquement et celui ayant le poids le plus faible.
Page 21 sur 38
Etude conceptuelle
5. Etude conceptuelle
o Idées proposées :
FIGURE 8. MODELE ENTITE ASSOCIA TION APRES AJOUT DE L 'A TTRIBUT POIDSS
Avoir
1
Groupe Permission
Id
#groupe _parent
* Id
nom
nom
poids
1,n 1,n
Possède
Page 22 sur 38
Etude conceptuelle
Page 23 sur 38
Réalisation
6. Réalisation
Page 24 sur 38
Réalisation
Ces données existent statiquement dans des fichiers mais pas encore pour notre
SGBD « MySQL ».
Page 25 sur 38
Réalisation
1 2 3 4
Page 26 sur 38
Réalisation
Pour le moment on a définit un nouvel utilisateur ayant tout les privilèges pour
exploiter sa nouvelle base de donnée. Cette base ne possède pas encore des tables
(pas de structure).
Page 27 sur 38
Réalisation
Maintenant il nous reste qu’a : générer les modèles, donner une structure à notre
base et l’alimenté par des données.
Symfony offre une option qui effectue ces trois taches d’une façon automatique.
FIGURE 15. GENERATION DES MODELES , STRUCTURATION DE LA BASE DE DONNEES ET CHARGEMENT DES DONNEES
Maintenant notre base de données possède une structure en plus qu’elle contienne
des données primaires. On peut maintenant lancer l’application pour vérifier le bon
fonctionnement via l’adresse http://localhost/projects/unstable/timeit/web. (Une
page d’authentification doit s’afficher).
Comme on l’a déjà mentionné précédemment il faut tout d’abord modifier la table
Groupe nommé « sf_guard_group » dans notre projet, et ceci en ajoutant un
attribut poids « weight » de type entier. Pour l’implémenter dans notre projet on
ouvre le fichier timeit/config/sfGuardPlugin_schema.custom.yml qui contient
le squelette de la table Groupe et Utilisateur écris au format YAML, et on ajoute
ensuite le nouvel attribut « weight » Comme le montre (la figure n° 16)
Page 28 sur 38
Réalisation
Le cas le plus simple et de choisir le premier choix, mais faut-il chercher à chaque
fois le niveau hiérarchique du groupe parent puis l’incrémenter par un pour créer le
nouveau groupe ? Que se passe-il si un utilisateur assigne au poids une valeur
quelconque ?
On sait bien que Symfony intègre Propel qui traduit tout ce qui est modèle
relationnelle en modèle objet. Propel a déjà traduit l’entité Groupe
« PluginsfGuardGroup» en une classe et ses attributs en attributs de classe, cette
classe possède en plus des propriétés telque « getweight() »,
« getParentGroup() » et des méthodes tel que « save() », « delete() »…
Propel offre deux classes pour chaque table ; une qui est mère
« PluginsfGuardGroup » ayant les différents attributs, propriétés et méthodes et une
autre classe fille « sfGuardGroup » qui l’hérite et n’ayant aucune implémentation.
C’est dans la classe fille où on va implémenter la méthode save() qui existe déjà
dans la classe mère, cette dernier permette l’enregistrement des données d’un
nouveau groupe dans la base de donnée.
Page 29 sur 38
Réalisation
FIGURE 18.GENERATION DES MODELES, STRUCTURATION DE LA BASE DE DONNEES ET CHARGEMENT DES DO NNEES
Il est très pratique d’implémenter une solution par la quelle notre application
connaitra le niveau hiérarchique d’un groupe par rapport à un autre.
Page 30 sur 38
Réalisation
Cette solution est très simple à implémenter en plus qu’elle sera employée dans
toutes les situations où on veut contrôler un utilisateur. On aura donc plusieurs
appels à cette méthode. Symfony recommande l’implémentation des méthodes
fréquemment appelées dans le fichier timeit/lib/myTools.class.php.
Si on pose cette question : Est-il logique qu’un simple employé créa un compte
d’un superviseur ou d’administrateur? Sûrement que ça n’a aucun sens !
La meilleur méthode est de limiter la liste de choix des groupes selon le poids du
groupe au qu’il appartient l’acteur. Par exemple : L’utilisateur Alpha dont le poids de
son groupe est 2 aura le droit de créer des utilisateurs ayant le même poids que sont
groupe ou plus, veut dire les groupes dont le poids est 2, 3, 4,5… et ainsi de suite.
Les groupes ayant les poids 0 et 1 ne doivent pas être affichés.
Page 31 sur 38
Réalisation
Page 32 sur 38
Réalisation
Faux Si validation
du formulaire
Afficher
Page : Edit (user) Vrai
Poids de l’acteur
<=
Poids de
l’utilisateur à créer
Faux
Contrôle Vrai
Afficher
Page : Erreur 404
BD
TimeIt
Afficher
Page : Liste des tous les utilisateurs
Page 33 sur 38
Réalisation
Cette étape est vue la plus importante malgré qu’on a fini les implémentations,
mais qui assure son bon fonctionnement et la stabilité ? Il faut certainement exécuter
une série de test pour s’assurer ?
Il est aussi nécessaire de réaliser un test avancé pour être sûr que le contrôle
ajouté dans la couche contrôleur ne présentant aucun problème.
Malheureusement ce test ne fera pas objet de ce rapport pour la raison qu’il
nécessite trop de proèdres pour qu’on puisse le traiter. Il se présente par une
technique utilisée par les pirates pour attaquer certains sites web.
Page 34 sur 38
Réalisation
Il nous reste maintenant qu’a mettre à jour la version du dépôt (qui existe sur le
serveur) pour que tout les participants à ce projet peuvent voir les changements et
les améliorées.
La commande svn commit transfère au serveur uniquement les fichiers qui ont
subits des modifications. Tous les développeurs peuvent actualiser leur copie de
travail via la commande svn up.
Page 35 sur 38
Conclusion
Ce stage au sein de TriTUX m’a fait découvrir la vie professionnelle dans une
entreprise ayant une importante clientèle au niveau de la taille. L’esprit de la
collaboration de la communauté Open Source y est très présent, et l’aspect de la
technicité et de perfectionnisme apparaît dans chaque tâche.
Cette période de quatre semaines, bien que m’ayant peu apporté au niveau
enrichissement de connaissances techniques et scientifiques, m’a permis de
développer une méthodologie rigoureuse et efficace pour pouvoir participer au
développement du projet TimeIt. J’ai pris conscience de l’importance du savoir-être
(être dynamique, être motivé…) et des relations humaines seules capables des faire
avancer les choses.
Glossaire
Netographie