Elapse

Working Effectively with Legacy Code (Michael Feathers)

Résumé

Découvrez pratiques et techniques pour vous aider à travailler efficacement et réusiner votre code patrimonial.

Durée: 2 jours

Prochains cours offerts

Nos formations en classes sont actuellement suspendues en raison de la COVID19.

Si cette formation n'est pas encore disponible dans notre catalogue de formations en ligne, écrivez-nous afin de vous informer sur sa disponibilité pour votre entreprise.

Témoignages à propos du livre





Click here for English version (or scroll down) 

 

Vous travaillez avec du code patrimonial (Legacy Code) et avez l’impression d’y naviguer à l’aveuglette ? Vous aimeriez avoir la confiance nécessaire pour l’améliorer, le réusiner (refactoring) et le tester sans risquer de tout casser ?

Description du cours

Lorsque l’ajout de fonctionnalités à une application existante devient une tâche ardue et risquée, que la capacité de l’équipe à maintenir le rythme des livraisons diminue ou que la qualité du produit n’est plus celle qu’elle était, on est en droit de se demander s’il y a des façons simples de sortir de ce cercle vicieux.

Durant cette formation, basée sur son livre Working Effectively with Legacy Code, vous apprendrez comment redonner vie et tester de larges bases de code qui se sont détériorées avec le temps (code patrimonial/legacy code). Micheal Feathers propose des techniques éprouvées pour réusiner du code existant de façon efficace et en toute sécurité.

Non seulement la qualité du produit et la productivité de votre équipe seront à la hausse, mais nous vous parions que le plaisir de développer le sera aussi!

À propos de Michael Feathers

Michael Feathers Closeup Color Transparent

Pionnier et chef de file du mouvement Agile, Michael Feathers est internationalement connu pour son livre Working Effectively with Legacy Code (Prentice Hall, 2004), une référence mondiale classée au 3e rang des meilleurs livres en Agilité.

Également auteur de CppUnit, un des premiers frameworks de tests unitaires en C++, Michael possède plus de 20 ans d’expérience en développement logiciel pour de prestigieuses  entreprises telles que Groupon, Obtiva et Object Mentor de Robert C. Martin (Uncle Bob).

Michael est maintenant le fondateur et directeur de R7K Research & Conveyance, une entreprise spécialisée dans la conception de logiciels et de structures organisationnelles où il met ses années d’expérience au service de ses clients pour les guider dans l’amélioration de leurs pratiques de programmation Agile, le développement piloté par les tests (TDD), le réusinage et la conception orientée-objet (OO). 

Pourquoi suivre la formation?

  • Vous voulez attaquer votre patrimoine et votre dette technique efficacement
  • Vous voulez le réusiner (refactoring) de manière sécuritaire sans empirer votre situation
  • Vous ne savez pas comment tester votre patrimoine efficacement
  • Vous ne savez pas par où commencer
  • Vous avez besoin d’astuces de pros
  • Vous avez des questions particulières concernant votre situation complexe

Objectifs de la formation

À la fin de l'atelier, vous serez en mesude de :

  • Comprendre ce qu'est le code patrimonial (Legacy Code)
  • Comprendre comment briser les dépendances dans du code patrimonial
  • Apprendre plusieurs techniques pour briser les dépendances externes et internes
  • Apprendre quand utiliser ces techniques 
  • Apprendre un ensemble de stratégies pour le réusinage de code
  • Apprendre à identifier des points d'inflexion du design qui permettent de faire des changements efficacement
  • Comprendre le concept de couverture de test pour ces points d'inflexion
  • Comprendre comment écrire des tests efficaces pour du code patrimonial

Contenu

Note: La formation se déroulera en anglais. 

Jour 1

  • Introduction
  • Les tests comme outil de développement
  • Détection des points d'inflexion du design
  • Briser les dépendances : découverte et séparation
  • Briser les dépendances cachées  
  • Tests de charactérisations
  • Réusinage pour améliorer la compréhension du code 
 

Jour 2

  • Stratégies pour tester des méthodes longues
  • Stratégies pour traiter des conditions profondément imbriquées
  • Planifcation de réusinage à grande échelle et réduction de la dette technique

Méthodologie

Ateliers interactifs basées sur des démonstrations, des exercices pratiques, des examples, et des échanges sur les cas concrets avec les participants.

Public visé

Architectes, développeurs ou toute autre personne ayant à développer des logiciels. 

Cette formation est conçue pour des architectes, concepteurs et développeurs de tous les niveaux. Les débutants pourront apprivoiser principes, patrons de conception et pratiques, alors que les développeurs plus expérimentés pourront raffiner leurs habilités et compétences en apprenant comment utiliser ces concepts de façon plus efficace.

Préalables

  • Les participants devraient avoir de l'expérience avec Java, C#, VB.NET ou C++.
  • Vous devez apporter un ordinateur portable avec un environnement de développement Java, C#, VB.NET ou C++. 

 

 

 


Course description

In this class, you will learn how to bring back to life large code bases that have deteriorated over time (Legacy code). When adding new functionality to an existing application becomes a risky and arduous task, when the velocity of the team and the quality of the product keeps dropping, it may be time to ask ourselves how we can get out of that vicious circle. 

Michael Feathers presents some industry-tested techniques to refactor existing code safely and efficiently. Test Driven Development (TDD) and Refactoring are powerful tools when wielded properly. You will learn how to improve existing systems and make them easier to maintain and evolve. Not only will it help improve the quality of your product and the velocity of your team, we bet it will also make it much more pleasurable to continue developing it in the future.

About Michael Feathers 

Michael Feathers Closeup Color Transparent

Michael Feathers is one of the pioneers and leaders of the Agile movement. He provides training, coaching and mentoring services in Agile/XP programming practices, test-driven development, refactoring, object-oriented design, Java, C#, and C++. Michael has over 20 years of experience in developing world-class software solutions

Michael Feathers is the founder and Director of R7K Research & Conveyance, a company specializing in software and organization design. Prior to forming R7K, Michael was the Chief Scientist of Obtiva and a consultant at Object Mentor of Robert C. Martin fame (Uncle Bob). Over the years, Michael has spent a great deal of time helping teams after design over time in code bases. Michael is also the author of the book "Working Effectively with Legacy Code"(Prentice Hall, 2004), a significant contribution that stands as one of the 3 best Agile books. He is also the author of the CppUnit unit test framework for the C++ language.

Course objectives

By the end of this workshop, you will:

  • Understand what legacy code is
  • Understand how to break dependencies in legacy code
  • Learn a variety of techniques for breaking external and internal dependencies
  • Understand when to employ each of the techniques
  • Learn a variety of strategies for code refactoring
  • Learn how to identify change points
  • Learn how to find an inflection point
  • Understand the concept of test coverage for inflection points
  • Understand how to write effective tests for legacy code

Content

Day 1

  • Introduction / Testing as a Programmer’s tool
  • Seam identification
  • Breaking Dependencies – Sensing and Separation
  • Breaking Hidden and Manifest Dependencies
  • Characterization Testing
  • Refactoring Toward Understandability
 

Day 2

  • Strategies for Getting Large Methods under Test
  • Dealing with Deeply Nested Conditionals
  • Planning Large-Scale Refactoring and Technical Debt Reduction

Methodology

Interactive workshop with presentations based demonstrations, practical exercises, examples, and discussions of real life experiences with the participants.

Who should attend?

Architects, developers and anybody who writes software for a living. 

The course is designed for architects and developers with all levels of experience using the Java, C# or C++ programming language. Beginners will obtain a firm grounding in the principles, patterns and practices, while experienced developers will be able to sharpen and refine their skills by learning how to apply the concepts more effectively.

Prerequisites

  • Participants should have experience in Java, C#, VB.NET or C++.
  • You must bring a laptop computer with a Java, C#, VB.NET  or C++ programming environment.