From Michel Dubois

Teaching: Projet de synthèse de l'UE6

L'application de synthèse a pour but de mettre en application les connaissances acquises dans l'UE4, mais aussi de mettre en œuvre les bonnes pratiques de projet de programmation vues en UE1.

Public :

Pré-requis :

Résultats attendus :

Découverte du sujet

Langages : Javascript (React), HTML5, CSS3, Python (FastAPI, SQLAlchemy, Motor, Beanie) MySQL ou SQLite, MongoDB

4 groupes de 4 à 5 étudiants.

Existant : la base de données relationnelle La Fnuc a donné lieu à des applications web classiques en Java et en PHP puis en Python avec Flask. A côté de ces applications web, des web services SOAP avec le framework java Apache Axis2 et une API RESTFul disposant d'une documentation OpenAPI 3.0.3 autonome avec le framework python Flask en mode Code First avec le noyau SQLAlchemy (requête exprimée soit en SQL standard i.e. non spécifique à un SGBD ou soit exprimée en

SQL Expression Language via SQLAlchemy Core) voisinent et sont utilisées par des applications web essentiellement écrites en javascript natif.

Vous utiliserez l'approche TDD pour les parties objets de Python (pytest, coverage, pytest-cov voire pytest-flask) et les parties objets Javascript (jasmine, mocha, jest). Si le code existant repose sur Python 3.5 et un serveur MySQL ou PostgreSQL « portable » pour Windows, vous pouvez utiliser une version récente de Python comme 3.9 ou 3.10 et Docker afin de composer des microservices.

Pour les APIs RESTful nous utilisons soit un ORM, soit un ODM pour ne pas être tributaire d'un éditeur de base de données SQL ou NoSQL. Or l'implantation de l'indexation Full Text est spécifique pour chaque éditeur (BLOB, CLOB, etc.). Une implantation puissante et indépendante de l'indexation Full Text peut se baser sur Elastic Search, un moteur de recherche qui s’installe et s’initialise très facilement. Vous pourrez indexer vos premiers documents comme la description des livres, et vous pourrez faire alors vos premières requêtes.

Vous pouvez utiliser des portails d’intégration continue à base de jenkins et sonarQube dans le nuage s’ils sont munis des plugins pour l’analyse des langages Web et Python et que votre code source est disponible sur Gitlab.

Apprentissage des rôles et des outils (S24)

La présentation du projet en semaine S16. Affectation des groupes. Affectation à chaque groupe de la présentation des outils.

Release 1 (S24)

Le client a défini le travail de chaque groupe.

Sprint 1

Sprint 2

Release 2 (S25)

Ce projet écrit en Python/Javascript utilise une chaine d'intégration continue avec Jenkins éventuellement doté de ses plugins relatifs à la qualimétrie PHP (Phing, PHP Depend, PHP Mess Detector, phpcpd, phploc, PHP_CodeSniffer, phpDocumentor, PHP_CodeBrowser / Ant, Template for Jenkins Jobs for PHP Projects) et Maven (Jenkins) et utilise SonarQube muni des modules pour les langages Web/JavaScript/PHP pour la qualimétrie. Pour la couverture de tests en Javascript, le plugin SonarJS nécessite la pile Node.js/Gulp/Karma. Gulp pilote le processus de construction tandis que Karma le lanceur de tests génère des rapports JUnit et LCOV au final compris par SonarJS. Maven lance gulp via le plug-in frontend-maven-plug-in de Jenkins qui lui délègue le processus de construction.

Ils développent via le Git.

Le projet est géré entièrement en mode agile avec SCRUM et XP

Environnement :

Vous disposez sur le bureau à distance statdeci5 d'espace de projets PHP :

En plus, vous disposez d'un espace personnel correspondant à votre compte etudiantXX, x de 03 à 21.

Ces espaces sont modifiables via le lecteur P:. Par exemple PRJSYNTH_2022_3PDL11_1 correspond au répertoire P:\PRJSYNTH_2022_3PDL11_1 et etudiant03 correspond au répertoire P:\etudiant03. Vous pouvez tester votre projet en PHP 5.6.33 ou en PHP 7.0.33 ou en PHP 7.2.15 :

Ainsi, si vous êtes plusieurs de votre équipe à utiliser le bureau à distance, il est pratique de faire de P:\etudiantXX\ le répertoire de votre copie clonée de votre repository Github/GitLab à l'aide de Autres raccourcis\eclipse & visual paradigm\GitHubDesktop. Les espaces partagés PRJSYNTH_2022_3PDL11_X ne sont utiles que si vous n'utilisez pas avec Jenkins d'un gestionnaire de version Git, cas peu probable en réalité.

De plus, les bases de données P_2022_3PDL11_1, P_2022_3PDL11_2 et P_2022_3PDL11_3 associées aux utilisateurs dont le mot de passe correspond au login ont été créées sur le serveur MySQL 8.0.18 hébergé sur ubsbase04.ubs-bi.local, port 3313. Vous pouvez y accéder à partir du bureau soit via phpMyAdmin (http://ubsbase04:95/phpmyadmin/index.php?server=4) soit via le client lourd et graphique Autres raccourcis\MySQL 8.0\MySQL Workbench 8.0.11 CE Win64 ou le client lourd et console Autres raccourcis\MySQL 8.0\Shell MySQL 8.0.11 Win64 :

#mysql -P 3313 -h ubsbase04 -u P_2022_3PDL11_1 -pP_2022_3PDL11_1 P_2022_3PDL11_1

Le serveur tomcat 7.0.56 s'exécutant dans une JVM 1.8.0_144 atteignable depuis le bureau à distance statdeci5.univ-ubs.fr à l'adresse http://ubsbase04:9092 offre une chaîne d'intégration continue jenkins 2.138.1 (http://ubsbase04:9092/jenkins/) liée à un serveur sonarqube 5.6.7 (http://ubsbase04:9000/) muni des modules pour les langages Web/CSS/JavaScript/PHP/Python en plus de Java et Maven.

A noter que les distributions Eclipse suivantes peuvent vous intéresser :

SonarLint récupère pour vous la liste des problèmes depuis le portail sonarqube pour les afficher directement dans votre code dans éclipse. Sinon, il faut prendre connaissance des problèmes dans le menu code du portail sonarqube de votre projet. SonarSource fait la même chose mais uniquement pour Java.

Enfin, pour pouvoir utiliser sur votre espace de projet PHP les utilitaires composer, PHPDOC, PHPUnit, Phing, des raccourcis se trouvent dans Autres raccourcis\eclipse & visual paradigm :

Ce cours a été mis en ligne en 2022-2023.

Accéder au cours en ligne : NetUBS

Se connecter "en tant qu'invité" : Aide à la connexion

Retrieved from http://michel.dubois.ubs.chez.com/index.php?n=Teaching.ProjetUE69
Page last modified on 27/06/2023 17:38