Spécification fonctionnelle Syllabus



Documents pareils
Sage CRM. 7.2 Guide de Portail Client

Application web de gestion de comptes en banques

Compte-rendu de projet de Système de gestion de base de données

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

FileSender par RENATER - Guide utilisateur

Diagramme de déploiement

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Télécom Nancy Année

Vtiger CRM - Prestashop Connector

La gestion des boîtes aux lettres partagées

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Création d'un questionnaire (sondage)

Java pour le Web. Cours Java - F. Michel

Conditions Particulières de Maintenance. Table des matières. Ref : CPM-1.2 du 08/06/2011

Université de Bangui. Modélisons en UML

Compte Rendu d intégration d application

Découverte de Moodle

Manuel d utilisation NETexcom

Utilisation de GLPI. 1.Page d'accueil. Introduction

claroline classroom online

Refonte front-office / back-office - Architecture & Conception -

Serveur de travail collaboratif Michaël Hoste -

Guide d'utilisation du Serveur USB

Bienvenu. Panneau de contrôle. Ajout de nouveaux utilisateurs. 1. Modification du modèle d' de bienvenue

Travail collaboratif à distance

Configuration Interface for MEssage ROuting

OPALE. Présentation. Interface du logiciel

Java 7 Les fondamentaux du langage Java

CONNECTEUR PRESTASHOP VTIGER CRM

LES ACCES ODBC AVEC LE SYSTEME SAS

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Situation présente et devis technique

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Date de diffusion : Rédigé par : Version : Mars 2008 APEM 1.4. Sig-Artisanat : Guide de l'utilisateur 2 / 24

inviu routes Installation et création d'un ENAiKOON ID

Stockage du fichier dans une table mysql:

Prise en main du BusinessObjects XI R2 Service Pack 2/ Productivity Pack

Microsoft Application Center Test

L'accès aux ressources informatiques de l'ufr des Sciences

Configurer son courrier électrique avec votre compte Abicom

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

Sql Server 2005 Reporting Services

1. Installation d'un serveur d'application JBoss:

INTERCONNEXION ENT / BCDI / E - SIDOC

7.0 Guide de la solution Portable sans fil

Qu'est-ce que le BPM?

Méthodes de développement. Analyse des exigences (spécification)

Sage 50 Version 2014 Guide d installation. Sage Suisse SA

Projet de Java Enterprise Edition

HP Data Protector Express Software - Tutoriel 4. Utilisation de Quick Access Control (Windows uniquement)

Bases de données et interfaces Génie logiciel

Mobyt Intégration par Webservice TABLE DES MATIERES

Configuration Et Résolution Des Problèmes Des Services De Domaine Active Directory Windows Server Référence Cours : 6238B

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Edutab. gestion centralisée de tablettes Android

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Guide utilisateur Archivage intermédiaire Messagerie. Enterprise Connect pour Outlook 2010 EC V 1.0

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Utilisation d'un réseau avec IACA

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

La gestion des serveurs de mail

Le meilleur de l'open source dans votre cyber cafe

CA ARCserve Backup Patch Manager pour Windows

Communiqué de Lancement

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Didacticiel de mise à jour Web

REALISER UN SITE INTERNET AVEC IZISPOT SOMMAIRE

Sage CRM. Sage CRM 7.3 Guide du portable

Citrix XenApp 7.5 Concepts et mise en oeuvre de la virtualisation d'applications

Etude de cas : PGE JEE V2

2.1 Liferay en un clin d'oeil Forces, faiblesses, opportunités et menaces Résumé de notre évaluation... 5

Guide de l'utilisateur

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

TigerPro CRM Application mobile

République Algérienne Démocratique et Populaire Université Abou Bakr Belkaid Tlemcen Faculté des Sciences Département d Informatique

ETUDE DE CAS : LA PLATE-FORME OPEN SOURCE CLAROLINE POUR UNE FORMATION AU LOGICIEL MICROSOFT EXCEL

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

RAPPORT DE CONCEPTION UML :

VLAN Virtual LAN. Introduction. II) Le VLAN. 2.1) Les VLAN de niveau 1 (Port-based VLAN)

MEDIAplus elearning. version 6.6

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

FreeAnalysis. Schema Designer. Cubes

Outil de gestion et de suivi des projets

Séquence de découverte de SparkAngels Logiciel d entraide numérique

MANUEL D'INSTALLATION

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

MOTEUR DE WORKFLOW Mise en oeuvre d'openwfe Version septembre 2006

Éditeur Koninklijke Brill Langue(s) Multilingue

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Guide de l'utilisateur de SAP BusinessObjects Web Intelligence Rich Client

Les modules SI5 et PPE2

REQUEA. v PD 20 mars Mouvements d arrivée / départ de personnels Description produit

INTERCONNEXION ENT / BCDI / E - SIDOC

Transcription:

2013 2014 Université Paris Diderot Paris 7 Master 1 Informatique UFR Informatique Olden Fabre, Cynthia Thimon, Jakub Kaluza, Jean Desravines, Oliver Hamm Spécification fonctionnelle Syllabus -1-

TABLE DES MATIERES 1 INTRODUCTION...3 2 SPECIFICATIONS GENERALES...4 2.1 Présentation et Environnement du logiciel...4 2.2 Déploiement de l'application...4 2.3 Le système...5 2.3.1 Performances...5 2.3.2 Installation...5 2.3.3 Evolutions...5 2.3.4 Les outils...5 3 SPECIFICATIONS FONCTIONNELLES...6 3.1 Définition des acteurs...6 3.2 Diagrammes de cas d'utilisation...7 3.3 Diagrammes de séquence...11 3.4 Types de données abstraits...20 3.1 3.5 Structure du logiciel...25 3.4.1 Diagramme de Paquetages...25 3.4.2 Diagrammes de Classes...26 Package Reponse :...28 Package BasedeDonnees :...28 Package Web :...28 Package Web.Core :...29 3.4.3 Modules...30 3.5 Interfaces...31-2-

1 INTRODUCTION Syllabus est une plate-forme de cours qui répond à la demande des étudiants d'avoir un outil fiable sur lequel ils peuvent s'instruire, travailler et apprendre de nouvelles connaissances. C'est aussi un moyen de recevoir des corrections et notes de manière rapide contrairement au système de cours traditionnel. Nous développerons ainsi à travers ce documents les différentes charges fonctionnelles de notre produit. -3-

2 SPECIFICATIONS GENERALES 2.1 Présentation et Environnement du logiciel Syllabus est une plate-forme de cours disponible sur un site internet en ligne. Le but est de permettre à quiconque le souhaite de suivre des cours, de participer à des examens ou réaliser des exercices sans avoir à se déplacer. Cette plate-forme a aussi la particularité d'envoyer par e-mail les notes obtenues aux examens directement aux étudiants. En ce qui concerne l'architecture, la plate-forme est réalisée à l'aide d'un Servlet. Elle communique avec une base de données sur laquelle seront stockées les informations concernant les étudiants, les professeurs,les cours ainsi que les différents rendus et corrections d'exercices et examens. Ainsi, tous ces éléments fonctionnent sur un seul et unique serveur que notre équipe a mis en place. 2.2 Déploiement de l'application Illustration 1: Diagramme de Déploiement -4-

2.3 Le système 2.3.1 Performances Le système est conçu de façon à ce que tout se fasse de manière rapide. Tous les formats, les outils et langages utilisés ont été choisis afin que tout soit parfaitement optimisé. 2.3.2 Installation Le produit final ne nécessite aucune installation. Il s'agit comme dit précédemment d'un site internet en ligne. Néanmoins pour l'utiliser une authentification préalable est obligatoire. 2.3.3 Evolutions Dans un premier temps l'application sera capable d'utiliser des fichiers, représentants des exercices et, ayants étés exportés depuis une autre application utilisant le format commun défini avec les autres équipes de développeurs. Il est envisageable, à l'avenir de pouvoir définir un nouveau format permettant l'échange de cours. 2.3.4 Les outils Tout d'abord la base de données du système est réalisée en PostgreSql avec l'aide de PgAdminIII. Ensuite, le programme principal permettant le développement des fonctionnalités et modules est implémenté en Java avec NetBeans et Glassfish. Enfin l'interface utilisateur est réalisée en HTML. Afin que l'implantation de notre logiciel soit menée à bien notre équipe a décidé d'utiliser Gitlab dans le but d'évoluer dans le développement de manière efficace et de communiquer facilement. Nous avons aussi réussi à obtenir un serveur pour notre base de donnée à l'université, mais à cause des différents systèmes de sécurité mis en place, cette base n'est pas utilisable à l'extérieur de l'université et celle-ci a donc été abandonnée. Il sera donc nécessaire, afin d'utiliser l'application d'y renseigner des identifiants d'accès vers une base de données compatible avec notre configuration. -5-

3 SPECIFICATIONS FONCTIONNELLES 3.1 Définition des acteurs La plate-forme met en relation deux acteurs principaux : les professeurs ainsi que les étudiants. Les professeurs ont un rôle supérieur à celui des étudiants puisque ce sont eux qui créent les cours, les examens et les exercices sur lesquelles les étudiants travaillent. Vous pouvez donc voir ce que peuvent faire chacun des acteurs lorsqu'ils sont sur le site. Illustration 2: Relation des acteurs avec le système -6-

3.2 Diagrammes de cas d'utilisation Voici les différents cas d'utilisation du logiciel : Illustration 3: Use Case Devoir Etudiant Ici, on peut voir les différentes actions que peut effectuer un élève au moment de rendre son devoir ainsi que les relations entre les différents actions nécessaires à leurs réalisations. -7-

Illustration 4: Use Case Etudiant Ici, on peut voir le cheminement des actions possibles lorsqu'un étudiant se connecte sur la plate-forme. Ici, lorsque l'on met l'action «suivre un cours» signifie en fait «s'inscrire à un cours». -8-

Illustration 5: Use Case Ajout Exercice Le diagramme précédent décrit les différentes actions possibles d'un professeur dans le cadre d'ajout d'exercices sur le site. Nous précisons ce cas à part, car il est un peu plus compliqué et présente beaucoup de possibilités. -9-

Illustration 6: Use Case Professeur Global Ce diagramme décrit les actions possibles du professeur lorsqu'il est connecté sur le site. Comme dit précédemment, nous avons détaillé la démarche de création d'exercices, car celle-ci est un peu plus compliquée qu'une simple action comme le sont les autres. - 10 -

3.3 Diagrammes de séquence Notre équipe a réalisé un certain nombre de diagrammes de séquences que vous pouvez découvrir ci-dessous : Tout d'abord, voici le diagramme qui présente la connexion d'une personne sur la plate-forme. Illustration 7: Diagramme de séquence - Connexion Lorsqu'une personne demande à se connecter, vous constatez que notre système va vérifier l'existence de cette personne. Voici le diagramme associé à cette recherche : - 11 -

Illustration 8: Diagramme de séquence - Recherche membre Bien évidemment si une personne n'est pas inscrite sur Syllabus elle peut procéder à une inscription : - 12 -

Illustration 9: Diagramme de séquence - Inscription Voilà maintenant tous les diagrammes concernant le professeur. Tout d'abord le diagramme de création de page d'exercices : - 13 -

Illustration 10: Diagramme de séquence - Création d'une page - 14 -

Lorsque l'on crée une page, la nécessité de créer des exercices en découle. Le diagramme suivant illustre donc la création d'un exercice quelconque : Illustration 11: Diagramme de séquence - Création exercice - 15 -

Enfin les diagrammes respectifs de création de QCM, de QRF, de programme, et enfin de question libres se trouvent ci-dessous : Illustration 12: Diagramme de séquence - Création QCM Illustration 13: Diagramme de séquence - Création QRF - 16 -

Illustration 14: Diagramme de séquence - Création Programme Illustration 15: Diagramme de séquence - Création Question Libre - 17 -

Maintenant, les diagrammes concernant les étudiants. Ce diagramme décrit le déroulement des actions effectuées entre le système, la base de données et l'étudiant lorsque ce dernier veut travailler sur un devoir. - 18 -

Ce tout dernier diagramme explique en détails ce qui se passe lorsqu'un étudiant travaille sur un devoir en particulier. - 19 -

3.4 Types de données abstraits Lors de la modélisation de notre logiciel nous sommes passés par une phase de mise en place de types de données abstraits pour les modules de création d'exercices et de corrections. Voici donc ce que nous avons créé : /*Les types de choix possibles pour les choix d'un QCM*/ Domaine: type_choix Constante: bon_choix, mauvais_choix: type_choix Opération de test: est_bon_choix: type_choix -> bool est_mauvais_choix: type_choix -> bool /*Les différents choix possibles dans un QCM*/ Domaine: choix Opération de construction: cons_reponse:{x:entier 0 <= x <= 20, t: type_choix} -> choix Opération d'accès : nbpoints: {x:choix} -> {x:entier 0 <= x <= 20} type: choix -> type_choix /*Liste de choix multiples*/ Domaine: liste_choix_multiple Constante: liste_vide : liste_choix_multiple Opération de construction: cons_liste_choix_multiple: choix X liste_choix_multiple Opération de test: est_vide:liste_choix_multiple -> bool Opération d'accès: head:{x:liste_choix_multiple not(est_vide(x)} -> choix tail:{x:liste_choix_multiple not(est_vide(x)} -> liste_choix_multiple - 20 -

/*Définition d'une question à choix multiple*/ Domaine: question_a_choix_multiple Opération de construction: cons_question: {q:string, l:liste_choix_multiple} -> question_a_choix_multiple Opération d'accès: question: question_a_choix_multiple -> String liste_reponses: question_a_choix_multiple -> liste_choix_multiple /*Entrée d'un programme*/ Domaine: entree Opération de construction: cons_entree: String -> entree Opération d'accès: format: entree->string /*Sortie d'un programme*/ Domaine: sortie Opération de construction: cons_sortie: String -> entree Opération d'accès: format: sortie->string /*Définition question*/ Domaine: question Constante: sujet_qcm_vide: question Opération de construction: cons_sujet_qcm: {x:question_a_choix_multiple, liste:question est_sujet_qcm(liste)} -> question cons_sujet_qrf: String -> question cons_sujet_programme: String X entree X sortie -> question cons_sujet_question_libre: String -> question Opération de test: - 21 -

est_sujet_qcm_vide: {liste: question est_sujet_qcm(liste)} -> bool est_sujet_qcm: question -> bool est_sujet_qrf: question -> bool est_sujet_programme: question -> bool est_sujet_question_libre: question -> bool Opération d'accès: head:{x:question not(est_sujet_qcm_vide(x)) est_sujet_qcm(x)} -> question_a_choix_multiple tail:{x:question not(est_sujet_qcm_vide(x)) est_sujet_qcm(x)} -> question format_qrf: {x:question est_sujet_qrf(x)} -> String sujet_programme: {x:question est_sujet_programme(x)} -> String entree_makefile: {x:question est_sujet_programme(x)} -> entree sortie_makefile: {x:question est_sujet_programe(x)} -> sortie sujet_question_libre: {x:question est_sujet_question_libre(x)} -> String /*Réponse aux questions*/ Domaine: reponse Constante: reponse_qcm_vide: reponse Opération de construction: cons_reponse_qcm: {x:choix est_bon_choix(type_choix(x)), liste:reponse est_reponse_qcm(liste)} -> reponse cons_reponse_qrf: String -> reponse cons_reponse_programme: entree X sortie -> reponse cons_reponse_libre: String -> reponse Opération de test: est_reponse_qcm_vide: {liste: reponse est_reponse_qcm(liste)} -> bool est_reponse_qcm: question -> bool est_reponse_qrf : question -> bool est_reponse_programme: question -> bool est_reponse_libre: question -> bool Opération d'accès: head:{x:reponse not(est_vide(x) est_reponse_qcm(x)} -> choix tail:{x:reponse not(est_vide(x) est_reponse_qcm(x)} -> reponse format_reponse: {x: reponse est_reponse_qrf(x)} -> String entree_programme: {x: reponse est_reponse_programme(x)}-> entree sortie_programme: {x: reponse est_reponse_programme(x)}-> sortie texte_reponse: {x: reponse est_reponse_libre(x)} -> String - 22 -

/*Définition d'un exercice*/ Domaine: exercice Operation de construction: cons_qcm:{x:entier 0 <= x <= 20, q:question est_sujet_qcm(q), r: reponse est_reponse_qcm(r)} -> exercice cons_qrf:{x:entier 0 <= x <= 20, q:question est_sujet_qrf(q), r: reponse est_reponse_qrf(r)} -> exercice cons_programme:{x:entier 0 <= x <= 20, q:question est_sujet_programme(q), r: reponse est_reponse_programme(r)} -> exercice cons_question_libre:{x:entier 0 <= x <= 20, q:question est_sujet_question_libre(q), r: reponse est_reponse_question_libre(r)} -> exercice Operation de test: est_qcm: exercice -> bool est_qrf: exercice -> bool est_programme: exercice -> bool est_question_libre: exercice -> bool Opération d'accès: bareme_qcm: {x: exercice est_qcm(x)} -> entier bareme_qrf: {x: exercice est_qrf(x)} -> entier bareme_programme: {x: exercice est_programme(x)} -> entier bareme_question_libre: {x: exercice est_question_libre(x)} -> entier sujet_qcm: {x: exercice est_qcm(x)} -> question sujet_qrf: {x: exercice est_qrf(x)} -> question sujet_programme: {x: exercice est_programme(x)} -> question sujet_question_libre: {x: exercice est_question_libre(x)} -> question reponse_qcm: {x: exercice est_qcm(x)} -> reponse reponse_qrf: {x: exercice est_qrf(x)} -> reponse reponse_programme: {x: exercice est_programme(x)} -> reponse reponse_libre: {x: exercice est_question_libre(x)} -> reponse /*Définition d'une personne*/ Domaine: personne Opération de construction: cons_etudiant:{n: String, p:string, e:string m:string} -> personne cons_professeur:{n: String, p:string, e:string m:string} -> personne Opération de test: est_etudiant: personne -> bool est_professeur: personne -> bool Opération d'accès: nom_etudiant: {x:personne est_etudiant(x)} -> String - 23 -

prenom_etudiant: {x:personne est_etudiant(x)} -> String email_etudiant: {x:personne est_etudiant(x)} -> String motdepasse_etudiant: {x:personne est_etudiant(x)} -> String nom_professeur: {x:personne est_professeur(x)} -> String prenom_professeur: {x:personne est_professeur(x)} -> String email_professeur: {x:personne est_professeur(x)} -> String motdepasse_professeur: {x:personne est_professeur(x)} -> String /*Définition de la réponse d'un étudiant*/ Domaine: reponse_etudiant Opération de construction: cons_reponse_etudiant:{ex: exercice, p:personne est_etudiant(p)} -> reponse_etudiant Opération d'accès: exo: reponse_etudiant -> exercice etudiant: reponse_etudiant -> personne /*Définition d'une correction*/ Domaine: correction Opération de construction: cons_correction_auto:{r: reponse_etudiant not(est_question_libre(exo_reponse_etudiant(r))} -> correction cons_correction_etudiant:{r: reponse_etudiant, c: personne est_etudiant(p)} -> correction cons_correction_professeur:{r: reponse_etudiant, c: personne est_professeur(p)} -> correction Opération de test: est_correction_auto: correction -> bool est_correction_etudiant: correction -> bool est_correction_professeur: correction -> bool Opération d'accès: reponse_etudiant_correction_auto:{c:correction est_correction_auto(c)} -> reponse reponse_etudiant_correction_auto:{c:correction est_correction_etudiant(c)} -> reponse reponse_etudiant_correction_auto:{c:correction est_correction_professeur(c)} -> reponse correcteur_etudiant:{c:correction est_correction_etudiant(c)} -> personne correcteur_professeur:{c:correction est_correction_professeur(c)} -> personne - 24 -

3.1 3.5 Structure du logiciel 3.4.1 Diagramme de Paquetages Illustration 16: Diagramme de Package - 25 -

3.4.2 Diagrammes de Classes Package Administration Illustration 17: Package Administration Package Enseignement : Illustration 18: Package Enseignement - 26 -

Package Evaluation : Illustration 19: Package Evaluation Illustration 20: Package Evalution.Exercice Illustration 21: Package Evaluation.Page - 27 -

Package Reponse : Illustration 22: Package Reponse Package BasedeDonnees : Illustration 23: Package BaseDeDonnees Package Web : Illustration 24: Package Web.Controllers - 28 -

Package Web.Core : Illustration 25: Package Web.Core - 29 -

3.4.3 Modules Syllabus est un système méticuleusement découpé autour de différents modules. Voici donc une liste détaillée de ceux-ci organisée suivant les packages dans lesquels ils sont développés. Pour chaque module, une fiche technique sera fournie par la suite. Package Administration : Les modules principaux : - Inscription - Connexion - Création de cours (avec gestion des intervenants et des responsables) - Inscription à un cours - Gestion des cours suivis par un étudiant - Gestion des cours enseignés par un professeur Les modules optionnels : - Désinscription à un cours - Suppression d'un cours - Désinscription du site Package Enseignement : Les modules principaux : - Ajouter un cours - Récupérer tous les cours - Récupérer un examen lié à un cours - Récupérer un cours à partir de son id - Ajouter une partie - Récupérer une partie à partir de son id - Récupérer toutes les parties liées à un cours - Ajouter un chapitre - Récupérer tous les chapitres liés à une partie - Suppression - Récupérer un chapitre à partir de son id Package Rendu : Les modules principaux : - Récupération des réponses de l'interface web - Remplissage de structures de données - Envoi de ces données au correcteur - Affichage des données de la correction Package Evaluation : Les modules principaux : - 30 -

- Sauvegarde du choix d'un QCM - Sauvegarde d'un Programme - Sauvegarde d'un QCM - Sauvegarde d'un QRF - Sauvegarde d'une question Libre - Sauvegarde d'un mémoire - Sauvegarde d'un projet Package Réponse : Les modules principaux : - Réception et renvoi des réponses libres Package Web : Les Modules Principaux - Accès aux pages - Connexion / Déconnexion 3.5 Interfaces Afin de séparer les classes modèles du fonctionnement de l'application ainsi que des accès à la base de données, il a été développé des classes façades permettant d'accéder à la base de données afin d'y récupérer des données contextuelles à des classes modèles. De cette manière une classe telle que celle représentant les étudiants ne possédera pas directement les fonctions d'accès à la base de données et les modules extérieurs pourront accéder à ses informations par un mécanisme homogène dans tout les packages. Le nom de ces classes est préfixé du mot «Model». Donc, par exemple, pour récupérer un étudiant en possédant son id, il faut appeler la fonction «recuperer(int id)» de la classe ModelEtudiant - 31 -