NDepend est un outil populaire d'analyse de code .NET complètement intégré dans VisualStudio. Dans cette session le créateur de NDepend Patrick Smacchia et l'architecte logiciel Bruno Boucard, nous expliqueront sur plusieurs exemples concrets, que peut apporter NDepend à une équipe de développeurs en terme d'agilité, de maintenance et de qualité. Notamment, Patrick montrera comment NDepend est utilisé sur lui-même quotidiennement. Cette session sera l'occasion de mettre en pratique des principes de développements essentiels, efficaces et trop souvent ignorés. Ces principes incluent la programmation par contrat, la couverture de code par les tests-unitaires, les métriques de code et la structuration d'une application par composants.
Speakers : Patrick Smacchia (NDepend), Bruno Boucard (Cellenza)
Développez vos jeux multiplateformes grâce à Unity3D avec Visual Studio en C#
NDepend 5 en action par son créateur
1.
2. NDepend 5 en action
par son créateur
Bruno BOUCARD
LEAD Architect
Cellenza
blogs.msdn.com/devpara/
Code/Developpement
Patrick SMACCHIA
LEAD Dev
CODER IMPACT
http://www.NDepend.com
3. Présentation de Cellenza
Cabinet de conseil IT exclusivement dédié
aux technologies Microsoft et aux méthodes
Agiles
Notre passion, les technologies MS
Nous sommes des experts Microsoft, agilistes
par
nature,
passionnés
par
notre
métier.
Consultants, coachs, formateurs et/ou MVP,
nous avons à cœur de partager avec la
communauté
un
savoir
technique
et
méthodologique, mais aussi nos valeurs
150
billets
de
blog
Comment nous le
faisons :
•
•
•
Formation continue
Partage de connaissance
Partenariats
> 12j
formati
on
7 MVP
7 MCT
30
art.
de
presse
4. NDepend en deux axes
- NDepend Introduction
- Unit-Tests, Contrats, Couverture de
Code
#mstechdays
Code/developpement
6. NDepend Introduction - Les Faits
• Outil pour développeurs .NET, créé en Avril 2004
• Il est devenu commercial en Février 2007
• Plus de 4.000 clients dans le monde
– Microsoft, Nasa, Intel, Google, Sony, HSBC, Thalès, Société Générale, BBC,
MacLaren…
• Outil spécialisé dans l’analyse statique de code .NET
– Intégré à Visual Studio 2013, 2012, 2010 et 2008
– Intégrable dans le Build Process pour généré des rapports (TFS, TeamCity…)
• JArchitect pour Java, CppDepend pour C++
#mstechdays
Code/developpement
7. NDepend Introduction - Pourquoi s’en
servir?
• Outil spécialisé dans la qualité et la maintenance
de code .NET
• Pourquoi nos clients utilisent NDepend:
–
–
–
–
–
#mstechdays
Rendre le code plus maintenable
Œuvrer pour le moyen et le long terme
Reprendre en main une code base legacy
Rendre le métier du développeur plus agréable et stimulant
Donner des métriques au management pour prévenir les
dérives
Code/developpement
8. NDepend Introduction - Les
Fonctionnalités
• Règles et requête de code écris en C# LINQ
• Visualisation des dépendances, Graph et
Matrice
• Métriques de code
• Analyse de la Couverture de code
• Tendances
• Code Diff
• Génération de rapports
#mstechdays
Code/developpement
11. Unit-Tests, Contrats, Couverture de Code
•
•
•
•
•
Les clés de la maintenance
De bonnes habitudes à prendre
Appliquées avec succès pour le dev de NDepend
Un rapport cout/bénéfices très favorable
Il n’est jamais trop tard pour s’y mettre
#mstechdays
Code/developpement
12. Code Contrats - Introduction
• Pratique inventée par Bertrand Meyer, créateur du
langage EIFFEL, dans les années 80s
• L’idée: Truffer le code de vérifications (les contrats)
pour vérifier un maximum de conditions sur les états
– Cette méthode retourne une référence qui n’est jamais nulle
– Ce paramètre de type string, n’est jamais nulle, ni vide, et sa longueur n’est
jamais plus grande que 64
– Ce champs de type int a une valeur constamment comprise entre 10 et 100
• Contrat violé = Bug!
• Durant le développement, on a pas à tenir compte du
cas où un contrat est violé
#mstechdays
Code/developpement
13. Code Contrats - Choisir entre 2 APIs
• Microsoft Code Contract
– Adapté à la surface publique d’une API
– Standardisée (documentation, outillage…)
– Non-adapté à un usage intensif dans tous le code
(compilation lente)
• System.Diagnostics.Debug.Assert()
– Adapté à un usage intensif dans tous le code
– Marche seulement en mode DEBUG
– Pas d’impact performance en production
#mstechdays
Code/developpement
14. Code Contrats vs Unit Tests
• Du point de vue pratique c’est la même chose!!
• Dans les deux cas
– On veut que des assertions sur des états à l’exécution soient vérifiées
– Une assertion violée implique un problème à fixer
– On doit impérativement être averti lorsqu’une assertion est violée
• Conséquences
– Si un contrat est violé lors de l’exécution des tests, on doit être averti
– Des tests avec peu d’assertions peuvent vérifier efficacement des grosses
portions de codes contenant un grand nombre de contrat
#mstechdays
Code/developpement
16. Conclusion
• En 2014, plus que jamais la tendance est à l’outillage
du développement logiciel pour s’affranchir de tout ce
qui peut être automatisé
• NDepend est un des ces outils qui cible la qualité, la
maintenance pour éviter l’érosion et la régression
• Nous utilisons avec succès dans nos dev les
différentes fonctionnalités de NDepend mais aussi les
contrats et la mesure de la couverture de code par les
test
• Changez vos habitudes !
#mstechdays
Code/developpement
18. Donnez votre avis !
Depuis votre smartphone sur :
http://notes.mstechdays.fr
De nombreux lots à gagner toute les heures !!!
Claviers, souris et jeux Microsoft…
Merci de nous aider à améliorer les Techdays !
#mstechdays
Code/developpement
19. Présentation de Cellenza
Ve n e z n o u s r e t r o u ve r s u r n o t r e St a n d # 1 5
Vous pouvez vous inscrire à
notre jeu concours sur notre
stand ou en ligne :
http://jeuconcours.cellenza.com
Merci !