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É 4.Real.01 - Développement d’une application complexe

Navigation

Apprentissages critiques

  • Vérifier et valider la qualité de l’application par les tests
  • Utiliser des techniques algorithmiques adaptées pour des problèmes complexes (par ex. recherche opérationnelle, méthodes arborescentes, optimisation globale, intelligence artificielle...)
  • Comprendre les enjeux et moyens de sécurisation des données et du code
  • Évaluer l’impact environnemental et sociétal des solutions proposées
  • Sécuriser les services et données d’un système
  • Optimiser les modèles de données de l’entreprise
  • Assurer la sécurité des données (intégrité et confidentialité)
  • Formaliser les besoins du client et de l’utilisateur
  • Identifier les critères de faisabilité d’un projet informatique
  • Définir et mettre en œuvre une démarche de suivi de projet
  • Appliquer une démarche pour intégrer une équipe informatique au sein d’une organisation
  • Mobiliser les compétences interpersonnelles pour travailler dans une équipe informatique
  • Rendre compte de son activité professionnelle

Introduction

Cette SAÉ demande, à la suite de la SAÉ3.01, de faire évoluer l'application produite. L'application devra être découpée en deux parties : une pour l'accès et gestion des données à travers une API Web, puis une seconde pour l'interface utilisateur exploitant l'API Web.

Lors du semestre précédent, vous avez réalisé une application Web conforme au cahier des charges et à tous les documents d'analyse que vous avez produits. Vous vous appuierez sur ce travail et cette expertise pour faire évoluer l'application. Les améliorations porteront sur l'ergonomie, l'expérience utilisateur (UX), la qualité logicielle, la sécurité, l'expérience développeur (DX), les tests et la testabilité.

Pour le déploiement, vous passerez d'une application Symfony hébergée sur machine virtuelle à deux ensembles de conteneurs, un embarquant l'API Web et un autre pour le serveur Web propulsant l'interface utilisateur.

Le volume de travail par étudiant est fixé à 50 heures en dehors des séances de TP / TD, soit environ 5h30 par semaine et par membre du projet.

Versionnage du projet

Vous travaillerez avec la même équipe que lors de la SAÉ3.01. L'un des membres aura la charge de créer deux dépôts GitLab qui seront nommés « sae4-01-api » et « sae4-01-front ». Dans chacun des deux dépôts, la collaboration entre les membres du groupe 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 groupe ainsi que les grandes lignes du projet et de sa mise en place
  • La branche principale sera protégée, aucun commit direct ne sera autorisé
  • Vos productions seront faites sous forme de branches qui seront soumises à la revue de code de vos partenaires et fusionnées lorsqu'elles sont considérées admissibles
  • L'équilibre entre les contributions des membres du groupe sera considéré
    Remarque importante

    La note de chacun des 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 sanctionné.

    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 installation de bundle
    • Une modification de configuration
    • Une entité
    • Un jeu d'essai (« fixtures », forge)
    • Un jeu de tests
    • La création d'un contrôleur et de la vue associée
    • Une fonctionnalités particulière

    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

Découpage du projet

Votre application va proposer une interface utilisateur s'appuyant sur des données manipulables à travers une API Web. L'ensemble des services sera mis en place sous forme de conteneurs.

Méthode de travail : agile

Vous mettrez en pratique la méthode agile pour la gestion de votre projet. Vous effectuerez la planification dans Microsoft Planner avec une suggestion forte pour cette organisation :

  • Un sprint par semaine
  • Une réunion de sprint par semaine (une heure) pour définir les objectifs et éventuellement faire un bilan du sprint précédent
  • Daily (une réunion par jour comme son nom l'indique) pendant laquelle chaque membre présente :
    • Travail effectué
    • Travail à faire
    • Problèmes rencontrés
  • Proposition de découpage des états du Kanban :
    • « Backlog »
    • À faire
    • En cours
    • « Merge request »
    • Revue de code en cours
    • Fait

Réflexions préliminaires

L'application réalisée lors de la SAÉ3.01 présente très certainement des points à améliorer. Dans tous les cas, la nouvelle architecture « backend / frontend » nécessite de repenser l'interface utilisateur et de prévoir les données à exposer dans l'API.

  • Remise en question de l'interface utilisateur précédente
  • Remise en question des entités et relations précédentes
  • Remise en question des « fixtures » précédentes
  • Choix concernant l'API :
    • Entités exposées
    • Propriétés des entités exposées
    • Opérations exposées
    • Sécurisation
    • Optimisation
  • Réflexion sur les tests
  • Choix des fonctionnalités du « back-office »
  • Adaptation de la feuille de style générale de l'application
  • Prévision de découpage des composants d'interface utilisateur

API Web

L'API Web exposera le modèle de données qui devrait être quasi identique à celui utilisé lors de la SAÉ3.01, mais toute modification améliorant l'application finale est possible. Une reflexion sur la pertinence, la performance, la sécurité et la validation par les tests conduira aux choix les plus appropriés.

Vous vous appuierez principalement sur les ressources « R4.01 | Architecture logicielle » et « R4.02 | Qualité de développement ».

  • Votre API Web sera basée sur Symfony et API Platform et respectera les bonnes pratiques
  • Vous utiliserez une base de données MySQL
  • Votre projet comportera des données, factices ou non, sous formes de « fixtures »
  • Des tests permettront de vérifier le bon fonctionnement et la sécurité de l'API
  • Une interface d'administration sera réalisée à l'aide de EasyAdmin
  • La gestion des utilisateurs et l'authentification seront réalisées sur l'API (voir « Configuration CORS pour utiliser l'authentification de l'API avec React »)
  • Des règles de sécurité limiteront l'accès aux données

Interface utilisateur

L'interface utilisateur sera repensée pour apporter un maximum d'ergonomie et d'accessibilité. Elle exploitera l'API Web.

Vous vous appuierez principalement sur les ressources « R4.Real.10 | Complément web » et « R4.01 | Architecture logicielle ».

  • Votre interface utilisateur sera basée sur React et respectera les bonnes pratiques
  • L'application sera pensée « mobile first » et fera usage des « media queries » pour proposer un affichage correct quelle que soit la largeur d'affichage
  • Les mises en forme CSS devront obligatoirement utiliser « flexbox »
  • L'accessibilité et l'ergonomie feront l'objet de toutes les attentions
  • L'interface devra être structurée en composants indépendants
  • Les composants interagiront avec l'API
  • La navigation se fera à l'aide d'un système de routage
  • La gestion des utilisateurs et l'authentification seront réalisées sur l'API (voir « Configuration CORS pour utiliser l'authentification de l'API avec React »)

Application sous forme de conteneurs

L'application finale sera déployée sous forme de deux groupes de conteneurs Docker, un pour l'API et un pour l'interface utilisateur.

Vous vous appuierez principalement sur la ressource « R4.Real.08 | Virtualisation ».

  • Le service d'API sera porté par une pile de conteneurs
  • Le service d'interface utilisateur sera porté par une pile de conteneurs
  • La procédure de démarrage du service d'API sera documentée
  • La procédure de démarrage du service d'interface utilisateur sera documentée

Présentation orale en anglais aux clients / collègues

Vous présenterez votre réalisation en anglais comme si vous la livriez à un client ou la présentiez à des collègues de travail. Vous effectuerez un résumé du sujet et vous présenterez ce que votre application apporte à l'utilisateur. Les aspects techniques seront donc limités et vous mettrez l'accent sur les fonctionnalités proposées, les efforts d'ergonomie et d'accessibilité, les aspects environnementaux ainsi que les évolutions possibles de votre produit.

  • La présentation sera agrémentée d'un support en anglais
  • Chaque membre du groupe devra intervenir à l'oral
  • Le temps de parole sera équitablement partagé
  • Une démonstration sera réalisée sous forme de vidéo (ou en temps réel à condition qu'elle suive un script prévu dans le détail)
  • Votre intervention durera 15 minutes
  • Le jury vous posera des questions pendant 10 à 15 minutes

Déroulement, suivi et évaluation

Le précédent découpage constitue la liste des livrables. Vous pourrez réaliser plusieurs étapes en parallèle. Les intervenants de certaines ressources seront vos référents et une partie d'entre eux vous évaluera.

Déroulement

Puisque vous êtes en cours d'acquisition d'une partie des connaissances et compétences que vous devez mettre en œuvre, le début de la SAÉ sera axé sur la réflexion, en tirant les enseignements des méthodes de gestion de projet utilisées et des résultats obtenus lors de la SAÉ3.01. Vous vous projetterez vers la nouvelle réalisation en faisant des choix judicieux.

L'API Web pourra ensuite être mise en place assez rapidement, tandis que le découpage de l'interface utilisateur en composants React au rôle d'affichage pourra commencer. Une fois que vos connaissances en API Platform et React auront progressé, vous pourrez sécuriser l'API, compléter les fonctionnalités d'affichage et envisager de réaliser des composants dont le rôle sera de mettre à jour la base de données en passant par l'API.

La mise en place de conteneurs pour héberger l'application pourra intervenir dans les dernières semaines, en même temps que la finalisation des fonctionnalités et la construction de la présentation au client en anglais.

La dernière semaine avant le départ en stage (semaine 14) est presque exclusivement réservée à la SAÉ. Ce sera l'occasion de finaliser votre travail et répéter votre présentation en anglais.

La présentation orale au lieu la dernière semaine.

Suivi

Les intervenants les plus aptes à vous conseiller sont ceux qui vous suivent dans les ressources associées et que vous voyez régulièrement en TP / TD. Vous pourrez donc effectuer un voire deux points hebdomadaires avec votre intervenant de :

  • « R4.01 | Architecture logicielle » et « R4.02 | Qualité de développement » pour la partie API Platform
  • « R4.Real.10 | Complément web » pour la partie React
  • « R4.Real.08 | Virtualisation » pour la partie Docker
  • « R4.05 | Anglais » et « R4.06 | Communication interne » pour la présentation orale en anglais aux clients / collègues

Vous ajouterez vos intervenants dans la planification Microsoft Planner de votre projet.

Les conseils concernant la SAÉ que vous pourrez solliciter durant les TP / TD ne doivent pas empiéter sur le programme de la séance. Veillez donc à préparer des questions formulées clairement. Les séances de TP / TD des ressources associées à la SAÉ ne sont pas le moment de travailler sur la SAÉ, simplement l'occasion de faire un point d'avancement avec votre intervenant.

Évaluation

La réalisation générale conduira à une note qui sera évidemment individualisée en fonction des contributions de chacun. La qualité du travail et le respect des consignes de réalisation sont tout aussi importants que la réalisation en elle-même.

Vous serez évalués sur le dépôt Git de la partie API par votre intervenant de « R4.01 | Architecture logicielle » et « R4.02 | Qualité de développement » et sur celui de la partie interface utilisateur par votre intervenant de « R4.Real.10 | Complément web ».

Remarque importante

La SAÉ permet d'évaluer vos compétences individuelles appliquées à la mise en place d'une API Web avec API Platform et d'une interface utilisateur avec React. Les notes individuelles de chacune deux parties du projet (API Platform et React) seront proportionnelles à la contribution de chaque membre du groupe de projet. Par conséquent, vous devez participer équitablement aux deux dépôts Git. Si vous n'effectuez aucune contribution dans une des deux parties, vous obtiendrez donc 0 sur cette partie.

La mise en place des conteneurs capables de faire fonctionner l'application sera prise en compte. L'organisation du groupe de projet et la régularité du travail, retracées en partie dans la planification Microsoft Planner, seront également évaluées.

L'ensemble des critères représentera 70% de la note finale.

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 vos deux dépôts soit accessibles 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 identifiants de connexion, 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 ».

Vous terminerez votre SAÉ par une soutenance en anglais qui constituera les 30% restants de la note.