<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1048881-6";
urchinTracker();
</script><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">]>
<rss version="2.0" xml:base="http://www.agile-spain.com/agilev2">
<channel>
 <title>agile-spain.com - Desarrollo</title>
 <link>http://www.agile-spain.com/agilev2/taxonomy/term/34/all</link>
 <description>Técnicas de desarrollo, orientación a objetos, orientación a aspectos, etc.</description>
 <language>es</language>
<item>
 <title>EsElCambioDeInterfazRefactorizar</title>
 <link>http://www.agile-spain.com/agilev2/eselcambiodeinterfazrefactorizar</link>
 <description>&lt;p&gt;&lt;cite&gt;Escrito por Martin Fowler&lt;/cite&gt;&lt;br /&gt;
&lt;cite&gt;Traducido por Carmen Vidal ( Paradigma Tecnológico) &lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;¿Es el cambio de interfaz de parte del código una refactorización?&lt;/p&gt;
&lt;p&gt;La respuesta a esta pregunta es bastante simple - el cambio de un interfaz es una refactorización que genera un cambio en todas las llamadas. Un gran ejemplo de esto es &lt;a href=&quot;http://www.refactoring.com/catalog/renameMethod.html&quot;&gt;RenombradoDeMétodo&lt;/a&gt;, que es una refactorización de cambio de interfaz presente en la mayoría de herramientas de refactorización.&lt;/p&gt;
&lt;p&gt;El cambio de todas las llamadas es una parte esencial de esta refactorización. Solamente el cambio de una declaración de interfaz romperá el sistema - y consecuentemente no es un comportamiento que conserve el cambio.&lt;/p&gt;
&lt;p&gt;Las refactorización de cambio de interfaz asumen que se puede conseguir el mantenimiento de todas las llamadas, y esto es porque se tiene que ser mucho más cuidadoso con los &lt;a href=&quot;http://www.martinfowler.com/bliki/PublishedInterface.html&quot;&gt;InterfacesPublicados&lt;/a&gt;. Con un interfaz publicado, el interfaz sí mismo es la parte del comportamiento observable del sistema.&lt;/p&gt;
&lt;p&gt;Los lenguajes dinámicos pueden hacer estos cambios mucho más difíciles. La mecanografía estática realmente ayuda aquí a controlar exactamente qué interfaz es llamado en varios puntos. Las llamadas reflexivas también pueden ser más difíciles de encontrar, bien integrando nombres de método en cadenas o componiéndolas en tiempos de ejecución. Esto es otra área donde las pruebas son esenciales incluso en los entornos que tienen instrumentos de refactorización.&lt;/p&gt;
</description>
 <category domain="http://www.agile-spain.com/agilev2/tema/desarrollo">Desarrollo</category>
 <pubDate>Wed, 19 Sep 2007 14:09:35 +0000</pubDate>
</item>
<item>
 <title>Antipatrones de gestión de excepciones</title>
 <link>http://www.agile-spain.com/agilev2/antipatrones_de_gestion_de_excepciones</link>
 <description>&lt;p&gt;¿Debo capturar o relanzar esta excepción? Si la lanzo, ¿debo imprimir una traza de log también? ¿Qué implicaciones tiene lanzar una excepción dentro de una transacción? &lt;/p&gt;
&lt;p&gt;Si te has hecho preguntas similares a estas alguna vez te gustará el artículo &lt;a href=&quot;http://today.java.net/pub/a/today/2006/04/06/exception-handling-antipatterns.html&quot;&gt;Exception-Handling Antipatterns&lt;/a&gt; publicado hace unos días en Java.net en el que se  tratan los principales casos de tratamiento de excepciones.&lt;/p&gt;
</description>
 <category domain="http://www.agile-spain.com/agilev2/tema/desarrollo">Desarrollo</category>
 <pubDate>Wed, 12 Apr 2006 20:18:00 +0000</pubDate>
</item>
<item>
 <title>CódigoComoDocumentación</title>
 <link>http://www.agile-spain.com/agilev2/codigocomodocumentacion</link>
 <description>&lt;p&gt;&lt;cite&gt;Escrito por Martin Fowler&lt;/cite&gt;&lt;br /&gt;
&lt;cite&gt;Traducido por Rafael Vacas&lt;/cite&gt;&lt;br /&gt;
&lt;cite&gt;Revisado por Jorge Ferrer&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;Uno de los elementos comunes de los métodos ágiles es que otorgan a la programación un papel central en el desarrollo de software – mucho más de lo que la ingeniería del software suele hacer. Para esto es necesario considerar el código como la principal documentación de un sistema software. &lt;/p&gt;
&lt;p&gt;Casi de inmediato siento la necesidad de refutar un malentendido muy común. Tal principio no quiere decir que el código sea la única documentación. Aunque a menudo se dice esto de la ProgramacionExtrema, nunca lo he oído decir a los líderes de éste movimiento. Generalmente, se necesita documentación adicional como complemento al código.&lt;/p&gt;
&lt;p&gt; La razón por la que el código es la fuente principal de documentación se debe a que es la única lo suficientemente detallada y precisa como para ocupar este rol - un punto explicado elocuentemente por Jack W. Reeves en su famoso ensayo &lt;a ref.=” http://www.developerdotstar.com/mag/articles/reeves_design_main.html”&gt;&quot;¿Qué es Diseño?&quot;&lt;/a&gt;.&lt;/p&gt;
</description>
 <category domain="http://www.agile-spain.com/agilev2/tema/desarrollo">Desarrollo</category>
 <category domain="http://www.agile-spain.com/agilev2/tema/personajes">Personajes</category>
 <pubDate>Mon, 28 Nov 2005 08:03:43 +0000</pubDate>
</item>
<item>
 <title>BaseDeDatosEnMemoria</title>
 <link>http://www.agile-spain.com/agilev2/basededatosenmemoria</link>
 <description>&lt;p&gt;&lt;cite&gt;Escrito por Martin Fowler&lt;/cite&gt;&lt;br /&gt;
&lt;cite&gt;Traducido por Carmen Vidal&lt;/cite&gt;&lt;br /&gt;
&lt;cite&gt;Revisado por Jorge Ferrer&lt;/cite&gt;&lt;br /&gt;
Una base de datos en memoria (también denominada base de datos embebida) es una base de datos que corre completamente en la memoria principal, sin utilizar el disco duro. Por lo general, es creada cuando un proceso comienza, se ejecuta embebida dentro del proceso, y es destruida cuando el proceso termina.&lt;/p&gt;
&lt;p&gt; A primera vista una idea tan bestia parece ridícula. Los dos objetivos principales de la mayor parte de bases de datos son persistir la información entre invocaciones del proceso y manejar el acceso concurrente a datos entre procesos. Las bases de datos en memoria no cumplen ninguno de estos objetivos – ¿ Cuál es su utilidad?&lt;/p&gt;
&lt;p&gt;El caso más común en el que las he usado recientemente es para pruebas. Cuando se desarrolla una aplicación empresarial, las pruebas que atacan a la base de datos pueden consumir mucho tiempo cuando se ejecutan las baterías de pruebas. En estos casos, emplear una base de datos en memoria puede tener un efecto de un orden de magnitud que reduce tiempos de construcción radicalmente. Ya que a la mayor parte de los ThoughtWorkers se les da un aviso si no han tenido una barra verde recientemente, esta arquitectura es un hecho diferenciador.&lt;/p&gt;
</description>
 <category domain="http://www.agile-spain.com/agilev2/tema/desarrollo">Desarrollo</category>
 <category domain="http://www.agile-spain.com/agilev2/tema/personajes">Personajes</category>
 <pubDate>Mon, 28 Nov 2005 07:44:02 +0000</pubDate>
</item>
<item>
 <title>Cómo escribir código inmantenible</title>
 <link>http://www.agile-spain.com/agilev2/como_escribir_codigo_inmantenible</link>
 <description>&lt;p&gt;Una de las prácticas común a las metodologías ágiles es escribir código fácilmente mantenible. Una gran frase al respecto es &lt;i&gt;Cualquier desarrollador puede escribir código que una máquina pueda entender, pero sólo los buenos desarrolladores saben escribir código que otro desarrollador sepa entender&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Pues bien, según Roedy Green esta teoría está equivocada. Si te has encontrado casos de nombres de variables de una sóla letra, métodos con nombres tan explicativos como doIt, handle, etc., uso de la notación húngara, comentarios camuflados o líneas de código que no hacen nada, entonces su desarrollador estaba siguiendo los &lt;a href=&quot;http://thc.org/root/phun/unmaintain.html&quot;&gt;consejos para escribir código inmantenible&lt;/a&gt; que le asegurarán ser siempre imprescindible. Una lectura muy recomendable  &lt;tt&gt;;)&lt;/tt&gt;&lt;/p&gt;
</description>
 <category domain="http://www.agile-spain.com/agilev2/tema/desarrollo">Desarrollo</category>
 <pubDate>Mon, 21 Nov 2005 23:06:55 +0000</pubDate>
</item>
<item>
 <title>Como medir la cohesión y el acoplamiento</title>
 <link>http://www.agile-spain.com/agilev2/como_medir_la_cohesion_y_el_acoplamiento</link>
 <description>&lt;p&gt;Es ampliamente conocido que las clases de un buen diseño orientado a objetos deben tener una alta cohesión y un bajo acoplamiento. Sin embargo ¿Cómo pueden medirse estos índices? Samudra Gupta nos presenta varias métricas con este objetivo en el artículo &lt;a href=&quot;http://javaboutique.internet.com/tutorials/coupcoh/&quot;&gt;Coupling and Cohesion: The Two Cornerstones of OO Programming&lt;/a&gt;. Al final del artículo también hace una interesante introducción a la ley de Demeter.&lt;/p&gt;
&lt;p&gt;En el mundo de las metodologías ágiles las métricas juegan un papel menos importante que en las metodologías tradicionales. El motivo es el riesgo de tomarlas demasiado en serio e ignorar otros factores más subjetivos pero también válidos. Sin embargo, siguen considerando interesante conocerlas y suelen servir como un complemento útil para evaluar y mejorar diseños.&lt;/p&gt;
</description>
 <category domain="http://www.agile-spain.com/agilev2/tema/desarrollo">Desarrollo</category>
 <pubDate>Sat, 12 Nov 2005 12:12:18 +0000</pubDate>
</item>
</channel>
</rss>
