Publicité

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

Microsoft
Social Media Lead at Microsoft à Microsoft
15 Apr 2013
Publicité

Contenu connexe

Présentations pour vous(20)

Publicité

Plus de Microsoft(20)

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

  1. Agilité, Productivité et Qualité au Centre avec Visual Studio 2012 13 Février 2013 Philippe PUSCHMANN Cédric GOUGE Architecte Solution Architecte Solution CTO Office Application Integration Avanade France Avanade France Code / Développement
  2. Avanade Leader 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. 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. 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. Project Informatiques : La situation Standish Group Chaos Report Principales Causes D’échecs 100% 80% Time to Market 60% 1 toujours plus agressif 40% Métier du client et technologies 20% 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. Agile vs Waterfall Failed Failed 12% 15% Successful 26% Successful 43% Challenged 45% Challenged 59% Agile Waterfall
  7. Quels sont les fondements de l’Agilité? Le Développement Agile confère une approche L’ALM peut êtreitérative et flexible du collection de disciplines incrémentale, définie comme une développement logiciel en s’appuyant sur 12 Principes qui constituent le et d’outils qui vont permettre de transformer un besoin métier Manifest AGILE en une solution informatique opérationnelle
  8. Agile Manifesto (1/2)
  9. Agile Manifesto (1/2)
  10. Agile Manifesto (1/2)
  11. Agile Manifesto (1/2)
  12. Agile Manifesto (1/2)
  13. Agile Manifesto (1/2)
  14. Agile Manifesto (2/2)
  15. Agile Manifesto (2/2)
  16. Agile Manifesto (2/2)
  17. Agile Manifesto (2/2)
  18. Agile Manifesto (2/2)
  19. Agile Manifesto (2/2)
  20. Eligibilité de SCRUM CRITERES Simple Fonctionnalités: Le Quoi Tout est connu SCRUM Compliqué Plus de connu que d’inconnu Complexe Plus d’inconnu que de connu Chaotique Quasiment rien n’est connu pl Technologie : Le Comment
  21. Le cas Salesforce.com : un cas édifiant Salesforce, 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és Ayant vu sa fréquence de releases passer de 4 à 1 par an, et des clients insatisfaits, il a fallu réagir donc changer Salesforce décida d’engager une transition vers Scrum Les 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. Scrum est simplement un Framework avec des règles… Vous pouvez jouer et respecter les règles… ou vous pouvez tricher… SCRUM But Water SCRUM Fall SCRUM And
  23. Reduce waste
  24. Think Holistically Work Incrementally
  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. 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 Executable Specifications Information Pair Release Refactoring Radiators Programming Planning Fitness for Emergent Reducing Clean Code Purpose Architecture Technical Debt
  27. Clean Code == Quality Code; Pour Eviter TDD / Duplicated Code SOLID 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 Long DRY SoC Identifiers Excessive short identifiers GRASP (Object UberCallback IoC Oriented design) CQRS Complex Conditionals
  28. SOLID Le développement d’application n’est pas un jeu de Jenga
  29. SOLID Single Responsability Open/Closed Liskov Substitution Interface Segregation Dependency Inversion
  30. SOLID Ca n’est pas parce que vous pouvez le faire que vous devez le faire
  31. SOLID Responsabilités Multiple Responsabilité Unique public 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. SOLID De la chirurgie n’est pas nécessaire pour mettre un manteau
  33. SOLID Non ouvert pour extensions Ouvert pour extensions public 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. SOLID S’il ressemble a un canard, cancane comme un canard, mais a besoin de piles – vous avez certainement la mauvaise abstraction.
  35. SOLID public 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. SOLID Option 1 : Sans respecter les principes d’OpenClose public 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. SOLID Option 2 : L’approche SOLID public 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. SOLID Vous voulez que je branche ce composant, Où?
  39. SOLID public 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. SOLID Est-ce que vous brancheriez une lampe en faisant une soudure directement sur le réseau électrique dans le mur?
  41. SOLID Mé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. Demo Clean Code with Visual Studio 2012
  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. TESTS FONCTIONNELS ET TECHNIQUES Pourquoi Tester?
  45. Mais aussi pour éviter cela! Ariane 5 Flight 501 Le 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. 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. Tests et Visual Studio 2012 Types de Tests Visual Studio 2012 Automation Tests Unitaires Unit Tests Build and Lab Management Tests d’intégration UI Coded Tests Tests d’acceptance Test cases Isolation Mock / Stub / Tests de Performance / Shims / Fakes Performance Load Tests
  48. Principes TDD TDD : 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. 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. Demo TDD with Visual Studio 2012
  51. Office Test Case Management Web Access System Requirements Feedback Center Management Management Intellitrace Windows Project Management In Production Azure Preemptive Lab Management Analytics New Enhanced
  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. Presentation Pomodoro Technique La technique Pomodoro est une technique de planification développée par Francesco Cirillo à la fin des années 1980. Cette méthode se base sur l'usage d'un minuteur permettant de respecter des périodes de 25 minutes appelées pomodori (qui signifie en italien « tomates »). Ces différentes périodes de travail sont séparées par de courtes pauses. 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 la programmation en binôme. La méthode a pour principale idée que des pauses régulières favorisent l'agilité 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. Réunion de démarrage : Envisioning Sketch : Croquis sur une serviette en papier Backlog : Liste des fonctionnalités sur une page de cahier
  55. Création du Product Backlog avec Web Access
  56. Scrum Pomodoro Application
  57. Demo SQL Server Data Tools / SQL Azure Productive Database Development
  58. Demo PowerPoint Storyboarding
  59. merci! Scrum On!
Publicité