Todolist

ToDo & Co

Présentation du contexte

  • Actuellement, application MVP
  • Amélioration de l'application et correction de bugs
  • Faire un audit de code & de performances
  • Rédiger les tests fonctionnels et unitaires de l'application
  • Écrire une documentation technique sur l'authentification
  • Écrire un la documentation de contribution

 

Analyse du besoin

Diagramme d'utilisation

Analyse du besoin

Diagramme de classe

Analyse du besoin

Diagramme de séquence

Créer un utilisateur

Organisation du projet

Versionning, organisation, priorisation, estimations ...

Utilisation de mon GitHub

Gestion des tâches

Issues sur GitHub

exemple de tâche

Estimation des tâches

Estimation de la tâche puis une fois effectuée,
 Référence à la pull request et au commit qui la clôture

Gestion des tâches

Workflow de la pull request
improvement-app avec commits et clôture des tâches

tâche cloturée dans le workflow de la pull request imprvement-app

Versionning

Chaque étape clé a une branche

Démonstration de l'application

Résultat de l'audit

Présentation de la qualité de code

Utilisation de :

  • SensioLabsInsight
  • Scrutinizer
  • Codacy
  • Expérience personnelle

Résultat de l'audit

Qualité : Structure de code

  • Structure standard pour projet SF
  • Readme peu détaillé
  • Manque dossier /Type pour les formulaires

Résultat de l'audit

Qualité : Rapport SensioLabsInsight

19 erreurs, réparties en 4 catégories :

Critical : Point très urgent, qui peut mettre en danger le bon fonctionnement de l’application et sa sécurité

Major : Point urgent, qui peut mettre en danger le bon fonctionnement de l’application et sa sécurité à moindre mesure que les violations « Critical »

Minor : Point mineur, portant sur le style du code, le code mort, le code inutilisé et la sécurité

Info : Points d’informations à vérifier car peut se transformer en "Critical" au fil du temps.

Résultat de l'audit

Qualité : Les tests

  • Le taux de couverture est de 0%
  • Maintenabilité de l'application en péril
  • Tester les points d’entrées et de sorties
  • Ajouter un outil d’intégration continue tel que Travis ou Jenkins pour vérifier très rapidement si à chaque commit, les tests sont bien passés.

Résultat de l'audit

Qualité : Les autres outils

Résultat rapport Scrutinizer

Résultat de l'audit

Qualité : Les autres outils

Résultat rapport Codacy

Résultat de l'audit

Performance

  •  La rapidité d’affichage des pages d’un site web (40% des visiteurs abandonnent la navigation si le temps de réponse dépasse 3 secondes)
  • Le temps nécessaire au téléchargement des éléments d’une page
  • La fluidité du navigateur dans la manipulation des éléments d’une page

Résultat de l'audit

Performance : métriques BlackFire

URL Temps Mémoire
/tasks/edit
309 ms 13.8 MB
/tasks/create 300 ms  13.8 MB
/tasks 248 ms 11.1 MB
/users/edit 318 ms 14.1 MB
/users/create 317 ms 14 MB
222 ms 10.8 MB
/login 159 ms 7.17 MB

Ces résultats sont corrects

Résultat de l'audit

Performance : Front-end

  • A une place très importante dans les performances
  • Chargement des images
  • Chargement des librairies JS et CSS
  • Traitements ...

Résultat de l'audit

Solutions

Les principales améliorations à apporter sont qualitatives.
Pour les performances, on peut mettre en place des choses assez simplement.

 

Les points d'améliorations :

  • Supprimer les erreurs des outils de qualité
  • Écrire des tests fonctionnels et unitaires
  • Utiliser les CDN pour Bootstrap et jQuery
  • Minifier ces ressources
  • Mettre en place le cache de Symfony

 

Architecture de l'application

Les librairies et outils

  • Composer
  • Doctrine
  • Twig
  • Bootstrap
  • PHPUnit
  • Blackfire
  • SensioLabsInsight
  • Codacy
  • Scrutinizer
  • Travis

Documentation technique

Authentification

Schéma de la sécurité sur Symfony

Documentation technique

Authentification

fichier de configuration security.yml

encoders :  choisir l'encodeur que vous voulez pour les mots de passe des utilisateurs.

providers : d'où vos utilisateurs sont chargés.

firewalls : configuration des pare-feux, technique d'authentification formulaire ...), paramètres des routes login, logout, utilisateur anonyme autorisé etc ...

access_control  : droit d'accès aux URLs

Documentation technique

Authentification

attribut "roles" dans Entité User

l'attribut "roles" est définit dans l'entité User et attribué à un User dans le "UserFormType"

Documentation technique

Authentification

Dans un controleur, on peut appliquer des droits sur des méthodes à un rôle particulier grâce à cette annotation :

Documentation technique

Les tests

Le code coverage de l'application est désormais de 100%.
À chaque ajout de feature, il faut prévoir le test qui va avec pour essayer de maintenir ce score.

Documentation technique

Contribution

Disponible sur le repo, dans le README.
Les points important pour contribuer :

  • Cloner le projet sur GitHub, sur la branche master
  • Créez une branche et faites vos contributions
  • Ecrivez vos tests et assurez-vous qu'ils passent!
  • Créer une pull request
  • Assurez-vous de respecter les standards de PHP, Symfony et ses conventions:
    PSR, Symfony Coding Standards, Symfony Conventions
  • Après vérification, la pull request sera fusionnée sur le projet

Conclusion

Les modifications

  • Modifications et corrections effectués selon cahier des charges
  • Qualité de code revue avec SensioLabsInsight
  • Rédaction des tests
  • Librairie JS et CSS chargées via CDN
  • Mise en place du cache HTTP de Symfony

Conclusion

Résultats

Qualité : Résultats final SensioLabsInsight, Platinum

Conclusion

Résultats

Performance : Mise en cache et CDN.

Application 12 fois plus rapide et requiert presque 10 fois moins de mémoire.
(voir slide 19)

URL Temps Mémoire
/tasks/edit 24 ms 1.5 MB
/tasks/create 24 ms  1.5 MB
/tasks 24.2 ms 1.51 MB
/users/edit 24.6 ms 1.5 MB
/users/create 24.3 ms 1.5 MB
24.1 ms 1.5 MB
/login 24.2 ms 1.5 MB

Questions ?

ToDo & Co

todolist

By FIECI CFE-CGC

todolist

présentation de l'application todolist

  • 22