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