Agilité, Productivité et Qualité au Centre avec Visual Studio 2012

646 views

Published on

Visual Studio 2012 constitue véritablement une release majeure de la plateforme de développement ALM de Microsoft. On note un momentum important autour de l’ALM et des méthodes Agiles en France depuis 2 ans. Au cours de cette session, vous découvrirez, au travers de démonstrations, les fonctionnalités clés de la plateforme pour augmenter la productivité de vos équipes de développement tant pour ce qui concerne les outils de développement que le support de l’agilité et la qualité des incréments de produits livrés. Avec le développement d’applications modernes avec Windows 8, l’intégration full ou hybrid Cloud avec Windows Azure, le contrôle de qualité du code avec les outils Code Analysis, ou encore Code Clone Analysis, l’analyse des dépendances et le profiler de performance pour détecter au plus tôt les goulots d’étranglement. Sera abordé également le nouvel environnement de travail optimisé pour le développeur dans Team Explorer avec la gestion du travail en cours, les processus de Code Review et de Feedback Request ainsi que les fonctions de Suspend Resume. Egalement, La planification Agile et le travail en mode SCRUM avec les outils intégrés à la nouvelle version du Web Access. Enfin le bénéfice de la nouvelle version du centre qualité sera démontré pour assurer un haut niveau de qualité délivré avec Test & Lab Mangement, des scénarios BDT s’appuyant sur des tests unitaires et des Tests d’interfaces automatisés et les fonctions de Remote Device testing pour les tablettes Windows 8. Au travers d'un retour d'expérience client, nous porterons également un focus particulier sur les bénéfices obtenus dans le cas d’un contexte offshore à la suite d’une migration vers TFS 2012

  • Be the first to comment

  • Be the first to like this

Agilité, Productivité et Qualité au Centre avec Visual Studio 2012

  1. 1. Agilité, Productivité et Qualité au Centre avec Visual Studio 2012 13 Février 2013Philippe PUSCHMANN Cédric GOUGEArchitecte Solution Architecte SolutionCTO Office Application IntegrationAvanade France Avanade FranceCode / Développement
  2. 2. AvanadeLeader mondial dans l’intégration des technologies Microsoft, présent dans 24 pays Technology Business & Software Management Products La mission d’Avanade consiste à aider les entreprises à optimiser leurs investissements informatiques et à développer des solutions complètes, génératrices de bénéfices concrets, autour des technologies Microsoft.
  3. 3. AGENDA SCRUM : Quand et Pourquoi? Succès = SCRUM + Excellence Technique Done = Tested!! Visual Studio 2012 ALM : La Solution et les Outils Demo : Développement d’une application Windows 8 avec Visual Studio 2012 : Scrum Pomodoro
  4. 4. AGENDA SCRUM : Quand et Pourquoi? Succès = SCRUM + Excellence Technique Done = Tested!! Visual Studio 2012 ALM : La Solution et les Outils Demo : Développement d’une application Windows 8 avec Visual Studio 2012 : Scrum Pomodoro
  5. 5. Project Informatiques : La situation Standish Group Chaos Report Principales Causes D’échecs100%80% Time to Market60% 1 toujours plus agressif40% Métier du client et technologies20% 2 utilisées toujours plus complexes 0% Manque de réactivité 3 face au changement Successful Challenged Failed Functionalities Usage Statistics Always 7% Seldom Never  Gaspillage de Ressources (64%) 19% 45%  Forte part de livrables sans valeur métier au détriment de livrables à haute valeur Sometimes 16% ajoutée Often 13%
  6. 6. Agile vs Waterfall Failed Failed 12% 15% Successful 26% Successful 43% Challenged 45% Challenged 59% Agile Waterfall
  7. 7. Quels sont les fondements de l’Agilité? Le Développement Agile confère une approcheL’ALM peut êtreitérative et flexible du collection de disciplines incrémentale, définie comme une développementlogiciel en s’appuyant sur 12 Principes qui constituent leet d’outils qui vont permettre de transformer un besoin métier Manifest AGILEen une solution informatique opérationnelle
  8. 8. Agile Manifesto (1/2)
  9. 9. Agile Manifesto (1/2)
  10. 10. Agile Manifesto (1/2)
  11. 11. Agile Manifesto (1/2)
  12. 12. Agile Manifesto (1/2)
  13. 13. Agile Manifesto (1/2)
  14. 14. Agile Manifesto (2/2)
  15. 15. Agile Manifesto (2/2)
  16. 16. Agile Manifesto (2/2)
  17. 17. Agile Manifesto (2/2)
  18. 18. Agile Manifesto (2/2)
  19. 19. Agile Manifesto (2/2)
  20. 20. Eligibilité de SCRUMCRITERESSimple Fonctionnalités: Le QuoiTout est connu SCRUMCompliquéPlus de connu que d’inconnuComplexePlus d’inconnu que de connuChaotiqueQuasiment rien n’est connu pl Technologie : Le Comment
  21. 21. Le cas Salesforce.com : un cas édifiantSalesforce, une exemple de succès de l’ère .com qui a su durer.Avec en 2006 plus de 450 millions de dollars de revenus, et 2000 employésAyant vu sa fréquence de releases passer de 4 à 1 par an, et des clients insatisfaits, il afallu réagir donc changerSalesforce décida d’engager une transition vers ScrumLes résultats furent édifiant:• 1ère année : Salesforces a augmenté de 94% le nombre de fonctionnalités, délivré 38% de fonctionnalités en plus par développeur, et délivré plus de 500% de valeur supplémentaire à ses clients• Les 2 années suivantes ont permis de doubler le revenu à plus d’un milliard de dollars• Au regard de tels résultats, il n’est pas étonnant de voir l’engouement autour de l’adoption de Scrum
  22. 22. Scrum est simplement un Framework avecdes règles… Vous pouvez jouer et respecter les règles… ou vous pouvez tricher… SCRUM But Water SCRUM Fall SCRUM And
  23. 23. Reduce waste
  24. 24. ThinkHolistically WorkIncrementally
  25. 25. AGENDA SCRUM : Quand et Pourquoi? Succès = SCRUM + Excellence Technique Done = Tested!! Visual Studio 2012 ALM : La Solution et les Outils Demo : Développement d’une application Windows 8 avec Visual Studio 2012 : Scrum Pomodoro
  26. 26. SCRUM…AND Continuous Build Test Driven Specification by CI Delivery Automation Development Example Just in Time User Stories Collective Planning Poker Planning Ownership Continuous BDD Deployment SCRUM ATDD Burndown Relative Design for Charts Estimation Operations ExecutableSpecifications Information Pair Release Refactoring Radiators Programming Planning Fitness for Emergent Reducing Clean Code Purpose Architecture Technical Debt
  27. 27. Clean Code == Quality Code; Pour Eviter TDD / Duplicated CodeSOLID YAGNI CI ATDD Long Method Large Class Too many Params Feature envy Inapropriate intimacy DI BDD MVVM / MVC High Cohesion Refused bequest Contrived Complexity Lazy Class / Freeloader Design Patterns Excessive LongDRY SoC Identifiers Excessive short identifiers GRASP (Object UberCallbackIoC Oriented design) CQRS Complex Conditionals
  28. 28. SOLID Le développement d’application n’est pas un jeu de Jenga
  29. 29. SOLID Single Responsability Open/Closed Liskov Substitution Interface Segregation Dependency Inversion
  30. 30. SOLID Ca n’est pas parce que vous pouvez le faire que vous devez le faire
  31. 31. SOLIDResponsabilités Multiple Responsabilité Uniquepublic class BankAccount public interface IBankAccount {{ string AccountNumber; public string AccountNumber { get; set; } decimal AccountBalance; } public decimal AccountBalance { get; set; } public interface IInterestRateCalculator { public decimal CalculateInterest() { decimal CalculateInterest(IBankAccount account); return 42M; } }} public class BankAccount : IBankAccount { public string AccountNumber { get; set; } public decimal AccountBalance { get; set; } } public class InterestRateCalculator : IInterestRateCalculator { public decimal CalculateInterest(IBankAccount account) { return 42; } }
  32. 32. SOLID De la chirurgie n’est pas nécessaire pour mettre un manteau
  33. 33. SOLID Non ouvert pour extensions Ouvert pour extensionspublic static double SommeAires(IEnumerable<Geometrie> public abstract class Geometrie {geometries) public abstract double Aire();{ } double aireTotale = 0d; public class Cercle : Geometrie { public double Rayon { get; set; } foreach (var geo in geometries) { public override double Aire() { if (geo is Cercle) return Math.PI * this.Rayon * this.Rayon; { } } var cercle = (Cercle)geo; aireTotale += cercle.Rayon * cercle.Rayon * public class Rectangle : Geometrie {Math.PI; public double Largeur { get; set; } public double Longueur { get; set; } } else if (geo is Rectangle) public override double Aire() { { return this.Largeur * this.Longueur; //... } } } } public static class CalculAire {} public static double SommeAires(IEnumerable<Geometrie> geometries) { return geometries.Sum(g => g.Aire()); } }
  34. 34. SOLID S’il ressemble a un canard, cancane comme un canard, mais a besoin de piles – vous avez certainement la mauvaise abstraction.
  35. 35. SOLIDpublic interface IDuck{ void Swim();}public class Duck : IDuck { public void Swim() { }} Que ce passe-t-il si l’on a pas allumé notre canard?public class ElectricDuck : IDuck { public void Swim() { // Swim logic }}void MakeDuckSwim(IDuck duck){ duck.Swim();}
  36. 36. SOLIDOption 1 : Sans respecter les principes d’OpenClosepublic interface IDuck{ void Swim();}public class Duck : IDuck { public void Swim() { }} Que ce passe-t-il si l’on a pas allumé notre canard?public class ElectricDuck : IDuck { public void Swim() { // Swim logic }}void MakeDuckSwim(IDuck duck){voidif (duck is ElectricDuck) MakeDuckSwim(IDuck duck){ ((ElectricDuck)duck).TurnOn(); duck.Swim();} duck.Swim();}
  37. 37. SOLIDOption 2 : L’approche SOLIDpublic interface IDuck public interface IDuck{ { void Swim(); void Swim();} }public class Duck : IDuck { public class Duck : IDuck { public void Swim() { public void Swim() { } }} } public class ElectricDuck : IDuck { public void Swim() {public class ElectricDuck : IDuck { public void Swim() { if (!this.IsTurnedOn) // Swim logic return; }} // Swim logic } }void MakeDuckSwim(IDuck duck) void MakeDuckSwim(IDuck duck){ { duck.Swim(); duck.Swim();} }
  38. 38. SOLID Vous voulez que je branche ce composant, Où?
  39. 39. SOLIDpublic interface IOiseau { public interface IOiseau { void Voler(); void Pondre(); void Pondre(); }} public interface IVolatile : IOiseau {public class Canard : IOiseau { void Voler(); public void Voler() { // ... } } public class Canard : IVolatile{ public void Pondre() { // ... public void Voler() { // ... } }}public class Manchots : IOiseau { public void Pondre() { // ... public void Voler() { } throw new NotSupportedException(); } } public class Manchots : IOiseau { public void Pondre() { public void Pondre() { // ... } }} } static void FaireVolerLesOiseaux(IEnumerable<IVolatile> oiseaux)static void FaireVolerLesOiseaux(IEnumerable<IOiseau> oiseaux) {{ foreach (var oiseau in oiseaux) foreach (var oiseau in oiseaux) oiseau.Voler(); oiseau.Voler(); }} }
  40. 40. SOLID Est-ce que vous brancheriez une lampe en faisant une soudure directement sur le réseau électrique dans le mur?
  41. 41. SOLIDMéthode Créeant une dépendance Inversion de dépendance par constructeur d’injection public interface ICoolRepository {public class CoolSQLRepository CoolThing GetThing(int id);{ } public CoolThing GetThing(int id);} public class CoolService {public class CoolService private ICoolRepository repository;{ public CoolThing GetCoolThing(int id) public CoolService(ICoolRepository repository){ { this.repository = repository; var repository = new CoolSQLRepository(); } return repository.GetThing(id); } public CoolThing GetCoolThing(int id) {} return repository.GetThing(id); } } public class CoolSQLRepository : ICoolRepository { public CoolThing GetThing(int id); }
  42. 42. Demo Clean Code with Visual Studio 2012
  43. 43. AGENDA SCRUM : Quand et Pourquoi? Succès = SCRUM + Excellence Technique Done = Tested!! Visual Studio 2012 ALM : La Solution et les Outils Demo : Développement d’une application Windows 8 avec Visual Studio 2012 : Scrum Pomodoro
  44. 44. TESTS FONCTIONNELS ET TECHNIQUESPourquoi Tester?
  45. 45. Mais aussi pour éviter cela!Ariane 5 Flight 501Le bug le plus couteuxde l’histoire• Réutilisation de code d’Ariane 4 d’ou une trajectoire différente à cause d’un design diffèrent du Booster. Code non retesté!• La Conversion d’un float 64 bit en int 16 bits a causé un erreur de type overflow exception• Cout du Bug : > $370 million (1996), temps d’occurrence : 40 secondes
  46. 46. Pratiques de Tests et domaines Développement Acceptance Exploratoire ATDD Extensibility Performance System BDD Functional Regression TDD Beta Integration Scenario Unit Black Box Load Security Usability Build verification Maintainability Smoke User Component Module Static White Box End to End Non Functional Story …Autres
  47. 47. Tests et Visual Studio 2012Types de Tests Visual Studio 2012 AutomationTests Unitaires Unit Tests Build and Lab ManagementTests d’intégration UI Coded TestsTests d’acceptance Test cases Isolation Mock / Stub /Tests de Performance / Shims / FakesPerformance Load Tests
  48. 48. Principes TDDTDD : Test Driven Development• Pratique qui consiste à écrire les tests unitaires avant d’écrire le code d’implémentation Red• TDD est utilisé comme • Une pratique de Design • Un moyen puissant pour éviter les Refactor Green anomalies dans une application • Une garantie de l’écriture des tests • Techniques de non régression • Production de code plus robuste
  49. 49. La Dynamique TDD / ATDD Pass Fail Pass Fail Automated Tests Pass Automated Tests Fail Sprint 1 Sprint 2 Sprint 3 Les équipes de développement performantes utilisent les test de non régression automatisés
  50. 50. Demo TDD with Visual Studio 2012
  51. 51. Office Test Case ManagementWeb Access System Requirements Feedback Center Management Management Intellitrace Windows Project Management In Production Azure Preemptive Lab Management Analytics New Enhanced
  52. 52. Agenda SCRUM : Quand et Pourquoi? Succès = SCRUM + Excellence Technique Done = Tested!! Visual Studio 2012 ALM : La Solution et les Outils Demo : Développement d’une application Windows 8 avec Visual Studio 2012 : Scrum Pomodoro
  53. 53. Presentation Pomodoro TechniqueLa technique Pomodoro est une technique de planification développée par FrancescoCirillo à la fin des années 1980. Cette méthode se base sur lusage dun minuteurpermettant de respecter des périodes de 25 minutes appelées pomodori (qui signifieen italien « tomates »). Ces différentes périodes de travail sont séparées par de courtespauses.Proches des concepts de cycles itératifs et des méthodes de développement agiles,utilisées dans le développement de logiciel, la méthode est utilisée pour laprogrammation en binôme.La méthode a pour principale idée que des pauses régulières favorisent lagilitéintellectuelle.La technique se présente sous la forme de cinq étapes :• décider de la tâche à effectuer ;• régler le pomodoro (minuteur) sur 25 minutes ;• travailler sur la tâche jusquà ce que le minuteur sonne et la noter comme faite ;• prendre une courte pause (5 minutes) ;• tous les quatre pomodori prendre une pause un peu plus longue (15-20 minutes).
  54. 54. Réunion de démarrage : EnvisioningSketch : Croquis sur une serviette en papier Backlog : Liste des fonctionnalités sur une page de cahier
  55. 55. Création du Product Backlog avec Web Access
  56. 56. Scrum Pomodoro Application
  57. 57. Demo SQL Server Data Tools / SQL Azure Productive Database Development
  58. 58. Demo PowerPoint Storyboarding
  59. 59. merci! Scrum On!

×