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 :

  • Licence professionnelle Développement de Logiciels Innovants et Sécurisés - Alternants

Pré-requis :

  • Cours de programmation Web (PHP, Javascript)

Résultats attendus :

Découverte du sujet

Langages : Javascript, MySQL ou SQLite

4 groupes A1, A2, B1 et B2 de 4 à 5 étudiants.

  • Sujet A1 et A2 : Développement d’une application mobile de monitoring de production ;
  • Sujet B1 et B2 : Enrichissement d'une interface WYSIWYG de PhpBB via javascript.

Concernant la qualité du code PHP, outre les approches SonarQube/Jenkins, l’auteur de l’application web signale le PHP-FIG (PHP Framework Interoperability Groupement) qui édite les PSR (PHP Standard Recommendation). PSR, pour PHP Standard Recommendation, est un ensemble de normes pour PHP qui permet de faciliter l’interopérabilité des composants entre eux. Elles sont éditées par le php-fig : PHP Framework Interoperability Groupement. C’est un groupement de personnes qui travaillent autour de ces recommandations. Tout le monde peut faire partie de ce groupement. Mais seuls certains membres avec le droit de vote peuvent voter sur les nouvelles recommandations. Les membres votants sont généralement des représentants de projets tels que Doctrine, Composer ou Symfony. Il y a actuellement 7 normes validées qui sont prises en compte par les développeurs PHP :

  • PSR-4 est la norme pour l’auto chargement des classes. PSR-1 étant déprécié.
  • PSR-1 et PSR-2 vont se concentrer sur la forme du code
  • PSR-3 est pour la mise en forme de log.
  • PSR-6 pour la mise en cache d’objets (Redis, memcached)
  • PSR-7 pour les requêtes/réponses HTTP

Toutes ces normes vont permettre de bien structurer le code, d’avoir les mêmes interfaces, et de permettre aux autres développeurs de contribuer plus facilement.

Contrainte globale sur tout le projet : Respect du Top 10 OWASP.

Apprentissage des rôles et des outils (S16-S18)

La présentation du projet en semaine S16. Affectation des groupes. Affectation à chaque groupe de la présentation des outils. Durant la semaine de vacances en S17, les étudiants préparent leur présentation. En S18, c'est le rendu par les étudiants et partage entre eux des productions.

  • Auto apprentissage :
    • Rôles (avec répartition des rôles au sein de chaque équipe)
    • Git (tout le monde) ;
    • Tests unitaires en PHP avec PHPUnit ;
    • Jenkins / SonarQube (y compris SonarPHP, SonarJS, SonarLint) ;
    • Test unitaires en javascript avec Mocha ou Jasmine ;

Release 1 (S25)

  • On propose un backlog pour le produit et un backlog pour le sprint

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

Sprint 1

Sprint 2

Release 2 (S26)

Ce projet écrit en PHP/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 :

  • PRJSYNTH_2020_3PDL11_A1 ;
  • PRJSYNTH_2020_3PDL11_A2 ;
  • PRJSYNTH_2020_3PDL11_B1 ;
  • PRJSYNTH_2020_3PDL11_B2.

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_2020_3PDL11_A1 correspond au répertoire P:\PRJSYNTH_2020_3PDL11_A1 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_2020_3PDL11_XY 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_2020_3PDL11_A1, P_2020_3PDL11_A2, P_2020_3PDL11_B1 et P_2020_3PDL11_B2 associées aux utilisateurs dont le mot de passe correspond au login ont été créées sur le serveur MySQL 8.0.11 hébergé sur ubsbase04.ubs-bi.local, port 3311. Vous pouvez y accéder à partir du bureau soit via phpMyAdmin (http://ubsbase04:94/phpmyadmin/ ou http://ubsbase04:95/phpmyadmin/) 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 3311 -h ubsbase04 -u P_2020_3PDL11_A1 -pP_2020_3PDL11_A1 P_2020_3PDL11_A1

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 :

  • Autres raccourcis\eclipse & visual paradigm\eclipse-jee-neon-3 avec jre 8 : plugins PDT, SonarLint ;
  • Autres raccourcis\eclipse & visual paradigm\eclipse-jee-mars-1 avec jre 8 : plugins PDT, SonarSource ;
  • Autres raccourcis\eclipse & visual paradigm\eclipse-jee-juno-2 avec jre 7 : plugins PDT, PTI, SonarSource.

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 :

  • Shell PHP 5.6.33 ;
  • Shell PHP 7.0.33 ;
  • Shell PHP 7.2.15.

Ce cours a été mis en ligne en 2020-2021.

Accéder au cours en ligne : NetUBS

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