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
Recap’ de notre dernier CODING GAME COMPETITION – Mai 2022
Le mardi 10 mai 2022

Jeudi dernier, Agixis vous a proposé un CODING GAME COMPETITION de haut niveau !
Ce jeudi 05 mai 2022, nous avons été témoins de très belles performances au Meltdown à Lyon lors de notre dernière Coding Game Competition. Ce sont 11 binômes qui se sont affrontés pendant 3 heures sur le jeu Search Race, travaillant sans cesse pour obtenir le score le plus petit possible.
Merci à tous ceux qui étaient présents pour votre participation et votre bonne humeur. Nous espérons que vous avez passé un aussi bon moment que nous ! Et merci également à John P., notre agicien Tech Lead qui a grandement participé à l’organisation de cet événement. Fun fact : nous l’avons rencontré pendant une compétition de Coding Game !
Et bravo, bien entendu, aux deux équipes gagnantes : Lilian Go Skype (14 046 points) et Lucifor (20 968) qui ont pu repartir avec un casque Razer et des e-cartes cadeaux FNAC.
Voici un récap’ photo de la soirée :
Webinaire gratuit – Les principes de programmation, productivité et amélioration continue – 17 mai 2022
Le lundi 25 avril 2022

Invitation à notre prochain webinaire
Nous vous invitons à un webinaire gratuit sur le thème » Les principes de programmation, productivité et amélioration continue » animé par Loic, notre agicien expert ! À destination des développeurs et des curieux :).
» Vous souhaitez développer vos compétences, produire un maximum de valeur pour le client et obtenir la satisfaction d’un travail bien fait ? Découvrez mon retour d’expérience sur les principes de programmation à appliquer au quotidien et leur complémentarité afin de maximiser son travail ».
Principes de programmation qui seront abordés : TDD, DDD, Egoless Programming et Architecture Hexagonal.
Rendez-vous en ligne le mardi 17 mai à 18h30 sur Teams. Pour vous inscrire et recevoir le lien de connexion, c’est par ICI.
Récap’ de notre dernière soirée portes ouvertes – Conférence Test Unitaire – 14/04/2022
Le vendredi 15 avril 2022

Soirée portes ouvertes et conférence : « Test Unitaire : apprivoisé par la théorie »
Le 14 avril dernier, Agixis a ouvert ses portes pendant quelques heures. Ce fut l’occasion d’échanger avec nos collaborateurs, discuter carrière, mais aussi technique ! En effet, nos deux agiciens experts Matthias et Baptiste ont animé une conférence sur le Test unitaire apprivoisé par la théorie. Voici un aperçu du contenu présenté : (suite…)