La qualité au-delà du code
                 ConFoo 2012




                   1
Jean-Marc Fontaine
Passionné de web depuis 1996, de PHP depuis 2000 et de
musique depuis 1977



  ‣ Consultant PHP chez Alter Way
  ‣ Ex-Président de l’AFUP
  ‣ Co-Auteur du livre blanc
    «Industrialisation PHP»
  ‣ Auteur du blog
    industrialisation-php.com

                                                         2
La qualité au-delà du code




                             3
“C'est seulement quand l'hiver est arrivé
qu'on s'aperçoit que le pin et le cyprès
perdent leurs feuilles après tous les autres
arbres”
                                      Confucius
                                                  4
70%
Environ 70% du temps
consacré à un applicatif l’est
dans sa maintenance




                                 5
Compréhensibilité   1   Portabilité      5
Cohérence           2   Testabilité      6
Exhaustivité        3   Fiabilité        7
Concision           4   Maintenabilité   8

                                             6
Compréhensibilité
                    7
Documentation
La documentation doit être de qualité, exhaustive et
à jour




                                                       8
Commentaires
Les commentaires doivent compléter le code pas le
paraphraser




                                                    9
Complexibilité
Toute chose devrait être rendue aussi simple que
possible, mais pas plus. - Albert Einstein




                                                   10
Mise en forme du code
Faire en sorte que la forme ne vienne pas perturber
la compréhension du fond




                                                      11
Cohérence
            12
Nommage
Le nommage des éléments doit être logique,
cohérent et pertinent




                                             13
Documentation
Le style et la langue de la documentation doivent
être uniformes d’un bout à l’autre




                                                    14
Mise en forme du code
L’ensemble du code doit suivre les règles de codage.
Pas d’exception !




                                                       15
Exhaustivité
               16
Application complète
L’application est-elle totalement fonctionnelle ?




                                                    17
Eléments temporaires
Les éléments temporaires doivent être absent de la
version finale




                                                     18
Interfaces externes
Est-ce que les interfaces externes sont disponibles ?




                                                        19
Données
Est-ce que les données nécessaires sont présentes ?




                                                      20
Concision
            21
22
Documentation
La documentation doit être complète mais éviter les
longueurs inutiles




                                                      23
Libraries
Chaque librairie présente doit avoir son utilité




                                                   24
Code mort
Le code mort augmente inutilement la taille de
l’application




                                                 25
Code dupliqué
Le code dupliqué doit être factorisé pour simplifier
sa maintenance




                                                      26
Portabilité
              27
Nouveaux environnements
La configuration de l’application doit permettre de
la déployer facilement sur de nouveaux
environnements




                                                     28
Dépendances logicielles
Avoir un minimum de dépendances logicielles
permet de diffuser plus largement son application




                                                    29
Testabilité
              30
Critères d’acceptation
Pour tester une application il faut connaître les
critères d’acceptation du client




                                                    31
Séparation des responsabilités
Une application dont les responsabilités sont
clairement séparées pourra évoluer plus facilement




                                                     32
Code testable
Un code fonctionnel n’est pas forcément un code
testable




                                                  33
Injection de dépendance
L’injection de dépendance permet de découpler le code




                                                        34
Types de test
Il existe de nombreux types de tests qui sont plus ou moins
adapté au contexte d’une application




 ‣ Tests unitaires
 ‣ Tests fonctionnels
 ‣ Tests de charge
 ‣ Tests de sécurité



                                                              35
Fiabilité
            36
Tolérance aux erreurs
Une application ne devrait pas être indisponible dès
que survient un problème mineur




                                                       37
Mode dégradé
Un service réduit est mieux que pas de service du
tout




                                                    38
Sécurité
Quelque soit le domaine économique, la sécurité est
un enjeu important pour une application




                                                      39
Maintenabilité
                 40
Installation / Mise à jour
L’installation et la mise à jour d’une application doit
être le plus simple possible




                                                          41
Logs
Un système de logs permet de comprendre la vie
interne de l’application




                                                 42
Débogage
Il faut éviter les pratiques compliquant le débogage
de l’application




                                                       43
Compréhensibilité   1   Portabilité      5
Cohérence           2   Testabilité      6
Exhaustivité        3   Fiabilité        7
Concision           4   Maintenabilité   8

                                             44
Merci !




 ‣ Commentaires et slides : https://joind.in/5966
 ‣ Blog : http://www.industrialisation-php.com/
 ‣ Twitter : @jmfontaine / @indusphp
 ‣ Email : jean-marc.fontaine@alterway.fr



                                                    45
Crédits photographiques
Les photos et illustrations suivantes ont été utilisées dans cette
présentation. Merci à leurs auteurs !

 ‣   https://secure.flickr.com/photos/jorgempf/17271202/

 ‣   https://secure.flickr.com/photos/26053177@N03/4503264891/

 ‣   https://secure.flickr.com/photos/irisslootheer/4359044679/

 ‣   https://secure.flickr.com/photos/marcovdz/4520986339/

 ‣   https://secure.flickr.com/photos/houseofantiquehardware/5183160228/

 ‣   http://geekandpoke.typepad.com/geekandpoke/2010/01/documentation-is-key.html

 ‣   https://secure.flickr.com/photos/daimlerag/6640914329/

 ‣   https://secure.flickr.com/photos/cglosli/3296946161/

 ‣   https://secure.flickr.com/photos/44442915@N00/4371880134/

                                                                                    46

La qualité au-delà du code - ConFoo 2012