Evolution MM

Formations à l'informatique
Découvrez la différence ENI

Lien accueil

Téléchargez le Calendrier des formations

Nantes, Rennes, Niort, Nice, Paris

jusqu'à juillet 2018

Rechercher
Rechercher une formation
 

UML dans le projet de développement logiciel

Le monde du développement logiciel est aujourd'hui en quête d'agilité. Il s'agit souvent de mettre en œuvre une méthode de gestion de projet agile, favorisant le développement rapide d'un logiciel répondant aux besoins des utilisateurs.
Mais qu'en est-il de l'agilité du logiciel lui-même, c'est-à-dire de sa capacité à s'adapter aux nouveaux besoins? Cette agilité là n'est pas adressée par l'agilité de la méthode, mais par l'application de bonnes pratiques de conception logicielle au niveau du code lui-même.
Que le projet adopte une méthode agile ou non, les choix structurants de conception du code doivent être partagés par tous les développeurs. Ces choix doivent donc être définis et formalisés de façon claire et rigoureuse.

Public :

  • Architectes, concepteurs et développeurs logiciel.

Objectifs :

  • Cette formation, articulée autour d'une étude de cas complète, vous donnera les moyens de mener à bien la conception de votre logiciel, au travers :
    • D'une démarche de conception, réalisant un lien très fort avec le code, mais aussi avec les spécifications ;
    • De la maîtrise de bonnes pratiques de conception logicielle fondamentales (déclinées autour de la séparation des préoccupations et de la limitation des dépendances) ;
    • De la formalisation de la conception dans un document lisible et rigoureux, à l'aide du formalisme UML (utilisation de l'outil Enterprise Architect) ;
  • Afin d'accentuer le caractère pratique et concret de la formation, celle-ci est cadencée par la réalisation de l'étude de cas, selon une méthode d'esprit agile. L'essentiel du message reste néanmoins valide pour un projet suivant une méthode classique.

Pré-requis :

  • La connaissance d'un langage orienté objet est fortement recommandée.

Contenu pédagogique

Introduction et prise en main du sujet

  • Processus de développement: gestion de projet en cascade vs agile - la place des activités de spécification et de conception
  • Conception Orientée Objet : séparation des préoccupations et limitation des dépendances - introduction à UML
  • Prise en main de l'étude de cas: comprendre les besoins généraux du client

Définir le système à réaliser

  • S'approprier le métier: au travers de l'étude de cas, comprendre les processus métier (diagramme d'activité) et les informations du domaine (diagramme de classe)
  • Spécifier les exigences - au travers de l'étude de cas, définir et formaliser dans un document lisible et rigoureux
    • Les exigences fonctionnelles: identifier les acteurs et les cas d'utilisation du système (diagrammes de cas d'utilisation et de séquence)
    • Les exigences non fonctionnelles à l'aide de l'approche FURPS
    • Le détail des interfaces du système (IHM et protocoles de communication)
  • Prendre en main le plan de développement projet: objectifs et planification des différentes itérations/sprints de l'étude de cas

Concevoir le système logiciel - les fondamentaux

  • Il s'agit de mettre en œuvre, au travers d'une première itération/sprint simple d'un point de vue technologique, les fondamentaux de la conception: démarche, bonnes pratiques et formalisation d'un document de conception avec l'aide d'UML
  • Définir la plate-forme technique
    • Définir l'architecture matérielle (diagramme de déploiement)
    • Choisir le framework logiciel
  • Concevoir un code source répondant aux exigences, maintenable et évolutif
    • Définir une architecture du code: le pattern en couches MVC, étendu au système entier
    • Concevoir les attributs: attributs identifiants et dérivés - association entre classes (diagramme de classe)
    • Concevoir les traitements et la communication entre classes (diagramme de séquence)
    • utiliser les scénarios de cas d'utilisation - répondre aux exigences fonctionnelles
    • séparer les préoccupations selon MVC
    • Affiner la structuration du code source
    • Affiner la structuration en packages (diagramme de packages)
    • Factoriser du code avec la généralisation - du bon usage de l'héritage
    • Faire communiquer les classes en limitant les dépendances: utilisation des interfaces et des singletons - pattern de communication requête/notification
    • Gérer les états (diagramme d'états)
    • Concevoir les composants déployables:
    • Définir les composants et leurs interfaces (diagramme de composant)
    • Définir le déploiement des composants (diagramme de déploiement)

Concevoir le système logiciel - Affinements techniques

  • Prendre en compte la persistance - itération/sprint 2
  • Prendre en compte la distribution - itération/sprint 3
  • Prendre en compte la technologie du Web - itération/sprint 4

Pour aller plus loin

  • Compléments sur les processus itératifs/agiles
  • Le processus TUP (Two Tracks Unified Process) et l'approche MDA (Model Driven Architecture)
  • Mettre en place UML dans l'entreprise