jeudi 16 septembre 2010

CMMI : Méthode GQM

J'ai découvert récemmet la méthode GQM (Goal/Question/Metric) grace au site http://afoucal.free.fr/.

Cette methode propose un guide pour mettre en place des metriques dans le cadre de qualité logiciel. Elle est une réponse aux exigences CMMI (processus Mesure et Analyse).

Pour plus d'information, vous pouvez allez voir sur le cite officiel (en Anglais) : http://www.gqm.nl/

    mercredi 1 septembre 2010

    Hudson - Ant : Liste des parametres utilisables dans un script Ant

    Voila la liste des parametres utilisables dans un script Ant lancé par Hudson :

    BUILD_NUMBER Le numero du build, exemple "153"
    BUILD_ID L'id du build, exemple "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
    JOB_NAME Nom du projet du build. C'est le nom du job configuré. C'est le nom que l'on retrouve dans la 3ème colonne du dashboard de la page principale.
    BUILD_TAG Concaténation de : hudson-${JOBNAME}-${BUILD_NUMBER}. Pratique pour mettre dans un fichier de ressource, un jar,... pour faciliter l'identification.
    EXECUTOR_NUMBER Le numéro unique de l'éxecution. (Commence à 0 et non 1)
    JAVA_HOME Le JAVA_HOME de la JDK utilisée.
    WORKSPACE Le chemin absolu du workspace.
    SVN_REVISION Pour les projets Subversion, cette variable contient le numéro de revision SVN. Si plusieurs modules SVN configurés, la variable ne sera pas positionnée.
    CVS_BRANCH Pour les projets CVS, cette variable contient le numéro de revision CVS. Si plusieurs modules CVS configurés, la variable ne sera pas positionnée.

    jeudi 15 juillet 2010

    Java - Ivy : création d'un repository local

    Voila une façon simple de créer un repository local :
    • Créer un repertoire partagé sur une machine en réseau. Exemple :  \\ma-machine\repository
    • Créer un fichier de configuration Ivy :
      <ivysettings>
          <properties file="${ivy.settings.dir}/ivysettings.properties">
          <property name="myrepository" overrite="true" value="//ma-machine/repository">
          <settings defaultresolver="chain-local">
          <resolvers>
              <chain name="chain-local">
                  <filesystem checkmodified="true" name="local">
                      <ivy pattern="${myrepository}/[module]/[revision]/ivy-[revision].xml">
                      <artifact pattern="${myrepository}/[module]/[revision]/[artifact]-[revision].[ext]">
                  </filesystem>
                  <ibiblio m2compatible="true" name="maven2">
                  <ibiblio m2compatible="true" name="jboss" root="http://repository.jboss.org/nexus/content/groups/public/">
              </ibiblio>
          </resolvers>
      </ivysettings>
    • Il suffit ensuite d'importer le fichier de configuration dans ant :
      <ivy:settings file="${basedir}/ivysettings.xml" />
    Bien sur il reste à remplir se repository...

    vendredi 11 juin 2010

    Java - Ivy : découverte

    Depuis longtemps, je gérais mes dépendances en utilisant SVN. En gros j'importais toutes mes librairies et leurs dépendances dans SVN en les taggants avec leur version. L'export se faisait via un script batch mais cela demandait la gestion des dépendances des dépendances... (Pas très pratique quand on changeait de version de lib). Le pire était pour la gestion des modules car il fallait les importer dans SVN dès qu'une modification était réalisée. De plus, SVN n'étant pas vraiment fait pour l'import de binaire, la base avait tendance à grossir.

    Dernièrement, je me suis mis à l'intégration continue (Hudson pour tout vous dire). Tout fonctionne bien avec l'utilisation de mes lib chargées dans SVN. Mais en voulant utiliser des plugins de type "tag automatique" j'ai rencontré un problème vu qu'Hudson essaye de tagger tout ce qui a été extrait de SVN donc mes Jar, ce qui pour le coup pose vraiment problème.

    En fouillant un peu, je suis tombé sur 2 solutions pour gérer mes dépendances : Maven et Ivy. Etant sous Ant, mon choix c'est porté sur Ivy.

    Les premier pas ne sont pas forcément évident. Les tutoriaux proposés se limitent aux premiers pas et la documentation, bien que complète, est plutôt faite pour des connaisseurs. Mais en persévèrent un peu et en posant quelques questions sur mon forum favori (developpez.com). On passe cette étape et là, on se rend vraiment compte de la puissance de cette outil.

    Plus besoin de se soucier des dependances, Ivy s'en occupe. Il suffit juste de lui donner quelle librairie on veut utiliser et il va chercher toutes les dépendances utiles. Par défaut, Ivy va chercher dans le repository de Maven qui est bien complet. Et pour les modules que l'on développe et que l'on partage, il suffit de se créer un repository local (dans mon cas un simple répertoire partagé, mais on peut faire beaucoup plus complet si on le souhaite) où l'on publirea nos modules. Et là encore Ivy s'occupe de ses dépendances.

    vendredi 7 mai 2010

    Agilité - Le rythme soutenable

    L'un des principes du manifeste agile est "le rythme soutenable". Mais dans nos entreprises il n'est pas toujours facile de le déterminer ni même de le garder sous la pression des managers.
    Emmanuel Chenu vient de publier un post fort intéressant à ce sujet sur son blog. Il parle du rythme de travail mais aussi du stresse apporté pour la pratique des méthodes agiles.

    C'est par ici.

    mardi 27 avril 2010

    Agilité - La chasse à la bonne méthode

    Comme beaucoup, je suis attiré par la mise en pratique des méthodes agile dans mon travail pour palier aux inconvénients rencontrés par la pratique de méthodes dites standard. Connaissant de nom Scrum et XP je me suis déjà penché dessus pour voir leur bénéfices et comment les appliquer. Mais très rapidement on découvre qu'il existe d'autres méthodes : Kanban, Lean, RUP, PUMA, FDD...
    Et la ça commence à être le bazar, les questions s'accumulent : quelle méthode choisir? Faut il en prendre qu'une ou plusieurs? Faut il faire un mixte? Prendre que ce qui nous intéresse? Prendre un coach? Suivre des formations?...

    Dans cette quête de réponses, quelques sites proposent des comparatifs qui, même s'ils ne peuvent pas tout comparer, peuvent aider :
     
    Bonne lecture.

    lundi 26 avril 2010

    Java - Swing : Exemple de base

    Tout ceux qui on un jour fait du client lourd en Java se sont pris la tête pour avoir un composant qui répond exactement à leur besoin. Les bibliothèques Java Swing et AWT propose déjà un bon nombre de composant prêt à l'emploi. Sans parler des « nouvelles » librairies tel que SwingX qui permettent d'étendre le nombre de composant prêt à l’emploi. Mais même ainsi, il n'est pas rare de vouloir un comportement diffèrent de celui qui est implémenté de base. Heureusement ces librairies ont été conçues pour être entièrement paramétrable. Mais ces modifications ne sont pas toujours évidantes à réaliser, surtout si l'on n'est pas un spécialiste dans ce domaine.

    Ce site référencie les modifications fréquemment faites avec le code java correspondant : SwingExamples.