lundi 27 octobre 2014

Quelles sont les pièges de l'architecture en couches logiques ?

1) le nombre

Comme je le disais c'est d'en faire trop, il en faut juste ce qu'il faut et c'est toujours un peu délicat la tentation est grande d'en ajouter. Mais il faut garder en mémoire que c'est un découpage technique et non fonctionnel du projet.

2 ) les fausses couches

Le MVC (modèle vue contrôleur), le MVVM (modèle vue vue-modèle, un truc Mircosoft) et autre font partie d'une seule couche logique, celle de présentation. 

3 ) Le découplage

Les couches doivent être découplées qu'il disait... et comment ça cause ? A grand coups de Reflexion et de Dozer (bon framework souvent mal utilisé), ça va piquer !
Non sérieux, il y  a un couplage, mais un couplage faible, réalisé par interfaces et uniquement descendant (oui il faut éviter un cycle, ça compile pas les dépendances cycliques). 
Le couplage par interface permet, de ne pas être tributaire d'une implémentation unique, on pourra réaliser une nouvelle implémentation d'une couche sans modification des autres à condition de respecter les interfaces. 

4) Le modèle

L'interface c'est bien pour le "verbe" : les méthodes exposées. Mais il faut aussi un modèle, un modèle métier, souvent le reflet de ce qui est persisté. Il véhicule l'information entre les couches, on le retrouve dans les signatures des méthodes des interface. 
Il peut provenir de l'extérieur : XSD, Modèle de données existant... il faut le partager à toutes les couches au travers de son implémentation (plus simple) ou d'interfaces (plus complexe : mise en place de factory et autre... ), si chaque couche implémente son propre modèle la communication va être complexe et couteuse, bref vous aller lorgner rapidement vers Dozer, ça fera moins de code... ça risque d'être  compliqué de conservé un couplage faible (par interface).
On peut considérer le modèle comme un couche accessible par toute les autres (la couche de plus base niveau).

5 ) le passage d'un couche à l'autre 

On a traité une partie dans le point précédent mais encore un piège ce cache, ne pas respecter les couches. Impossible vous me direz, c'est découplé, enfin disons pas trop couplé. Oui mais on peut toujours faire une méthode qui prend une requête SQL en paramètre depuis la couche présentation passée dans une chaine de caractères. Bref ce sont des couche logique, y a toujours moyen de passer à travers et une simple chaine le permet. Sans parler du problème de sécurité que ce genre de pratique que certain de mes proche, certain de mes amis...

6) Les frameworks

Les frameworks apportent beaucoup au développeur, mais il est nécessaire de bien les maitriser pour ne pas se faire envahir par un framework qui alors prendrait la main sur la conception.
Mais il faut aussi voir que bien utilisé ces derniers permette de simplifier la conception et souvent de supprimer une couche !

Voila on a fait le tour... plus on fait simple plus il y a  de chance que cela fonctionne bien.

Et avec des framework ressents ça donne quoi tout ça ? ORM, Spring, JPA, Linq...

Aucun commentaire:

Enregistrer un commentaire