Les design patterns

Jeudi 26 avril 2018, deux de nos Agiciens ont animé un Lunch&Learn à propos des design patterns. Aujourd’hui, il nous propose une rétrospective de leur travail !  

Design pattern : le B.A-B.A

 

Entre le singleton, le memento ou encore l’abstrait, vous avez sûrement déjà entendu parler des design patterns. Tous ces outils permettent de schématiser des motifs de conception. En effet, depuis le début de l’informatique les problématiques de conception rencontrées sont bien souvent les mêmes. Au lieu de réinventer la roue à chaque fois, l’idée a été de formaliser les solutions avec la création de design patterns pouvant être réutilisés maintes fois.

Malheureusement, ces concepts sont souvent oubliés ou ignorés. C’est pourquoi, nous avons décidé de réaliser un Lunch&Learn sur ce sujet ! Il était important pour nous de pouvoir donner des exemples d’application de ces design patterns sur des éléments concrets.

Pour rappel, un design pattern répond à une problématique précise. Pendant notre Lunch&Learn, nous avons donc exposé une problématique et étudié le meilleur moyen de répondre à celle-ci conceptuellement !

 

 

Nous en avons conclu que l’utilisation d’un design pattern doit être intuitive, elle permet :

– D’accélérer le processus de développement

– D’anticiper des problématiques

– D’améliorer la lisibilité

 

General Responsibility Assignment Software Patterns

 

Si les design patterns du « Gang of Four » sont connus, ceux de GRASP le sont moins. GRASP signifie General Responsibility Assignment Software Patterns/Principles. Ces patrons de conception donnent des conseils généraux sur l’assignation de responsabilité aux classes et objets dans une application. Ils sont issus du bon sens de conception et sont intuitifs. Les patrons de conception GRASP sont les suivants :

– Expert en information : affecter les responsabilités aux classes détenant les informations nécessaires.

– Créateur : déterminer quelle classe a la responsabilité de créer les instances d’une autre classe.

– Faible couplage : diminuer le couplage des classes afin de réduire leurs interdépendances dans le but de faciliter la maintenance du code.

– Forte cohésion: avoir des sous-classes terminales très spécialisées.

– Contrôleur : affecter la responsabilité de réception et traitement de messages systèmes.

– Polymorphisme : affecter un nouveau comportement à la hiérarchie des classes.

– Fabrication pure: créer des classes séparées pour des fonctionnalités génériques qui n’ont aucun rapport avec les classes du domaine applicatif.

– Indirection : découpler des classes en utilisant une classe intermédiaire.

– Protection: ne pas communiquer avec des classes inconnues.

 

Il n’est pas indispensable de les connaitre par cœur mais il semble important de s’en servir comme source d’inspiration.

 

Pour aller plus loin

 

Les éléments présentés ne datent pas d’hier (années 90). Depuis, les technologies ont bien évolué et les problématiques rencontrées se sont multipliées.

Les design patterns présentés ci-dessus ne représentent qu’une partie de ceux que l’on classe dans les design patterns de conception. On peut encore citer l’injection de dépendances qui est très largement utilisée aujourd’hui pour diminuer le couplage entre les différents composants d’une architecture logicielle.

Notez, par exemple, que les aspects de la programmation parallèle ne sont pas abordés. Les supercalculateurs (utilisés essentiellement dans les domaines scientifiques) mais aussi la généralisation des machines multicœurs et multiprocesseurs obligent, quand on souhaite profiter de ce potentiel, à revoir la façon de programmer. Il faut alors faire face aux problématiques qui en découlent :

– Découpage des tâches ou des données

– Synchronisation

– Communication

– Répartition de la charge

 

Nous n’avons pas non plus intégré les designs d’architecture dans notre présentation qui apportent des solutions dans l’organisation des différentes parties qui composent le logiciel. L’un des plus connus dans le développement d’application web est le pattern MVC.

 

 

Conclusion

 

Il est essentiel de noter que la plupart des problématiques auxquelles nous sommes confrontés dans notre métier ont déjà trouvé des solutions éprouvées et décrites à travers les design patterns. Ils se déclinent à tous les niveaux, le tout est de savoir quand et comment les utiliser. Leur mise en pratique régulière permet de mieux les comprendre jusqu’à ne plus pouvoir s’en passer ! Les ignorer serait comme ignorer l’existence du marteau pour enfoncer un clou.

 

Autres articles

L’avant-projet sur Prince2

Le jeudi 10 décembre 2020

Prince2 (Project IN Controlled Environnement) est une méthode de management publiée et structurée par l’OGC Britanique (Organization of Governmental Commerce). Elle est basée sur l’expérience et est reconnue à l’international comme la meilleure méthode au monde. La dernière version de Prince2 est sortie en 2017.

(suite…)

CodinGame Fall Challenge 2020 : résultats

Le mercredi 2 décembre 2020

La célèbre compétition CodinGame Fall Challenge 2020 a eu lieu du 19 au 23 novembre dernier. Le principe ? Une compétition sur 11 jours, où des joueurs du monde entier s’affrontent sur un défi de programmation de bot (IA). 

Découvrez les résultats de la Team Agixis ! 

(suite…)

La 5G débarque en France

Le mardi 24 novembre 2020

Déployée à Nice, la 5G arrive doucement mais sûrement sur le territoire français. Retardée par le coronavirus, cette technologie ne cesse de faire parler d’elle. Avantage ou inconvénient : quels sont les enjeux de demain ?

(suite…)

Logo Agixis

CONTACTEZ-NOUS :
04 27 02 74 49

115 boulevard de Stalingrad 69100 Villeurbanne

Mentions légales - Création : Agence 33 Degrés : Agence de communication lyon - Développement : WebForLyon

Logo Agixis

MENU

Meeting agile Agixis Meeting agile Agixis
Logo Agixis

  • Accueil
  • Agixis
  • Métiers
  • Services
  • Solutions
  • Références
  • Nous rejoindre
  • Postuler
  • Actualités
  • Contact

Meeting agile Agixis Meeting agile Agixis

Recherche


Dernières annonces

  • Lead tech Java

    Lead tech Java, tu as envie d'évoluer dans un environnement technique innovant ? Révolutionnaire, ...

    Découvrir
  • Développeur Java fullstack

    Dév’ fullstack, tu as envie d'évoluer dans un environnement technique innovant ? Révolutionnair...

    Découvrir
  • Développeur .NET

    Dév’ .Net, tu as envie d'évoluer dans un environnement technique innovant ? Révolutionnaire, tu...

    Découvrir

AGIXIS
Immeuble Central Parc II
115, boulevard de Stalingrad
69100 Villeurbanne