Rechercher

Qu'est-ce qu'un Anti Pattern ?

Mis à jour : mars 8

Les Anti Patterns, comme leurs homologues les Design Pattern sont des méthodes d’implémentations défectueuses courantes au sein des entreprises. Ces méthodes sont définies par un vocabulaire de niveau supérieur qui simplifie la communication entre les développeurs et permet une description concise des concepts de niveau supérieur.


Un Anti Pattern est une forme littéraire qui décrit une solution courante à un problème qui génère des conséquences résolument négatives. L'Anti Pattern peut être le résultat d'un manager ou développeur avec peu de connaissance, n'ayant pas suffisamment d'expérience dans la résolution d'un type particulier de problème, ou ayant appliqué un modèle parfaitement bon dans le mauvais contexte.



Anti Patterns offre une expérience concrète de la reconnaissance des problèmes récurrents dans le génie du logiciel et fournit un remède détaillé pour les situations les plus courantes. Anti Patterns met en évidence les problèmes les plus courants rencontrés par le génie du logiciel et fournit les outils pour vous permettre de reconnaître ces problèmes et de déterminer leurs causes sous-jacentes.


De plus, Anti Patterns présente un plan détaillé pour inverser ces causes sous-jacentes et mettre en œuvre des solutions productives. Anti Patterns décrit efficacement les mesures qui peuvent être prises à plusieurs niveaux pour améliorer le développement d'applications, la conception de systèmes logiciels et la gestion efficace des projets logiciels.


Anti Patterns du développement de logiciels


Un objectif clé du développement d'Anti Patterns est de décrire des formes utiles de refactoring logiciel. Le refactoring logiciel est une forme de modification de code, utilisée pour améliorer la structure logicielle pour simplifier l’évolution et la maintenance des applications à long terme. Dans la plupart des cas, l'objectif est de transformer le code sans affecter l’implémentation ou la correction du bug.

Une bonne structure logicielle est essentielle pour l'extension et la maintenance du système. Le développement de logiciels est une activité chaotique, par conséquent, la structure mise en œuvre des systèmes tend à s'écarter de la structure initiale, déterminée par l'architecture, l'analyse et la conception.


Le refactoring logiciel est une approche efficace pour améliorer la structure logicielle.

La structure résultante n'a pas à ressembler à la structure initialement prévue.

La structure change car les programmeurs apprennent les contraintes et les approches qui modifient le contexte des solutions codées. Lorsqu'il est utilisé correctement, le refactoring est une activité naturelle dans le processus de programmation.


Par exemple, la solution pour l’Anti Pattern Code de Spaghetti définit un processus de développement logiciel qui intègre le refactoring. Le refactoring est fortement recommandé avant l'optimisation des performances. Les optimisations impliquent souvent des compromis sur la structure du programme. Idéalement, les optimisations n'affectent que de petites portions d'un programme. La refactorisation préalable permet de partitionner le code optimisé de la majorité des logiciels.


Le développement Anti Patterns utilise diverses approches de refactorisation formelles et informelles.


Les exemples suivants fournissent une vue d'ensemble des Anti Patterns de développement les plus courants ainsi que leurs solutions refactorisées :


Le Blob

Une conception de style procédural conduit à un objet avec une part du lion des responsabilités, tandis que la plupart des autres objets ne contiennent que des données ou exécutent des processus simples. La solution comprend la refactorisation de la conception afin de répartir les responsabilités de manière plus uniforme et d'isoler l'effet des changements.


Obsolescence continue

La technologie évolue si rapidement que les développeurs ont souvent du mal à suivre les versions actuelles des logiciels et à trouver des combinaisons de versions de produits qui fonctionnent ensemble. Étant donné que chaque produit évolue au fil des nouvelles versions, la situation devient plus difficile à gérer pour les développeurs. Il est encore plus difficile de trouver des versions compatibles de produits qui interagissent avec succès.



Coulée de lave

Le code mort oublié est figé dans une conception en constante évolution. Ceci est analogue à un flux de lave avec des globules durcissant de matériau rocheux. La solution refactorisée comprend un processus de gestion de configuration qui élimine le code mort et évolue ou réorganise la conception pour augmenter la qualité.



Point de vue ambigu

Les modèles d'analyse et de conception orientés objet sont souvent présentés sans clarifier le point de vue représenté par le modèle. Par défaut, ces modèles dénotent un point de vue d'implémentation qui visualise la structure d'un programme informatique. Les points de vue mixtes ne prennent pas en charge la séparation fondamentale des interfaces des détails d'implémentation, ce qui est l'un des principaux avantages du paradigme orienté objet.

Dans l'analyse et la conception orientées objet, il existe trois points de vue : le point de vue métier (les informations spécifiques au métier pour l'utilisateur final), le point de vue de spécification (qui définit les éléments d'interface exposés d'une classe) et le point de vue d'implémentation (qui traite de l'implémentation interne réelle de la classe). Si le point de vue devient mixte, ces éléments se mélangeront d'une manière qui rend difficile la séparation et la maintenance des éléments internes d'un objet sans changer l'interface, l'un des principes fondamentaux de l'analyse et de la conception orientées objet.



Décomposition fonctionnelle

Cet Anti Pattern est le résultat de développeurs expérimentés en langage procédural, non orientés objet, qui conçoivent et implémentent une application dans un langage orienté objet. Le code résultant ressemble à un langage structurel (Pascal, FORTRAN) dans la structure de classe. Cela peut être incroyablement complexe car les développeurs de procédures intelligentes conçoivent des façons très «intelligentes» de reproduire leurs méthodes éprouvées dans une architecture orientée objet.



Poltergeists

Les poltergeists sont des classes avec des rôles très limités et des cycles de vie réelle. Ils démarrent souvent des processus pour d'autres objets. La solution refactorisée comprend une réaffectation des responsabilités à des objets à durée de vie plus longue qui éliminent les Poltergeists.



Ancre de bateau

Une ancre de bateau est un composant logiciel ou matériel qui ne sert à rien sur le projet en cours. Souvent, l'ancre de bateau est une acquisition coûteuse, ce qui rend l'achat encore plus ironique.



Marteau d'or

Un marteau d’or est une technologie ou un concept familier appliqué de manière obsessionnelle à de nombreux problèmes logiciels. La solution consiste à élargir les connaissances des développeurs à travers l'éducation, la formation pour exposer les développeurs à des technologies et approches alternatives.



Impasse

Une impasse est atteinte en modifiant un composant externe réutilisable si le composant modifié n'est plus maintenu et pris en charge par le fournisseur. Lorsque ces modifications sont apportées, la charge de support est transférée aux développeurs et aux responsables du système d'application. Les améliorations du composant réutilisable ne sont pas facilement intégrées et les problèmes de support peuvent être imputés à la modification.



Code de spaghetti

La structure logicielle ad hoc rend difficile l'extension et l'optimisation du code. La refactorisation fréquente du code peut améliorer la structure du logiciel, prendre en charge la maintenance du logiciel et permettre le développement itératif.



Input Kludge

Un logiciel qui échoue à des tests de comportement simples peut être un exemple Input Kludge qui se produit lorsque des algorithmes ad hoc sont utilisés pour gérer les inputs de programme.



Marcher dans un champ de mines

L’utilisation des technologies logicielles d’aujourd’hui est analogue à la marche dans un champ de mines high-tech. De nombreux bugs se trouvent dans les produits logiciels publiés ; en fait, les experts estiment que le code source d'origine contient de deux à cinq bugs par ligne de code.



Programmation couper-coller

Le code réutilisé en copiant du code source entraîne des problèmes de maintenance importants. D'autres formes de réutilisation, y compris la réutilisation en boîte noire, réduisent les problèmes de maintenance en ayant un code source, des tests et une documentation communs.



Gestion des champignons

Dans certains cercles de gestion de projets informatiques, il existe une politique explicite pour maintenir les développeurs de systèmes isolés des utilisateurs finaux du système. Les exigences sont transmises de seconde main par des intermédiaires, notamment des architectes, des chefs de projets ou des analystes business.




0 vue

#Suivez-Nous

+213560764957

©2020 by DIGITAL GROWING.