4. Capitaine Flam est parmi nous
Au fin fond de l'Univers, à des années
et des années-lumière de la Terre,
Veille celui que le gouvernement
intersidéral appelle quand il n'est plus
Capable de trouver une solution à
ses problèmes, quand il ne reste plus
Aucun espoir :
le Capitaine FLAM !
7. Quand l'industrialisation s'en mêle
Projet géré sous contrôleur
de version
Projet sous intégration
continue
Projet avec traçabilité
technique / fonctionnelle
16. Les outils évoluent tout comme nous
Makefile Gestionnaire Intégration Tests unitaires
de projet technique Continue
VI / Emacs Gestionnaire Gestionnaire Refactoring Inspection
de source de tickets depuis l'IDE Continue
17. Poussés par des exigences
Gestionnaire de configuration
Aucune modification ne passe en production
sans avoir été préalablement placée sous
contrôle de version
L'ensemble cohérent des sources d'une version
applicative doit pouvoir être retrouvé
aisément dans le gestionnaire de source
18. Poussés par des exigences
Intégration continue
Le code contenu dans le gestionnaire de
source doit pouvoir être compilé à tout instant
et par n'importe qui
L'exécution des tests unitaires fait pleinement
parti du processus de construction
La sortie du processus de construction est un
livrable prêt à l'emploi
Si une des exigences n'est plus respectée, rien
n'est plus important que de corriger l'anomalie
19. Poussés par des exigences
Inspection Continue
Tout nouveau code doit être accompagné de
tests unitaires
Aucune méthode ne doit excéder un seuil de
complexité
Il ne doit pas exister de cycles entre packages
...
20. Rappel de bon sens
Des étapes de maturité doivent être respectées
Assurer la traçabilité technique
Gestionnaire de configuration
Assurer la traçabilité fonctionnelle
Gestionnaire de tickets
Assurer la stabilité du build
Intégration continue
Assurer la qualité du code source
Inspection Continue (Sonar)
21. La fin ne justifie plus les moyens
Doing the right software
Doing the software right
22. Qu'est-ce qu'un code de qualité ?
« A well-written program is a program
where the cost of implementing a feature
is constant throughout the program's lifetime. »
Itay Maman
25. Les différents types de dette
Imprudente Prudente
« Nous n'avons pas le temps « Nous devons livrer
de faire de la conception. » maintenant
et assumer les conséquences. »
Volontaire
Involontaire
« C'est quoi des « Maintenant nous savons
couches logicielles ? » comment nous aurions
du faire. »
Extrait de http://martinfowler.com/bliki/TechnicalDebtQuadrant.html
26. Les 7 péchés capitaux
du développeur
Péchés
Dette
technique
28. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
30. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
32. Once and only once (Kent Beck)
Tout code dupliqué est une opportunité pour
élever le niveau d'abstraction et étoffer la richesse
du design
33. Avant tout une histoire de bon sens
Avez-vous deux processus pour
Passer en production une nouvelle version
applicative ?
Soumettre un appel d'offre ?
Recruter un collaborateur ?
34. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
36. Mauvaise distribution de la complexité
Vaut-il mieux :
1 méthode d'une complexité de 30
10 méthodes d'une complexité de 3
37. La complexité se gère à tous les étages
Méthode
Classe
Package
Module
Règle d'or :
Une méthode ou une classe n'est jamais trop petite
38. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
41. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
42. Peu ou pas d'utilisation des tests unitaires
Merci d'ajouter un
nouveau cas et
d'éviter toute
régression bien
évidemment...
43. Un code sans tests unitaires est soit
Du code jetable
Du code dont le coût d'ajout d'une
fonctionnalité et des régressions associées est
sans importance
Du code d'une pure application CRUD (Create
Read Update Delete)
Du code legacy dont la piètre qualité entraine
un coût d'écriture et de maintenance des tests
unitaires trop élevé
44. L'effet boule de neige du TDD
Raisonnement en terme de contrat
Donc en terme de responsabilité (SRP)
Expressivité du vocabulaire
Approche itérative et incrémentale au niveau
le plus fin
Méthodes peu complexes
Linéarité des développements et donc meilleuer
prédictibilité des délais
45. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaire
48. Taille verticale et horizontale d'un fichier
Quel traitement réservez-vous aux emails qui ne
tiennent pas sur un écran ?
49. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
50. Bugs potentiels
if (listeners == null)
listeners.remove(listener);
Sun java : JDK1.6.0, b105,
sun.awt.x11.XMSelection
lines 243-244
51. Les 7 péchés capitaux
Appliqués au code source
Duplications
Mauvaise distribution de la complexité
Mauvais Design
Pas de tests unitaires
Pas de respect des standards
Bugs potentiels
Pas ou trop de commentaires
54. La javadoc : un commentaire particulier
L'utilisation doit être limitée aux API
La Javadoc s'adresse en priorité à des
consommateurs et non aux équipes en charge
de la maintenance évolutive
55. Un commentaire doit être utile
Ou ne pas être
Pour amplifier l'importance d'une logique
Pour apporter une vision dynamique
Quelques anti-patterns
56. La mission de Sonar
Permettre de déclarer ouverte la
chasse aux
7 péchés capitaux
57. Sonar à cœur ouvert
Sonar Runner
Sonar Runner Checkstyle mvn sonar:sonar
Code
Code JUnit PMD / CPD or
source
source Jacoco
Squid
Findbugs
1
- ant sonar
Java,
Java, or
Cobol, VB, 1 sonar-runner
Cobol, VB,
PL/SQL,
PL/SQL,
Flex,
Flex,
C, ...
C, ... 3 2
Sonar web interface
Sonar web interface
4
Sonar
DB 2- http://sonar
5
Sonar Eclipse
Sonar Eclipse
58. Quelques chiffres
5,000+ téléchargements par mois
1,000+ abonnés aux mailing lists
15 releases de la plateforme en 2 ans
50 plugins dans la forge
X?,000 instances dans le monde