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 Sécurité des Systèmes d’Information : Intégration et Maintenance applicative
  • Licence professionnelle Sécurité des Systèmes d’Information : Intégration et Maintenance applicative - Alternants

Pré-requis :

  • Cours de programmation Web (PHP, Javascript)

Résultats attendus :

Découverte du sujet

Langages : PHP, Javascript, MongoDB

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.

Release 1 (S40-S45)

  • On propose un backlog pour le produit et un backlog pour le sprint
  • On propose une maquette de l'application web (uniquement 1.0 pour capturer les besoins en données).
  • Conception d'une base de données et modélisation d'un diagramme de classe d'UML en considérant que les fichiers externes (images, tracés d'onde) sont placés sur le serveur web et que la base se contente de mémoriser les chemins relatifs vers ces fichiers.
  • Équipe BD :
    • Implémentation MongoDB (Collections, références (foreign key), dénormalisation (fkm), vues). Création d'un jeu d'essai de données.
  • Équipe Batch+Serveur PHP :
    • Test audiowaveform pour linux, windows?, osx?
    • Étude/appel API REST MongoDB (ou RESTHeart après une installation manuelle sans docker) via XMLHTTPRequest
    • Voire conception d'une API REST/RESTful/HATEOAS. Sécurité via un token de connexion ou login/password comme paramètre de tous les appels. Implémentation en PHP/MongoDB avec les pilotes Mongo ou MongoDB.
  • Un rapport de compréhension est rédigé par chaque groupe.

Le plan de ce document est défini avec le client.

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

Sprint 1

Sprint 2

Release 2 (S46-S51)

  • Installation des utilitaires batch, Serveur Apache/PHP, serveur MongoDB sur le Rasberry PI.
  • Validation de l'API REST ou proposition d'une API simulant l'envoie des données réelles.
  • Développement de l'application 100% Javascript (formulaires web 2.0 découpée en scénarios ? Appli Responsive dès le départ ?

Sprint 3

Sprint 4

Release 3 (S02-S04 : beaucoup de créneaux pour le projet)

  • Navigation de l'appli 100% javascript depuis votre Android, iPhone, etc.
  • Adaptation Responsive ?

Sprint 5

Sprint 6

Release 4 (S05-S07 : Que les formation initiale à temps plein)

Sprint 5

Sprint 6

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

Ce cours a été mis en ligne en 2018-2019.

Accéder au cours en ligne : NetUBS

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