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

dimanche 26 octobre 2014

devops : développeurs et exploitants dans le même bateau.

Pour continuer dans le sillage de la gestion de projet Agile, voici  un nouveau phénomène adopté par  de plus en plus d'entreprise: le devops.

Dans ce dispositif, des développeurs (dev) et des exploitants ( (ops du mot anglais operations = exploitant) sont regroupés dans une véritable  task force. Ce concept existe depuis environ 5 ans. Ce qui est nouveau, c'est engouement  qu'il connait auprès des entreprises comme: google, Amazon, Bouygues, free etc.

ex :
Ce mode de fonctionnement est le quotidien des petites structures (PME ?) avec des équipes informatiques réduites. Son introduction dans des grands groupes est quelque part un constat échec.

Le devop permet de capitaliser sur une démarche Agile en amont.
source 01Net

Lien sur l'article de 01Net:ici.....

Le devop n'est pas un 'facilitateur' ou un interlocuteur privilégier vis à vis de l'exploitation: Il est exploitant à part entière. Cette compétence vient en complément avec sa maîtrise du développement.
Dans cette configuration, la task force aura la responsabilité du projet de la conception à la mise en production. Ce système est en contradiction avec les bonnes pratiques (ex: ITIL)  qui recommandent un cloisonnement entre le développement et la production. En effet les deux entités poursuivent des objectifs contradictoires: le développeur produit du changement (nouvelle version, fonctionnalité) alors que l'exploitant est le gardien de la stabilité: les applications ronronnent sagement.

Séduisant sur le papier mais difficile à mettre en place.


La mise en place d'un tel dispositif n'est pas facile: on touche ici à des sujets d'organisation avec une remise en cause des pratiques.

Lire article  Les 8 erreurs à éviter pour réussir votre démarche DevOps (Frédéric Richer)


ici les slides de la devops  Paris 2013.




lundi 5 novembre 2012

Le contenu de la circulaire du Premier Ministre sur l'usage du logiciel libre dans l'administration


Dans une circulaire du 19/09/12 le Premier Ministre donne des orientations pour l'usage des logiciels libres dans l'administration.
Cette circulaire est accompagnée par une note de 18 pages de la DISIC :.

Cette  note reprend les origines du logiciel libre avec ses 4 libertés  fondamentales :
- La liberté d'utiliser un logiciel
- La liberté d'étudier le fonctionnement d'un logiciel
- La liberté de copier un logiciel
- La liberté  de modifier un logiciel

Avec comme conséquences:
- Un auto-entretient des logiciels
- Une évolution dictée par le besoin de l'utilisateur
- Une communauté qui conserve le contrôle du logiciel
- Une émulation des acteurs

La licence la plus connue est la GPL.
Un logiciel libre n'est pas forcement gratuit: le coût de licence peut être remplacé avantageusement par un coût de formation ou d'adaptation.

Le choix du logiciel libre est un choix raisonné pour des motifs de coûts et de la meilleure maîtrise du SI par les équipes.

Toutefois , il faut être vigilant à un bon usage du logiciel libre en tenant compte des critères suivants:
- La taille de la communauté
- Le modèle économique adossé: une vraie communauté ou un éditeur

L'administration doit faire chercher dans la limite du possible à reverser du code dans les communautés.

Le document liste les cadres favorables à l'utilisation du logiciel libre dont ces deux points importants:
- Dans le cadre de la virtualisation (en raison du mode de licence à l'usage CPU)
- Dans le cadre du développement Agile (opportuniste) .
.

Comment favoriser l'usage du logiciel libre dans l'administration ?.

La note  revient sur la mise en commun des efforts et afin d'éviter l'éparpillement, sur la nécessité d'un cadre de convergence des projets et des versions (souches).
Les mesures prônées sont par exemple:
- Création et maintient d'un catalogue des projets
- Animation d'un réseaux d'expert sur les thèmes communs  comme :

  • La Bureautique (MIMO)
  • Le socle système  (MIMOS) 
  • La gestion de parc  (MIMOG) 
  • Et les bases de données (MIMDB) 







jeudi 28 juin 2012

Le méthode des '5S' appliquée au développement

La méthode  des    '5S'  est une technique de management japonaise visant à l'amélioration continue des processus.   Chaque 'S' correspond à un verbe  japonais :

  • Seiri (整理?) : débarrasser
  • Seiton (整頓?) : ranger
  • Seiso (清掃?) : nettoyer
  • Seiketsu (清潔?) : ordonner
  • Shitsuke (?) : être rigoureux




Appliquer au développement  cela peut donner :

Débarrasser : Enlever du code tout ce qui ne sert pas à remplir la fonction principale du projet.

Exemples: 
Des fonctions qui pourraient servir dans une version future. 
Des lignes de code commentées mais non enlevées.
Enlever tous les commentaires. Ils introduisent un risque de désynchronisation entre le texte explicatif et le code

Ranger: classer ses fichiers projets dans des répertoires. 

Exemples: Créer des répertoires pour les images , le javascript etc. 
Pas plus de 15 fichiers par répertoires et pas plus de 4 niveaux de répertoire

Nettoyer: Relire le code et refactoriser.

Exemples:  ne pas faire à deux endroits la même chose. (DRY: Don't Repeat Yourself ) 
Corriger les bug le plus en amont possible.
Ne pas accumuler les dettes techniques.

Ordonner: Enlever du programme principal les fonctions annexes

Exemple : privilégier les interfaces sous la forme d'API . Standardiser ses librairies


Rigueur:  

Exemple: ne pas abuser d'un découpage en couche pour déplacer un problème au lieu de le résoudre. 
Utiliser les standards
Reconnaître ses erreurs

L'application de ses principes suppose un processus d'amélioration continu : Kaizen 


Bref les 5S sont vos amis : Vous avez le destin de votre code entre vos mains, soyez agile.




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.

mercredi 14 mars 2012

#kanban et scrum pour les projets informatiques #agile

Vous connaissez le scrum ? La méthode agile, alors  vous allez adorer le 'Kanban' .  Et le meilleur des deux se trouve sur ce site:http://www.aubryconseil.com/post/Le-mini-livre-Scrum-et-Kanban-en-francais


Le lien suivant est celui d'un site qui propose un kanban en ligne et gratuit.
Ca donne un tableau comme ceci :
autre exemple:



Un retour d'expérience dans un prochain post.

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..