Projet Génie Logiciel Avancé, Version 1.0



Documents pareils
Plateforme de capture et d analyse de sites Web AspirWeb

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)

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

Gé nié Logiciél Livré Blanc

Programmation Web. Madalina Croitoru IUT Montpellier

Bien programmer. en Java ex. couleur. Avec plus de 50 études de cas et des comparaisons avec C++ et C# Emmanuel Puybaret.

Devenez un véritable développeur web en 3 mois!

Mise en œuvre des serveurs d application

MODALITES DE SUIVI DU PROJET ANNUEL DU MASTER 2 SOLUTIONS INFORMATIQUES LIBRES

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Projet de Java Enterprise Edition

PG208, Projet n 3 : Serveur HTTP évolué

CalDav Manager : Gestionnaire d emploi du temps

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d ing.

QUELQUES ÉLÉMENTS DU DÉVELOPPEMENT LOGICIEL

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

workshop javascript crm

Cours 1 : La compilation

Analyse,, Conception des Systèmes Informatiques

Network musical jammin

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Générer du code à partir d une description de haut niveau

Tutoriel : Ecrire un article sur le site de la TEAM GSAS

Annexe : La Programmation Informatique

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

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

Entraînement au concours ACM-ICPC

Version de novembre 2012, valable jusqu en avril 2013

SITE WEB E-COMMERCE ET VENTE A DISTANCE

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Bases de données et interfaces Génie logiciel

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

les techniques d'extraction, les formulaires et intégration dans un site WEB

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Java 7 Les fondamentaux du langage Java

Formation en Logiciels Libres. Fiche d inscription

Compte Rendu d intégration d application

Module Projet Personnel Professionnel

IN Tech - 12 janvier 2010 Open Source et innovation : le Libre comme méthodologie de développement

Manuel d utilisation du site web de l ONRN

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Architecture Orientée Service, JSON et API REST

Spip 2. Premiers pas pour créer son site web. Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Sandrine Burriel

Manuel du logiciel PrestaTest.

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Éléments de programmation et introduction à Java

Développement itératif, évolutif et agile

Vérifier la qualité de vos applications logicielle de manière continue

Métriques de performance pour les algorithmes et programmes parallèles

Bien architecturer une application REST

Utiliser l'assistant mailing

Projet Active Object

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

CQP Développeur Nouvelles Technologies (DNT)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Guide d utilisation. Version 1.1

ANICOTTE Guillaume GUFFROY Matthieu LIMA Juliette SALLOUH Chamsseddine CAHIER DES CHARGES SI 28

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Information utiles. webpage : Google+ : digiusto/

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

AQUADEV asbl (Belgique)

RTDS G3. Emmanuel Gaudin

Cahier des charges (CDC)

UE Programmation Impérative Licence 2ème Année

Environnements de Développement

Utilisation de Sarbacane 3 Sarbacane Software

Master CCI. Compétences Complémentaires en Informatique. Livret de l étudiant

4. SERVICES WEB REST 46

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Technologies Web avancées. ING1 SIGL Technologies Web avancées

Processus d Informatisation

Applicable à partir de l année d assurance 2014 Assurance récolte Apiculture Section 13,2 - Admissibilité

Étape 1 / CHOISIR UN HÉBERGEMENT

Fiche méthodologique Rédiger un cahier des charges

«clustering» et «load balancing» avec Zope et ZEO

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

PloneLabs un gestionnaire de contenu pour les laboratoires

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Système de vidéosurveillance Guide de configuration

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

TP1. Outils Java Eléments de correction

Europresse.com. Pour les bibliothèques publiques et de l enseignement. Votre meilleur outil de recherche en ligne. Guide version 1.

Création outil multimédia de restitution du projet «l intergénérationnel : un levier pour un levier pour créer du lien social en milieu rural

UE 8 Systèmes d information de gestion Le programme

Extensions, Documentation, Tutoriels, Astuces

Business Process Execution Language

SOMMAIRE DU RAPPORT ANNUEL 2013 DU VÉRIFICATEUR GÉNÉRAL

La programmation orientée objet et le langage C++

MYXTRACTION La Business Intelligence en temps réel

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Transcription:

Projet Génie Logiciel Avancé, Version 1.0 14 février 2012 1 Introduction Un certain client aimerait un clone de Worms. Sa demande est fournie séparément. Remarquez que l on ne vous demande pas : De prévoir un mode de jeu contre l ordinateur D avoir des caisses d objets tombant aléatoirement De pouvoir jouer un contre un sur le même ordinateur Néanmoins, comme le suggère les grands principes du génie logiciel, on essaiera de faire un logiciel le plus abstrait et générique possible, et également de faciliter les extensions futures. Après avoir livré la version finale du projet, aura lieu un test grandeur nature i.e. le client jouera intensivement et il est possible qu il demande certaines améliorations. Il faudra s organiser pour y répondre (le client est roi) ainsi qu aux demandes de corrections de bugs. Toute question sur le projet devra être posée sur la mailing list (inscription obligatoire pour tout le monde) : https://listes.sc.univ-paris-diderot. fr/sympa/info/m1gl-projet 2 Déroulement du projet 2.1 Calendrier Les moments clés du projet (intervenant dans la notation) : 1. 5/03 : rendu de la spécification du projet 2. semaine du 2/04 : livraison provisoire 3. semaine du 30/04 : livraison finale 4. du 01/05 au 18/05 : phase de test grandeur nature 5. semaine du 21/05 (ou 28/05) : soutenance 2.2 Analyse et spécification En ayant en tête les grand principes du génie logiciel, vous spécifierez le système : 1

En spécifiant ce à quoi peut s attendre l utilisateur final. Si vous avez des doutes sur ce que veut le client (ce qui est normal), vous pouvez soit le contacter, soit supposer ce qu il attend à condition de le spécifier en plus de la description actuelle. En spécifiant l architecture, les différents composants, ainsi que la répartition des différentes tâches aux différentes équipes. En spécifiant les différentes interfaces, les protocoles, que les différentes équipes devront respecter. Pour les deux dernières parties, vous donnerez des diagrammes UML spécifiant les grandes lignes (mais pas forcément chaque diagramme de classe). 2.3 Livraison provisoire Le but de cette livraison est d avoir un programme qui tourne même si tout n est pas implémenté. Il serai bien d avoir à ce moment du projet : Une partie avec une carte chargée, des vers pouvant se déplacer correctement (ils tombent s il y a un précipice) La gestion des collisions entre deux vers (ils ne peuvent pas se croiser) En particulier, les points suivants pourront être laissés de côté : L utilisation des armes (du moins celles compliquées) L interaction entre les deux clients Le système de points de vie La gestion du vide Le déplacement d écran (scrolling) 2.4 Livraison finale Tout devra être fini à ce moment là, y compris les différentes documentations. Le logiciel rendu devra être utilisable, il va de soit qu on doit pouvoir jouer correctement sans bug majeur. Il faudra préférer avoir fait peu mais bien que le contraire. Si par hasard le projet ne compile pas, la note vaudrait bien évidemment 0. 2.5 Phase de test Pendant ce temps là, le client va tester le logiciel et soumettra des rapports pour les bugs qu il rencontrera. S il l estime nécessaire, il pourra demander de nouvelles fonctionnalités. Celles-ci devront être prêtes pour le jour de la soutenance. 2.6 Soutenance Vous présenterez votre projet, vos choix techniques, les améliorations futures. La forme exacte reste à déterminer. 2

3 Articulation du projet 3.1 Graphismes On ne vous demande pas de réaliser des graphismes. Vous pourrez réutiliser des images libres de droit comme celles utilisées par d autre clones de Worms (http://www.hedgewars.org). Si vous désirez réaliser vous même des images, il faudra utiliser la canal alpha pour gérer la transparence (http://fr.wikipedia. org/wiki/canal_alpha). 3.2 Gestion de l affichage Votre travail doit avoir un aspect irréprochable. Pour cela il ne faudra pas redessiner à la main les worms. Vous devrez utiliser des techniques plus évoluées comme le double-buffering ou page flipping (http://docs.oracle.com/ javase/tutorial/extra/fullscreen/doublebuf.html). Il existe des classes standards en Java qui font le travail pour vous (http://docs.oracle.com/ javase/tutorial/extra/fullscreen/bufferstrategy.html). Prenez également en compte les conseils donnés ici : http://docs.oracle.com/javase/tutorial/ extra/fullscreen/rendering.html. Vous êtes libres d utiliser les bibliothèques existantes. En Java, il est possible de se contenter de la bilbliothèque standard (avec awt, swing) comme proposé dans ce tutoriel : http://www.cokeandcode.com/index.html?page= tutorials/spaceinvaders101. Ou bien JOGL comme proposé ici : http:// www.cokeandcode.com/index.html?page=tutorials/spaceinvaders103. Remarquez que la gestion de l affichage devrait être indépendante du reste en appliquant le modèle MVC. Dans le précédent tutoriel, en modifiant une ligne on passe de awt à JOGL. Il devrait en être de même dans votre logiciel. Vous pourrez encore utiliser la bibliothèque lwjgl http://www.lwjgl.org comme décrit dans ce tutoriel http://www.cokeandcode.com/index.html?page=tutorials/ spaceinvaders104. Pour Python, vous pouvez utiliser Pygame (http://pygame. org) ou bien PyOpenGL (http://pyopengl.sourceforge.net). Pour avoir un affichage correct, il est important que votre programme soit suffisamment rapide (sur les machines de l UFR) pour afficher au moins 30 images par seconde. De plus, pour éviter certains désagréments visuels, il est préférable que cette vitesse ne varie pas. On pourra donc avoir en permanence 30 images par seconde. 3.3 Réseau Vous devrez vous mettre d accord avec l autre équipe sur un protocole de communication entre le serveur et le client. Il pourra prendre la forme que vous estimez nécessaire mais ne devra pas être trop gourmand en utilisation de la bande passante. Vous utiliserez les fonctions de haut niveau de Java et Python pour pouvoir communiquer. 3

3.4 Détection des collisions Cette partie doit être traitée avec minutie car une implémentation naïve peut donner des performances catastrophiques. Pensez à donner une enveloppe rectangulaire à chacune de vos entités se déplaçant pour pouvoir effectuer des tests rapides. Une partie relativement complexe du projet va consister à transformer une carte (au format.png ou.jpg) en un objet manipulable par votre programme. En particulier le déplacement de votre vers devra épouser les contours de votre carte, et éventuellement s arrêter s il rencontre un mur (ou du moins une pente trop raide pour être montée). Le modèle devra être suffisamment abstrait pour que les calculs soient rapides mais pas trop pour que le vers monte une pente de façon linéaire. Vous pourrez vous inspirer du code de projets existant. 4 Parties techniques 4.1 Langage Vous pourrez utiliser Java ou Python. Chacun des langages a son style que vous devrez respecter. En plus du style, il faudra respecter les conventions données par http://java.sun.com/docs/codeconv/codeconventions. pdf pour Java et par http://python.org/dev/peps/pep-0008. Le respect des conventions est d autant plus important qu il y a de programmeurs différents et de lignes de code. Vous pouvez ne pas être d accord avec la convention mais vous devez la respecter. Il existe des outils comme pep8 ou Checkstyle pour vérifier entre autre le style. 4.2 Environnement de développement Vous pouvez utiliser l environnement qui vous convient et ne devez pas en imposer un au sein du groupe. 4.3 Gestion de projet Le projet devra être versionné avec un accès en écriture pour chacun des membres et en lecture pour l enseignant. Vous pourrez utiliser le gestionnaire de votre choix (Subversion, Git, Darcs,...). Il faudra également avoir un système de gestion des tâches et des bugs. Pensez également à mettre en place un moyen de communiquer accessible à tous et pérenne. Des sites web comme https: //github.com ou http://sourceforge.net proposent de tels services. 4.4 Commentaires Toute classe et toute méthode doit être commentée avec au moins la description des arguments et la description du résultat. Vos commentaires doivent pouvoir générer une documentation HTML avec Javadoc ou pydoc. Si vous l estimez nécessaire, écrivez des commentaires sur les parties complexes de votre 4

code. Si un membre du groupe a mis du temps a comprendre votre code, il faut écrire un commentaire. La meilleure manière consistant à faire écrire tous les commentaires de votre code par quelqu un d autre (et vice-versa) 4.5 Tests Votre programme devra impérativement contenir des jeux de tests. Vérifiez que chaque ajout de fonctionnalité ne casse pas des tests passant auparavant. Utilisez les outils standards pour effectuer des tests comme unittest pour Python ou JUnit pour Java. La méthode de développement piloté par les tests est préconisée mais pas obligatoire. 5 Évaluation Les différents rendus (spécification, livraison provisoire, livraison finale), la réactivité durant la phase de tests, ainsi que la soutenance seront pris en compte dans la note finale. La note de chaque étudiant correspondra à la note du groupe éventuellement modulée. Le groupe ayant le meilleur rendu au des points bonus. 5