« 2004-10 | Page d'accueil | 2004-12 »

20/11/2004

DBDesigner : Modèle de Conception de Données (MCD)

Un autre outil indispensable pour modéliser les bases de données en Mysql : DBDesigner. Il ne supporte que MySQL mais il le fait bien. Il possède plusieurs atouts à son arc :

  • Export des diagrammes en png de la structure des tables
  • Génération de rapports avec la structure des tables
  • Reengineering des bases de données. (Pour l'instant je ne l'ai vu dans nul autre projet opensource) ; c'est-à-dire qu'il se connecte à une base de données et permet d'extraire les informations afin de "dessiner" les tables
  • Génération du code sql. Sur ce point je serai plus critique car les clefs étrangères ne sont pas correctes. Ca permet de faire 80% du travail ce qui est déjà pas mal
mysql.png
A côté de ça on a l'incontournable phpMyAdmin qui ne cesse de s'améliorer et les outils de Mysql : Mysql Control Center et MySQL Administrator qui donne plus d'informations sur l'état du serveur.

18/11/2004

Poseidon : conception des classes - UML

Autre logiciel à posséder lorsqu'on souhaite concevoir des applications ; c'est un outil de modélisation UML. (L'article en français n'existe pas encore). J'utilise pour l'instant l'outil Poseidon de la société GentleWare. poseidon.gif Le projet Poseidon est issu du projet opensource ArgoUML dont la licence BSD permet aux extensions d'être commercialisé par les entreprises. La différence entre les deux se situe plus en terme d'ergonomie qu'autre chose lorsqu'on fait du développement PHP. En effet pas de génération de code en PHP. L'outil permet plus de réfléchir à la conception et est un bon moyen pour enrichir la documentation du projet via des exports de diagrammes.

Un autre intérêt de l'outil est de pouvoir exporter les diagrammes au format png et le support du format xmi (format d'échange de métadonnées). Ainsi si l'envie me prenait de changer d'outil, le travail réalisé ne devrait pas être à refaire.... J'avais essayé il y a 1 an de réinjecter le fichier xmi dans ArgoUML et le résultat n'était pas probant. Dans Rational Rose cela fonctionnait bien cependant. Je n'ai pas réessayé depuis mais je pense que des progrès ont été fait, du moins je l'espère car c'était une des promesses du format xmi : échanger des métadonnées entre différentes applications ;-)

Dernier point important ça fonctionne aussi bien sous Windows que sous Linux ;-) ce qui est assez rare.

17/11/2004

Gestion des versions du code source : Eclipse

Lorsqu'on souhaite déployer des applications ou travailler en équipe, il est obligatoire d'avoir un système de gestion du code source. CVS (Concurrent Versions System) est un outil stable et robuste que nous utilisons au sein de BlogSpirit.
cvs_logo.gif
Son utilisation peut paraître difficile en ligne de commande. Cependant utilisé dans un logiciel avec une interface graphique tel qu'Eclipse et alors la productivité de l'équipe s'en voit améliorée.
Cela fera bientôt plus de 2 ans que mon équipe travaille avec Eclipse et cela nous a servi bien des fois.

eclipsebannerpic.jpg
Bien qu'Eclipse est surtout connu pour être un éditeur de code JAVA, il possède dans sa version 3.0 un plugin installé par défaut ssh2, qui permet de faire des connections distantes sécurisées. Pour l'instant je n'ai pas trouvé de meilleur outil. En effet le repository doit être accessible à travers le réseau Internet afin de permettre des connections au bureau ou à domicile.

Un autre avantage d'Eclipse, c'est la gestion performante des tags et branches. On parle de "tag" dans CVS, lorsqu'on fait un snapshot à une date t. Il est possible ainsi de récupérer un ensemble de fichiers à cette date t. On parle de "branche" lorsqu'on fait évoluer 2 versions d'un code. La branche HEAD est celle qui est toujours en développement alors que la branche est utilisée pour corriger des bugs dans un code source sans pour autant intégrer de nouvelles fonctionnalités. Ainsi BLOGSPIRIT, se trouve sur la branche V1_1 et nous pouvons à tout moment corriger des bugs sans qu'il soit nécessaire de rajouter des fonctionnalités qui seront intégrées dans une nouvelle branche ;-)

Pour l'instant Eclipse n'est pas l'éditeur pour coder le PHP car trop lent par rapport à Ultraedit. Cependant il possède des plugins qui sont très intéressants en particulier la visualisation des diagrammes UML : Omondo EclipseUML.

Un outil à suivre de très près et qui évolue régulièrement avec des plugins à n'en plus finir : http://eclipse-plugins.2y.net/

05/11/2004

Méthodes agiles : XP

Tout développement logiciel nécessite de reposer sur une méthode. Aun sein de BlogSpirit on utilise les "best practices" des méthode agiles. Kesako ?

Une méthode agile est une méthode de développement dans lequel le Client joue un rôle central. Le projet est centré autour de lui. Le développement est divisé en blocs et les blocs sont intégrés au fur et à mesure dans le projet. Le Client peut voir constamment l'évolution de son logiciel.

L'encyclopédie WikiPedia donne une bonne définition de ce qu'est une méthode agile pour ce qui en veulent en savoir plus.
XP : eXtreme Programming est une des méthodes agiles les plus populaires en développement ces dernières années. Nous nous en inspirons beaucoup. Cependant certains points sont difficiles à suivre tel que la programmation en binôme. Je ne met en place des binômes que sur des problèmatiques complexes sur lesquelles je sais que réfléchir à 2 permettra de trouver la solution. En effet les personnes sont beaucoup plus motivées à trouver une solution et comprennent que travailler à deux veut dire un résultat obligatoire et rapidement.
Le site Design Up propose une bonne explication sur XP. Pour l'instant je connais pas des cas concrets d'utilisation de XP dans les projets web. SI vous en connaissez, vous pouvez laisser un commentaire ;-)

Avant ces méthodes agiles, on avait le sacro saint cycle en V. Laurent donne sur son site une explication de son abandon. Bien que je ne sois pas d'accord avec lui sur tous les points j'en partage une majorité. Je reviendrai dans une future note sur mon désaccord. Le cyle en V, pour caricaturer, c'est un gros cahier des charges, un client présent au début et à la fin du projet et au final un projet qui ne répond pas correctement aux attentes du client. Touver un client qui sache rédiger un cahier des charges ou même qui sait ce qu'il veut au début du projet est une gageure ! (Je me demande encore pourquoi on apprend ce cycle en V dans les écoles d'ingénieurs alors que les mots "méthodes agiles" ou "XP" sont inconnus du vocabulaire de l'ingénieur sortie d'école).

Un développement web est caractérisé par un développement du type "in progress" et artisanal. C'est pourquoi le Client doit être le plus proche du projet et les méthodes agiles sont celles qui répondent le mieux à ces problématiques.

03/11/2004

Architecture 3 tiers

Beaucoup de projets opensource PHP ne sont pas batis sur une architecture 3 tiers. Or une conception en couche est un des points fondamentaux si l'on souhaite faire évoluer les applications web.

Une architecture est dite 3 tiers si une modification de la couche présentation (html par exemple), n'entraine pas forcément une modification de la couche métier (logique) ou de la couche data (accès aux données). Des outils facilitent cette conception tels que le moteur de template Smarty qui gère la couche présentation. (BlogSpirit l'utilise ;-)).
Au niveau de la couche data on peut citer adodb qui fournit des drivers pour la plupart des bases de données relationnelles du marché mais aussi pour du xml si on le souhaite. Au passage le benchmarck suivant http://phplens.com/lens/adodb/ montre très nettement qu'adodb est un des meilleurs drivers en PHP. Alors pourquoi s'en privé !

Pour la couche métier, il n'existe pas de framework dominant. On utilise en général des classes de projets déjà existants ou bien on les crée.

Une des premières régles en développement web que je donnerai c'est : regarder ce qu'il y a dans le monde libre . Il y aura toujours quelqu'un qui l'aura fait avant vous. Plus ou bien peut-être, mais ca fait gagner un temps précieux !

Toutes les notes