<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Patrice Lamarche - Architecture</title>
    <link>http://patricelamarche.net/</link>
    <description>Ce blog est moche. Je ne suis pas designer.</description>
    <language>fr-fr</language>
    <copyright>Patrice Lamarche</copyright>
    <lastBuildDate>Fri, 30 Apr 2010 22:44:12 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>patrice.lamarche@gmail.com</managingEditor>
    <webMaster>patrice.lamarche@gmail.com</webMaster>
    <item>
      <trackback:ping>http://patricelamarche.net/Trackback.aspx?guid=8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8</trackback:ping>
      <pingback:server>http://patricelamarche.net/pingback.aspx</pingback:server>
      <pingback:target>http://patricelamarche.net/PermaLink,guid,8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8.aspx</pingback:target>
      <dc:creator>Patrice Lamarche</dc:creator>
      <wfw:comment>http://patricelamarche.net/CommentView,guid,8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8.aspx</wfw:comment>
      <wfw:commentRss>http://patricelamarche.net/SyndicationService.asmx/GetEntryCommentsRss?guid=8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <blockquote>
          <p align="center">
            <em>“Quelqu’un peut il m’expliquer pourquoi il arrive fréquemment, dans une équipe
projet, d’avoir une ou deux personnes qui ne peuvent écrire une classe sans écrire,
systématiquement, une ou plusieurs interfaces ou classes abstraites qui, en fin de
projet, ne sont finalement implémentées que par une classe voir pas du tout ?” </em>
          </p>
        </blockquote>
        <p align="justify">
Voilà en substance un mail qui a lancé un débat intéressant entre collègues. Et je
dois dire que je suis d’accord avec ce constat et qu’il est vrai que j’ai parfois
l’impression que certains développeurs pensent que savoir développer proprement et
professionnellement signifie devoir implémenter 9879798 interfaces et classes abstraites
et ajouter 98770754 niveaux d’abstractions. Après tout, rajouter de l’abstraction
est le premier réflexe que l’on peut avoir lorsque l’on essaie d’atteindre l’objectif
premier de tout développeur qui se respecte : 
</p>
        <blockquote>
          <p align="center">
            <em>
              <strong>Ecrire du code maintenable</strong>
            </em>
          </p>
        </blockquote>
        <p align="justify">
Cet objectif est en effet primordial afin de réduire le coût de développement (et
de maintenance) d’un projet. Mais il mène parfois vers le travers évoqué ci-dessus. 
</p>
        <p align="justify">
          <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" align="left" src="http://www.futura-sciences.com/uploads/tx_oxcsfutura/comprendre/d/images/505/islande_01.jpg" width="344" height="218" />Cette
mauvaise habitude appelée “le syndrome du “ocazou”” par <a href="http://www.catuhe.com">David</a>,
se rapproche beaucoup du principe de précaution dont on parle beaucoup en ce moment.
Adapté au développement logiciel celui-ci pourrait se traduire par :
</p>
        <blockquote>
          <p>
            <em>“ l'absence de certitudes, compte tenu des connaissances techniques du moment,
ne doit pas retarder l'adoption de mesures effectives et proportionnées visant à prévenir
un risque de dommages graves et irréversibles au projet de développement à un coût
économiquement acceptable ”</em>
          </p>
        </blockquote>
        <p align="justify">
Seul problème avec ce genre de principe de précaution, il est très souvent difficile
d’arriver à proportionner correctement son action afin d’éviter les problèmes par
la suite. L’actualité récente l’a montré, le principe de précaution incite souvent
à exagérer la menace, et a dans quasi tous les cas une certaine faculté à faire exploser
les coûts pour un résultat… souvent peu mesurable.
</p>
        <p>
En réalité, la maintenabilité doit certes être basé sur du code propre et bien structuré,
mais il repose également sur deux principes fondamentaux :
</p>
        <ul>
          <li>
            <em>
              <strong>
                <a href="http://en.wikipedia.org/wiki/KISS_principle">Le principe KISS</a> (Keep
It Simple and Stupid)</strong>
            </em> : Plus un code est simple et plus il sera facilement
compréhensible et maintenable. Ajouter de la complexité en ajoutant des niveaux d’abstractions
inutiles ne fait… qu’ajouter de la complexité. 
</li>
          <li>
            <em>
              <strong>
                <a href="http://en.wikipedia.org/wiki/You_ain't_gonna_need_it">Le principe
YAGNI</a> (You aren’t going to need it)</strong>
            </em> : Ce principe indique qu’il
ne faut pas ajouter des fonctionnalités ou du code tant que l’on n’en a pas réellement
besoin.  
</li>
        </ul>
        <p align="justify">
Ces deux principes sont d’autant plus valables que nous avons à présent des outils
efficaces (<a href="http://www.jetbrains.com/resharper">comme ReSharper</a>) permettant
de refactoriser intelligemment son code afin de faire évoluer son architecture <em><strong>quand
on a en besoin</strong></em>. Inutile donc de rajouter de la complexité en prévision
du futur, il ne sera pas trop tard pour le faire par la suite…
</p>
        <img width="0" height="0" src="http://patricelamarche.net/aggbug.ashx?id=8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8" />
      </body>
      <title>Le principe de précaution</title>
      <guid isPermaLink="false">http://patricelamarche.net/PermaLink,guid,8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8.aspx</guid>
      <link>http://patricelamarche.net/2010/04/30/LePrincipeDePr%c3%a9caution.aspx</link>
      <pubDate>Fri, 30 Apr 2010 22:44:12 GMT</pubDate>
      <description>&lt;blockquote&gt; 
&lt;p align="center"&gt;
&lt;em&gt;“Quelqu’un peut il m’expliquer pourquoi il arrive fréquemment, dans une équipe
projet, d’avoir une ou deux personnes qui ne peuvent écrire une classe sans écrire,
systématiquement, une ou plusieurs interfaces ou classes abstraites qui, en fin de
projet, ne sont finalement implémentées que par une classe voir pas du tout ?” &lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p align="justify"&gt;
Voilà en substance un mail qui a lancé un débat intéressant entre collègues. Et je
dois dire que je suis d’accord avec ce constat et qu’il est vrai que j’ai parfois
l’impression que certains développeurs pensent que savoir développer proprement et
professionnellement signifie devoir implémenter 9879798 interfaces et classes abstraites
et ajouter 98770754 niveaux d’abstractions. Après tout, rajouter de l’abstraction
est le premier réflexe que l’on peut avoir lorsque l’on essaie d’atteindre l’objectif
premier de tout développeur qui se respecte : 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p align="center"&gt;
&lt;em&gt;&lt;strong&gt;Ecrire du code maintenable&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p align="justify"&gt;
Cet objectif est en effet primordial afin de réduire le coût de développement (et
de maintenance) d’un projet. Mais il mène parfois vers le travers évoqué ci-dessus. 
&lt;/p&gt;
&lt;p align="justify"&gt;
&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" align="left" src="http://www.futura-sciences.com/uploads/tx_oxcsfutura/comprendre/d/images/505/islande_01.jpg" width="344" height="218" /&gt;Cette
mauvaise habitude appelée “le syndrome du “ocazou”” par &lt;a href="http://www.catuhe.com"&gt;David&lt;/a&gt;,
se rapproche beaucoup du principe de précaution dont on parle beaucoup en ce moment.
Adapté au développement logiciel celui-ci pourrait se traduire par :
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;“ l'absence de certitudes, compte tenu des connaissances techniques du moment,
ne doit pas retarder l'adoption de mesures effectives et proportionnées visant à prévenir
un risque de dommages graves et irréversibles au projet de développement à un coût
économiquement acceptable ”&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p align="justify"&gt;
Seul problème avec ce genre de principe de précaution, il est très souvent difficile
d’arriver à proportionner correctement son action afin d’éviter les problèmes par
la suite. L’actualité récente l’a montré, le principe de précaution incite souvent
à exagérer la menace, et a dans quasi tous les cas une certaine faculté à faire exploser
les coûts pour un résultat… souvent peu mesurable.
&lt;/p&gt;
&lt;p&gt;
En réalité, la maintenabilité doit certes être basé sur du code propre et bien structuré,
mais il repose également sur deux principes fondamentaux :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/KISS_principle"&gt;Le principe KISS&lt;/a&gt; (Keep
It Simple and Stupid)&lt;/strong&gt;&lt;/em&gt; : Plus un code est simple et plus il sera facilement
compréhensible et maintenable. Ajouter de la complexité en ajoutant des niveaux d’abstractions
inutiles ne fait… qu’ajouter de la complexité. 
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/You_ain't_gonna_need_it"&gt;Le principe
YAGNI&lt;/a&gt; (You aren’t going to need it)&lt;/strong&gt;&lt;/em&gt; : Ce principe indique qu’il
ne faut pas ajouter des fonctionnalités ou du code tant que l’on n’en a pas réellement
besoin.&amp;#160; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;
Ces deux principes sont d’autant plus valables que nous avons à présent des outils
efficaces (&lt;a href="http://www.jetbrains.com/resharper"&gt;comme ReSharper&lt;/a&gt;) permettant
de refactoriser intelligemment son code afin de faire évoluer son architecture &lt;em&gt;&lt;strong&gt;quand
on a en besoin&lt;/strong&gt;&lt;/em&gt;. Inutile donc de rajouter de la complexité en prévision
du futur, il ne sera pas trop tard pour le faire par la suite…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://patricelamarche.net/aggbug.ashx?id=8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8" /&gt;</description>
      <comments>http://patricelamarche.net/CommentView,guid,8fb0d3fa-3c07-4c49-83b6-8b8497fe1de8.aspx</comments>
      <category>Architecture</category>
      <category>Humeur</category>
    </item>
    <item>
      <trackback:ping>http://patricelamarche.net/Trackback.aspx?guid=7fa8ec40-9eb8-4428-8451-60bc8701c525</trackback:ping>
      <pingback:server>http://patricelamarche.net/pingback.aspx</pingback:server>
      <pingback:target>http://patricelamarche.net/PermaLink,guid,7fa8ec40-9eb8-4428-8451-60bc8701c525.aspx</pingback:target>
      <dc:creator>Patrice Lamarche</dc:creator>
      <wfw:comment>http://patricelamarche.net/CommentView,guid,7fa8ec40-9eb8-4428-8451-60bc8701c525.aspx</wfw:comment>
      <wfw:commentRss>http://patricelamarche.net/SyndicationService.asmx/GetEntryCommentsRss?guid=7fa8ec40-9eb8-4428-8451-60bc8701c525</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft vient de rendre disponible la version de février des GAX et du GAT. A noter
que cette version supporte à la fois Visual Studio 2005 ET Visual Studio 2008. De
plus, la procédure d'installation a été grandement améliorée puisqu'il n'est plus
nécessaire de désinstaller la précédente version avant d'installer la nouvelle. 
</p>
        <p>
En savoir plus: 
<br /><a href="http://blogs.msdn.com/agile/archive/2008/02/15/gax-gat-february-2008-final-release.aspx">http://blogs.msdn.com/agile/archive/2008/02/15/gax-gat-february-2008-final-release.aspx</a></p>
        <img width="0" height="0" src="http://patricelamarche.net/aggbug.ashx?id=7fa8ec40-9eb8-4428-8451-60bc8701c525" />
      </body>
      <title>[News] Une nouvelle version des GAX et du GAT</title>
      <guid isPermaLink="false">http://patricelamarche.net/PermaLink,guid,7fa8ec40-9eb8-4428-8451-60bc8701c525.aspx</guid>
      <link>http://patricelamarche.net/2008/02/17/NewsUneNouvelleVersionDesGAXEtDuGAT.aspx</link>
      <pubDate>Sun, 17 Feb 2008 18:08:11 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft vient de rendre disponible la version de février des GAX et du GAT. A noter
que cette version supporte à la fois Visual Studio 2005 ET Visual Studio 2008. De
plus, la procédure d'installation a été grandement améliorée puisqu'il n'est plus
nécessaire de désinstaller la précédente version avant d'installer la nouvelle. 
&lt;p&gt;
En savoir plus: 
&lt;br&gt;
&lt;a href="http://blogs.msdn.com/agile/archive/2008/02/15/gax-gat-february-2008-final-release.aspx"&gt;http://blogs.msdn.com/agile/archive/2008/02/15/gax-gat-february-2008-final-release.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://patricelamarche.net/aggbug.ashx?id=7fa8ec40-9eb8-4428-8451-60bc8701c525" /&gt;</description>
      <comments>http://patricelamarche.net/CommentView,guid,7fa8ec40-9eb8-4428-8451-60bc8701c525.aspx</comments>
      <category>Architecture</category>
    </item>
  </channel>
</rss>