<?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>Decrypt &#187; Organisation</title>
	<atom:link href="http://decrypt.ysance.com/category/organisation/feed/" rel="self" type="application/rss+xml" />
	<link>http://decrypt.ysance.com</link>
	<description>Le site de decryptage des technologies de l&#039;informatique</description>
	<lastBuildDate>Fri, 03 Feb 2012 08:25:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Le Cloud ? Réponses en images !</title>
		<link>http://decrypt.ysance.com/2011/10/le-cloud-reponses-en-images/</link>
		<comments>http://decrypt.ysance.com/2011/10/le-cloud-reponses-en-images/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 12:44:01 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Organisation]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=2668</guid>
		<description><![CDATA[<a href="http://decrypt.ysance.com/wp-content/uploads/2011/10/techtoc.tv_.jpg"><img class="size-full wp-image-2672 alignleft" title="Logo techtoc.tv" src="http://decrypt.ysance.com/wp-content/uploads/2011/10/techtoc.tv_.jpg" alt="Logo techtoc.tv" width="233" height="59" /></a>

Voici 3 videos de plateaux TV (<a title="Le site de techtoc.tv" href="http://techtoc.tv/" target="_blank">techtoc.tv</a>), où Olivier LEAL et moi-même avons participé, sur divers sujets autour du Cloud Computing tels que :

o <a title="Le site de techtoc.tv, plateau : Migration du SI vers le Cloud : à quelles conditions ? Pour quelles parties du SI ? Pour qui ?" href="http://techtoc.tv/event/1345/migration-du-si-vers-le-cloud--a-quelles-conditions--pour-quelles-parties-du-si--pour-qui" target="_blank">Migration du SI vers le Cloud : à quelles conditions ? Pour quelles parties du SI ? Pour qui ?</a>, revue des bonnes pratiques déjà établies pour se déterminer à aller vers le Cloud, et vers lequel.

o <a title="Le site de techtoc.tv, plateau : Impacts du Cloud sur la gouvernance des SI ?" href="http://techtoc.tv/event/1351/conception-logicielle--design/virtualisation--cloud-computing/impacts-du-cloud-sur-la-gouvernance-des-si" target="_blank">Impacts du Cloud sur la gouvernance des SI ?</a>, redistribution des cartes !

o Ou bien encore <a title="Le site de techtoc.tv, plateau : Le Cloud pour ma PME ?" href="http://techtoc.tv/event/1355/conception-logicielle--design/virtualisation--cloud-computing/le-cloud-pour-ma-pme" target="_blank">Le Cloud pour ma PME ?</a>, les grandes entreprises auraient-elles plus d’avantages à utiliser le Cloud qu’une PME ? Ou les raisons sont-elles ailleurs ?

Je les mets à votre disposition si vous souhaitez les regarder !

[...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://decrypt.ysance.com/wp-content/uploads/2011/10/techtoc.tv_.jpg"><img class="size-full wp-image-2672 alignleft" title="Logo techtoc.tv" src="http://decrypt.ysance.com/wp-content/uploads/2011/10/techtoc.tv_.jpg" alt="Logo techtoc.tv" width="233" height="59" /></a></p>
<p>Voici 3 videos de plateaux TV (<a title="Le site de techtoc.tv" href="http://techtoc.tv/" target="_blank">techtoc.tv</a>), où Olivier LEAL et moi-même avons participé, sur divers sujets autour du Cloud Computing tels que :</p>
<p>o <a title="Le site de techtoc.tv, plateau : Migration du SI vers le Cloud : à quelles conditions ? Pour quelles parties du SI ? Pour qui ?" href="http://techtoc.tv/event/1345/migration-du-si-vers-le-cloud--a-quelles-conditions--pour-quelles-parties-du-si--pour-qui" target="_blank">Migration du SI vers le Cloud : à quelles conditions ? Pour quelles parties du SI ? Pour qui ?</a>, revue des bonnes pratiques déjà établies pour se déterminer à aller vers le Cloud, et vers lequel.</p>
<p><object id="playerWCS" width="600" height="338" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://www.webcastory.com/v/4HeolczLwx3oBZ&#038;host=techtoc.tv" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://www.webcastory.com/v/4HeolczLwx3oBZ&#038;host=techtoc.tv" name="playerWCS" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="338"></embed></object></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>o <a title="Le site de techtoc.tv, plateau : Impacts du Cloud sur la gouvernance des SI ?" href="http://techtoc.tv/event/1351/conception-logicielle--design/virtualisation--cloud-computing/impacts-du-cloud-sur-la-gouvernance-des-si" target="_blank">Impacts du Cloud sur la gouvernance des SI ?</a>, redistribution des cartes !</p>
<p><object id="playerWCS" width="600" height="338" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://www.webcastory.com/v/65YI51z7mNFbr0&#038;host=techtoc.tv" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://www.webcastory.com/v/65YI51z7mNFbr0&#038;host=techtoc.tv" name="playerWCS" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="338"></embed></object></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>o Ou bien encore <a title="Le site de techtoc.tv, plateau : Le Cloud pour ma PME ?" href="http://techtoc.tv/event/1355/conception-logicielle--design/virtualisation--cloud-computing/le-cloud-pour-ma-pme" target="_blank">Le Cloud pour ma PME ?</a>, les grandes entreprises auraient-elles plus d’avantages à utiliser le Cloud qu’une PME ? Ou les raisons sont-elles ailleurs ?</p>
<p><object id="playerWCS" width="600" height="338" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://www.webcastory.com/v/qc206a0w82UlrH&#038;host=techtoc.tv" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://www.webcastory.com/v/qc206a0w82UlrH&#038;host=techtoc.tv" name="playerWCS" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="338"></embed></object></p>
<p>Je les mets à votre disposition si vous souhaitez les regarder !</p>
<p><strong>Frédéric FAURE</strong> <a title="Frédéric FAURE @Twitter" href="http://twitter.com/fredericfaure">@Twitter</a> <a title="Ysance, Simplifions les projets informatiques" href="http://www.ysance.com/">@Ysance</a></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2011/10/le-cloud-reponses-en-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usine de Développement &amp; Intégration Continue</title>
		<link>http://decrypt.ysance.com/2011/06/usine-de-developpement-et-integration-continue/</link>
		<comments>http://decrypt.ysance.com/2011/06/usine-de-developpement-et-integration-continue/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 08:50:19 +0000</pubDate>
		<dc:creator>François Lasselin</dc:creator>
				<category><![CDATA[Industrialisation]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Intégration Continue]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=2453</guid>
		<description><![CDATA[Le développement de projet utilisant des méthodes agiles tend à se généraliser. Si la méthode Scrum est loin d'être plébiscitée, on observe que les différentes équipes piochent dans la boite à outils de l'agilité en fonction de leur besoin, de leur culture et du projet. Parmi ces outils, on trouve l'intégration continue. L'intégration continue est une pratique de génie logiciel ayant pour objectif de vérifier que l'avancement des travaux de développement ne provoque pas de régression.
La démarche d'intégration continue est un processus de génie logiciel qui s'inclut dans une démarche d'industrialisation au même tire que :
<ul>
	<li>la mise en place d'un Atelier de Génie Logiciel ;</li>
	<li>le déploiement de postes de développement uniformes ;</li>
	<li>l'industrialisation des tests.</li>
</ul>
Si l'objectif est simple, la logistique devant permettre d'atteindre ce résultat repose sur plusieurs fondamentaux.

[...]]]></description>
			<content:encoded><![CDATA[<p>Le développement de projet utilisant des méthodes agiles tend à se généraliser. Si la méthode Scrum est loin d&#8217;être plébiscitée, on observe que les différentes équipes piochent dans la boite à outils de l&#8217;agilité en fonction de leur besoin, de leur culture et du projet. Parmi ces outils, on trouve l&#8217;intégration continue. L&#8217;intégration continue est une pratique de génie logiciel ayant pour objectif de vérifier que l&#8217;avancement des travaux de développement ne provoque pas de régression.<br />
La démarche d&#8217;intégration continue est un processus de génie logiciel qui s&#8217;inclut dans une démarche d&#8217;industrialisation au même tire que :</p>
<ul>
<li>la mise en place d&#8217;un Atelier de Génie Logiciel ;</li>
<li>le déploiement de postes de développement uniformes ;</li>
<li>l&#8217;industrialisation des tests.</li>
</ul>
<p>Si l&#8217;objectif est simple, la logistique devant permettre d&#8217;atteindre ce résultat repose sur plusieurs fondamentaux.</p>
<p><em><strong>Partager</strong></em><br />
Le déclenchement des activités d&#8217;intégration continue repose sur le déploiement des derniers développements. Un référentiel de code (gestion de version) est donc nécessaire pour le partage et la détection des dernières modifications. On distingue différentes générations d&#8217;outils :</p>
<ul>
<li><a title="CVS" href="http://cvs.nongnu.org/" target="_blank">CVS</a></li>
<li><a title="Subversion" href="http://subversion.tigris.org" target="_blank">Subversion </a></li>
<li><a title="Git" href="http://git-scm.com/">Git</a>, <a title="Mercurial" href="http://mercurial.selenic.com/" target="_blank">Mercurial</a></li>
</ul>
<p>Du point de vue de l&#8217;intégration continue, peu importe l&#8217;outil pourvu qu&#8217;il y en ai un (ce qui n&#8217;empêche pas qu&#8217;il y ait des différences et des orientations divergentes  d&#8217;un outil à l&#8217;autre, mais c&#8217;est un autre sujet).<br />
2 stratégies peuvent ensuite être mise en place :</p>
<ul>
<li>des intégrations cycliques (généralement toutes les nuits) pour avoir en ligne le matin les travaux réalisés la veille. Ce dispositif peut être complété par la possibilité de déclencher des intégrations supplémentaires à la demande, par exemple en cas d&#8217;une grosse avancée dans la journée.</li>
<li>un hook du gestionnaire de version. La majorité des gestionnaires de sources sont prévus pour permettre l&#8217;exécution d&#8217;un script après certains événements. Par exemple, on peut ajouter un script d&#8217;exécution de l&#8217;intégration pour chaque commit.</li>
</ul>
<p>Le choix de la stratégie va dépendre de plusieurs facteurs. A-t-on besoin d&#8217;une intégration continue à jour à chaque commit ? En fonction de la technologie employée, de la taille du projet, l&#8217;étape de compilation et les différentes opérations peuvent prendre un temps significatif pendant lequel l&#8217;espace d&#8217;intégration n&#8217;est potentiellement pas dans un état stable.</p>
<p><em><strong>Déployer</strong></em><br />
La principale problématique est en fait la capacité à déployer rapidement et facilement sur un serveur le travail réalisé. Par déploiement, il faut comprendre la réinstallation des sources sur un environnement vierge. Il faut donc effacer l&#8217;installation précédente (fichiers et base de données), recompiler si besoin, éditer les fichiers de configuration, réimporter la base, etc &#8230;<br />
Ce processus d&#8217;intégration continue n&#8217;est réaliste que si le déploiement est automatisé. C&#8217;est donc un des points critiques.<br />
Évidement, on peut résoudre ce point avec un classique script shell. Il existe toutefois des outils spécialisé comme Make (C, C++), <a title="Ant" href="http://ant.apache.org/" target="_blank">Ant</a> (plutôt lié à Java), <a title="Phing" href="http://phing.info/" target="_blank">Phing</a> (php uniquement), <a title="Rake" href="http://rake.rubyforge.org/" target="_blank">Rake</a> (ruby), …<br />
Ant est une référence dans le domaine. Au delà du déploiement  sur la plateforme d&#8217;intégration continue, le script doit également permettre de déployer le projet dans les autres environnements (recette client, pré-production, production, etc&#8230;) et de lancer les différents tests et mesures sur le code source.</p>
<p><em><strong>Ordonnancer</strong></em><br />
L&#8217;intégration continue, implique que le déploiement se fasse en continue. Il doit être déclenché périodiquement ou, mieux, à chaque commit.</p>
<p><em><strong>Tester</strong></em><br />
Les tests sont la véritable justification de l&#8217;intégration continue. Ils vont permettre de vérifier la non régression de l&#8217;application et éventuellement l&#8217;avancement du travail dans le cas d&#8217;un développement piloté par les tests (TDD, Test Driven Development). .<br />
Par ailleurs, pour les applications Web basées sur un incontournable modèle MVC, les tests d&#8217;interfaces peuvent se révéler plus pertinents. Ils sont également les seuls à pouvoir permettre la détection de problèmes de compatibilité entre le code des interfaces et les navigateurs.</p>
<p><em><strong>Apporter des métriques au projet</strong></em><br />
L&#8217;intégration continue a des retombées sur les métriques. Une fois automatisée, on peut bénéficier de l&#8217;infrastructure mise en place pour lancer différentes analyses sur le code :</p>
<ul>
<li> Inventorier les duplications de code pour lutter contre les copier/coller. On limite aussi l&#8217;augmentation de la taille du code au bénéfice de la factorisation. Les évolutions et la maintenance s&#8217;en trouvent simplifiées.</li>
<li>Utiliser un parseur de normes pour cataloguer les transgressions des normes de codage du projet. Un outil analysant la présence et le ratio de commentaires par ligne de code est inclus dans le parseur. La détection du code mort peut également l&#8217;être. Ces éléments sont la garantie d&#8217;avoir un code plus facile à maintenir, car lisible.</li>
<li>Mesurer les valeurs de différentes métriques/statistiques tels que la complexité cyclomatique ou le ratio d&#8217;abstraction. La complexité cyclomatique mesure le nombre de chemins possibles dans l&#8217;exécution du code (un « if » compte +1) . Plus le code est &laquo;&nbsp;complexe&nbsp;&raquo; plus il nécessite de tests pour couvrir les différents chemins d&#8217;exécution.  Le ratio d&#8217;abstraction est calculé en dénombrant le nombre de classes abstraites divisé par le nombre total de classes.</li>
</ul>
<p><em><strong>Serveur d&#8217;intégration continue</strong></em><br />
Généralement, cet élément captive l&#8217;attention alors qu&#8217;il ne fait pas grand chose (ce qui ne veut pas dire qu&#8217;il ne sert à rien ;-)).<br />
La référence dans ce domaine est <a title="Hudson" href="http://hudson-ci.org/" target="_blank">Hudson</a>, renommé <a title="Jenkins" href="http://jenkins-ci.org/" target="_blank">Jenkins</a> dans sa version open-source suite à l&#8217;évolution de la politique d&#8217;Oracle (qui donne LibreOffice pour OpenOffice et MariaDB pour MySQL).<br />
Si Hudson est issue du monde Java, il est utilisable avec un grand nombre de langages vu le nombre très important de plugins disponibles. <a title="CruiseControl" href="http://cruisecontrol.sourceforge.net/" target="_blank">CruiseControl</a> est autre un serveur d’intégration continue écrit en Java (et CruiseControl.net pour .NET). Contrairement à Hudson qui bénéficie uniquement d&#8217;une interface web, CruiseControl bénéficie d&#8217;une interface graphique cliente.</p>
<div id="attachment_2566" class="wp-caption alignnone" style="width: 310px"><a href="http://decrypt.ysance.com/wp-content/uploads/2011/06/Image1.png"><img class="size-medium wp-image-2566 " title="CruiseControl" src="http://decrypt.ysance.com/wp-content/uploads/2011/06/Image1-300x187.png" alt="CruiseControl" width="300" height="187" /></a><p class="wp-caption-text">CruiseControl</p></div>
<div id="attachment_2565" class="wp-caption alignnone" style="width: 310px"><a href="http://decrypt.ysance.com/wp-content/uploads/2011/06/1.png"><img class="size-medium wp-image-2565 " title="Hudson" src="http://decrypt.ysance.com/wp-content/uploads/2011/06/1-300x232.png" alt="Hudson" width="300" height="232" /></a><p class="wp-caption-text">Hudson</p></div>
<p>L&#8217;intégration continue repose sur de nombreux composants pour le déploiement, l&#8217;ordonnancement, les tests, la métrologie : le serveur d&#8217;intégration continue est le liant qui va permettre d&#8217;offrir une vue cohérente de l&#8217;activité d&#8217;intégration continue. Le serveur d&#8217;intégration continue va récupérer les résultats des tests et des métriques pour les afficher de manière synthétique et chronologique. Finalement, on pourrait faire de l&#8217;intégration continue sans serveur d&#8217;intégration : une fois un hook installé sur le gestionnaire de sources pour lancer le script d&#8217;intégration continue, les résultats des tests et les métriques peuvent être rendus disponibles dans un répertoire partagé.<br />
Le serveur apporte un confort d&#8217;utilisation et une souplesse très importante au quotidien. Il permettra à un chef de projet de lancer un nouveau &laquo;&nbsp;build&nbsp;&raquo; sans taper une ligne de commande shell. Il offrira également l&#8217;historique des builds de manière consolidée.</p>
<p>En fait l&#8217;intégration continue n&#8217;est pas un nouvel outil : elle n&#8217;existe pas en tant que telle.<br />
L&#8217;intégration continue est l&#8217;utilisation d&#8217;outils existants de manière coordonnée et centralisée pour obtenir un suivi de l&#8217;avancement et de l&#8217;état du développement d&#8217;un projet.</p>
<p><em><strong>François LASSELIN</strong></em> <a title="François LASSELIN @Twitter" href="http://twitter.com/flasselin">@Twitter</a> <a title="François LASSELIN @Nalis" href="http://blog.nalis.fr/">@Nalis</a></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2011/06/usine-de-developpement-et-integration-continue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pourquoi toujours croire aux miracles des frameworks middleware ?</title>
		<link>http://decrypt.ysance.com/2011/01/pourquoi-toujours-croire-aux-miracles-des-frameworks-middleware/</link>
		<comments>http://decrypt.ysance.com/2011/01/pourquoi-toujours-croire-aux-miracles-des-frameworks-middleware/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 10:37:18 +0000</pubDate>
		<dc:creator>Olivier Léal</dc:creator>
				<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Acceleo]]></category>
		<category><![CDATA[Framework Middleware]]></category>
		<category><![CDATA[Obeo Designer]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=1926</guid>
		<description><![CDATA[<img class="size-full wp-image-1925 alignleft" title="Framework Middleware" src="http://decrypt.ysance.com/wp-content/uploads/2011/01/sac_de_noeuds.jpg" alt="Framework Middleware" width="239" height="153" />

Je me présente : Olivier Léal, Directeur de Missions (opérationnellement Directeur Technique et Architecte Sénior) chez Ysance. Pour un premier article, je profite de notre média pour dire tout haut ce que beaucoup d'architectes pensent tout bas...

<strong><em>Parlons donc de ces frameworks qui nous font rêver en phase d'étude et de conception puis qui nous font pleurer en production.</em></strong>
Pour moi, "la bonne réalisation d'une application informatique repose sur l'expérience de concepteurs professionnels et non pas sur une utilisation de frameworks mal connus et pas du tout maitrisés."

Pour ne prendre qu'un exemple, combien de développeurs en informatique déclarant connaître <a title="Site de Hibernate" href="http://www.hibernate.org">Hibernate</a> connaissent réellement son fonctionnement et sont capables de l'utiliser afin de délivrer une application qui ne rencontrera pas de problèmes de montée en charge quand il s'agira d'exploiter le volume de données en production.

Avec la propagation des méthodes agiles, où sont passées les phases de conception technique générale et détaillée. Qui se pose la question des règles de passage d'un modèle de classes métiers au modèle de classes techniques ? Est-ce qu'un architecte intervient en continu sur le projet : de l'étude jusqu'à la mise en production ?

Combien de développeurs/concepteurs ont une bonne connaissance des <em>Design Pattern</em> de base permettant de concevoir et de faire évoluer une application (factory, singleton, business object, business service, ...) ?

[...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1925 alignleft" title="Framework Middleware" src="http://decrypt.ysance.com/wp-content/uploads/2011/01/sac_de_noeuds.jpg" alt="Framework Middleware" width="239" height="153" /></p>
<p>Je me présente : Olivier Léal, Directeur de Missions (opérationnellement Directeur Technique et Architecte Sénior) chez Ysance. Pour un premier article, je profite de notre média pour dire tout haut ce que beaucoup d&#8217;architectes pensent tout bas&#8230;</p>
<p><strong><em>Parlons donc de ces frameworks qui nous font rêver en phase d&#8217;étude et de conception puis qui nous font pleurer en production.</em></strong><br />
Pour moi, &laquo;&nbsp;la bonne réalisation d&#8217;une application informatique repose sur l&#8217;expérience de concepteurs professionnels et non pas sur une utilisation de frameworks mal connus et pas du tout maitrisés.&nbsp;&raquo;</p>
<p>Pour ne prendre qu&#8217;un exemple, combien de développeurs en informatique déclarant connaître <a title="Site de Hibernate" href="http://www.hibernate.org">Hibernate</a> connaissent réellement son fonctionnement et sont capables de l&#8217;utiliser afin de délivrer une application qui ne rencontrera pas de problèmes de montée en charge quand il s&#8217;agira d&#8217;exploiter le volume de données en production.</p>
<p>Avec la propagation des méthodes agiles, où sont passées les phases de conception technique générale et détaillée. Qui se pose la question des règles de passage d&#8217;un modèle de classes métiers au modèle de classes techniques ? Est-ce qu&#8217;un architecte intervient en continu sur le projet : de l&#8217;étude jusqu&#8217;à la mise en production ?</p>
<p>Combien de développeurs/concepteurs ont une bonne connaissance des <em>Design Pattern</em> de base permettant de concevoir et de faire évoluer une application (factory, singleton, business object, business service, &#8230;) ?</p>
<p><strong><em>Résultat&#8230;</em></strong><br />
Beaucoup de projets informatiques reposent sur l&#8217;utilisation de frameworks mal utilisés du type Hibernate, <a title="Site de Struts" href="http://struts.apache.org/">Struts</a>, &#8230; L&#8217;exemple le plus courant est Hibernate avec des développeurs qui pensent que son utilisation permet de s&#8217;affranchir de la connaissance du SQL et des bonnes pratiques de conception. Les constats les plus courants sont des applications qui ne tiennent pas la charge en production et qui, par voie de conséquence, donne naissance à des infrastructures sur-dimensionnées pour répondre aux besoins.</p>
<p>A cela certains répondent, qu&#8217;il est plus profitable d&#8217;avoir des développements moins coûteux en utilisant des ressources moins compétentes et d&#8217;avoir des infrastructures plus importantes. On trouve principalement ce genre de réflexions dans les groupes où les coûts récurrents de gestion et de maintenance d&#8217;infrastructure ne sont pas répercutés sur le coût des projets.</p>
<p>Résultat, des équipes projets qui se trouvent bloquées et qui n&#8217;ont pas la maîtrise de leurs applications quand commencent les tests de montée en charge ou, bien souvent, l&#8217;utilisation directe en production :</p>
<ul>
<li>Une application qui s&#8217;écroule en charge ? Combien de développeurs répondent : &laquo;&nbsp;Mais pourtant ça fonctionnait très bien unitairement sur mon poste de développement&#8230;&nbsp;&raquo; !</li>
<li>Une application parfois partielle ? Combien de développeurs remontent  : &laquo;&nbsp;Ha&#8230; En effet&#8230; Comment mes objets sont instanciés dynamiquement ? Je ne me suis pas aperçu que j&#8217;avais oublié de livrer la classe xxxx&nbsp;&raquo; !</li>
</ul>
<p><strong><em>Une fois que l&#8217;on a dit ça&#8230; Que faire ?</em></strong></p>
<ol>
<li>Sql ou NoSql, un concepteur/développeur doit dans son métier connaitre les bases de données. L&#8217;architecture des données dans une application informatique est cruciale dans un monde ou la taille des bases de données explose.</li>
<li>Le MDA (Model Driven Architecture) et le MDE (Model Driven Engineering) bien trop méconnus pour le moment. L&#8217;outillage de conception doit permettre aux concepteurs de maîtriser la structure des applications par l&#8217;utilisation de générateurs de code pour obtenir :</li>
</ol>
<ul>
<li>une application documentée,</li>
<li>des principes d&#8217;architecture systématiques et adaptables au cours des développements par la modification des chaines de génération de code.</li>
</ul>
<p><img class="size-full wp-image-1923 alignleft" title="Logo Acceleo" src="http://decrypt.ysance.com/wp-content/uploads/2011/01/logo-acceleo.gif" alt="Logo Acceleo" width="185" height="55" /></p>
<p>Une des solutions gratuites du marché MDA que j&#8217;ai expérimentée très positivement est <a title="Site de Acceleo" href="http://www.acceleo.org/">Acceleo</a>, mais il en existe d&#8217;autres. Il s&#8217;agit d&#8217;un générateur de code basé sur les modèles d&#8217;Eclipse EMF. Ecrit en JAVA, ce générateur de code &laquo;&nbsp;gratuit&nbsp;&raquo; permet de driver n&#8217;importe qu&#8217;elle type de code. Associé à un outil de conception UML, on peut se constituer rapidement un outil gratuit pour concevoir assez efficacement une application.</p>
<p><img class="size-full wp-image-1924 alignright" title="Logo Obeo Designer" src="http://decrypt.ysance.com/wp-content/uploads/2011/01/logo-obeo-designer.png" alt="Logo Obeo Designer" width="135" height="43" /></p>
<p>Mieux, mais payant, la solution MDE <a title="Site de Obeo Designer" href="http://obeo.fr/pages/obeo-designer/fr">Obeo Designer</a> permettant de bâtir directement des concepts métiers bien plus faciles à comprendre par une MOA que des classes UML avec des stéréotypes.</p>
<p>Suivant les réactions à cet article, je vous proposerai dans les prochains articles des solutions visant à employer ces concepts dans des projets agiles et industrialisés.</p>
<p><strong><em>Olivier LEAL</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2011/01/pourquoi-toujours-croire-aux-miracles-des-frameworks-middleware/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Structuration projet évolutif</title>
		<link>http://decrypt.ysance.com/2009/06/structuration-organisation-projet-evolutif/</link>
		<comments>http://decrypt.ysance.com/2009/06/structuration-organisation-projet-evolutif/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:39:37 +0000</pubDate>
		<dc:creator>Frédéric Faure</dc:creator>
				<category><![CDATA[Organisation]]></category>
		<category><![CDATA[ANT]]></category>
		<category><![CDATA[Automatisation]]></category>

		<guid isPermaLink="false">http://decrypt.ysance.com/?p=308</guid>
		<description><![CDATA[Comment structurer un projet de manière évolutive, surtout si ce projet propose plusieurs accès/modules (un Front et un Back Office par exemple), utilise un outil d’un éditeur lui-même soumis à ses propres changements de version, un framework et éventuellement gère du contenu ? C'est-à-dire comment faire en sorte que le projet soit maintenable au fil du temps et puisse profiter des dernières améliorations de chaque composant sans avoir à payer de monstrueux surcoûts.

La clé est d’organiser le projet de façon modulaire en évaluant correctement les différentes briques fonctionnelles et techniques du projet à mettre en place.

Nous prendrons dans notre exemple le cas d’un projet développé sous Eclipse et dont le serveur d’application cible est Tomcat. Tout autre technologie est bien sûr envisageable.

[...]]]></description>
			<content:encoded><![CDATA[<p>Comment structurer un projet de manière évolutive, surtout si ce projet propose plusieurs accès/modules (un Front et un Back Office par exemple), utilise un outil d’un éditeur lui-même soumis à ses propres changements de version, un framework et éventuellement gère du contenu ? C&#8217;est-à-dire comment faire en sorte que le projet soit maintenable au fil du temps et puisse profiter des dernières améliorations de chaque composant sans avoir à payer de monstrueux surcoûts.</p>
<p>La clé est d’organiser le projet de façon modulaire en évaluant correctement les différentes briques fonctionnelles et techniques du projet à mettre en place.</p>
<p>Nous prendrons dans notre exemple le cas d’un projet développé sous Eclipse et dont le serveur d’application cible est Tomcat. Tout autre technologie est bien sûr envisageable.</p>
<p><strong><em>Le découpage des sources</em></strong><br />
Tout d’abord il conviendra d’effectuer un découpage fonctionnel des différents modules ou accès de l’application. Nous pouvons prendre le cas d’un projet proposant un Back Office et un Front Office. Chaque module fonctionnel sera déclaré comme un projet à part entière et consommera des fonctionnalités, méthodes et outils communs présents dans un autre projet contenant le framework maison ou tronc commun. Outre une maintenabilité accrue pour l’ensemble du projet par la suite, cela permet de séparer clairement les éléments nécessaires à la compilation et exécution de chaque modules qui pourront s’exécuter sur des environnements/serveurs distincts. En effet, sur un site commerçant par exemple, le Back Office nécessitera probablement une infrastructure minimale afin de remplir les produits qui seront accessibles au grand public sur le Front Office qui pourra nécessiter une infrastructure plus poussée afin de supporter la charge, avec un système de réplication de données master-slave par exemple. Il faut donc que chaque module soit indépendant afin de pouvoir être déployés séparément sur des infrastructures distinctes.</p>
<p>L’intérêt d’avoir un projet à part pour le tronc commun permet en plus d’effectuer des montées de versions rapides pour peu que les méthodes et interfaces dudit framework maison aient été convenablement définies et ne bougent pas ou bien que la rétrocompatibilité soit assurée de manière générale. Cela permet d’avoir une version ISO du framework entre les différents projets (pas au sens Eclipse du terme mais au sens « business ») de la société et que chacun puisse profiter des dernières corrections et évolutions du framework maison.</p>
<p>Concernant les framework du marché, la séparation n’est pas aussi simple puisque, plus qu’un ensemble de méthodes et d’outils, ils proposent des modèles de développement, et donc qu’en général, les sources sont intégrées directement dans leur modèle, comme dans Struts pour ne citer que lui. Il n’est donc pas nécessaire de vouloir extraire dans des projets séparés tous les framework, car cela ne serait pas forcément bénéfique.</p>
<p><strong><em>Le cas des outils éditeurs</em></strong><br />
Reste en suite le cas des outils éditeurs, par exemple, qui bien souvent se retrouvent modifiés directement dans leur code source (quand les sources sont disponibles) rendant ainsi toute montée de version insurmontable. Le but de le mettre dans un projet à part est le même que pour le framework, c&#8217;est-à-dire de pouvoir profiter des évolutions/corrections du produit proposées par l’éditeur en gardant la possibilité de changer simplement de version. Cette simplicité est accrue avec les qualité des interfaces que doit proposer le tronc commun pour accéder au produit. En effet, lors d’une montée de version, si quelques méthodes de l’outil ont changé, il suffira de mettre jour l’interface du tronc commun correspondante sans avoir à modifier un seul élément du Front ou du Back office.</p>
<p>Si il s’avère que des modifications sont nécessaires afin d’apporter quelques spécificités au produit, il faudra le faire dans un projet à part, en conservant la même logique arborescente que le produit lui-même. Les modifications seront fusionnées avec la version originale de l’outil lors de la phase de génération de la cible via le moteur d’automatisation des tâches.</p>
<p><strong><em>Le contenu</em></strong><br />
Certains développements ont pour but de présenter du contenu. On peut prendre le cas d’un projet se basant sur un outil éditeur de type CMS (Content Management Systems ou Système de Gestion de Contenu). Du contenu sera nécessaire lors de la phase de développement. Cependant, le contenu doit se trouver impérativement dans un projet à part :</p>
<p style="padding-left: 30px;">- pour identifier aisément les ressources « statiques » du site et les « dynamiques » correspondant au contenu,</p>
<p style="padding-left: 30px;">- pour éviter lors des livraisons dans l’environnement de PROD d’embarquer des éléments de type contenu et d’écraser les modifications effectuées via le Back Office par les responsables du contenu (je suis sûr que si vous avez déjà travaillé sur un projet de CMS vous avez déjà vu ça… Hein !),</p>
<p style="padding-left: 30px;">- pour ne pas mettre 3 heures à rapatrier votre projet de SVN/CVS (gestionnaire de sources) alors que vous ne vouliez récupérer que les fichiers sources du développement et que vous vous retrouvez avec 1Go de contenu en prime !</p>
<p><strong><em>La compilation et l’exécution</em></strong><br />
La compilation des sources est assurées grâce aux dépendances que l’on peut appliquer entre projets. Il n’est donc pas nécessaire de tout mettre dans le même projet pour que cela compile ! ;ob Il faut cependant faire attention aux dépendances cycliques : bien que le compilateur refusera par défaut, il est toujours possible de désactiver certaines barrières, … Il est indispensable de ne pas en avoir car au-delà du fait que l’exécution ne sera pas possible sur l’environnement cible (rien que ça) à moins de tout poser au même endroit, cela signifie qu’il y a un problème de conception. Il n’y a pas de dépendance cyclique des projets si ils suivent une logique de couches correcte.</p>
<p>Concernant l’exécution, elle sera permise grâce à une tâche <a href="http://ant.apache.org/" title="Site de ANT">ANT</a> qui va récupérer les compilés et ressources de chaque projet afin de les mettre à disposition dans un répertoire cible :</p>
<p style="padding-left: 30px;">- répertoire du plugin Eclipse-Tomcat pour l’exécution en mode « débug »,</p>
<p style="padding-left: 30px;">- version livrable sous forme de « war » pour plateformes d’INT, de PROD, …</p>
<p style="padding-left: 30px;">- …</p>
<p>ANT est un scripteur de tâches permettant un ensemble complet de fonctionnalités (compilation, génération de Javadoc, archivage (zip, war, …), extraction CVS/SVN, …). Issu d’un projet Open source de la fondation Apache, il permet l’automatisation et donc la fiabilisation lors de la reproduction d’opérations répétitives tout au long du cycle de développement. Il sera alors possible de créer un ensemble de tâches ANT qu’il suffira d’exécuter : « Livraison DEV », « Livraison PRE-PROD », « Livraison PROD », …</p>
<p>ANT est capable également de se connecter à SVN et de générer les livrables à partir d’une version par exemple, une version des sources devant normalement être générée avant chaque livraison.</p>
<p>Si il est nécessaire d’avoir à disposition un ensemble de données d’initialisation du CMS pour le développement, un projet spécifique de contenu doit être créé et intégré via ANT lors de la génération du « build » dans la target « Livraison DEV ».</p>
<p><strong><em>Illustration</em></strong></p>
<div id="attachment_327" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-327" title="Structuration-Organisation Projet" src="http://decrypt.ysance.com/wp-content/uploads/2009/06/structuration-organisation-projet.png" alt="Structuration-Organisation Projet" width="480" height="360" /><p class="wp-caption-text">Structuration-Organisation Projet</p></div>
<p><strong><em> </em></strong></p>
<p><strong><em>Conclusion</em></strong><br />
L’organisation d’un projet au niveau des sources est indispensable car c’est ce qui va vous permettre d’assurer une maintenabilité et une évolutivité de vos développements, vis-à-vis également des éventuelles montées de version des composants communs ou éditeurs sous-tendant votre projet.</p>
<p>De plus un moteur d’automatisation des tâches de développement est indispensable quelque soit la taille du projet afin de permettre une reproductibilité des tâches, d’assurer une capitalisation des connaissances via ces scripts et également de soutenir l’organisation projet des équipes en permettant, par exemple, à n’importe qui d’effectuer une livraison, et ce rapidement.</p>
<p>L’investissement au niveau de la conception est une économie au niveau du projet dans sa globalité.</p>
<p><em><strong>Frédéric FAURE</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://decrypt.ysance.com/2009/06/structuration-organisation-projet-evolutif/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

