RencontresAgiles2007

jeudi 20 décembre 2007

Mardi 18 décembre se tenait l’événement Rencontres agiles 2007 à la défense organisé par Didier Girard et Bernard Notarianni. Merci aux organisateurs et aux intervenants.

L’objectif était de présenter les méthodes agiles sous différents aspects par des sessions de 20 minutes.

Introduction à l’Agilité

Didier Girard et Bernard Notarianni nous ont introduit l’agilité, histoire de se mettre en douceur dans le rythme de la conférence, surtout qu’il était relativement tôt dans la matinée

Agilité, à monter soi même

Laurent Bossavit nous a montré comment monter soi-même son agilité en partant d’une situation actuelle et en réfléchissant en équipe. L’avantage de cette solution est qu’il y a une prise de conscience collective des problèmes qui s’accompagne de changements profonds des individus et du travail en équipe. J’aime beaucoup cette approche car on ne peut pas changer une personne, c’est la personne qui prend conscience elle même du besoin de changer et qui fait le choix de changer. Le “coach agile” est alors un guide plus qu’une personne essayant d’imposer une méthodologie qui même si elle a fait ses preuves dans certains cas, n’est pas adaptée à tous les cas. L’homme a souvent ce réflexe de changer brutalement d’un extrême à l’autre alors que tout ce qu’il faisait avant n’était pas mauvais. Laurent encourage la réflexion d’équipe et l’apprentissage par elle même propre aux organisations apprenantes et à la systémique. Il est important pour lui de changer un point fondamental plutôt que l’ensemble pour augmenter l’efficacité de l’équipe.

L’Agile : la nouvelle star des méthodes de développement

Eric Hennetier, DSI Adjoint de M6, nous a présenté son retour d’expériences sur plusieurs projets agiles réalisés sur M6. Avec Octo Technology et Sfeir, ils ont pu mettre en production un projet en 2 mois dans un contexte difficile car très changeant fonctionnellement. L’agilité se prête bien pour des faibles délais, des petites équipes et un périmêtre changeant. Il nous montre les bienfaits sur le moral de l’équipe des projets agiles, avec des chefs de projets qui sont fiers du produit et heureux de venir travailler. La motivation n’est elle pas l’élément essentiel de réussite d’un projet ? Dans un cadre où l’initiative est acceptée ou chacun est libre de communiquer, n’est ce pas là que l’équipe donne le meilleur d’elle même ? Il est intéressant de noter que le cadre contractuel change par rapport à un projet au forfait classique, le client peut choisir d’interrompre le travail avec le prestataire après chaque itération (de 15 jours), pas conditions sur le périmêtre fonctionnel car il n’est pas défini à l’avance. Le contrat part sur une relation de confiance. Certaines interrogations restent néanmoins, c’est comment fait on de l’agile en phase de maintenance ? De même, on parle beaucoup d’agilité pour le développement logiciel, qu’en est il de l’intégration ou de l’urbanisation de type SOA ?

ADDM : Des équipes agiles distribuées

Guillaume Bodet, directeur technique chez Xebia nous a présenté le fonctionnement agile en mode distribué chez Xebia qui est présent dans trois pays: France, Pays Bas et Inde. Pour réussir un projet, il faut mettre tout le monde dans la même direction en partageant la même vision d’entreprise même si les cultures, l’environnement sont différents. Cela passe par un recrutement sélectif, des séances de formations. Ils ont utilisés des systèmes collaboratifs, wiki, vidéo conférence, web cam, tableau életronique et adaptés les horaires de travail en fonction du décalage horaire. De plus, ils commencent toujours les 2 premières itérations avec des personnes distantes qui viennent sur place. Les équipes sont en général en mode 50-50: européen / indien pour permettre un meilleur équilibre, un intervenant indien bilingue en Inde pour éviter une perte d’information due à la traduction. Tout ça pour dire que ça marche en s’adaptant un peu et que ce n’est pas facile, ça leur a couté un projet mais bon 5 réussites ensuite, l’investissement vaut le coup car l’Inde possède de très bons experts techniques contrairement à la France qui souffre de plus en plus car le développeur n’est pas considéré en France.

Les challenges de la conception incrémentale

Regis Medina nous a présenté “Les challenges de la conception incrémentale” en nous mettant en garde contre la conception émergeante une des valeurs fortes d’XP. En effet, selon lui il est de plus en plus nécessaire d’avoir des bases de conception pour permettre d’avoir un code évolutif sur plusieurs années. Avec du 100% TDD avec +90% de couverture de code par les tests, on pourrait se dire que l’application va bien évoluer, hors ce n’est pas si sûr car par manque de temps, par flème, on a oublié de faire du refactoring de code et donc du redesign d’application. De plus, les tests aussi de leur côté doivent être refactorisés pour rester maintenable. A partir du postulat que moins de lignes de code, moins de bugs, il est clair qu’un ajout de fonctionnalité ne doit pas entrainer trop de croissance du code, Régis Medina parle alors de “Compression”. Une bonne gestion des dépendances entre les composants des applications permet d’avoir un code plus évolutif (Separation Of Concern, Dependencies Injection)

Retours d’expérience sur l’introduction de Scrum

Claude Aubry nous a présenté son retour d’expérience sur l’introduction de Scrum, il préconise d’appliquer la méthode totalement et d’utiliser les termes Scrum,éviter les termes MOA, MOE. Ses interventions ont eu lieu pour des grands comptes sur des projets pilotes. Scrum s’adapte à tous types de projets de développement voir d’intégration. c.f Introduction sur Scrum

Retour d’Expérience Vidal

Christophe Addinquy nous a présenté son retour d’expérience agile sur les projets Vidal, c’est sans doute la présentation qui m’a le plus ébloui, à tel point que je ne m’en souviens pas bien ;) Pour Christophe, l’agilité apporte surtout sur le plan humain, elle favorise l’esprit d’intiative, la stimulation d’équipe et le développement de valeurs humaines fortes qui permettent à l’individu de mieux vivre son projet et probablement sa vie. J’avais l’impression de voir en grandeur nature l’application des 7 habitudes des gens efficaces, faut croire que bien que j’ai peu d’expérience en méthodes agiles, j’avais vu juste sur l’effet des méthodes agiles sur les individus et l’équipe. Attention toutefois, il faut éviter de rentrer dans un mode autoritaire d’application des méthodes agiles, il faut permettre aux autres de prendre conscience de l’apport des méthodes agiles. N’oublions pas que l’homme se différencie de l’animal car il possède une conscience et est donc capable de choisir comment il va réagir à un stimulus. Cela signifie entre autre, qu’il est capable d’aller plus loin que son modèle éducatif et donc capable de se changer lui-même. Le changement est donc au niveau de l’individu car il l’accepte et non parce qu’on lui impose.

Scrum in the trenches

La présentation d’Eric Mignot s’est faite à la façon d’un dojo où la salle présente quels sujets elle veut qu’on aborde ensemble. On a parlé de la mise en production, à priori ils ont mis une journée pour la recette, car ils livraient régulièrement au client un produit fini que le client recettait sur une plateforme de recette. Il conseillait de prendre une itération pour mettre en production une version intermédiaire toutes les 4 itérations. Je suppose que Pyxis utilisait un intégrateur continue qui déposait en live le produit sur la plate-forme de recette. Une question que je me pose, est il possible d’utiliser l’intégrateur continue pour déployer en production ? Et puis, vu que les tests de recette sont faits par le client tous les 15 jours, les bugs sont corrigés en ajoutant des tests unitaires (principes TDD), est il envisageable de supprimer les tests automatiques end-user (de bout en bout) qui sont très couteux ?

Et les autres

je n’y ai pas assisté

Axis2ValidationShema

jeudi 6 décembre 2007

Axis2 utilise AXIOM comme modele Object pour XML. De manière native, AXIOM ne permet pas de valider le XML par rapport à un schéma, par contre il est possible de valider le XML grâce au package javax.xml.validation fournit par le JDK 5. Il est nécessaire d’être en version 1.2+ d’AXIOM. Cet article reprend le tutorial publié sur wso2.org, la solution qu’il propose permet d’éviter de consommer trop de mémoire lors de la validation.

Validation du XML à partir d’un schéma avec AXIOM

  • Prenons par exemple le fichier XML suivant:
<ns1:UserInfo xmlns:ns1=“http://jfhelie/axiomtest”>
	<ns1:User>
		<ns1:Name>Rod Johnson</ns1:Name>
		<ns1:Address type=“Home”>
			<ns1:City>New York</ns1:City>
			<ns1:Country>USA</ns1:Country>
		</ns1:Address>
	</ns1:User>
	<ns1:User>
		<ns1:Name>Matt Raible</ns1:Name>
		<ns1:Address type=“Home”>
			<ns1:City>Denver</ns1:City>
			<ns1:Country>USA</ns1:Country>
		</ns1:Address>
	</ns1:User>	
</ns1:UserInfo>
  • Avec le schéma suivant:
<?xml version=“1.0”?>
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”
	targetNamespace=“http://jfhelie/axiomtest”
	xmlns=“http://jfhelie/axiomtest” elementFormDefault=“qualified”>
	<xs:element name=“UserInfo”>
		<xs:complexType>
			<xs:sequence>
				<xs:element name=“User” maxOccurs=“unbounded”>
					<xs:complexType>
						<xs:sequence>
							<xs:element name=“Name” type=“xs:string” />
							<xs:element name=“Address”>
								<xs:complexType>
									<xs:sequence>
										<xs:element name=“City” type=“xs:string”/>
										<xs:element name=“Country” type=“xs:string”/>
									</xs:sequence>
									<xs:attribute name=“type” use=“required”>
									<xs:simpleType>
										<xs:restriction base=“xs:string”>
											<xs:pattern value=“Home|Work” />
										</xs:restriction>
									</xs:simpleType>
									</xs:attribute>
								</xs:complexType>					
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>	
</xs:schema>
  • La méthode validate suivante permet de valider un object AXIOM (OMElement) par rapport à un schéma:
public void validate(OMElement omElement, File schemaFile) throws Exception {
	Element sourceElement; // if the OMElement is created using DOM
	// implementation use it
	if (omElement instanceof ElementImpl) {
		// si omElement est en créé en DOM
		sourceElement = (Element) omElement;
	} else {
		// sinon on le convertit en DOM
		sourceElement = getDOMElement(omElement);
	} 
	// On crée une fabrique de schéma
	SchemaFactory factory = SchemaFactory
			.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
	// on charge le schéma
	Source source = new StreamSource(schemaFile);
	Schema schema = factory.newSchema(source);
	// on crée un validator
	Validator validator = schema.newValidator();
	// on valide l’arbre DOM par rapport au schéma
	validator.validate(new DOMSource(sourceElement));
}
private Element getDOMElement(OMElement element) throws Exception {
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	element.serialize(baos);
	ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	factory.setNamespaceAware(true);
	return factory.newDocumentBuilder().parse(bais).getDocumentElement();
}
public OMElement getAXIOM(String file) throws Exception {
	StAXOMBuilder builder = new StAXOMBuilder(getClass()
			.getResourceAsStream(file));
	return builder.getDocumentElement();
}

Ressources

OpenSSL

mercredi 5 décembre 2007

Cet article a pour objectif de montrer comment utiliser openssl pour créer des clés et des certificats.

Installation

  • Sur Windows:
  • Sur Ubuntu:
    • Lancer la commande sudo apt-get install openssl

Génération de clés asymétriques

  • Générer une clé privée RSA en 1024 bits:
openssl genrsa -out server.key 1024
  • Générer une clé publique à partir de la clé privée:
openssl rsa -in server.key -pubout
  • Générer un certificat Certificate Signing Request qui correspond à une requête de certification par une autorité, la clé privée n’est pas incluse dans le certificat mais est utilisée pour signer la requête:
openssl req -new -key server.key -out server.csr
  • Signer son propre certificat (les fichiers portent soit l’extension pem ou crt):
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • Afficher le contenu du certificat:
openssl x509 -text -in server.crt

Extensions des certificats

(extrait wikipedia):

  • .CER - CER certificat encodé
  • .DER - DER certificat encodé
  • .PEM - (Privacy Enhanced Mail) certificat DER encodé en Base64, contenu dans “-BEGIN CERTIFICATE-” and “-END CERTIFICATE-”
  • .P7B - Voir .p7c
  • .P7C - PKCS#7 structure signée sans données
  • .PFX - Voir .p12
  • .P12 - PKCS#12, contient les clés publiques et privées protégées par un mot de passe (symétrique)

PKCS #12 est utilisé pour exchanger dans un seul fichier des clés publiques et privées.

Un fichier .PEM peut contenir des certificats ou des clés privées, encapsulé entre les lignes BEGIN/END appropriées (CERTIFICATE ou RSA PRIVATE KEY)

Ressources