Développement d une application JAVA EE PLAN PROJET Binôme ou monôme (B/M): M Nom & Prénom: Yamine Abdelmounaim Email : abdeyamine@gmail.com GSM:06 33 47 19 78 Rapport de Projet J2EE Réseau social Réalisé par : YAMINE Abdelmounaim Encadré par : LACHGAR Mohamed
Développement d une application JAVA EE Cadre réservé à l encadrant : Code d identification du Candidat : Nom des Validateurs Commentaires :
Développement d une application JAVA EE SOMMAIRE 1) PERMETRE DU PROJET...6 1. ENJEUX ET VISION DU PROJET... 6 2. ARCHITECTURE FONCTIONNELLE... 7 2) PLAN DE MISE EN ŒUVRE...8 1. DEMARCHE PROJET... 8 2. CYCLE DE VIE... 8 3) ANALYSE ET CONCEPTION... 10 1. LE LANGUAGE UML... 10 2. DIAGRAMME DE CAS D UTILISATION... 11 3. DIAGRAMME DE CLASES... 18 4. DIAGRAMME DE SEQUENCES... 19 5. DIAGRAMME D ACTIVITES... 21 6. DIAGRAMME D ETAT TRANSITION... 23 4) ARCHITECTURE APPLICATIVE... 21 5) ARCHITECTURE TECHNIQUE... 22
FIGURES FIGURE1 : Le lien entre les profils et les fonctionnalités du système... 7 FIGURE2 : Schéma de la méthode en cascade...9 FIGURE3 : Diagramme de cas d utilisation pour gestion des invitations...12 FIGURE4 : Diagramme de cas d utilisation pour gestion des publicités...13 FIGURE5 : Diagramme de cas d utilisation pour gestion des messages...14 FIGURE6 : Diagramme de cas d utilisation pour gestion des groups...15 FIGURE7 : Diagramme de cas d utilisation pour gestion des pages...16 FIGURE8 : Diagramme de cas d utilisation pour gestion d administration...17 FIGURE9 : Diagramme de classes...18 FIGURE10 : Diagramme de séquence de Publie un fichier...19 FIGURE11 : Diagramme de séquence de envoyer une invitation...20 FIGURE12 : Diagramme d'activité de publie un fichier...21 FIGURE13 : Diagramme états-transitions de publie un fichier...23 FIGURE14 : Diagramme états-transitions de envoyer une invitation...24 FIGURE15 : l architecture Java EE d une application web en trois couches...25 FIGURE16 : Architecture technique du projet...26 FIGURE17 : Architecture technique du projet...27
1) PERIMETRE DU PROJET 1. ENJEUX ET VISION DU PROJET Développement d une application JAVA EE Plan de projet Les réseaux sociaux sur Internet sont des applications ayant comme objectif de relier des amis, des connaissances ou des associés. Ces réseaux présentent des orientations plus ou moins personnelles ou professionnelles, c'est-à-dire que l'objectif des utilisateurs peut être de retrouver des amis et de partager des outils avec eux (photos, messages, commentaires, applications ludiques,...) ou de tisser un réseau professionnel (rencontrer des partenaires potentiels, trouver un nouvel emploi, trouver des collaborateurs, annoncer des événements ou des activités professionnelles,...). Les réseaux les plus connus sont : Twitter est un outil de communication qui a pris de l'ampleur en 2008. De nos jours, tout le monde "tweete". Facebook est un site sur lequel vous vous inscrivez gratuitement et facilement et qui vous permet de rentrer en contact avec vos amis. Vous créez votre profil avec plus ou moins de détails sur votre état civil, vos intérêts, vos passions, Viadeo est un réseau social ayant clairement un objectif professionnel. Vous y définissez votre profil dans lequel votre parcours scolaire et professionnel se taille la part du lion. (musique et vidéo). Myspace Réseau social principalement axé sur le partage de médias Les réseaux sociaux, c'est génial pour : retrouver des personnes perdues de vue, rencontrer de nouvelles personnes, vous tenir au courant des nouvelles de vos contacts et amis, partager une passion, un intérêt,... développer vos réseaux de relations privées ou professionnelles,
travailler votre image,... trouver un emploi, vous faire connaître ou faire connaître votre travail, 2. ARCHITECTURE FONCTIONNELLE Les principaux profils qui auront à utiliser notre système sont les suivants : Administrateur AD : il possède des droits sur le module administration. Utilisateur UT : il possède des droits sur le module Communication et le Personale space. Le schéma suivant décrit le lien entre les profils et les fonctionnalités de notre système : Figure1 : le lien entre les profils et les fonctionnalités du système.
2) PLAN DE MISE EN ŒUVRE 1. DEMARCHE PROJET Développement d une application JAVA EE Plan de projet Le présent projet tend à mettre en place le service Réseau social. Et afin de contrôler la qualité du projet en question, il est nécessaire de mettre en place un Plan Assurance Qualité incluant le planning du projet, en partant de la phase d étude préliminaire jusqu à la phase de mise en production de l outil. 2. CYCLE DE VIE C'est le type de méthode le plus utilisé aujourd'hui dans tous les domaines qui nécessitent de concevoir avant de produire quelque chose. Pour parvenir à un produit fini, on passe par plusieurs phases du cadrage du projet jusqu'à la livraison finale. Le principe est simple : on ne passe à la phase suivante que lorsque la précédente est validée. Autre principe : on ne revient pas en arrière (d'où le terme "cascade"). Cette méthode présente de nombreux avantages, notamment celui de sécuriser le planning du projet puisque l'on verrouille chacune des étapes les unes après les autres : on s'entend sur ce que l'on va faire (cadrage), on le conçoit dans les grandes lignes (conception générale) puis dans le détail (conception détaillée) avant de le produire (production), de le tester (tests/corrections) et de le livrer (livraison). Elle permet également de bien s'entendre sur les attendus du projet et elle est très facile à expliciter à un groupe de travail. Enfin, bien menée, elle permet d'éviter les dérives en termes de planning : il est facile de visualiser que si une étape se décale, les suivantes sont impactées. L'inconvénient principal côté client final, est une certaine rigidité du modèle. Ainsi, par exemple, dans le domaine du e-learning, la conception générale consiste à rédiger un document, appelé synopsis, ou conducteur, ou découpage pédagogique selon les prestataires. Ce document liste l'ensemble des objectifs pédagogiques et prévoit un ensemble d'activités a réaliser (animation, interactivité, vidéo, quiz etc.). Or, il n'est pas rare qu'au moment de la conception détaillée (la rédaction des story-boards associés) voire de la production, le client se rende compte d'un oubli d'un objectif ou d'un
message clé. Ceci suppose donc de remettre en question la conception générale pourtant validée... Ici la plupart du temps, deux cas de figures : Soit le prestataire a une certaine latitude en terme de planning et/ou de budget et peut se permettre ce retour en arrière et l'accepte. Soit le planning est déjà très serré et/ou les budgets très justes, et il ne peut tout simplement pas accepter sous peine de mettre en danger la rentabilité globale du projet ou la date de livraison finale. La plupart du temps, budgets et plannings sont calés au plus juste des deux côtés, ce qui empêche toute modification. Conséquence : à la moindre demande de modification, des frictions se créent qui mettent à mal les relations entre les deux partenaires. Une première solution à ceci serait tout simplement qu'en début de projet, prestataire et client se réservent une marge de manœuvre (en terme de planning et de budget) à chaque phase du projet pour justement permettre ces ajustements le moment venu, sans créer de friction. Production Tests/Corrections Conception Détaillée Conception générale Cadrage Figure2 : schéma de la méthode en cascade
3) ANALYSE ET CONCEPTION 1. LE LANGUAGE UML Développement d une application JAVA EE Plan de projet UML est un moyen d'exprimer des modèles objet en faisant abstraction de leur implémentation, c est-à-dire que le modèle fourni par UML est valable pour n'importe quel langage de Programmation. UML est un langage qui s'appuie sur un méta modèle, un modèle de plus haut niveau qui définit les éléments d'uml (les concepts utilisables) et leur sémantique (leur signification et leur mode d'utilisation). Le méta modèle permet de se placer à un niveau d'abstraction supérieur car il est étudié pour être plus générique que le modèle qu'il permet de construire. Le méta modèle d'uml en fait un langage formel possédant les caractéristiques suivantes: - un langage sans ambiguïtés. - un langage universel pouvant servir de support pour tout langage orienté objet. - un moyen de définir la structure d'un programme. - une représentation visuelle permettant la communication entre acteurs d'un même projet. - une notation graphique simple, compréhensible même par des non informaticiens. - Le méta modèle permet de donner des bases solides et rigoureuses à ce langage graphique. - dont les représentations graphiques ne sont là que pour véhiculer des concepts de réalisation. UML est un langage qui permet de représenter des modèles, mais il ne définit pas le processus d'élaboration des modèles. Cependant, dans le cadre de la modélisation d'une application informatique, les auteurs d'uml préconisent d'utiliser une démarche : itérative et incrémentale. guidée par les besoins des utilisateurs du système.
centrée sur l'architecture logicielle. La modélisation consiste à créer une représentation simplifiée d'un problème: le modèle. Grâce au modèle il est possible de représenter simplement un problème, un concept et le simuler. La modélisation comporte deux composantes: L'analyse, c'est-à-dire l'étude du problème. la conception, soit la mise au point d'une solution au problème. Le modèle constitue ainsi une représentation possible du système pour un point de vue donné. Le méta-modèle UML fournit une panoplie d'outils permettant de représenter l'ensemble des éléments du monde objet (classes, objets,...) ainsi que les liens qui les relie. Toutefois, étant donné qu'une seule représentation est trop subjective, UML fournit un moyen astucieux permettant de représenter diverses projections d'une même représentation grâce aux vues. Une vue est constitué d'un ou plusieurs diagrammes. On distingue deux types de vues: Les vues statiques, c'est-à-dire représentant le système physiquement DIAGRAMMES D'OBJETS DIAGRAMMES DE CLASSES DIAGRAMMES DE CAS D'UTILISATION DIAGRAMMES DE COMPOSANTS DIAGRAMMES DE DEPLOIEMENT Les vues dynamiques, montrant le fonctionnement du système DIAGRAMMES DE SEQUENCE DIAGRAMMES DE COLLABORATION DIAGRAMMES D'ETATS-TRANSITIONS DIAGRAMMES D'ACTIVITES
2. DIAGRAMME DE CAS D UTILISATION UC : UTILISATEUR Sommaire d identification : But : Gestion des invitations Résumé : Cette fonctionnalité permet au utilisateur de bien organiser son invitation Acteur : Utilisateur. Description détaillée : Pré conditions : L utilisateur doit : Etre authentifié. Description du traitement nominal : L utilisateur peut : Envoyer une invitation. Annuler une invitation envoyée. Confirmer une invitation d un ami. Annuler une invitation d un ami. Diagramme : Figure3 : Diagramme de cas d utilisation pour gestion des invitations
UC : UTILISATEUR Sommaire d identification : But : Gestion des publicités Résumé : Cette fonctionnalité permet à l utilisateur de gérée son publicités Acteur : Utilisateur. Description détaillée : Pré conditions : L utilisateur doit : Etre authentifié. Description du traitement nominal : L utilisateur peut : Publie un fichier. Supprimer un fichier. Commenter un fichier. J aime un fichier. Diagramme : Figure4 : Diagramme de cas d utilisation pour gestion des publicités
UC : UTILISATEUR Sommaire d identification : But : Gestion des messages Résumé : Cette fonctionnalité permet à l utilisateur de gérée son messages Acteur : Utilisateur. Description détaillée : Pré conditions : L utilisateur doit : Etre authentifié. Description du traitement nominal : L utilisateur peut : Envoyer un message à un ami. Envoyer un message à un page. Supprimer un message. Diagramme : Figure5 : Diagramme de cas d utilisation pour gestion des messages
UC : UTILISATEUR Sommaire d identification : But : Gestion des groups Résumé : Cette fonctionnalité permet à l utilisateur de gérée son group Acteur : Utilisateur. Description détaillée : Pré conditions : L utilisateur doit : Etre authentifié. Description du traitement nominal : L utilisateur peut : Crée un group. Supprimer un group. Rechercher un group. Diagramme : Figure6 : Diagramme de cas d utilisation pour gestion des groups
UC : UTILISATEUR Sommaire d identification : But : Gestion des pages Résumé : Cette fonctionnalité permet à l utilisateur de gérée son page Acteur : Utilisateur. Description détaillée : Pré conditions : L utilisateur doit : Etre authentifié. Description du traitement nominal : L utilisateur peut : Crée une page. Supprimer une page. Rechercher une page. Diagramme : Figure7 : Diagramme de cas d utilisation pour gestion des pages
AD: ADMINISTRATEUR Sommaire d identification : But : Gestion d administration Résumé : Cette fonctionnalité permet à l administrateur de bloquer une page, bloquer un groupe, bloquer un utilisateur, bloquer un fichier. Acteur : Administrateur. Description détaillée : Pré conditions : L administrateur doit : Etre authentifié. Description du traitement nominal : L administrateur peut Diagramme : Bloquer une page. Bloquer un fichier. Bloquer un utilisateur. Bloquer un groupe. Figure8 : Diagramme de cas d utilisation pour gestion d administration
3. DIAGRAMME DE CLASSES Le diagramme des classes identifie la structure des classes d'un système, y compris les propriétés et les méthodes de chaque classe. Les diverses relations, telles que la relation d'héritage par exemple, qui peuvent exister entre les classes y sont également représentées. Ci-dessous, on représente le diagramme de classe du projet Réseau Sociale «XXX». Figure9 : Diagramme de classes
4. DIAGRAMME DE SEQUENCES Le diagramme de séquence est une représentation intuitive qu on a utilisée concrétiser des interactions entre nos entités. pour Le diagramme de séquence décrit un scénario qui modélise une exécution particulière d un cas d utilisation du début jusqu à la fin. Il correspond à une sélection d enchaînements du cas d utilisation. Publie un fichier Figure10 : Diagramme de séquence de Publie un fichier 1. L utilisateur demande au système de faire une publicité. 2. Le système définit le type de l utilisateur et propose des types de partages prédéfinis. 3. L utilisateur choisit le type convenable. 4. Le système affiche la Template correspondante. 5. L utilisateur effectue l opération. 6. Le système vérifie puis valide l opération.
Envoyer une invitation Figure11 : Diagramme de séquence de envoyer une invitation 1. Le membre envoie une demande d invitation d un membre préinscrit dans réseau social au sous-système. 2. Le sous-système reçoit la demande et envoi une notification à l invité 3. Le membre reçoit l invitation 4. Le membre accepte ou ignorer l invitation.
5. DIAGRAMME D ACTIVITES Un diagramme d'activité permet de modéliser un processus interactif, global ou partiel pour un système donné (logiciel, système d'information). Il est recommandable pour exprimer une dimension temporelle sur une partie du modèle, à partir de diagrammes de classes ou de cas d'utilisation. Le diagramme d'activité est une représentation proche de l'organigramme ; la description d'un cas d'utilisation par un diagramme d'activité correspond à sa traduction algorithmique. Une activité est l'exécution d'une partie du cas d'utilisation, elle est représentée par un rectangle aux bords arrondis. Publie un fichier Figure12 : Diagramme d'activité de publie un fichier
Envoyer une invitation Figure13 : Diagramme d'activité de envoyer une invitation
6. DIAGRAMME D ETAT TRANSITION Développement d une application JAVA EE Plan de projet Un diagramme états-transitions est un schéma utilisé en génie logiciel pour représenter des automates déterministes. Il fait partie du modèle UML et s'inspire principalement du formalisme des state harts et rappelle les grafcets des automates. S'ils ne permettent pas de comprendre globalement le fonctionnement du système, ils sont directement transposables en algorithme. Tous les automates d'un système s'exécutent parallèlement et peuvent donc changer d'état de façon indépendante. Publie un fichier Figure14 : Diagramme états-transitions de publie un fichier
Envoyer une invitation Figure15 : Diagramme états-transitions de envoyer une invitation
4) ARCHITECTURE APPLICATIVE Développement d une application JAVA EE Plan de projet Notre application est constituée de trois couches. Ces trois couches se conforment à l architecture de couches fermées «Closed layer architecture» (une couche peut communiquer seulement avec la couche qui lui est adjacente). La figure suivante présente l architecture Java EE d une application web en trois couches : Figure16 : l architecture Java EE d une application web en trois couches Le concept de partitionner une application en couches et de garder toute la logique de l application dans ces couches distinctes et séparées, a été introduite bien avant l approche orientée objet. Ainsi une application est divisée en trois couches logiques, chacune traitant des fonctions spécifiques : Présentation : interface usager et présentation. Logique du logiciel à produire (besoins, services de l entreprise) : les règlements de l entreprise et la logique de l application. Logique des données : Base de données et intégration des services de l entreprise. Ce concept nous permet de créer des composants indépendants et de les déployer sur des plates-formes différentes. En fait, ce concept est très utilisé dans le développement des applications multi-tier. Plus tard,il fut adapté au modèle de conception Model-View- Controller (MVC) qui est un modèle très commun pour développer des applications distribuées et multi-tier.
5) ARCHITECTURE TECHNIQUE Développement d une application JAVA EE Plan de projet Couche Présentation Couche Sécurité Couche Métier Couche service Couche domaine Couche Persistance de données Couche DAO Base de données Figure17 : Architecture technique du projet 1. CHOIX TECHNOLOGIQUES JSF Java Server Faces est un framework de développement d application Web en Java permettant de respecter le modèle d architecture MVC et basé sur des composants côté présentation.
FACELET Technologie de présentation pour le développement d'applications web en Java ; Système detemplating : permet de définir des vues de JSF en utilisant des calibres du modèle HTML ; Réduit la quantité de code nécessaire pour intégrer des composants dans la vue. RICHFACES Librairie de composants JSF pour le développement d'applications web riches (RIA) Rich Internet Application avec Ajax. SPRING Spring est un framework open source J2EE pour applications 3-tiers ; Faciliter l'intégration des différentes technologies qui a priori sont pour le moins hétérogènes. SPRING SECURITY Framework qui permet la gestion de deux grandes problématiques liées à la sécurité applicative : Authentification ; Autorisation. HIBERNATE Hibernate est un framework open source gérant la persistance des objets en base de données relationnelle. Figure17 : Architecture technique du projet
2. OUTILS : TOMCAT L'utilisation d'un serveur Java EE est obligatoire pour le développement de pages Web dynamiques en Java EE. Un serveur HTTP classique reçoit des requêtes HTTP et renvoie des réponses mais il ne connait pas les Servlets, les JSP... Il est donc essentiel d'utiliser un programme appelé moteur de Servlets qui est contenu dans le serveur Java EE et qui permet de pallier ce manque. ECLIPSE Eclipse est l'environnement de développement (spécialisé pour le langage Java) qui sera utilisé dans ce projet. Le choix d'eclipse repose essentiellement sur sa gratuité, sa facilité d'utilisation, sa puissance de développement et surtout ses nombreux plugins (bibliothèques additives). APACHE Apache est le serveur Web le plus utilisé sur Internet. Dans une architecture en production, il est recommandé d'utiliser un serveur Web en frontal d'un serveur d'applications. Ces recommandations sont également appliquées dans le cas de l'utilisation d'un conteneur Web comme Tomcat. L'utilisation d'un serveur Web en frontal est nécessaire dans ce projet pour des raisons de performance, de sécurité et de flexibilité. Coupler Tomcat et le serveur web Apache L'intégration d'un serveur Tomcat avec un serveur Web se fait au travers d'un connecteur configuré au sein de Tomcat et d'une extension ajoutée au serveur Web. Un connecteur Tomcat est une classe Java qui supporte un protocole réseau spécifique et propriétaire. La librairie d'extension du serveur Web permet un dialogue entre les deux serveurs. MySQL Le SGBD MySQL est supporté par un large éventail d'outils. MySQL est surtout installé pour les applications Web, ce SGBD est solide et utilisé par de grands groupes spécialisés dans l'internet. Plusieurs pilotes natifs de type 4 sont disponibles pour MySQL et sont conseillés pour une utilisation en Java.