Affichage des articles dont le libellé est projet. Afficher tous les articles
Affichage des articles dont le libellé est projet. Afficher tous les articles

lundi 2 avril 2012

2-plan un outil de gestion de projet #agile

2-plan est un projet 'gratuit'  qui permet au chef de projet de vraiment gérer ses projets.   2-plan Desktop propose des 'patrons' de  gestion dont les principaux sont:

  • La gestion manuelle de projet: un peu comme  ganttproject.
  • La gestion d'un projet par les délais.(ex : sous forme de sprint) 
  • La gestion de projet par les ressources.



(écran modèles - patrons 1/2)

(écran modèles - patrons 2/2)


Ce produit est ce qui se rapproche le plus de  msproject, et  qui sous bien des points le dépasse.
Son architecture est sous forme d'extension à brancher sur le coeur du programme (en java).  Aussi il est possible pour une direction informatique  d'uniformiser la gestion de ces projets par le biais d'un patron d'entreprise.

La société 2-plan base son modèle économique sur  la  commercialisation d'extension.


2-plan se décline en 2 gros composants : Le 2-plan Desktop qui  est l'application client lourd (pour w$, mac, AIX , Linux) de gestion de planification et le 2-plan Team qui gère les ressources humaines: travail collaboratif et gestion du temps d'activité.


L'installation ne pose pas de problème particulier, elle se fait par un assistant.



 java -jar ./install.jar




Ce produit est particulièrement adapté à la gestion Agile d'un projet. Il propose des restitutions  qui vont du diagramme de Gantt  au tableau de bord.
 
Seul défaut: il n'est pas encore francisé.





lundi 26 mars 2012

La phase d'estimation dans les projets informatiques

La plannification de projet répond à une série de lois.

1) La loi Hostadter.

La plus connue est celle  Hofstadter. Cette loi énonce le principe suivant pour l'estimation d'une charge:
Cédric Villani : médaille Fields 

Ça prend toujours plus de temps qu'on croit, même en prenant compte de la loi de Hofstadter.

Ce qui veut dire : qu'il est difficile d'estimer correctement la charge d'un projet ET par l'emploi d'une formulation récursive : cette dificulté ne fait qu'augmenter pour tendre vers l'infini. reference: http://fr.wikipedia.org/wiki/Loi_de_Hofstadter 

2) La racine carrée comme pivot

A coté de cette loi très sérieuse on en trouve une autre pas mal : Après avoir estimer la charge totale d'un projet et faut aligner en face des ressources. 
Une technique pour calculer le bon équilibre entre la charge , la  durée et le nombre de personne est de prendre comme valeur la racine carrée de la charge: cette valeur constitue un point d'équilibre. Exemple : charge 36 mois/h , il faudra au maximum 6 personnes pour réaliser le projet. Il est possible de descendre en dessous de cette limite mais à l'inverse mettre plus de monde va ralentir le projet. Pour encadrer ces personnes , une septième personne (le chef de projet) sera nécessaire.
En conclusion : le gestion de projet agile reprend ces lois à son compte. Notamment, il est recommandé de passer très peu de temps sur l'estimation d'une charge. Plus on affine une estimation plus elle s'écartera de la réalité.  L'estimation ne doit pas se faire uniquement dans la phase d'avant projet.  Elle est partie intégrante du projet. Elle sera  réévaluée tout le long du projet . Elle sera fonction de la métrique des équipes : la vitesse d'avancement ramené au point de fonction. Aussi la loi de Germanlinux est la suivante: il n'est pas possible d'estimer correctement la charge d'un projet ....avant de l'avoir terminé (si on le termine un jour..) . Aussi mesurez ce qui a été fait et non pas ce qui reste à faire: c'est trop décourageant.

samedi 31 juillet 2010

Evaluation de charge : jouez au poker avec les points de fonction


( Stefen Hawking jouant au poker avec Einstein (Jim Norton) et Newton (John Neville). Extrait de la série "Star Trek, The Next Generation", au début de l'épisode "Descent", Part I. Documents Paramount Pictures, 1993.)


Question lancinante, récurrente , incontournable , posée aux développeurs, responsables de projet et autres: A combien de jour/homme estimez vous cette tâche ?.
Cette question universelle contient les deux incongruités qui pèseront lourdement sur la justesse de la réponse: jour/homme et tâche.

Le contexte.


Imaginons 3 chauffeurs engagés pour conduire un client de Paris à Marseille.

Concernant les Jours/hommes:

La question sur l'estimation serait traduite en :

Combien de temps il vous faut pour faire Paris Marseille . ?
Avec 3 chauffeurs , vous obtiendrez 3 réponses DIFFÉRENTES et elles seront toutes justes... (un chauffeur va rouler à 120 km/h , un autre s'arrête toute les heures etc.)

En revanche à la question suivante : Combien de kilomètre entre Paris et Marseille ? Les trois chauffeurs vont arriver à un chiffre proche.

Ainsi avec les jours/hommes on cumule deux approximations: La quantité de ce qui est à faire et la vitesse de réalisation.






Concernant l'unité utilisée.

L'unité jour/homme est elle même une aberration : qu'est ce qu'une journée idéale ?

Gardons en tête cet exemple plein de bon sens :

1 femme peut faire un enfant en 9 mois mais jamais 9 femmes feront un enfant en 1 mois.

Quand les chiffres annoncés sont du type 300 j/h pour réaliser une tache , j'ai toujours envie de dire : ok on va embaucher 300 personnes et le truc sera terminé après-demain.
Réponse immuable à cette remarque: Ce ne sont pas des mêmes j/h (Pourquoi les additionner alors ?)




Concernant les tâches

La commande passée au chauffeur serait:
a) Aller chercher la voiture au garage
b) Vérifier la pression des pneus
c) Faire le plein
d) rouler 700 km
etc..

Or quelle est la demande du client ? : se rendre de Paris à Marseille tout simplement . En se focalisant sur les tâches et non pas sur les fonctions (vision client) , notre pauvre client se retrouvera soit largué en pleine campagne bretonne soit coincé sur le périphérique.


Les points de fonctions et les méthodes agiles

Au commencement ..

Il existe d'autres unités de mesure des taches, comme les points de fonction utilisés par la méthode éponyme : (ici un très bon lien sur le sujet) . Ici, l'évaluation se place du coté de l'utilisateur. Peu importe si la fonction est réalisée par une usine à gaz (SOA, machine de Rude GOLBERG ) ou un progiciel.

Cette méthode du siècle dernier a été détournée et remise à la mode pour les besoins des méthodes agiles.

La métrique.
On utilise une suite numérique discontinue pour quantifier des charges.

On va s'attacher à évaluer des 'fonctions utilisateurs' et non pas des taches.

Un exemple de bonne suite est celle de Fibonacci :

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ...


Étrangement: en demandant moins de précision, on va en obtenir plus.

  • Paradoxe 1: La précision d'une évaluation est une fonction en forme de cloche. A partir d'un certain stade, plus on cherche à affiner les évaluations ( plus on passe de temps dessus) et moins on sera efficace dans les estimations.





  • Paradoxe 2: Une personne isolée estimera mieux qu'un groupe.

  • Paradoxe 3: Un expert relevant du domaine à estimer est le plus à même à faire une bonne estimation. Ainsi,il faut préférer les dires d'experts aux pseudo-méthodes d'évaluation basées sur le nombre d'écran, le nombre de contrôle etc. (§machine de Rude GOLBERG )


L'évaluation par le Poker:


Cette technique arrive à concilier toutes les contraintes de l'évaluation.
Chaque membre de l'équipe dispose d'une série de carte, chaque carte reprenant un nombre de la suite.

Le maitre du jeu détaille la fonction à évaluer (maximum 15 minutes) , puis chaque joueur compose son estimation avec ses cartes. Au signal tout le monde retourne ses cartes.

Une discussion s'engage sur les écarts des estimations (max 15 minutes)

Ainsi , on obtient une liste de fonctionnalité avec leur poids.

Voir le lien wikipedia planning poker.

Détermination de la vitesse de réalisation de l'équipe.

L'itération initiale va donner une première estimation de la vitesse de l'équipe. Plus on réalisera des itérations et plus cette vitesse sera affinée.

Ainsi dans des méthodes agiles, ce qui est important c'est la planification en elle même plus que le plan. La planification est réalisée a chaque itération et non pas de façon macro en début de projet.

Au départ, on peut dire que l'estimation par point est aussi imprécise qu'en jour homme. En revanche par le mécanisme des itérations courtes, l'estimation sera de plus proche de la réalité. L'estimation devient même marginale par rapport au projet. L'équipe ne s'engage que pour des courtes périodes.

Un client voulant aller de Paris à Pékin , se verra proposer avec les méthodes agiles une série d'étape l'amenant vers son point d'arrivée. A tout moment en fin d'étape, le client peut dire stop. Il ne sera pas obligé de rebrousser chemin.

En informatique , le client s'engage pour 1 mois , il pose sa mise sur la table. L'équipe informatique livre en fin d'itération un produit avec une fonctionnalité de base. Le client peut décider de continuer sur un autre cycle avec une nouvelle fonction ou simplement d'arrêter les frais.
Si au bout d'un mois le client n'est pas satisfait, il ne perdra que sa mise de départ, mais il aura une application minimale en état de marche..

lundi 26 avril 2010

webmail roundcube vs squirrelMail

Après avoir fait le tour des porjets webmail opensource la liste se réduit à deux projets : roundcube et squirrelmail ;

Roundcube.

Le code est PHP la base en PostgreSQL

C. a réussi à installer après pas mal de manipulations roundcube derrière un portail internet de test avec une base données PostgreSQL , j'ai reversé sa documentation d'installation de roundcube en francais sur lemon-labs. Dans la foulée, il entièrement mis en place les fonctions de SSO dans roundcube. Ce dernier utilise un token de pré-authentification et un identifiant de session stocké dans la base PostgreSQL.

Conclusion: Roundcube fonctionne. Il reste à régler les types mimes pour les transfert de message au format HTML.




SquirrelMail.

Le code est PHP, la base est optionnelle.
L'installation n'a pas a être détaillée car il est très simple à réaliser par l'intermédiaire d'un script Perl. En revanche, cette installation ne prend pas en compte l'utilisation d'une base de données. Et je ne suis pas certain que squirrelmail soit taillé pour s'intégrer dans une architecture à répartition de charge comme la notre.
L'interface est en anglais, l'internationalisation (francais) est présente mais ne fonctionne pas.Il reste là aussi à régler les types mimes pour les transfert de message au format HTML.





Conclusion sur le match roundcube vs squirrelmail: roundcube fonctionne en francais, il s'intègre dans une architecture de répartition de charge et de SSO. Il fait plus de choses que son concurrent et en plus ergonomique. SquirrelMail reste un produit très simple d'installation et d'usage.


Remarques sur les protocoles POP ou IMAP.
Les deux projets ne gèrent que le protocole IMAP. C'est d'ailleurs un anachronisme dangereux que de faire du POP. En effet, pas mal de personnes utilisent leurs messageries POP pour gérer leurs documents : Dossiers, archivage etc. Or les messages sont sur la machine en local, rien sur le serveur (POP) . Tous ces documents seront perdus en cas de plantage de la machine ou de départ de la personne....

Si on persiste à vouloir faire du POP avec un webmail IMAP : 3 solutions
a) Modifier le webmail.
b) Utiliser un proxy IMAP/POP comme par exemple NGINX .
c) Utiliser un client POP qui ira chercher vos messages pour les envoyer sur un serveur IMAP dédié.

L'IMAP n'est pas l'avenir du mail, c'est le mail (ne croyez pas ce que vous dit google fight) .

mardi 8 décembre 2009

Less is better de david Heinemeier Hansson

Sur le site UX magazine David Heinemeier Hansson, créateur de Ruby on Rails répond à quelques questions, l'article est titré : Less is better.

Dans cet article , il expose sa vision d'un modèle économique simple :
Les entreprises de petite taille peuvent grâce au web, rayonner autant qu'une grosse entreprise. Mais elles ne doivent pas tomber dans le piège de la dispersion: Il faut rester sur son coeur de métier. Et il est étonnant de voir des start-up ne sachant pas exactement quel est leur coeur de métier. Si ton voisin vend la même chose que toi moins cher et arrive à payer ses factures, alors tu es très mal.

Il faut se consacrer sur ses produits et non pas chercher à faire 'à tout prix' plaisir aux utilisateurs pour qu'ils achètent ces produits.
Pour faire connaitre son produit , l'entreprise à deux alternatives: dépenser de l'argent ou partager largement ses connaissances sur le produit.




Cette illustration est tirée du blog : creating_passionate_users

Ainsi d'après lui, l'utilisateur est balancé entre avoir plein de fonctionnalités et pourvoir se servir d'un produit basique, simple d'emploi.


Les développeurs cherchent à sortir le produit qui tue: avec des tonnes de fonctionnalités, capable de s'adapter à tous les usages.
C'est une erreur, l'utilisateur au fond de lui souhaite ne pas se poser des questions ni être confronté à un écran rempli de case à cocher d'option.
C'est pour cela que Rails est le framework le moins paramétrable de sa catégorie, ce n'est plus un défaut, c'est une qualité. Il est prêt à l'emploi tel quel. Rien n'empêche l'utilisateur averti de modifier le comportement, mais sans utiliser une interface graphique d'administration.L'utilisateur doit faire confiance au développeur pour se voir proposer la meilleure composition en fonction de l'utilisation.

Concernant la conduite de projet.

David préconise des cycles de 3 semaines avec une équipe réduite. Une application utilisable doit voir le jour à la fin de ce délais. Puis, les décideurs et les commanditaires doivent se poser la question: est ce qu'on injecte des ressources pour une nouvelle fonctionnalités et repartir pour 3 semaines ou doit on tout arrêter et se contenter de ce résultat ?.

Concernant les spécifications détaillées.

Vouloir décrire dans un document le fonctionnement complet d'une application est illusoire et dangereux. Illusoire car, personne n'est capable ne visualiser et d'imaginer une application tel qu'elle sera dans 6 mois. Dangereux parce qu'il est très facile de modifier quelques lignes dans un document sans mesurer les conséquences sur le développement, si les spécifications sont figées, on assistera à un effet tunnel et l'application ne correspondra plus au besoin réactualisé.

Voir le post dans son contexte d'origine http://germanlinux.blogspot.com/

vendredi 6 novembre 2009

Projet SQUALE : mesurer la qualité du code


Toutes les entités qui développent du code sont confrontées à deux enjeux:

a) Planifier et respecter les délais de mise en œuvre des projets informatiques. Ce n'est pas rien , moins de 30% des projets arrivent à terme en respectant les 3 'C' : Contenu , calendrier, coût. Et plus de 25 % des projets sont purement et simplement abandonnés.

B) Développer du code de qualité. Les mentalités ont évoluées, et maintenant il est admis par tous qu'un code de bonne qualité est un des facteurs de réussite d'un projet.

Il existe des méthodes pour mesurer la qualité d'un code, encore faut il un tableau de bord permettant d'agréger les résultats. C'est le but du projet opensource 'SQUALE' (Software QUALity Enhanceme) .
Le portail squale permet de mesurer 6 facteurs :
  • capacité fonctionnelle
  • architecture
  • évolutivité
  • maintenabilité
  • réutilisabilité
  • fiabilité



Avec un niveau de détail très fin :






Le projet squale utilise trois composants: Une base de données pour stocker les informations collectées. Un serveur web pour le portail et enfin une série d'utilitaires (squalix)
pour mesures la qualité du code.








































Le projet propose des modèles définissant la notion de qualité du code ((ISO-9126,GQM, McCall) Mais il est possible d'enrichir le produit avec des modules tiers . Squale supporte nativement le JAVA mais peut traiter aussi les langages COBOL , C, PHP, .NET.
Squale est avant tout une plateforme d'intégration où viennent se brancher les modules tiers à partir du moment où ils respectent le modèle de données du produit.

Enfin squale met à disposition des fonctions d'audit de code avec notamment la possibilité de suivre dans le temps l'évolution des résultats d'audit.

En conclusion : pourvu qu'il ne fouille pas dans mon code..

lundi 15 décembre 2008

Nouveau projet

Je lance un nouveau projet :

http://code.google.com/p/lemonid/

Sa description :

Lemon-id is digital identity manager integrator based on Rails , Database and LDAP

Ses objectifs:

Lemon-id n'est pas un nouveau projet de gestion d'identité numérique. Il a pour but d'intégrer les autres projets de web SSO ,d'authentification dans un framework fournisseur d'identité. Lemon-id servira de base d'authentification à d'autres composants et pour cela il proposera plusieurs interfaces.

Ses principes :

* Une base de données pour les Meta-données
* Fichiers de configuration au format YAML
* Format JSON pour les échanges entre les composants
* Interface graphique en Rails