<?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>Codigo Manso &#187; Ingenieria del Software</title>
	<atom:link href="http://www.codigomanso.com/es/category/ingenieria-del-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codigomanso.com</link>
	<description>Programación, informática y tecnología</description>
	<lastBuildDate>Sun, 21 Aug 2011 10:54:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nueva web para jugar a juegos Flash</title>
		<link>http://www.codigomanso.com/es/2010/02/new-web-for-playing-flash-games/</link>
		<comments>http://www.codigomanso.com/es/2010/02/new-web-for-playing-flash-games/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 10:07:12 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Ingenieria del Software]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[adsense]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[nextgamegen]]></category>
		<category><![CDATA[shareusers]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=837</guid>
		<description><![CDATA[
Hace tiempo que tenía en mente hacer una web de juegos. Al final me he decantado por juegos en Flash.
La verdad es que últimamente ando bastante liado con otras cosas que no tienen nada que ver con los juegos, pero este Sábado pasado, a medio día, me puse un reto personal. Me dije: &#8220;A ver [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.nextgamegen.com/"><img class="size-full wp-image-838 aligncenter" title="Logo de NextGameGen" src="http://www.codigomanso.com/wp-content/uploads/2010/02/nextgamegen-logo-black.jpg" alt="" width="432" height="68" /></a></p>
<p style="text-align: justify;">Hace tiempo que tenía en mente hacer una web de juegos. Al final me he decantado por juegos en Flash.</p>
<p style="text-align: justify;">La verdad es que últimamente ando bastante liado con otras cosas que no tienen nada que ver con los juegos, pero este Sábado pasado, a medio día, me puse un reto personal. Me dije: &#8220;A ver si soy capaz de hacer la web antes de que acabe el fin de semana&#8221;.</p>
<p style="text-align: justify;">Así que, dicho y hecho. Ha nacido <a href="http://www.nextgamegen.com/">NextGameGen</a>.</p>
<p style="text-align: justify;">He hecho toda la web (incluso la parte que se encarga de subir los juegos) entre el Sábado por la tarde (unas 4 horas), el Domingo por la mañana (otras 4 horas) y el Domingo por la tarde/noche (otras 8 horas). Como no podía estar el 100% del tiempo delante del ordenador, cuando estaba era en plan superintensivo.</p>
<p style="text-align: justify;">La verdad es que estoy bastante contento con el resultado. <strong><em>En 16 horas una web de juegos desde cero. </em></strong>Únicamente le he dedicado 45 minutos más hoy, para añadir los botones de compartir en Facebook &amp; amigos, poner algo de publicidad, y corregir 4 bugs tontos.</p>
<p style="text-align: justify;">Sé que hay muchas cosas mejorables (todo llegará), y que hay un par de bugs invisibles para el ojo humano, pero de momento el que quiera ya puede jugar. La web es 100% funcional.</p>
<p style="text-align: justify;">Incluso recomienda algunos juegos relacionados, según el juego al que juegues (el algoritmo es bastante mejorable).</p>
<p style="text-align: justify;">Pues nada más, ahora voy a ver si aumento las visitas de mi web con <a href="http://www.shareusers.com">ShareUsers</a>, que para los que no lo conoceis, es una web cojonuda para intercambiar enlaces de forma gratuita y automática y conseguir muchas más visitas (ya os contaré más sobre esto).</p>
<p style="text-align: justify;">Lo dicho, podéis <a href="http://www.nextgamegen.com/" target="_blank">viciaros un rato en la web de juegos</a>, y aquí estoy para cualquier crítica o sugerencia que querais hacer <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/02/new-web-for-playing-flash-games/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CocoManso: FIXME y TODO</title>
		<link>http://www.codigomanso.com/es/2010/02/cocomanso-fixme-y-todo/</link>
		<comments>http://www.codigomanso.com/es/2010/02/cocomanso-fixme-y-todo/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 19:23:44 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Ingenieria del Software]]></category>
		<category><![CDATA[fixme]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[todo]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=828</guid>
		<description><![CDATA[

Hola amigos, soy Coco y hoy os voy a contar la diferencia entre poner un comentario con FIXME y poner un comentario usando TODO.
 


FIXME: debe ser usado cuando es un hack, una constante hardcodeada o algo crítico, y que debe ser eliminado antes del próximo release. Normalmente los FIXME, bien usados, sirven para avanzar [...]]]></description>
			<content:encoded><![CDATA[<div>
<img class="size-full wp-image-829" style="float: left; margin-right: 8px; margin-bottom: 4px; " title="CocoManso" src="http://www.codigomanso.com/wp-content/uploads/2010/02/grover.jpg" alt="" width="250" height="223" /></p>
<p style="text-align: justify;">Hola amigos, soy Coco y hoy os voy a contar la diferencia entre poner un comentario con FIXME y poner un comentario usando TODO.</p>
<div style="clear:both;"> </div>
</div>
<ul>
<li><strong>FIXME:</strong> debe ser usado cuando es un hack, una constante hardcodeada o algo crítico, y que debe ser eliminado antes del próximo release. Normalmente los FIXME, bien usados, sirven para avanzar en el desarrollo y prototipado de la aplicación.</li>
<li><strong>TODO:</strong> debe ser usado cuando supone una mejora, o cuando hay que realizar algún cambio mas o menos complejo, pero uno no tiene ganas de hacerlo en ese momento (hay gente que abusa mucho de esto, y mejor no miro a nadie).</li>
</ul>
<p style="text-align: justify;">Recuerda, si es algo crítico y el software no puede ser publicado sin corregir eso, usa FIXME, por el contrario, si el comentario que pones, no afecta para nada el buen funcionamiento del programa, y el programa va a seguir funcionando bien, puedes estar cómodo dejando el comentario como TODO.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2010/02/cocomanso-fixme-y-todo/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Deployment continuo: el caso práctico</title>
		<link>http://www.codigomanso.com/es/2009/05/deployment-continuo-el-caso-practico/</link>
		<comments>http://www.codigomanso.com/es/2009/05/deployment-continuo-el-caso-practico/#comments</comments>
		<pubDate>Tue, 05 May 2009 18:50:57 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Ingenieria del Software]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[despliegue]]></category>
		<category><![CDATA[despliegue automático]]></category>
		<category><![CDATA[despliegue continuo]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=663</guid>
		<description><![CDATA[Por ver un poco cual sería el caso práctico de un sistema automático y continuo para hacer deployments (o despliegues), voy a compartir lo que estuve pensando el otro día.
Antes de nada debo decir que sigo sin haberlo implementado, así que hablo de ideas que tengo en mente, y no de un caso real.
Aunque en [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Por ver un poco cual sería el caso práctico de un sistema automático y continuo para hacer deployments (o despliegues), voy a compartir lo que estuve pensando el otro día.</p>
<p style="text-align: justify;">Antes de nada debo decir que sigo sin haberlo implementado, así que hablo de ideas que tengo en mente, y no de un caso real.</p>
<p style="text-align: justify;">Aunque en el artículo anterior hacía una <a href="http://www.codigomanso.com/es/2009/05/deployment-continuos/" target="_self">introducción más detallada al tema de deployment/despliegue continuo</a>, vuelvo a repetir el concepto:</p>
<p style="padding-left: 30px; text-align: justify;"><strong>El concepto en plan radical, es que cada vez que se haga un cambio en el código, automáticamente tu servidor de producción se actualice.</strong></p>
<p style="text-align: justify;">Esto es un poco hardcore, lo sé, porque muchas veces se introducen bugs, y se molesta a los usuarios innecesariamente, así que este sistema debe ser lo suficientemente inteligente para tratar de evitar esto en la mayor medida posible. Es mejor post-poner un par de dias un release, que molestar a cientos de usuarios con un bug.</p>
<p style="text-align: justify;">Una vez dicho esto, y partiendo de la base de que ya se tiene un SCV (sistema de control de versiones), un sistema de build y un sistema de tests (tests unitarios, de integración y tests de casos de uso sobre la web, por ejemplo con selenium), el procedimiento para hacer despliegues continuos podría ser el siguiente:</p>
<ul style="text-align: justify;">
<li>Dado un nuevo build
<ul>
<li>Si los entregables no se han generado correctamente, fin de la historia, no hay deployment posible</li>
<li>Si algún test (test unitario, de integración, de casos de uso, o de lo que sea) ha fallado o no se ha podido realizar, no hay más que hablar, tampoco hay deployment</li>
</ul>
</li>
<li>Si el build está bien, entonces se crea un backup de todo el servidor de producción (bases de datos, scripts, etc&#8230;)<br />
(La idea de este paso, como se verá luego, no es tanto hacer un backup real, como tener una replica similar a producción)</p>
<ul>
<li>Si hubiera algún fallo generando los backups, nuevamente fin de la historia</li>
</ul>
</li>
<li>Una vez se tiene el backup, hay que descargarlo y verificar que funciona. Esto significa, idealmente, hacer un clon de producción, es decir:
<ul>
<li>Descargar el backup que hemos creado en una máquina virtual &#8220;limpia&#8221;</li>
<li>Instalar el backup (tanto código como datos)</li>
<li>Pasar un subconjunto de tests, lo suficientemente grande para saber que la instalación ha funcionado, y lo suficientemente pequeño para que este paso no tarde demasiado (quizá algunos tests unitarios y varios casos de uso)</li>
</ul>
</li>
<li>En este punto, debemos usar el último build que hemos obtenido en el primer paso y&#8230;:
<ul>
<li>actualizar el clon de producción</li>
<li>pasar nuevamente todos los tests de este nuevo build sobre ese clon de producción y ver que todo funciona bien (si algo falla, el nuevo build no se podrá desplegar y tendremos que mirar que ha ocurrido). Estos tests, deberían incluir:
<ul>
<li>tests unitarios</li>
<li>tests de integración</li>
<li>tests de consistencia de tablas (ver que la base de datos resultantes es la que tiene que ser)</li>
<li>tests de consistencia de datos (ver que no nos hemos pulido datos que estaban antes en producción)</li>
</ul>
</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Llegados a este punto, si todo ha funcionado,  sabemos que nuestro build puede instalarse por encima de un clon de producción y pasar TODOS los tests, es decir, que si el propio proceso de clonar producción funciona, repetir este proceso en producción debería nuevamente ser determinista y darnos el mismo resultado (usease, que nuestro build funcione y no cause problemas en producción).</p>
<p style="text-align: justify;">Así pues, los pasos a realizar ahora por nuestro sistema automático de deployment, serían:</p>
<ul style="text-align: justify;">
<li>Subir el build a producción (de hecho, este paso se puede ir haciendo en paralelo a los pasos anteriores)
<ul>
<li>Este paso incluye descomprimir el build y prepararlo (si es que hay que preparar algo), pero sin tocar nada que pueda afectar a producción aún</li>
</ul>
</li>
<li>Poner producción en modo &#8220;estamos actualizando, disculpen las molestias&#8221;</li>
<li>Hacer el backup real de las bases de datos y/o cualquier archivo que pueda ser susceptible de ser cambiado (idealmente backup de todo)</li>
<li>Ejecutar el script de auto-upgrade que tengamos, y actualizar tanto las bases de datos como el sistema de ficheros (tal cual se ha hecho en el clon de producción)</li>
<li>Desactivar el mensaje de &#8220;estamos actualizando&#8221;</li>
<li>Mandar un e-mail a quien corresponda avisando de que el sitio ha sido actualizado <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Y finalmente lanzar los tests para verificar que efectivamente todo funciona bien
<ul>
<li>Si por un casual alguno de estos tests falla, es que algo en nuestro sistema de clonado de producción/autodeployment está podrido, y nos dejará bien  jodidos. Nótese que tener un fallo en este punto es igual de chungo que haber hecho un release como los de toda la vida y ver que algo ha fallado, indicaría que algo en nuestro sistema de build/test está igualmente podrido&#8230; Este tipo de fallos no debería de ser normal.</li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Nótese que si algo falla en estos pasos (sobre producción), el sistema debería ser capaz de reestablecerse con el último backup realizado.</p>
<p style="text-align: justify;">Después de haber comentado todo esto, también hay que tener en cuenta, que algunos pasos dependen mucho del tipo de sitio que se tiene, porque no es lo mismo hacer un backup de 50 megas, que de 5 teras, o de 2 peta bytes.  Si el volumen de información es muy grande, pues habrá que depender de los otros sistemas de backup que se dispongan, y usarlos convenientemente, con el fin de minimizar los tiempos de deployment.</p>
<p style="text-align: justify;">En este tipo de casos, tampoco se podrá realizar un clon de producción para validar que el upgrade funciona, pero en vez de eso se puede coger sólo un subconjunto de los datos de producción (por ejemplo 1000 entradas, o 1 millón, yo que se). El tema es validar que todo funciona antes de subirlo.</p>
<p style="text-align: justify;">Imagino que también cambia mucho el tema de si se trata de un servidor único, o son varios servidores. En el caso de que sean varios los servidores a los que afecta el  nuevo release, es posible que sea mejor introducir el nuevo build en uno de ellos, y si después de X tiempo no hay incidencias, que se propage a los demás.</p>
<p style="text-align: justify;">Otra cosa que me gustaría comentar antes de finalizar el artículo, es que no quiero que se me malinterprete. En un caso práctico no tiene sentido hacer actualizaciones en el servidor para cada submit que se hace en el sistema de control de versiones.  Entre otras cosas, porque tampoco todos los tests pueden ser automáticos, a veces combiene hacer tests manuales. Así que probablemente <strong><em>lo que realmente tiene sentido y valor, es que para cada build se sepa si puede ser instalado en producción sin problemas o no</em></strong> (y para eso poder generar un pseudo-clon de producción es esencial), <em><strong>así como disponer de un botón que te haga deployments automáticos</strong></em>. Incluso puede tener sentido, que el sistema haga los deployments una vez al día o cada dos días, o incluso cada semana, durante las horas de menos visitas.</p>
<p style="text-align: left;">Para finalizar, debería quedar claro que <strong>cada cual debe adaptar estas ideas a sus recursos (sobretodo de tiempo) y sus necesidades, </strong>y sobretodo que los sistemas de despliegue automático y contínuo se pueden (y probablemente se deben) ir construyendo poco a poco.</p>
<p style="text-align: left;">Ale, pues nada más, espero vuestras críticas y comentarios, si es que a alguien le quedan fuerzas después de haber leido esta entrada <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: left;"><em>PD: puff, creo que voy a tardar un par de días en traducir esto a inglés&#8230; madre de Dios, que tocho que me ha quedado</em><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/05/deployment-continuo-el-caso-practico/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Deployment continuo</title>
		<link>http://www.codigomanso.com/es/2009/05/deployment-continuos/</link>
		<comments>http://www.codigomanso.com/es/2009/05/deployment-continuos/#comments</comments>
		<pubDate>Sat, 02 May 2009 11:46:18 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Ingenieria del Software]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[builds continuos]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[deployment continuo]]></category>
		<category><![CDATA[deployments automaticos]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=655</guid>
		<description><![CDATA[Hace algún tiempo leí en el blog de Eric Ries acereca de como su empresa hace deployment continuos.
Deployment es una palabra que no me atrevo a traducir, porque la he usado tanto en inglés, que ninguna de las traducciones que se me ocurren me suena bien (acepto sugerencias).
Deployment es el proceso por el cual se [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hace algún tiempo leí en el blog de <a href="http://startuplessonslearned.blogspot.com" target="_blank">Eric Ries</a> acereca de como su empresa hace <a href="http://startuplessonslearned.blogspot.com/2009/02/continuous-deployment-and-continuous.html" target="_self">deployment continuos</a>.</p>
<p style="text-align: justify;">Deployment es una palabra que no me atrevo a traducir, porque la he usado tanto en inglés, que ninguna de las traducciones que se me ocurren me suena bien (acepto sugerencias).</p>
<p style="text-align: justify;">Deployment es el proceso por el cual se saca el nuevo producto. Por ejemplo, si tu tienes subida una web al servidor y actualizas a la última versión, esa actualización sería el deployment.</p>
<p style="text-align: justify;">Digamos que el deployment continuo, es el siguiente paso lógico tras implantar un sistema de builds continuos. Es decir, partiendo de un build válido (que ha sido generado correctamente y ha pasado todos los tests), el siguiente paso asumiendo que todo ha funcionado bien, sería subir los cambios al servidor para que todo el mundo pueda disfrutar de los cambios que hemos realizado.</p>
<p style="text-align: justify;">Por supuesto, antes de actualizar el servidor, tenemos que estar seguros de que todo va a funcionar bien, no queremos subir algo que cause o pueda causar molestias a los usuarios, por eso va a ser importante disponer de todo tipo de tests que validen lo que hemos hecho.</p>
<p style="text-align: justify;">Las ventajas de subir los cambios continuamente son varias, pero yo destaco estas tres:</p>
<ul>
<li>los usuarios de tu sitio web van a disfrutar antes de las últimas mejoras y nuevas funcionalidades</li>
<li>vas a tener feedback de tus usuarios al poco de haber implementado las cosas, y no 3 meses más tarde, con lo que podrás seguir mejorando o corrigiendo las cosas</li>
<li>tendrás un proceso automatizado de actualizar el servidor, con lo que ahorrarás tiempo a largo plazo</li>
</ul>
<p style="text-align: justify;">Entre las desventajas más importantes, yo destacaría que hacer todo esto tiene un coste y un tiempo asociados, aunque lo he estado pensando y no es tan elevado como uno pueda imaginar, si se están haciendo las cosas bien.</p>
<p style="text-align: justify;">Seguramente me dejo cosas en el tintero, tanto en ventajas como en desventajas, pero el concepto me parece excelente, y creo que hoy día puede marcar la diferencia entre unas webs y otras.</p>
<p style="text-align: justify;">Finalmente me gustaría comentar que este post ha surgido porque he estado pensando en como implementar esto para el <a href="http://www.artypist.com" target="_self">curso de mecanografía</a> y automatizar así los deployments. De momento aún no lo tengo, pero ya he pensado como podría hacerlo, y seguramente en el siguiente post comparta mis ideas sobre el caso práctico, a ver que os parece.</p>
<p>Enlaces muy recomendables:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Software_deployment">Wikipedia: </a><a href="http://en.wikipedia.org/wiki/Continuous_Integration" target="_self">Continuous Integration</a><a href="http://en.wikipedia.org/wiki/Software_deployment"></a></li>
<li>Blog de Eric Ries: <a href="http://startuplessonslearned.blogspot.com/2009/02/continuous-deployment-and-continuous.html">Continuous Deployment at IMVU: Doing the impossible fifty times a day</a></li>
<li>Blog de Timothy Fitz: <a href="http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/">Continuous Deployment at IMVU: Doing the impossible fifty times a day</a></li>
</ul>
<p>Otros enlaces:</p>
<ul>
<li>Wikipedia: <a href="http://en.wikipedia.org/wiki/Software_deployment">Software Deployment</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/05/deployment-continuos/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>Testeo y tiempo razonable no se llevan bien ¿o si?</title>
		<link>http://www.codigomanso.com/es/2009/02/testeo-y-tiempo-razonable-no-se-llevan-bien-o-si/</link>
		<comments>http://www.codigomanso.com/es/2009/02/testeo-y-tiempo-razonable-no-se-llevan-bien-o-si/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 20:14:41 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Ingenieria del Software]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[black box]]></category>
		<category><![CDATA[ingenieria de software]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[smoke tests]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[tests unitarios]]></category>
		<category><![CDATA[white tests]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/es/?p=525</guid>
		<description><![CDATA[Parece que el artículo de Testing shows the presence of bugs ha generado unos cuantos comentarios  
Entre ellos, Gonzalo dice:
Si habeis trabajado con desarrollo en base a tests no entiendo el comentario de que porque se llevan mal con el tiempo, la verdad.
Los tests ahorran muuuucho tiempo, tanto en la fase de depuración y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Parece que el artículo de <a href="http://www.codigomanso.com/es/2009/01/micropost-testing-shows-the-presence-of-bugs/">Testing shows the presence of bugs</a> ha generado unos cuantos comentarios <img src='http://www.codigomanso.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Entre ellos, <a href="http://www.codigomanso.com/es/2009/01/micropost-testing-shows-the-presence-of-bugs/comment-page-1/#comment-73">Gonzalo dice</a>:</p>
<blockquote style="text-align: justify;"><p>Si habeis trabajado con desarrollo en base a tests no entiendo el comentario de que porque se llevan mal con el tiempo, la verdad.<br />
Los tests ahorran muuuucho tiempo, tanto en la fase de depuración y estabilización de un proyecto como a la hora de añadir funcionalidad.<br />
Y otro punto que los hacen críticos, los tests unitarios salvan proyectos que sin ellos estarían abocados al fracaso.</p></blockquote>
<p style="text-align: justify;">Me doy por aludido, puesto que creo que Gonzalo se refiere al comentario en el que digo:</p>
<blockquote style="text-align: justify;"><p>Testeo y “tiempo razonable” no se suelen llevar bien</p></blockquote>
<p style="text-align: justify;">Así que en vez de un comentario he pensado que sería mejor poner este tema encima de la mesa, y compartir mis ideas sobre el testeo.</p>
<p style="text-align: justify;">Realmente a lo que me refería es que muchas veces no es posible hacer un <strong>buen testeo</strong> o un <strong>testeo exhaustivo</strong> de una determinada funcionalidad en un tiempo razonable.</p>
<p style="text-align: justify;">Mi opinión es que hacer más o menos tests depende siempre del tipo de proyecto. Por poner dos casos extremos, no es lo mismo hacerte un miniprograma para ti, que por ejemplo renombre todos los archivos de un directorio usando algún tipo de patrón, que por ejemplo hacer un programa que va a controlar la trayectoria de un misil.</p>
<p style="text-align: justify;">No sólo depende del tipo de proyecto si no también de los plazos del proyecto y de los recursos con los que se cuente. No es lo mismo un equipo de un desarrollador, que un equipo con 5. Tampoco es lo mismo disponer de 7 meses para hacer un parser de XML, que disponer de 2.</p>
<p style="text-align: justify;">Hay muchos elementos que influyen.</p>
<p style="text-align: justify;">Volviendo a la discusión anterior, sobre que <strong>tests</strong> y <strong>tiempo razonable</strong> no se llevan bien, básicamente esto significa que si tu proyecto es de andar por casa, tus recursos son limitados o tu tiempo es escaso, probablemente puedas y debas <strong>posponer</strong> <em><strong>algunos</strong></em> tests.</p>
<p style="text-align: justify;">Estoy de acuerdo con Gonzalo con que los <strong>tests traen muchos beneficios</strong>, pero esos beneficios, desde mi punto de vista son <strong>a medio y largo plazo.</strong> A corto plazo los tests beneficiosos son aquellos que te permiten ir desarrollando la aplicación y probando lo que tu crees que van a ser los casos más comunes.</p>
<p style="text-align: justify;">Soy partidario de hacer tests desde el primer momento, de  hecho, en otro comentario mío se puede leer:</p>
<blockquote style="text-align: justify;"><p>Mi opinión (al menos es lo que yo hago) es que <strong>hay que ir haciendo tests para probar las cosas conforme se desarrolle</strong><br />
[...]<br />
cuando se encuentra un bug (o bien por uno mismo, o por un usuario), mi punto de vista es que <strong>hay que añadir un test-case que lo reproduzca</strong></p></blockquote>
<p style="text-align: justify;">Se pueden escribir páginas y páginas sobre el testeo de software, sobre metodologias de programación, sobre si hay o no que llegar al 100% de cobertura de código&#8230; el caso es que escribir un buen artículo que cubra todos estos aspectos en un tiempo razonable, tampoco lo veo posible&#8230;</p>
<p style="text-align: center;"><strong>¿Haceis tests a menudo? ¿lo considerais perder el tiempo?</strong></p>
<p style="text-align: center;"><strong>¿Cuales son vuestras prácticas habituales?</strong></p>
<p style="text-align: left;">Como siempre, vuestras ideas y opiniones son bienvenidas en los comentarios y/o posts en vuestros respectivos blogs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2009/02/testeo-y-tiempo-razonable-no-se-llevan-bien-o-si/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Ingenieria del Software: la universidad</title>
		<link>http://www.codigomanso.com/es/2008/11/ingenieria-del-software-la-universidad/</link>
		<comments>http://www.codigomanso.com/es/2008/11/ingenieria-del-software-la-universidad/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 10:27:03 +0000</pubDate>
		<dc:creator>Pau Sanchez</dc:creator>
				<category><![CDATA[Ingenieria del Software]]></category>

		<guid isPermaLink="false">http://www.codigomanso.com/?p=46</guid>
		<description><![CDATA[Resulta que en mi paso por la universidad aprendí 0 sobre ingenieria del software. Más concretamente Ingenieria del Software e Ingenieria del Software 2 no me aportaron nada, eran dos asignaturas que yo decía, menuda castaña de asignaturas. Las aprobé a la primera, el problema no fue aprobarlas, o no saber cuales eran los contenidos, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Resulta que en mi paso por la universidad aprendí 0 sobre ingenieria del software. Más concretamente Ingenieria del Software e Ingenieria del Software 2 no me aportaron nada, eran dos asignaturas que yo decía, menuda castaña de asignaturas. Las aprobé a la primera, el problema no fue aprobarlas, o no saber cuales eran los contenidos, era que se daban por gente, que probablemente me equivoque, pero en la vida habian hecho un desarrollo de software aplicando las metodologias que predicavan. Y si lo habian hecho, que forma más mala de explicar.</p>
<p style="text-align: justify;">La verdad es que los conceptos de Ingenieria del Sofware son bastante sencillos. Cómo planificar proyectos (principalmente usando <a href="http://es.wikipedia.org/wiki/Diagrama_de_Gantt" target="_blank">diagramas de Gantt</a>),  qué tipos de herramientas utilizar (sistemas de control de versiones, sistemas de build, sistemas de bugtracking, herramientas para hacer diseño UML&#8230;), y metodologias para desarrollar (XP, agil, &#8230; documentar codigo, hacer tests de caja negra, de caja blanca, &#8230;), y probablemente alguna otra cosa que no me viene a la cabeza.</p>
<p style="text-align: justify;">Por suerte o por desgracia, acabé haciendo las prácticas en <a title="Trymedia Systems" href="http://www.trymedia.com" target="_blank">Trymedia Systems S.L.</a> (empresa en la que finalmente me quedé trabajando 4 años, y que durante ese tiempo pasó a ser propiedad de <a href="http://www.macrovision.com" target="_blank">Macrovision Corp.</a> y actualmente de <a title="Real Networks" href="http://www.real.com" target="_blank">Real Networks</a>). Afortunadamente, mi paso por Trymedia me ha acabado dando una buena perspectiva de ingenieria del software.  Por lo que he hablado con otra gente que iba conmigo a la universidad, creo que actualmente siguen sin haber muchas empresas (al menos en España) donde las cosas se estén haciendo &#8220;bien&#8221; (desde el punto de vista de ingenieria del software).</p>
<p style="text-align: justify;">Volviendo a la universidad y las asignaturas de Ingenieria del Software, el problema de la universidad no era que no dieran los conceptos en teoria, la de conceptos que se veían en teoria; el verdadero problema era que las prácticas estaban mal planteadas, y claro si puedes sacar buena nota en las prácticas sin siquiera aplicar ninguna cosa vista en teoria, pues me parece que algo estaba mal diseñado en esa asignatura. Claro, luego en las prácticas cada cual se sacaba las prácticas a su manera, y acababas pensando: &#8220;menuda chusta de asignatura, aparte de darle trabajo a estos profesores, esto no sirve para nada&#8221;.</p>
<p style="text-align: justify;">Nada más lejos de la realidad&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.codigomanso.com/es/2008/11/ingenieria-del-software-la-universidad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

