Articles

Une autre définition de l'architecture logicielle

L'architecte rappelle celui que Néo rencontre à la fin de Matrix reloaded. Architecture est un mot souvent employé lorsqu'on parle de design mais il est exagéré afin de le rendre plus important. Le même phénomène s'applique au mot architecte. L'architecture peut-être défini comme "le concept de plus haut niveau d'un système logiciel dans son environnement. Il est l'organisation ou la structure de composants importants interagissant via des interfaces. Ces composants étant composés successivement de composants et d'interfaces de taille moindre". Du point de vu du développeur, cette définition est valable mais oublions le développeur un instant. Car au final le client se moque du concept du plus haut niveau et des composants. Une meilleure définition pourrait être :"Dans la plupart des projets réussis, les développeurs expert ont une connaissance partagée du design du système. Cette connaissance partagée est appelée "architecture"...

Qu'est qu'un bon test?

Un thème commun à l'intégration continue, à la livraison continue, au déploiement continu est le  test . Mais d'abord,  qu'est-ce qu'un bon test? Un bon test possède 3 qualités : digne de confiance  : c'est un test sans bug et qui teste ce qui doit l'être et uniquement cela. maintenable  : le modifier prend peu de temps. Des changements mineurs dans le code de production impliquent pratiquement aucune modification du test. lisible  : essayez de le donner à lire à une fonctionnel, si elle le comprend alors c'est lisible même pour un non-technique.

Demander Conseil, Pas la Permission

Demander la permission semble raisonnable  et être la bonne chose à faire. Mais dans un environnement collaboratif, c'est une mauvaise pratique très répandue dont voici les conséquences insidieuses :  Demander la permission à quelqu'un le rend responsable de votre décision. Par contre elle n'invite pas à la participation au succès éventuel de votre décision. Et si ça se passe mal alors vous l'entrainez dans votre échec. Par exemple :"J'ai demandé à l'équipe et ils ont dit que c'était bon." La personne à qui a été demandé la permission va sentir une pression et peut s'en irriter. Dans le meilleur des cas, la permission vous sera accordée mais la demande semblera irrespectueuse et prouvera votre manque de confiance en vous-même. Dans le pire des cas, elle sera refusée, ce qui ne sera non seulement vécu comme un rejet mais aussi une perte de tous les efforts déployés pour l'atteinte de votre objectif. Pire encore, si votre seul ...

Refactoring : Consolider une expression conditionnelle

Integer getDeliveryCost(){ if (orderAmount > 25 ) return 0 ; if (hasDeliveryVoucher) return 0 ; if (category == "electronic" ) return 0 ; ... } Etant données 3 conditions ayant le même résultat, combinez-les en une seule condition puis extrayez-les dans une méthode. Integer getDeliveryCost(){ if (isFree()) return 0 ; ... }

Le déploiement continu

Avant de commencer, clarifions ce qu'est l'intégration, la livraison et le déploiement continue. L'intégration continue C'est la pratique d'une équipe synchronisant leurs changements si fréquemment, plusieurs fois par jour, que c'en est presque continue. Concrètement, on met en place un serveur d'intégration continue  ( Jenkins  ou  Bamboo ) qui vérifie que le travail que l'équipe est en train de synchroniser est solide comme du béton . Ce serveur s'assure que le code source synchronisé marche pas seulement sur le poste de développeur mais aussi sur les autres machines (serveurs de staging, QA, intégration, recette ou pré-production). Le serveur écoute les changements,  commits ,  envoyés vers le contrôle de version, typiquement Git ou Subversion . Un build est lancé sur cette révision de code source et joue l'ensemble des tests. Si la compilation, les tests, ou tout autre chose échoue lors du build, alors le serveur en notifie le plus ra...