Description

Connaitre les bonnes pratiques pour améliorer la productivité et faciliter la maintenance des logiciels.

Un code mal conçu ou mal écrit va rendre un logiciel difficile à fiabiliser, et très coûteux à maintenir. La productivité des développeurs est fortement pénalisée par la mauvaise qualité interne du logiciel sur lequel ils interviennent.

Consacrée à la qualité interne des logiciels, cette formation technique présente un panorama des bonnes pratiques touchant à l’écriture du code, à l’architecture et à la modélisation, aux tests unitaires, qui ont toutes pour objectif de rendre le code plus compréhensible, plus fiable et plus simple à maintenir. Elles permettent de conserver une bonne productivité tout au long d’un projet, plutôt que de la voir s’effondrer à mesure que la qualité interne se détériore et que la dette technique s’accroît


Contenu

Enjeux de la qualité logicielle

  • Ses différents aspects, la qualité interne et la qualité externe
  • La métaphore de la dette technique
  • Le rapport entre qualité et productivité

Apports des méthodes agiles

  • Les principes des méthodes agiles
  • La programmation en binôme
  • L’appropriation collective du code
  • L’intégration continue

Aspects d'ergonomie

  • Les bonnes pratiques dans le design d’ergonomie et d'expérience utilisateur
  • Les habitudes et erreurs des utilisateurs

Lisibilité du code

  • Les enjeux de la lisibilité du code
  • Qu'est-ce qui fait un bon code ?
  • Les conventions et normes de codage
  • Les commentaires
  • Le nommage
  • Rendre le code explicite
  • Les Code Smells et le refactoring

Domain Specific Language (DSL)

  • Les différents types de DSL
  • L’intérêt d’un DSL

Architecture logicielle

  • Le design et les méthodes agiles
  • L’architecture pilotée par les risques
  • Le design en couches
  • Le client serveur, le web et les Rich Internet Applications (RIA)
  • Les serveurs avec ou sans état (stateful ou stateless)
  • Composants, IoC et injection de dépendances
  • L’architecture événementielle
  • Les services, l’approche SOA, l’architecture REST
  • Le mapping objet-relationnel (ORM)
  • Le découpage de la couche de présentation : MVC, MVP, MVVM

UML

  • Le diagramme de classes
  • Le diagramme de séquence
  • Le diagramme états-transitions
  • Le diagramme d'activité
  • Le diagramme de cas d'utilisation
  • Quels usages d’UML ?

Modélisation objet

  • Rappels sur la programmation orientée objet
  • Les grands principes pour une bonne modélisation objet
  • Les caractéristiques d'un mauvais design, et les code smells
  • L’héritage : utilité et inconvénients

Domain Driven Design (DDD)

  • Les entités et objets valeurs
  • La logique métier répartie entre les services et le domaine
  • Les modules, agrégats, factories et repositories

Design patterns

  • Le concept de design pattern, et son utilité
  • Exemples de design patterns parmi les plus utilisés : singleton, observer, decorator, proxy, command, iterator

Tests automatisés

  • Pourquoi des tests automatisés ?
  • La typologie des tests automatisés
  • Les critères de qualité du code s’appliquent aussi aux tests

Tests unitaires

  • Les caractéristiques des tests unitaires
  • Les outils pour les tests unitaires
  • L’approche TDD (Test Driven Development)
  • Comment écrire du code facile à tester ?
  • Les objets factices : mocks, stubs et fakes

Tests fonctionnels

  • Les caractéristiques et types de tests fonctionnels
  • Les outils pour les tests fonctionnels
  • L’approche BDD (Behavior Driven Development)

Aspects de sécurité et quelques failles classiques

  • Les principaux problèmes de sécurité
  • L’injection SQL et autres types d’injection
  • Les risques liés au web : Cross Site Scripting, Cross Site Request Forgery, vulnérabilité JSON

Programmation défensive

  • Que recouvre la notion de programmation défensive ?
  • Le principe du fail fast
  • Le contrôle des entrées-sorties
  • Assertions, logs, debug, et Design By Contract
  • Les techniques défensives de programmation orientée objet
  • La gestion des erreurs et les exceptions

Objectifs

Découvrir les bonnes pratiques techniques concernant les différents aspects de la réalisation d’un logiciel, qui permettent d’en garantir la qualité interne, et d’améliorer la productivité des développeurs.

Public

  • Architectes
  • Développeurs
  • Chefs de projets

Pré-requis

Connaissance d’un langage orienté objet.


Durée Tarif Lieu
3 jours nous consulter Montpellier

Théorie : 100% Pratique : 0%

[haut]