Le choix des outils

Les meilleurs outils sont ceux que l'on maîtrise !

À moins qu'on ne vous les impose, vous aurez à choisir les outils les plus adaptés à votre travail.

Deux types d'outils sont nécessaires :

    • d'une part, les éditeurs, qui vont vous permettre de réaliser vos schémas UML, de dessiner (puis de générer) votre base de données, de créer votre code, voire de gérer les versions ou la documentation ;
    • d'autre part, les briques logicielles que vous allez utiliser pour éviter de tout avoir à réinventer.

Les éditeurs

Personnellement, je préfère utiliser les produits OpenSource. Ils ont toutefois parfois quelques inconvénients :

    • leur richesse fonctionnelle n'est pas assurée : par exemple, ArgoUML a mis des années avant d'être capable de générer des diagrammes de séquence ;
    • ils peuvent être instables, et ne pas supporter la montée en charge (là encore, j'ai eu pas mal de déboires avec les éditeurs UML) ;
    • ils peuvent volontairement être limités : les sociétés qui les éditent sortent une version OpenSource limitée, à charge pour vous d'acheter les versions « professionnelles » si vous voulez plus de fonctionnalités ;
    • ils peuvent disparaître, ou le développement peut s'arrêter, ou changer de licence en cours de route... Jusqu'à récemment, j'utilisais un éditeur UML dont la licence a changé pour les dernières versions livrées (abandon de l'OpenSource pour basculer en licence commerciale). J'ai donc abandonné l'outil pour un autre.

Néanmoins, certains sont des « best sellers » (si l'on peut dire!) dans leur domaine, comme Eclipse, qui a fini par devenir LA référence des éditeurs de code.

Voici les outils que j'utilise actuellement :

Il me manque un outil de gestion de version (je n'ai jamais pris le temps d'en chercher un sérieusement, mais c'est un tort).

Et bien sûr, LibreOffice pour tout ce qui est « rédactionnel » ou schémas variés (hors UML).

Les frameworks

Les frameworks, ou squelettes d'applications, évitent d'avoir tout à refaire à chaque application. Il en existe des dizaines ou centaines... Pour les choisir, attention aux effets de mode, ne vous attachez pas trop aux commentaires dithyrambiques, aux « panacées universelles » !

Voici quelques critères qui vous aideront à choisir :

    • privilégiez les frameworks bâtis sur le modèle MVC (Modèle – vue – contrôleur). En gros, ça signifie que vous avez un point d'entrée unique dans votre application (une page « contrôleur »). Ce contrôleur va vous permettre d'appeler les différents modules, de gérer les droits d'accès, etc. L'affichage des pages HTML est en grande partie automatisé, vous ne devriez pas avoir besoin d'insérer des commandes « echo » dans votre code ;
    • il existe en gros deux types de frameworks : ceux purement objets, qui copient le mécanisme de Java, et ceux qui autorisent des scripts procéduraux couplés avec des classes. Les premiers sont souvent plus formels et plus complexes à comprendre, les seconds plus aisés à manipuler. Là encore, il n'y a pas d'avantage majeur des uns ou des autres, c'est vraiment l'approche personnelle qui fait la différence ;
    • vérifiez la manière dont la sécurité est gérée (c'est un des points principaux), et notamment :
        • comment s'identifient les personnes dans l'application ? Peut-on intégrer une identification basée sur un annuaire LDAP ? Peut-on utiliser un serveur CAS (Common Access Service) ?
        • Comment sont gérés les droits d'accès ? Peuvent-ils être stockés dans un conteneur externe (base de données des droits, annuaire ldap, etc.) ? La gestion des droits est-elle suffisamment riche par rapport à vos besoins ?
        • Quels sont les mécanismes de sécurité qui ont été implémentés :
            • pour protéger les personnes qui travaillent avec l'application (Cross-site scripting) ;
            • pour éviter l'injection de code SQL ;
            • pour éviter les requêtes transmises hors contexte (cross-site request forgery) ;
            • pour empêcher le détournement de session ;
            • etc.
    • intéressez-vous également aux modes d'accès aux bases de données qui sont disponibles : PDO ne supporte pas toutes les bases de données, contrairement à AdoDB. De même, vous devez disposer d'un outil vous permettant de générer automatiquement les requêtes de lecture/écriture/suppression (également appelé pompeusement couplage relationnel-objet, ou ORM en anglais – Object Relational Mapping). Vérifiez qu'il correspond bien à ce que vous voulez faire ;
    • le framework doit disposer d'un module permettant de générer le code HTML de façon simple, sans que vous ayez besoin d'insérer du code PHP au milieu de balises HTML (ou inversement). Il doit également vous proposer un mécanisme pour générer vos menus : vérifiez son fonctionnement et sa configuration ;
    • il est judicieux que les modules que vous allez écrire puissent être déclarés à un endroit unique : ce sera bien plus simple à maintenir ;
    • et puis, posez-vous des questions générales :
        • supporte-t-il les requêtes AJAX (c'est un mode où il faut inhiber l'affichage « classique » pour pouvoir renvoyer au navigateur uniquement les données demandées) ?
        • Est-il régulièrement mis à jour ? Existe-t-il une communauté active, et son évolution semble-t-elle cohérente ?
        • Est-il facile de prise en main ? Est-il performant (charger toutes les classes à chaque appel de page n'est pas forcément un signe d'optimisation) ?
    • Etc.

Vous pourriez avoir la tentation de créer votre propre framework. Même si c'est ce que j'ai fait il y a quelques années (les frameworks étaient moins courants, et les fonctionnalités ne correspondaient pas alors à mes besoins), je vous le déconseille aujourd'hui. Au besoin, s'il manque une fonctionnalité dont vous auriez besoin, voyez si vous pouvez l'intégrer dans le framework vers lequel va votre préférence.

Les outils complémentaires

On en a vu quelques uns au travers des recommandations sur les frameworks. Ces outils vont vous permettre de gagner du temps dans le développement, pour éviter de réécrire ce qui a été fait par d'autres. Voici ceux que j'utilise actuellement :

Vérifiez les licences d'utilisation. Lorsque je cherchais une classe pour générer des graphiques, la plupart de celles que j'avais trouvé avaient une licence qui ne me permettait pas de les utiliser en milieu professionnel sans verser une redevance.