<?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>A la Poursuite du Code en Rouge &#187; Métrique</title>
	<atom:link href="http://www.schwinl.net/tag/metrique/feed" rel="self" type="application/rss+xml" />
	<link>http://www.schwinl.net</link>
	<description>Le blog de Guillaume Rams sur le génie logiciel</description>
	<lastBuildDate>Thu, 02 Feb 2012 20:43:34 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dix-neuf pourcents de commentaires&#8230;</title>
		<link>http://www.schwinl.net/articles/dix-neuf-pourcents-de-commentaires</link>
		<comments>http://www.schwinl.net/articles/dix-neuf-pourcents-de-commentaires#comments</comments>
		<pubDate>Fri, 06 Feb 2009 22:44:08 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Cross-post Oxiane]]></category>
		<category><![CDATA[Génie Logiciel]]></category>
		<category><![CDATA[Métrique]]></category>

		<guid isPermaLink="false">http://www.schwinl.net/?p=108</guid>
		<description><![CDATA[Si l’on regarde l’ensemble des projets open-source, on trouve en moyenne près d’une ligne sur cinq de commentaires, selon un papier de Dirk Riehle (voir également sur son blog). On y lit que les projets étudiés restent tous très proches de ce taux. Un peu plus surprenant, on découvre que cette densité de très exactement [...]]]></description>
			<content:encoded><![CDATA[<p>Si l’on regarde l’ensemble des projets open-source, on trouve en moyenne près d’une ligne sur cinq de commentaires, selon un papier de <a title="The Sweet Spot of Code Commenting in Open Source" href="http://www.riehle.org/2009/02/04/the-sweet-spot-of-code-commenting-in-open-source/" target="_self">Dirk Riehle</a> (voir également sur <a title="Commentaires sur le Blog de Dirk Riehle" href="http://www.riehle.org/2009/02/04/the-sweet-spot-of-code-commenting-in-open-source/" target="_self">son blog</a>).</p>
<div class="entrybody">
<div>
<p>On y lit que les projets étudiés restent tous très proches de ce taux. Un peu plus surprenant, on découvre que cette densité de très exactement 18,7% de commentaires est la même quelles que soient la taille du projet et la taille de l’équipe <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/shock.png' alt='Shock' title='Shock' class='tse-smiley' height='24' width='24' /> . L&#8217;article propose l&#8217;explication que c&#8217;est dû à une grande auto-discipline de développeurs, très probablement motivée par l’exposition publique du code source à conjointement au nom de son contributeur.</p>
<p>Autre information de cette étude : ce qui influe sur le taux de commentaires est l’âge du projet. Quand un projet avance en maturité son taux de commentaires baisse (enfin d’un chouïa, à 18%). Je suppose que lorsque l’on maintient un code depuis plusieurs années, certaines choses deviennent tellement comprises, partagées et habituelles qu’elles en deviennent implicites, du coup on aurait l’impression d’écrire des évidences dans les commentaires en détaillant trop…</p>
<p>Ces statistiques soulèvent quelques petites questions…    Par exemple, peut-on considérer ce taux comme idéal ? En effet, c’est le taux auquel des développeurs volontaires et auto-organisés aboutissent à moyen terme, quel que soit le projet. Moins de commentaires c’est pas assez, mais plus de commentaires c’est inutile, voire c’est introduire du bruit. Si l’on admet ce taux comme “idéal”, le taux de commentaires de mes développements s’éloigne-t-il significativement de ce chiffre ? Quelle conclusion en tirer ? Ainsi, vous est-il déjà arrivé comme à moi, de vous dire qu’avant de diffuser tel ou tel de vos composants en open-source, il faudrait faire un petit effort de packaging et de documentation ? <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/blush.png' alt='Blush' title='Blush' class='tse-smiley' height='24' width='24' /></p>
<p>Question, en guise de conclusion : si vous imposez de préciser dans les commentaires le ou les auteur(s) de toute classe et méthode par exemple (c’est-à-dire en Java : @author partout), est-ce que vous obtiendrez un code globalement mieux commenté et/ou plus lisible ? <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/devil.png' alt='Twisted' title='Twisted' class='tse-smiley' height='24' width='24' /></p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.schwinl.net/articles/dix-neuf-pourcents-de-commentaires/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ohmerde4j</title>
		<link>http://www.schwinl.net/articles/crap4j</link>
		<comments>http://www.schwinl.net/articles/crap4j#comments</comments>
		<pubDate>Tue, 06 Nov 2007 22:26:28 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Génie Logiciel]]></category>
		<category><![CDATA[Sauf cross-post]]></category>
		<category><![CDATA[crap4j]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Métrique]]></category>
		<category><![CDATA[Qualité de code]]></category>

		<guid isPermaLink="false">http://www.schwinl.net/archives/6</guid>
		<description><![CDATA[Alors, prenons le prochain ticket d&#8217;incident&#8230; voilà. bla bla bla&#8230; mmmh. OK. Ça doit pas être bien compliqué ça devrait se trouver quelque part dans cette classe, là. Tiens, je l&#8217;ai jamais ouverte celle-là. Allons-y, Ctrl+Shift+T, OK, de quoi ça a l&#8217;air ? 8O Oh meeerde&#8230; C&#8217;est précisément l&#8217;effet &#171;&#160;rôh merde&#160;&#187; qu&#8217;essaie de mesurer l&#8217;outil [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Alors, prenons le prochain ticket d&#8217;incident&#8230; voilà. bla bla bla&#8230; <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/neutral.png' alt='Neutral' title='Neutral' class='tse-smiley' height='24' width='24' /> mmmh. OK. Ça doit pas être bien compliqué ça devrait se trouver quelque part dans cette classe, là. Tiens, je l&#8217;ai jamais ouverte celle-là. Allons-y, <code>Ctrl+Shift+T</code>, OK, de quoi ça a l&#8217;air ? 8O Oh <em>meeerde</em>&#8230;</p></blockquote>
<p>C&#8217;est précisément l&#8217;effet &laquo;&nbsp;rôh merde&nbsp;&raquo; qu&#8217;essaie de mesurer l&#8217;outil <a href="http://www.crap4j.org/" target="_blank">Crap4j</a>, via la métrique <strong>CRAP (<em>Change Risk Analysis and Predictions</em>)</strong>, ou bien, en français, l&#8217;<em>ohmerditude</em>. Cette traduction en vaut une autre, et puis j&#8217;aime bien le <a href="http://fr.wiktionary.org/wiki/-itude" target="_blank">suffixe &laquo;&nbsp;-itude&nbsp;&raquo;</a> <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/grin.png' alt='Grin' title='Grin' class='tse-smiley' height='24' width='24' /> .</p>
<p>Ce qui me plaît dans cette métrique, c&#8217;est que, pour une fois, on part de la <span style="text-decoration: underline;">question</span> avant de parler de chiffres. Je n&#8217;aime pas l&#8217;approche qui consiste à constituer des tableaux de chiffres sans fin, qui certes donnent un air très savant, mais qu&#8217;on est bien en peine d&#8217;exploiter <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/eyeroll.png' alt='Rolls Eyes' title='Rolls Eyes' class='tse-smiley' height='24' width='24' /> . A travers l&#8217;<em>ohmerditude</em>, dans le but de vérifier qu&#8217;un code est maintenable, on essaie de répondre à la question &laquo;&nbsp;un développeur va-t&#8217;il trouver risqué de modifier ce code lors d&#8217;une maintenance ?&nbsp;&raquo;. Si oui, on prend le risque que personne ne touche plus à ce code qu&#8217;entre deux doigts, le bras tendu et en se pinçant le nez de l&#8217;autre main (voir fig. 2 <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/wink.png' alt='Wink' title='Wink' class='tse-smiley' height='24' width='24' /> ). Les développeurs vont ajouter tout autour de cette boîte noire des couches et des couches de rustines et contournements de moins en moins maintenables <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/crying.png' alt='Cry' title='Cry' class='tse-smiley' height='24' width='24' /> .</p>
<p><img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/lamp.png' alt='Lamp' title='Lamp' class='tse-smiley' height='24' width='24' /> Maintenant que vous touchez du doigt tout l&#8217;intérêt potentiel de cette métrique, intéressons-nous à son calcul. La formule est un dosage pifométrique de complexité cyclomatique et de couverture de tests. En gros, un code sera &laquo;&nbsp;crappy&nbsp;&raquo; (ou &laquo;&nbsp;ohmerdique&nbsp;&raquo; si vous préférez) si il est (<em>1</em>) très complexe et (<em>2</em>) très peu testé. Un code très simple sans test ou un code complexe mais très bien testé seront considérés comme acceptables.</p>
<p>Crap4j mélange donc le nombre de <em>conditions </em>à tester avec la couverture de <em>lignes</em> des tests&#8230; mmmmh. <img src='http://www.schwinl.net/wp-content/plugins/tango-smileys-extended/tango24/neutral.png' alt='Neutral' title='Neutral' class='tse-smiley' height='24' width='24' /> bon, on a vu pire. Plus exactement, Crap utilise le taux de lignes non couvertes. Si l’on pose l’hypothèse que les décisions sont uniformément réparties dans les lignes de code, alors cette mesure serait une sorte d&#8217;estimation de la quantité de décisions non testées. Malheureusement je ne connais pas d’éléments qui viendraient confirmer cette hypothèse, et ça serait quand même peu fiable.</p>
<h3>Quel usage ?</h3>
<p>Prise en tant que métrique isolée, cette mesure ne serait pas passionnante. Par contre, je l&#8217;utiliserais comme indicateur de <em>testabilité</em> et de <em>possibilité de changement</em>. Selon l&#8217;ISO-9126, <em>testability</em> et <em>changeability</em> sont bien des sous-caractéristiques de <em>maintainability</em>, on est bien en élément de réponse à la question initiale. Et comme la norme laisse complètement libre la façon de calculer des indicateurs pour les sous-caractéristiques qualité (ce qui est la façon normative de dire &laquo;&nbsp;démerdez-vous on vous donnera pas la formule&nbsp;&raquo;), Crap peut être utilisé comme formule de calcul de testabilité &laquo;&nbsp;sur étagère&nbsp;&raquo;, qui présente l&#8217;avantage d&#8217;être simple à expliquer, rapide à mettre en oeuvre et déjà outillée.</p>
<p>A condition que vous n’ayez pas déjà d’outil de mesure qualité qui vous permette de consolider différentes mesures, et à condition également de calibrer crap4j en fonction de vos exigences, celui-ci peut constituer un premier niveau d&#8217;outillage qui vous incitera peut-être à aller plus loin.</p>
<p>On préférera peut-être la version produisant des rapports (via ant, à intégrer à son build continu, donc) que la version plug-in eclipse : le public visé pour cet <strong>indicateur de risque qu&#8217;un changement soit non testé </strong>me semble plutôt le gestionnaire (chef de projet par exemple) que le développeur, qui va probablement garder sous les yeux dans son IDE des règles de codage plus immédiatement &laquo;&nbsp;actionnables&nbsp;&raquo;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.schwinl.net/articles/crap4j/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

