<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ze Technology &#187; Méthode</title>
	<atom:link href="http://www.ze-technology.com/category/methode/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ze-technology.com</link>
	<description>Ze Blog qui parle de Ze Technology. Univers du libre, programmation, société, business...</description>
	<lastBuildDate>Sat, 17 Dec 2011 08:35:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Comment je teste #2 : Connexion, connexions !</title>
		<link>http://www.ze-technology.com/2009/09/14/comment-je-teste-2-connexion-connexions/</link>
		<comments>http://www.ze-technology.com/2009/09/14/comment-je-teste-2-connexion-connexions/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 06:00:20 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Bonnes Pratiques]]></category>
		<category><![CDATA[Méthode]]></category>
		<category><![CDATA[Outil]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=259</guid>
		<description><![CDATA[Pour rappel, dans la première partie de cette série d&#8217;articles, vous avez pu découvrir la manière dont je testais Piwam grâce à la virtualisation. Nous allons maintenant soumettre notre application à des premiers tests&#8230; de performance. Bien que certaines applications soient faîtes pour une utilisation mono utilisateur, la plupart sont destinées à accueillir des centaines, [...]]]></description>
			<content:encoded><![CDATA[<p>Pour rappel, dans la première partie de cette série d&#8217;articles, vous avez pu découvrir la manière dont je testais <em><a href="http://www.piwam.org">Piwam</a></em> grâce à la virtualisation. Nous allons maintenant soumettre notre application à des premiers tests&#8230; <strong>de performance</strong>.</p>
<p>Bien que certaines applications soient faîtes pour une utilisation mono utilisateur, la plupart sont destinées à accueillir des centaines, des milliers d&#8217;utilisateurs simultanément, utilisateurs qui eux même ont la possibilité de réaliser des milliers d&#8217;interactions différentes. Comment alors tester le comportement de son application dans les pires situations, sans attendre que le chaos ne vienne s&#8217;imposer de lui même une fois l&#8217;application mise en production ? C&#8217;est le sujet de ce billet. Ce qui est présenté ci-dessous interessera les développeurs PHP mais aussi tous ceux qui utilisent une autre technologie web.</p>
<h3>Apache AB</h3>
<p>Commençons par faire stresser un petit peu notre application&#8230;  AB, pour <em>Apache HTTP server Benchmarking tool</em>, permet de simuler des accès au serveur web, en exécutant le nombre de requêtes souhaité par le biais d&#8217;un certain nombre de connexions concourantes, elles aussi contrôlées.  AB permet sans soucis de passer des serveurs proxy, simuler les requêtes GET comme POST, gérer l&#8217;authentification HTTP&#8230; La commande que j&#8217;utilise le plus souvent est la suivante :</p>
<pre>&gt; ab -e output.csv -n 10000 -c 100 http://docbook:80</pre>
<p>Quelques explications sur les options utilisées ici :</p>
<ul>
<li><strong>-e </strong>: spécifie un fichier CSV de sortie</li>
<li><strong>-c</strong> : nombre de connexions concourantes</li>
<li><strong>-n</strong> : nombre de requêtes à exécuter (réparties entre les différentes connexions)</li>
</ul>
<p>Je vous invite à lire la très claire <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">page de documentation</a> pour découvrir toutes les options disponibles. Une fois exécutée, cette commande nous livre la sortie suivante :</p>
<pre>This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking docbook (be patient).....done

Server Software:        Apache/2.2.9
Server Hostname:        docbook
Server Port:            80

Document Path:          /
Document Length:        4427 bytes

Concurrency Level:      100
Time taken for tests:   5.569 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      472500 bytes
HTML transferred:       442700 bytes
<span class="highlight">Requests per second:    17.96 [#/sec] (mean)</span>
Time per request:       556.946 [ms] (mean)
Time per request:       55.695 [ms] (mean, across all concurrent requests)
Transfer rate:          82.85 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       1
Processing:   246  548 110.6    539    1150
Waiting:      246  547 109.9    538    1147
Total:        247  548 110.6    539    1150

Percentage of the requests served within a certain time (ms)
  50%    539
  66%    564
  75%    578
  80%    591
  90%    633
  95%    673
  98%   1101
  99%   1150
 100%   1150 (longest request)</pre>
<p>La ligne sur-lignée est à mon avis celle qui donne le plus de sens aux résultats. Le nombre de requêtes par secondes est en effet un bon indicateur de la santé de votre application (et de votre serveur). Quant au fichier CSV généré, dont on a un aperçu avec les pourcentages donnés à la fin de la sortie ci-dessus, vous pourrez y retrouver la répartition des <em>timings</em> dans lesquels ont été satisfaites les requêtes. Ajoutez à cela des taux de transferts, des erreurs détectées potentielles, et vous obtenez ici un bon outil de <em>benchmarking</em>.</p>
<h4>Comment simuler l&#8217;envoi de données ?</h4>
<p>Comme indiqué dans sa présentation, il est possible de simuler la soumission de formulaires via l&#8217;option <span style="font-family: courier">-p POSTFILE</span>. Une question très récurrente revient souvent : à quoi ressemble ce fichier POSTFILE ? En fonction de la version utilisée, la documentation d&#8217;Apache peut ne pas être très bavarde. Ce fichier comprend la liste des arguments de la manière suivante : <strong>nom=valeur&amp;nom2=autrevaleur</strong>, avec l&#8217;encodage spécial utilisé pour les URL.</p>
<h3>Pylot</h3>
<div class="wp-caption aligncenter" style="width: 650px"><img class=" " title="Graphique Pylot" src="http://www.pylot.org/samples/results/response_time_graph.png" alt="Graphique généré par Pylot" width="640" height="240" /><p class="wp-caption-text"> Graphique généré par Pylot : temps de réponse en fonction du temps écoulé</p></div>
<p><span style="background-color: #ffffff;">Écrit en Python, Pylot possède a 2 plusieurs pour séduire : la capacité de générer des graphiques, la présence d&#8217;un GUI pour les allergiques au mode console, interfaçage XML-RPC&#8230; Pylot fonctionne par le biais de scénarios, des <em>test-cases</em>, écrits au sein de fichiers XML pas trop compliqués. Ce mode de fonctionnement permet de personnaliser assez facilement les scénarios et de passer tous ces test-cases automatiquement. Découvrez Pylot sur <a href="http://www.pylot.org/">http://www.pylot.org/</a>. </span></p>
<h3><span style="background-color: #ffffff;">C&#8217;est trop long !</span></h3>
<p><span style="background-color: #ffffff;">Ces tests vous ont permis de vous apercevoir d&#8217;une chose : votre application met systématiquement un minimum de 400 ms à répondre, et facilement jusqu&#8217;à 900 ms dès que plusieurs utilisateurs effectuent des recherches. Des temps qui rapidement risquent d&#8217;énerver vos utilisateurs. Comment alors réduire autant que possible ces <em>timings</em> fous ?</span></p>
<p><span style="background-color: #ffffff;">Premièrement, l&#8217;utilisation d&#8217;un accélérateur PHP peut être tout a fait adaptée (tout du moins, pour les développeurs PHP). <a href="http://fr.php.net/apc">APC</a>, <a href="http://eaccelerator.net/">eAccelerator</a> et consorts devraient vous intéresser. Laissez vous guider par les tests et comparatifs (un lien : <a href="http://www.ipersec.com/index.php/2006/05/30/benchmarking-php-accelerators/">iPerSec</a>). Ces accélérateurs donneront un coup de boost magique à votre projet PHP. </span></p>
<p><span style="background-color: #ffffff;">Des &laquo;&nbsp;erreurs&nbsp;&raquo;, ou lourdeurs de développement, peuvent être à l&#8217;origine de la lenteur de l&#8217;application. Ré-écrire et optimiser son code peut s&#8217;avérer extrêmement long. Avant ça, un petit tour vers une étape de <em><strong>profiling</strong></em> est indispensable. Pour ceux qui ne savent pas de quoi je parle, jetez un oeil sur mon <a href="http://www.ze-technology.com/2009/09/03/developper-plus-efficacement-avec-xdebug/">article</a> dédié à <em><a href="http://www.xdebug.org/">XDebug</a></em>. Cette étape de <em>profiling</em> vous permettra de détecter une éventuelle partie de code <strong>particulièrement et anormalement consommatrice</strong> de temps.</span></p>
<p><span style="background-color: #ffffff;">Et finalement, si c&#8217;est encore possible, prenez le temps nécessaire pour analyser la source de la lenteur, la corriger, pratiquer le refactoring de code, installer des serveur proxy, refaire des tests plus précis, modifier la configuration PHP, etc. Un prochain article sera l&#8217;occasion d&#8217;aborder ces même tests dédiés à MySQL. Et si vous n&#8217;avez plus le temps pour corriger tout ça, et bien c&#8217;est le moment de prendre de bonnes résolutions et de mettre en place toutes les bonnes pratiques de <strong>ZeTechnology</strong> pour votre prochain projet !</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/09/14/comment-je-teste-2-connexion-connexions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comment je teste #1 : L&#8217;indispensable virtualisation</title>
		<link>http://www.ze-technology.com/2009/09/10/comment-je-teste-1/</link>
		<comments>http://www.ze-technology.com/2009/09/10/comment-je-teste-1/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 06:00:50 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Bonnes Pratiques]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=220</guid>
		<description><![CDATA[Et c&#8217;est partie pour le premier article de la série. Après une entrée en matière, voici l&#8217;heure pour moi d&#8217;écrire, et pour vous de lire, l&#8217;épisode #1 de la série. Il n&#8217;y a pas d&#8217;ordre particulier, les sujets seront abordés assez indépendamment. En revanche, les articles seront illustrés d&#8217;un cas d&#8217;utilisation réel : Piwam. Aujourd&#8217;hui, [...]]]></description>
			<content:encoded><![CDATA[<p>Et c&#8217;est partie pour le premier article de la série. Après une <a href="http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/">entrée en matière</a>, voici l&#8217;heure pour moi d&#8217;écrire, et pour vous de lire, l&#8217;épisode #1 de la série. Il n&#8217;y a pas d&#8217;ordre particulier, les sujets seront abordés assez indépendamment. En revanche, les articles seront illustrés d&#8217;un cas d&#8217;utilisation réel : <em><a href="http://www.piwam.org">Piwam</a></em>.</p>
<p>Aujourd&#8217;hui, je vous propose, et vous n&#8217;avez pas vraiment le choix, de découvrir la manière dont je teste le déploiement de l&#8217;application. Quels sont les pièges, les méthodes, bref, tout.</p>
<h3>Virtualiser, c&#8217;est la mode.</h3>
<p>Je ne possède pas de serveur de test. Et de toute manière, si j&#8217;en possédais un, je me servirais tout de même d&#8217;un système virtualisé, afin d&#8217;éviter d&#8217;utiliser inutilement le vrai serveur. Voilà donc le premier point : le déploiement est testé <strong>en conditions réelles</strong> au sein d&#8217;une machine virtuelle. Le système virtualisé est le plus proche possible de celui qui tourne en production : OS, noyau, mémoire disponible, swap, version de PHP, MySQL, fichiers de configuration&#8230;</p>
<p><img class="aligncenter size-full wp-image-240" title="VirtualBox" src="http://www.ze-technology.com/wp-content/uploads/2009/09/VirtualBox.png" alt="VirtualBox" width="600" height="358" /></p>
<p style="text-align: center;">Serveur Debian virtualisé, lancé depuis WindowsXP</p>
<p>Cette précaution permet de s&#8217;affranchir au maximum des mauvaises surprises liées à l&#8217;environnement. Imaginez un peu, votre système sur lequel vous développez possède le paramètre <a href="http://www.php.net/manual/fr/ini.core.php"><span style="font-family: courier">memory_limit</span></a> fixé à <span style="font-family: courier">128M</span>. Tout fonctionne parfaitement. Sans passer par le scénario de test de déploiement présenté ici, vous décidez de mettre tout de suite à jour la version en production. Tout fonctionne parfaitement. Erreur. Tout <strong>semble</strong> fonctionner parfaitement. C&#8217;était sans compter cet utilisateur qui, voulant lister 100 résultats de recherche par page, obtient une magnifique erreur d&#8217;explosion de la mémoire allouée, dont le maximum était fixé à <span style="font-family: courier">64M</span> sur le serveur de production.</p>
<h3>Quelle solution choisir ?</h3>
<p>Les solutions de virtualisation ont le vent en poupe actuellement. Citons <a href="http://www.vmware.com/fr/">VM Ware</a>, <a href="http://www.virtualbox.org/">VirtualBox</a>, <a href="http://www.parallels.com/fr/">Parallels</a> (MacOSX)&#8230; Pour laquelle opter ? Après un essai des différentes solutions, je ne peux que vous conseiller la solution de Sun (Oracle&#8230;) : <a href="http://www.virtualbox.org/">VirtualBox</a>. Disponible sous toutes les plate-formes, gratuite, libre, cette box magique satisfaira toute nos exigences. Une fois installée, installez votre système virtualisé (dans mon cas : Debian 5.0), installez / configurez vos applications (ici : Apache 2, PHP 5.3 + modules, MySQL 5.1, <a href="http://symfony-project.com">symfony</a> 1.2).</p>
<div class="note">
<h4>Note :</h4>
<p>Votre serveur virtualisé possède un accés à votre réseau local, et après un petit peu de configuration, il est également accéssible au sein de celui-ci (configuration de la carte réseau en mode <em>bridge</em>) à l&#8217;instar d&#8217;un véritable serveur.</div>
<h3>Envoyer ses fichiers au serveur</h3>
<p>C&#8217;est bien joli d&#8217;avoir maintenant une réplique de son serveur de production, mais comment y tester son application ? Plusieurs solutions :</p>
<ol>
<li><span style="text-decoration: line-through;">Vous recodez intégralement votre projet au sein de votre serveur virtualisé </span>(&#8230;)</li>
<li>Vous avez pris la bonne habitude d&#8217;utiliser un serveur <span style="text-decoration: line-through;">CVS,</span> <a href="http://subversion.tigris.org/">SVN</a> ou <a href="http://git-scm.com/">Git</a>. Dans cas là, un <em>commit</em> d&#8217;un côté et un <em>update</em> de l&#8217;autre fera très bien l&#8217;affaire.</li>
<li>Vous avez configuré un répertoire partagé sous VirtualBox, accessible aussi bien sous votre système hôte que depuis votre serveur. Placez donc juste l&#8217;archive du projet à tester dans ce répertoire.</li>
</ol>
<div class="warning">
<h4>Piège à éviter :</h4>
<p>Alors que je découvrais VirtualBox, la solution me paraissait si puissante que j&#8217;avais décidé d&#8217;en faire directement mon serveur de développement, via un répertoire partagé entre le système hôte (alors un Windows XP) et virtualisé (la Debian). Je continuais à développer sous Windows, mais le code était directement interprété par le serveur virtualisé. &laquo;&nbsp;<em>Chouette, je peux tester en temps réel en conditions réelles !</em>&laquo;&nbsp;. MAIS, un problème d&#8217;implémentation du &laquo;&nbsp;pilote&nbsp;&raquo; permettant le partage de répertoires rendait l&#8217;exécution d&#8217;un projet <a href="http://symfony-project.com">symfony</a> complexe extrêmement lente (plus de 30 secondes par page).</div>
<h3>Et maintenant, je fais quoi ?</h3>
<p>Pour résumer, vous possédez maintenant une version à jour de votre application, disponible sur un serveur (virtualisé), réplique parfaite (normalement) du serveur qui l&#8217;accueillera. Et bien, rappelez vous pourquoi vous venez de faire toutes ces manipulations : <strong>pour tester</strong> ! Suivez donc la procédure de déploiement de votre application que vous avez pu décrire au sein de votre documentation. Pour certains projets, il n&#8217;y a rien à faire de particulier, le projet est directement fonctionnel, mais pour d&#8217;autres, c&#8217;est le moment de vérifier que votre documentation, bêtement suivie à la lettre, permet d&#8217;arriver à une application qui fonctionne ; quelques exemples en vrac :</p>
<ul>
<li>Configuration de l&#8217;accès au SGBDR</li>
<li>Droits en lecture/écriture de certains répertoires</li>
<li>Mises à jour de fichiers</li>
<li>Exécution de requêtes pré-requises</li>
</ul>
<p>Si, une fois, les instructions de la documentation suivies, votre application ne fonctionne pas, c&#8217;est qu&#8217;il y a bien un <strong>problème</strong>, lié à la documentation ou à l&#8217;application.</p>
<h3>Youpi ! Ça fonctionne !</h3>
<p>Allons allons, calmons nous. Le déploiement du projet (ou de la mise à jour) fonctionne. Nous ne sommes pas encore en mesure de savoir si le projet fonctionne à 100% comme il devrait. Il vous faut maintenant torturer votre application dans tous les sens afin de déceler les <em>bugs</em> éventuels. Ou alors, et je vais peut-être créer une certaine frustration en m&#8217;arrêtant ici, c&#8217;est le moment de lancer vos 2000 tests unitaires et fonctionnels, qui vérifieront <strong>automatiquement</strong> le bon fonctionnement de votre application sur le système courant.</p>
<h3>Virtualiser, encore +</h3>
<p><img class="alignleft size-full wp-image-227" title="VServer" src="http://www.ze-technology.com/wp-content/uploads/2009/09/Image-10.png" alt="VServer" width="280" height="179" />Il est fort possible que votre application ne soit pas destinée à une plate-forme en particulier mais  à être déployée sur un grand nombre de serveurs très différents, aux versions et configurations de PHP différentes. Vous pouvez alors virtualiser d&#8217;autres OS, aux configurations différentes. Ou vous pouvez pousser la virtualisation encore plus loin en optant pour <a href="http://fr.wikipedia.org/wiki/Linux-VServer">VServer</a>. Une fois VServer installé sur votre serveur de test, vous serez en mesure d&#8217;isoler parfaitement différents &laquo;&nbsp;sous-environnements&nbsp;&raquo; différents et de <em>switcher</em> d&#8217;une configuration à une autre extrêmement facilement, rapidement, et de manière très fiable, sécurisée parfaitement isolée.</p>
<h3>En bref :</h3>
<ol>
<li>Installez VirtualBox</li>
<li>Virtualisez l&#8217;OS de votre choix</li>
<li>Configurez cet OS virtualisé</li>
<li>Testez, lancez vos tests</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/09/10/comment-je-teste-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>L&#8217;importance d&#8217;une roadmap&#8230;</title>
		<link>http://www.ze-technology.com/2009/08/21/limportance-dune-roadmap/</link>
		<comments>http://www.ze-technology.com/2009/08/21/limportance-dune-roadmap/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 06:00:15 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=148</guid>
		<description><![CDATA[&#8230;même pour ses projets personnels. C&#8217;est en tout cas ce que je pense, plus l&#8217;aventure Piwam continue. Mais au fait, qu&#8217;est-ce qu&#8217;une roadmap ? À traduire par &#171;&#160;feuille de route&#160;&#187;, c&#8217;est un document traçant la suite probable (et souhaitable !) du projet. On y retrouve, entre autre : Les dates de publication des différentes releases [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-150" title="Roadmap" src="http://www.ze-technology.com/wp-content/uploads/2009/08/map.bmp" alt="Roadmap" width="512" height="438" /></p>
<p>&#8230;même pour ses projets personnels. C&#8217;est en tout cas ce que je pense, plus l&#8217;aventure <em><a href="http://www.piwam.org">Piwam</a></em> continue. Mais au fait, qu&#8217;est-ce qu&#8217;une <em>roadmap</em> ? À traduire par &laquo;&nbsp;feuille de route&nbsp;&raquo;, c&#8217;est un document traçant la suite probable (et souhaitable !) du projet. On y retrouve, entre autre :</p>
<ul>
<li>Les dates de publication des différentes releases</li>
<li>Les fonctionnalités prévues pour chacune d&#8217;entres elles</li>
<li>Les objectifs à atteindre</li>
<li>La politique générale quant à l&#8217;évolution du projet</li>
</ul>
<p>Il n&#8217;y a aucune règle précise, c&#8217;est un document qui peut circuler en interne uniquement, et/ou être communiqué publiquement afin que tout le monde puisse avoir un aperçu de l&#8217;avenir d&#8217;un produit, d&#8217;une marque, etc.</p>
<p>Maintenant que nous avons la même définition de roadmap, pourquoi est-il à mon sens important d&#8217;en adopter une même pour un petit projet personnel ? Pourquoi un petit projet comme <a href="http://www.piwam.org">Piwam</a>, développé pour le moment par une seule personne, possède-t-il une feuille de route à l&#8217;instar des grandes marques ou des logiciels phares de l&#8217;industrie, du libre comme propriétaire ?</p>
<p>Taradamdam, les arguments que j&#8217;avance ici sont les suivants :</p>
<ul>
<li>Entre-nous, je ne vous le cache pas : ça ne coûte <strong>rien</strong>. À part une petite heure de réflexion.</li>
<li>Ça fixe un tant soit peu le devenir de votre produit. Va-t-il se doter de tout plein de fonctionnalité ? Va-t-il se contenter d&#8217;une <em>release </em>annuelle avec des correctifs de <em>bugs </em>?</li>
<li>C&#8217;est très bête, mais ce document confère une extraordinaire <strong>motivation</strong> supplémentaire. On <strong>veut</strong> -instinct naturel- tenir ses engagements.</li>
<li>En le rendant publique, il s&#8217;agit là d&#8217;un bon moyen de <strong>communication</strong> avec vos utilisateurs.</li>
</ul>
<p>Une dernière chose à savoir, votre <em>roadmap</em> peut très bien évoluer à tout moment. Rien ne vous empêche de revoir à la baisse ou à la hausse vos objectifs si vous estimez que ces changements ont lieu d&#8217;être.</p>
<p>À vos <em>roadmaps</em> !</p>
<p><span style="text-decoration: underline;">Pour en savoir +&#8230;</span></p>
<ul>
<li>Un exemple : <a href="http://code.google.com/p/piwam/wiki/Roadmap">la roadmap de <a href="http://www.piwam.org">Piwam</a></a></li>
<li>Un autre exemple : <a href="http://ez.no/ezpublish/roadmap">la roadmap d&#8217;eZ Publish</a></li>
<li>Définition sur <a href="http://fr.wikipedia.org/wiki/Roadmap">Wikipedia</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/08/21/limportance-dune-roadmap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment je teste : nouvelle série d&#8217;articles</title>
		<link>http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/</link>
		<comments>http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 06:00:03 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Bonnes Pratiques]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=145</guid>
		<description><![CDATA[On regrette très vite de ne pas tester son application. Pendant les différentes phases du développement, il est on ne peut plus utile d&#8217;avoir un aperçu fidèle à la réalité de la qualité du produit qu&#8217;on s&#8217;apprête à délivrer. Tests unitaires, tests fonctionnels. tests de déploiement, tests de non-régression&#8230; la batterie n&#8217;est pas mince, et [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-161" title="Tester" src="http://www.ze-technology.com/wp-content/uploads/2009/08/tester.gif" alt="Tester" width="280" height="220" /></p>
<p>On regrette très vite de ne pas tester son application. Pendant les différentes phases du développement, il est on ne peut plus utile d&#8217;avoir un aperçu fidèle à la réalité de la qualité du produit qu&#8217;on s&#8217;apprête à délivrer.</p>
<p>Tests unitaires, tests fonctionnels. tests de déploiement, tests de non-régression&#8230; la batterie n&#8217;est pas mince, et automatiser un maximum de tâche s&#8217;avère payant.</p>
<p>La raison d&#8217;exister de cette nouvelle série d&#8217;article ne vas pas être de vous présenter une énième fois des cours théoriques sur les méthodologies de tests, mais de faire le point sur certaines problématiques, et d&#8217;apporter un élément de réponse parmi tant d&#8217;autres : le mien.</p>
<p>Vous retrouverez donc dès la rentrée une série d&#8217;articles sur cette passionnante thématique, permettant à chacun d&#8217;améliorer :</p>
<ul>
<li>sa productivité</li>
<li>la qualité de son travail</li>
<li>ses habitudes de développement</li>
</ul>
<p>Le premier article est prévu pour la fin du mois, avec un case-study sur la manière dont je teste le déploiement de <a href="http://www.ze-technology.com/category/piwam/"><a href="http://www.piwam.org">Piwam</a></a>.</p>
<p><strong>PS </strong>: Vous noterez les images très très drôles qui accompagneront dorénavant les articles dans la mesure du possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sismo, outil d&#8217;intégration continue pour fin juin ?</title>
		<link>http://www.ze-technology.com/2009/06/15/sismo-outil-dintegration-continue-pour-fin-juin/</link>
		<comments>http://www.ze-technology.com/2009/06/15/sismo-outil-dintegration-continue-pour-fin-juin/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 19:18:54 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>
		<category><![CDATA[Outil]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=66</guid>
		<description><![CDATA[Sismo est un outil d&#8217;intégration continue développé par Sensio Labs (vous savez, symfony&#8230;). L&#8217;intégration continue, c&#8217;est la possibilité de détecter tout ce qui ne va pas au fil des versions. Du vert ou du rouge, ça passe ou ça ne passe pas, Sismo présente une interface très simple permettant de contrôler le comportement de ses [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-67" title="Sismo" src="http://www.ze-technology.com/wp-content/uploads/2009/06/Image-3.png" alt="Sismo" width="600" height="196" /></p>
<p>Sismo est un outil d&#8217;intégration continue développé par Sensio Labs (vous savez, <a href="http://symfony-project.com">symfony</a>&#8230;). L&#8217;intégration continue, c&#8217;est la possibilité de détecter tout ce qui ne va pas au fil des versions. Du vert ou du rouge, ça passe ou ça ne passe pas, Sismo présente une interface très simple permettant de contrôler le comportement de ses projets au fil des <em>releases</em>. Fabien Potencier a annoncé sur le groupe de discussion &laquo;&nbsp;<a href="http://groups.google.fr/group/symfony-devs/browse_thread/thread/d0c19cdc1f1a1338"><a href="http://symfony-project.com">symfony</a> developers</a>&laquo;&nbsp;, une éventuelle disponibilité de ce projet libre à la fin du mois de juin.</p>
<p>Une démonstration en ligne du produit est disponible sur <a href="http://ci.symfony-project.org/">http://ci.<a href="http://symfony-project.com">symfony</a>-project.org</a>. Hâte d&#8217;essayer cette alternative à <a href="http://code.google.com/p/xinc/">Xinc</a> et consorts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/15/sismo-outil-dintegration-continue-pour-fin-juin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Point de vue d&#8217;un concepteur : La problématique des mises à jour</title>
		<link>http://www.ze-technology.com/2009/05/28/point-de-vue-dun-concepteur-la-problematique-des-mises-a-jour/</link>
		<comments>http://www.ze-technology.com/2009/05/28/point-de-vue-dun-concepteur-la-problematique-des-mises-a-jour/#comments</comments>
		<pubDate>Thu, 28 May 2009 17:12:00 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://adrien.frenchcomp.net/blog/?p=40</guid>
		<description><![CDATA[Plus que le développement, c&#8217;est la conception même du projet qui peut être mise à mal au fil des versions d&#8217;un logiciel. Dans bien des cas, l&#8217;ajout d&#8217;une nouvelle fonctionnalité à un logiciel, aussi anodine soit-elle, peut chambouler très profondément la conception d&#8217;une application. En ce qui concerne les évolutions qui demandent juste un refactoring [...]]]></description>
			<content:encoded><![CDATA[<p>Plus que le développement, c&#8217;est la conception même du projet qui peut être mise à mal au fil des versions d&#8217;un logiciel. Dans bien des cas, l&#8217;ajout d&#8217;une nouvelle fonctionnalité à un logiciel, aussi anodine soit-elle, peut chambouler très profondément la conception d&#8217;une application.<br />
En ce qui concerne les évolutions qui demandent <span style="font-style: italic;">juste</span> un refactoring de la part de l&#8217;équipe de développement, on minimise l&#8217;impact chez l&#8217;utilisateur : il lui suffit de télécharger la nouvelle version, éventuellement de supprimer l&#8217;ancienne.</p>
<p>En revanche, tout ce qui a attrait aux données produites par l&#8217;utilisateur me semble être un réel problème. Imaginons, par exemple, un système de gestion des droits qui est intégralement reconstruit <span style="font-style: italic;">from scratch</span>.<br />
La version 1 est basée sur un système de groupes prédéfinis (administrateur, modérateur, utilisateur), et la version 2 va être basé sur un système d&#8217;<a href="http://fr.wikipedia.org/wiki/Access_Control_List"><span style="font-style: italic;">ACL</span></a> (on définit précisément qui a le droit de faire quoi sur quelle partie du produit). L&#8217;utilisateur doit alors mettre à jour son logiciel, mais également <span style="font-weight: bold;">sa source données</span> (Base de données, fichiers&#8230;) !</p>
<p><u>Premier problème</u> : il y a fort à parier que la manière de stocker ces données (le schéma) ait subit des altérations non néligeables. Il faut ainsi mettre à jour la source de données de l&#8217;utilisateur.</p>
<p><u>Second problème</u> : Je suis également prêt à parier que l&#8217;utilisateur s&#8217;en verrait frustré s&#8217;il perdait toutes ses données. À l&#8217;inverse du logiciel lui même qu&#8217;il suffit très souvent de remplacer bêtement, la base de données doit évoluer de manière très contrôlée. Cela impose du coup de développer ses propres outils de migration. Que de temps &laquo;&nbsp;perdu&nbsp;&raquo; ! Sans compter le risque d&#8217;introduire des erreurs au niveau de cette évolution.</p>
<p><u>Quelques solutions</u> : J&#8217;ai bien envie de vous laisser sur cette note de poésie :</p>
<p><a href="http://4.bp.blogspot.com/_usAVPNOHnaM/Sh7L9K9r7yI/AAAAAAAAABw/6e2bWHvUAwY/s1600-h/Image+11.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_usAVPNOHnaM/Sh7L9K9r7yI/AAAAAAAAABw/6e2bWHvUAwY/s400/Image+11.png" alt="" id="BLOGGER_PHOTO_ID_5340930459883532066" border="0" /></a><br />
Mais plus que ça. La moindre évolution doit être pensée et repensée pour éviter de se retrouver face à de nouveaux problèmes ultérieurs. Quitte à fournir une évolution majeure de votre produit qui engendrerait de tels boulversements, essayez de fournir <span style="font-weight: bold;">UNE</span> unique nouvelle version intégrant toutes les évolutions possibles, de telle sorte à éviter à l&#8217;utilisateur de futures mises à jour trop lourdes. Pour finir &#8211; et c&#8217;est tout bête &#8211; n&#8217;oubliez pas d&#8217;alerter l&#8217;utilisateur quant à ces modifications. Fournissez aussitôt que possible des outils d&#8217;import / export des données manipulées par votre application afin de permettre à l&#8217;utilisateur, dans le pire des cas (!), de revenir à la version précédente et de récupérer des données opérationnelles.</p>
<p>Cet article était une application directe de ce que j&#8217;ai dû subir récemment avec <a href="http://ze-technology.blogspot.com/search/label/piwam"><a href="http://www.piwam.org">Piwam</a></a>&#8230; La gestion des cotisations a subi un léger changement mais qui imposait une modification de la base de données. Même s&#8217;il s&#8217;agissait d&#8217;une beta, impossible de ne pas fournir d&#8217;outils aussi minimes soient-ils pour assurer le bon fonctionnement de la nouvelle mouture.
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1394095790770446638-914700974864435951?l=ze-technology.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/05/28/point-de-vue-dun-concepteur-la-problematique-des-mises-a-jour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

