Jérôme Cutrona

Version statique de l'intranet de Jérôme Cutrona - Rejoindre la version dynamique 🔒

Les exemples et corrections sont potentiellement non fonctionnels.

B.U.T. Informatique - IUT de Reims - Université de Reims

SAÉ 2.01 - Développement d’une application

Navigation

Apprentissages critiques

  • Implémenter des conceptions simples
  • Élaborer des conceptions simples
  • Faire des essais et évaluer leurs résultats en regard des spécifications
  • Développer des interfaces utilisateurs

Introduction

Le projet global s'articule autour d'une base de données que vous allez afficher sous forme d'une application Web de consultation. Dans un second temps, vous produirez les interfaces Web permettant de modifier le contenu de la base de données.

Après l'initialisation du projet Composer en suivant les mêmes consignes et méthodes que dans le TP « CRUD Music », vous réaliserez les classes et programmes nécessaires pour obtenir les maquettes de pages fournies. Vous utiliserez vos connaissances CSS et flex pour les mettre en forme. Vous serez brièvement guidés sur l'ordre de réalisation, mais vous devrez reproduire par vous-même des choix de conception et de réalisation similaires à ceux effectués pour les TP.

Versionnage du projet

Vous travaillerez en binôme. L'un des deux membres aura la charge de créer le dépôt GitLab qui sera nommé « sae2-01 ». La collaboration entre les deux membres du binôme suivra les mêmes règles que celles présentées dans le TP « Collaboration avec Gitlab » :

  • Un fichier « README.md » présentera le nom, prénom et login des membres du binôme
  • La branche principale sera protégée juste après la mise en place du projet, aucun commit direct n'est autorisé
  • Vos productions seront faites sous forme de branches qui seront soumises à la revue de code de votre partenaire et fusionnées lorsqu'elles sont considérées admissibles
  • L'équilibre entre les contributions des deux membres du binôme sera considéré
    Remarque importante

    La note de chacun des deux partenaires sera proportionnelle à la quantité et la qualité de ses contributions.

  • Chaque commit sera le plus ciblé possible
    Remarque importante

    Tout commit qui ne respecte pas les règles, car il apporte trop de fichiers et/ou trop de nouveautés en une seule fois, sera considéré comme du plagiat et sera purement et simplement ignoré.

    En dehors de la mise en place du projet et de l'ajout des classes fournies, un commit doit introduire en une fois un seul des éléments suivants :

    • Une classe avec ses propriétés, ses accesseurs et mutateurs
    • Une méthode complexe
    • Un programme
    • Un fichier de ressource

    L'interface de gestion de versions PhpStorm propose d'effectuer un commit sur une partie des fichiers modifiés. Utilisez cette fonctionnalité pour structurer vos commits.

  • Chaque message de commit sera clair et explicite
  • Vous veillerez à ce que vos nom et prénom réels et mail universitaire soient configurés dans git de façon identique à l'IUT et sur votre ordinateur personnel
  • Puisque vous travaillerez en équipe, les fichiers de configuration de PhpStorm (répertoire « .idea » dans le projet) seront exclus de l'index Git

Mise en place du projet

Tout comme en TP, vous utiliserez Composer pour initialiser un projet dans lequel vous utiliserez l'auto-chargement.

Lors de l'initialisation du projet (« composer init »), Composer crée le fichier « composer.json » qui contient les informations sur le projet et ses dépendances. Un seul des membres du binôme crée le projet. Le second devra cloner le dépôt git et installer les dépendances du projet avec « composer install ».

L'ajout des classes indispensables comme « MyPdo » ou « WebPage » peut se faire dès la mise en place du projet.

Base de données

Votre application va interagir avec une base de données MySQL qui contient des jeux vidéo. Elle est issue de l'API Steam qui a été traitée par Valentin Fortier, Elias Richarme, Oscar Neveux et Nathan Villette lors de leur SAÉ S4 du parcours Data en 2024-2025 « Développement avec une base de données et visualisation ». La structure de la base de données est la suivante : Le schéma de la base de données

Cette base de données est présente sur le serveur MySQL du département informatique, qui est accessible en intranet ou depuis le VPN. Vous pouvez copier cette base « cutron01_game » depuis phpMyAdmin. Chacun des membres du binôme doit configurer sa propre copie de la base puisque le fichier de configuration contenant le mot de passe ne doit pas se retrouver sur le dépôt git.

Si vous souhaitez utiliser votre propre serveur MySQL, vous pouvez télécharger le script de création de la base MySQL inclus dans une archive ZIP.

Réalisations demandées et progression suggérée

Vous devez réaliser une application équivalente au sujet de TP « CRUD Music » transposé à la base de données fournie.

Remarque importante

Les outils de génération de code à base d'IA sont formellement interdits.

Contraintes de réalisation

Vous devrez impérativement respecter les contraintes de réalisation suivantes :

  • Votre code PHP devra être conforme à la recommandation « PSR-12 » et vous utiliserez les outils nécessaires au respect de cette consigne
  • Votre code sera en anglais : noms de classes, noms de propriétés, noms de méthodes, noms de variables, noms des programmes.
  • Le projet doit pouvoir fonctionner sur Linux comme sur Windows.
  • Vous documenterez systématiquement les fonctionnalités, programmes, scripts Composer ou autres fichiers de configuration dans le fichier « README.md ».
  • Vous utiliserez « MyPDO » et « WebPage » (voire « AppWebPage ») pour vos développements
  • Votre code sera structuré en classes d'entités représentant les lignes des tables de base de données, de collections d'entités et de formulaires d'entités, exactement comme en TP
  • Les mises en forme CSS devront obligatoirement utiliser « flexbox », être pensées « mobile first » et faire usage des « media queries » pour proposer un affichage correct quelle que soit la largeur d'affichage
  • Si des programmes nécessitent des paramètres de « query string » GET, des réponses HTTP avec des codes de statut appropriés seront données en cas de problème
  • Les tests, facultatifs, s'appuient sur une base de données SQLite au contenu réduit

Réalisations demandées

  1. Liste de l'ensemble des catégories et genres de jeux 11,5 points
    Maquette de la page d'accueil de l'application (liste des catégories et genres de jeux)
    Version mobile
    Maquette de la page d'accueil de l'application (liste des catégories et genres de jeux)
    Version desktop
  2. Détails d'une catégorie et d'un genre avec la liste de ses jeux 8,5 points
    Maquette de la page de détails d'une catégorie avec la liste de ses jeux
    Jeux d'une catégorie
    Maquette de la page de détails d'un genre avec la liste de ses jeux
    Jeux d'un genre
    Information

    Un poster par défaut sera proposé à l'aide d'une redirection HTTP s'il n'y a pas de poster pour un jeu.

  3. Détails d'un jeu avec la liste de ses catégories et genres 4,75 points
    Maquette de la page de détails d'un jeu avec la liste de ses catégories et genres
    Version mobile
    Maquette de la page de détails d'un jeu avec la liste de ses catégories et genres
    Version desktop
    Information

    Les images des plateformes pour lesquelles les jeux sont proposés peuvent être trouvées sur Font Awesome et sont reprises ici sous forme de SVG : Linux Windows Apple

  4. Création, édition, suppression d'un jeu 11,75 points
    • un menu sera ajouté pour le retour à la page d'accueil
    • l'édition d'un jeu doit préserver le poster existant
    • le poster d'un jeu est facultatif lors de la création, et il n'est pas demandé de le gérer
    • un menu sera ajouté pour proposer les fonctionnalités de création, d'édition et de suppression
  5. Tri des listes de jeux par titre ou par année à l'aide d'un menu (bouton, radio ou autre) 3,5 points
  6. Ajout des tests des méthodes des classes et des programmes (facultatif) 2 points bonus 2 points bonus

Évaluation

La liste des réalisations demandées comporte un barème indicatif susceptible d'évoluer. Les points obtenus constituent les deux notes brutes de la SAÉ (barème note 1 et barème note 2).

Ces notes brutes peuvent subir un malus individuel allant jusqu'à 2 points si la qualité des messages de commit n'est pas satisfaisante.

Pour finir d'individualiser la note, un coefficient multiplicateur de 0 à 1 sera appliqué pour refléter l'équilibre du travail entre les deux membres du binôme.

Information

Pour vous évaluer, nous devons cloner votre dépôt GitLab, installer les dépendances, créer la base de données, charger les « fixtures » puis lancer les tests et démarrer le serveur Web. Veillez donc à ce que votre dépôt soit accessible et que les instructions pour installer et lancer votre application soient claires et précises. De plus, nous devons savoir ce que propose votre application. Ainsi, sans un minimum d'instructions sur les fonctionnalités présentes, sur les jeux de données disponibles et les procédures à réaliser, nous ne pourrons pas évaluer votre travail. Toutes ces informations doivent figurer clairement dans le fichier « README.md ».

Testez la mise en route de votre application : clonez votre dépôt dans un répertoire vide, installez les dépendances, créez la base de données, chargez les « fixtures » puis lancez les tests et démarrez le serveur Web. Si tout fonctionne, vous avez de grandes chances d'être évalué dans de bonnes conditions.