<?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>ENDER SOFTWARE, desarrollo de software a medida &#187; Domingo</title>
	<atom:link href="http://www.ender.es/author/domingo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ender.es</link>
	<description>Factoría de software</description>
	<lastBuildDate>Wed, 14 Jul 2010 10:36:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>La programación: ¿negocio, artesanía o arte?</title>
		<link>http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/</link>
		<comments>http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 13:59:37 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=821</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Hace unos meses tuve una conversación muy interesante con un amigo, gran experto en arte y que anda metido desde hace años en temas de arte digital. Claro, a él, la<a href="http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/06/la-programacion-¿negocio-artesania-o-arte/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;t=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;title=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F&amp;srcUrl=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;srcTitle=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F&amp;snippet=Hace%20unos%20meses%20tuve%20una%20conversaci%C3%B3n%20muy%20interesante%20con%20un%20amigo%2C%20gran%20experto%20en%20arte%20y%20que%20anda%20metido%20desde%20hace%20a%C3%B1os%20en%20temas%20de%20arte%20digital.%20Claro%2C%20a%20%C3%A9l%2C%20la%20programaci%C3%B3n%20le%20interesa%20principalmente%20como%20modo%20de%20expresi%C3%B3n%2C%20y%20me%20estuvo%20contando%20iniciativas%20y%20cosas%20que%20hace%20la%20gente%20para%20ex" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;title=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F&amp;summary=Hace%20unos%20meses%20tuve%20una%20conversaci%C3%B3n%20muy%20interesante%20con%20un%20amigo%2C%20gran%20experto%20en%20arte%20y%20que%20anda%20metido%20desde%20hace%20a%C3%B1os%20en%20temas%20de%20arte%20digital.%20Claro%2C%20a%20%C3%A9l%2C%20la%20programaci%C3%B3n%20le%20interesa%20principalmente%20como%20modo%20de%20expresi%C3%B3n%2C%20y%20me%20estuvo%20contando%20iniciativas%20y%20cosas%20que%20hace%20la%20gente%20para%20ex&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F+-+http://b2l.me/5rur3&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;title=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>Hace unos meses tuve una conversación muy interesante con un amigo, gran experto en arte y que anda <a title="Medialab" href="http://medialab-prado.es/" target="_blank">metido</a> desde hace años en temas de arte digital. Claro, a él, la programación le interesa principalmente como modo de expresión, y me estuvo contando iniciativas y cosas que hace la gente para experimentar&#8230; por ejemplo, la <a title="virus como arte" href="http://www.digitalcraft.org/?artikel_id=244" target="_blank">programación de virus como arte digital</a>, o como experimentos de <a title="los virus como vida digital" href="http://www.proyecto-biopus.com.ar/textos/Emiliano_Causa__Los_virus_y_el_arte.pdf" target="_self">vida digital</a>.</p>
<p>Este tipo de conversaciones son siempre interesantes, porque te ayudan a ver tu profesión con un poco de perspectiva, y creo que también te permiten descubrir por qué haces alguna de las cosas que haces. Me explico:</p>
<p>Interesándose por el tipo de empresa que somos, le explicaba que nuestra forma de ver Ender no ha sido nunca la de una empresa grande&#8230;<a href="http://www.ender.es/wp-content/uploads/2010/06/IMAG0014.jpg"><img class="alignright size-medium wp-image-823" title="programación y artesanía" src="http://www.ender.es/wp-content/uploads/2010/06/IMAG0014-300x200.jpg" alt="programación y artesanía" width="300" height="200" /></a>nosotros nunca hemos tenido el objetivo de convertirnos en una gran consultora, sino más bien nos hemos visto siempre como un taller de software; nos encontramos más cerca de un despacho de arquitectura que de Microsoft o de SAP.</p>
<p>Nos preocupa más la mejora de nuestros procesos de desarrollo, la selección de las mejores tecnologías y el ser expertos en nuestro trabajo que utilizar las tecnologías más populares o crecer en facturación de forma rápida. Por eso creo que somos un negocio, no una empresa, para nosotros son más importantes las cosas que hacemos que el dinero que ganamos.</p>
<p>La visión de mi amigo de la programación (o la parte de la programación que le interesa, mejor dicho) se basa en la capacidad de experimentar y expresar, de utilizar el software como un lenguaje que te ayude a explicar lo que sientes o cómo ves el mundo; es decir, la programación como arte. Desde este punto de vista, el dinero no tiene importancia&#8230; no haces las cosas para ganar dinero, sino porque lo necesitas como medio de expresión.</p>
<p>El punto de vista empresarial es exactamente el contrario. No te interesa especialmente lo que haces, y tu preocupación por mejorar los procesos tiene como objetivo ser más productivo y generar más negocio. Es el punto de vista de las grandes consultoras, en las que el fin justifica en mayor o menor medida los medios que se utilizan&#8230; No importa la tecnología salvo desde el punto de vista de la productividad o de lo que el cliente considere &#8216;lo mejor&#8217;. Esto es lo que hace que los programadores de grandes empresas trabajen una gran cantidad de horas al día, y que a veces  la calidad de los desarrollos sea algo cuestionable.</p>
<p>En Ender buscamos un punto de vista intermedio&#8230; sabemos que tenemos que ganar dinero para vivir, y nos encantaría hacernos ricos, como a todos (creemos que, como lo que hacemos lo hacemos bien, en algún momento llegaremos). Sin embargo, nos preocupa más hacer bien el trabajo, o más bien estar satisfechos con el trabajo que hacemos, que el importe del proyecto en el que trabajamos.</p>
<p>A esta situación intermedia, en la que no renunciamos al interés económico, pero poniendo por delante  el trabajo que hacemos, lo llamo artesanía. No es la <a title="Artesanía" href="http://es.wikipedia.org/wiki/Artesan%C3%ADa" target="_blank">definición ortodoxa</a>, ya que no hacemos las cosas con las manos ni somos un oficio tradicional, pero a falta de una palabra mejor, es la que utilizamos&#8230; no hacemos software por amor al arte ni por el amor al dinero: hacemos software por el amor al software.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/06/la-programacion-¿negocio-artesania-o-arte/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;t=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;title=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F&amp;srcUrl=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;srcTitle=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F&amp;snippet=Hace%20unos%20meses%20tuve%20una%20conversaci%C3%B3n%20muy%20interesante%20con%20un%20amigo%2C%20gran%20experto%20en%20arte%20y%20que%20anda%20metido%20desde%20hace%20a%C3%B1os%20en%20temas%20de%20arte%20digital.%20Claro%2C%20a%20%C3%A9l%2C%20la%20programaci%C3%B3n%20le%20interesa%20principalmente%20como%20modo%20de%20expresi%C3%B3n%2C%20y%20me%20estuvo%20contando%20iniciativas%20y%20cosas%20que%20hace%20la%20gente%20para%20ex" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;title=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F&amp;summary=Hace%20unos%20meses%20tuve%20una%20conversaci%C3%B3n%20muy%20interesante%20con%20un%20amigo%2C%20gran%20experto%20en%20arte%20y%20que%20anda%20metido%20desde%20hace%20a%C3%B1os%20en%20temas%20de%20arte%20digital.%20Claro%2C%20a%20%C3%A9l%2C%20la%20programaci%C3%B3n%20le%20interesa%20principalmente%20como%20modo%20de%20expresi%C3%B3n%2C%20y%20me%20estuvo%20contando%20iniciativas%20y%20cosas%20que%20hace%20la%20gente%20para%20ex&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F+-+http://b2l.me/5rur3&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/&amp;title=La+programaci%C3%B3n%3A+%C2%BFnegocio%2C+artesan%C3%ADa+o+arte%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/06/la-programacion-%c2%bfnegocio-artesania-o-arte/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Modelo entidad-relación, un ejemplo práctico (II. Horarios)</title>
		<link>http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/</link>
		<comments>http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 10:24:44 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=747</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! En mi último artículo hacía una introducción al proceso de modelado de una base de datos relacional, utilizando como ejemplo el proceso de matriculación de un centro de enseñanza. Siguiendo con<a href="http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;t=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29&amp;srcUrl=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;srcTitle=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29&amp;snippet=En%20mi%20%C3%BAltimo%20art%C3%ADculo%20hac%C3%ADa%20una%20introducci%C3%B3n%20al%20proceso%20de%20modelado%20de%20una%20base%20de%20datos%20relacional%2C%20utilizando%20como%20ejemplo%20el%20proceso%20de%20matriculaci%C3%B3n%20de%20un%20centro%20de%20ense%C3%B1anza.%20Siguiendo%20con%20esa%20l%C3%ADnea%2C%20en%20este%20art%C3%ADculo%20voy%20a%20describir%20c%C3%B3mo%20hacemos%20el%20modelo%20de%20datos%20en%20Bravo%2C%20uno%20de%20nues" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29&amp;summary=En%20mi%20%C3%BAltimo%20art%C3%ADculo%20hac%C3%ADa%20una%20introducci%C3%B3n%20al%20proceso%20de%20modelado%20de%20una%20base%20de%20datos%20relacional%2C%20utilizando%20como%20ejemplo%20el%20proceso%20de%20matriculaci%C3%B3n%20de%20un%20centro%20de%20ense%C3%B1anza.%20Siguiendo%20con%20esa%20l%C3%ADnea%2C%20en%20este%20art%C3%ADculo%20voy%20a%20describir%20c%C3%B3mo%20hacemos%20el%20modelo%20de%20datos%20en%20Bravo%2C%20uno%20de%20nues&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29+-+http://b2l.me/z5gqd&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>En mi último <a title="artículo anterior" href="http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/" target="_self">artículo</a> hacía una introducción al proceso de modelado de una base de datos relacional, utilizando como ejemplo el proceso de matriculación de un centro de enseñanza. Siguiendo con esa línea, en este artículo voy a describir cómo hacemos el modelo de datos en <strong>Bravo</strong>, uno de <a title="Casos de éxito" href="http://www.ender.es/casos-de-exito/" target="_self">nuestros sistemas</a>, en este caso uno especializado en centros de enseñanzas de idiomas. Para una introducción más teórica, podéis echar un vistazo al artículo de la <a title="Modelo entidad-relación" href="http://es.wikipedia.org/wiki/Modelo_entidad-relaci%C3%B3n" target="_blank">wikipedia</a>.</p>
<h1>Caso de uso</h1>
<p>Como en el artículo anterior, lo primero es hacer la descripción de un <a title="caso de uso" href="http://es.wikipedia.org/wiki/Caso_de_uso" target="_blank">caso de uso</a> que nos meta en materia, y nos ayude a entender cuál es la funcionalidad que tenemos que proporcionar (o, en este caso, una descripción de los procesos que tenemos que modelizar). Bueno, en realidad la descripción que hago es más parecida a una <a title="historia de usuario" href="http://www.extremeprogramming.org/rules/userstories.html" target="_blank">historia de usuario</a> de eXtreme Programming que al caso de uso típico de UML, pero nos entendemos&#8230;</p>
<p>Si en el artículo anterior el actor principial del caso de uso es un alumno que acude a la escuela, en este caso es el responsable formativo o Director of studies (<a title="DOS" href="http://www.englishfirst.com/trt/director-of-studies.html" target="_blank">aquí</a> hay una buena descripción del puesto). Es la persona, en un centro de formación, encargada de la elaboración de los horarios, la gestión de las incidencias (que ahora veremos) y la asignación de profesores y aulas a los grupos que se formen.</p>
<p>Su necesidad es la de tener controlados todos los horarios del centro de formación. Es decir, tiene que poder saber dónde está cada profesor en todo momento, qué clases no se han impartido y por qué y saber qué profesores hay disponibles y qué aulas están libres en un momento determinado.</p>
<p>También necesita saber cuántas horas ha trabajado cada profesor en un mes y cuántas horas un profesor tenía que haber trabajado, y el motivo de las cancelaciones.</p>
<p>Así, el director de estudios (DOS, de aquí en adelante) recibe la petición de formar un grupo nuevo para uno de los cursos definidos en el ejemplo anterior, porque se han matriculado muchos alumnos y no hay plazas suficientes. El DOS entonces primero decide el horario que tendrá el grupo. En el caso de este ejemplo, el curso para el que hay que crear el grupo define 3 horas por semana (es lo que se llama un curso extensivo), que se impartirán Lunes, Miércoles y Viernes de 19:00 a 20:00. Con esta información definida, el DOS necesita buscar un profesor que esté disponible en ese horario, y un aula que también lo esté.  Una vez localizada toda la información necesaria para montar el horario, hay dejar anotado el nombre de los alumnos que asistirán a este grupo.</p>
<p>Con toda esta información definida, el grupo puede empezar. Normalmente, se le proporciona al profesor a principio de mes una <strong>hoja de asistencia</strong>, que es un informe en el que se detallan el horario de cada grupo con sus alumnos, para que el profesor pueda hacer un seguimiento de la asistencia de los alumnos y de las incidencias que puedan aparecer.</p>
<p>Una vez el grupo ha comenzado, y los alumnos están asistiendo a clase, al director de estudios se le pueden presentar varias situaciones que tiene que manejar:</p>
<ol>
<li>El <strong>grupo cambia de profesor</strong>, de horario o de aula. Quizá porque el profesor se vaya de la empresa o por la razón que sea, de vez en cuando hay que cambiar el profesor de un grupo. Sin embargo, a la hora de aplicar este cambio es importante tener en cuenta que debemos mantener la información histórica. Es decir, cuando haya un cambio de horario debemos saber qué profesor había antes y cuál hay ahora, y cuándo se produjo el cambio. Para el cálculo de total de horas trabajadas, es imprescindible.</li>
<li><strong>Entran alumnos nuevos, u otros dejan el grupo</strong>, cuando los alumnos se dan de alta y se incorporan al grupo, o quizá cuando un alumno cambia de grupo porque el horario le viene mejor. Como en el caso anterior, tendríamos que saber por qué grupos ha pasado el alumnos y cuándo se ha incorporado a cada grupo.</li>
<li>Una <strong>clase no se imparte</strong>, por ejemplo porque el profesor se ha puesto enfermo y no se ha encontrado sustituto a tiempo, o porque el centro estaba cerrado. En este caso, tenemos que saberlo, porque el nº de horas trabajadas por el profesor tendrá que cambiar, y hay algunos casos (cuando se ha contratado un nº de horas de formación concreto) en los que esa clase debe recuperarse en otro momento, ya sea otro día de la semana o quizá alargando la duración del grupo un poco.</li>
<li>Un<strong> profesor sustituye a otro</strong>. Es el caso en el que un profesor se pone enfermo, o se ha cogido un día libre, y otro profesor le sustituye. En este caso tenemos que saber quién tenía que dar la clase (ha impartido una hora menos) y quién ha dado la clase en realidad (hay impartido una hora más).</li>
<li>Un <strong>grupo se cierra</strong>. Se dan de baja todos los alumnos o (lo que es más común), se dan de baja tantos alumnos que no compensa mantener el grupo abierto, así que se reúnen dos grupos con pocos alumnos y se crea un grupo con un nº de alumnos más acorde con las necesidades tanto del centro como de los propios alumnos.</li>
</ol>
<h1>Descripción de las entidades</h1>
<p>Después de la descripción del proceso, detallo las entidades (tablas) que utilizamos para m0delizarlo:</p>
<ul>
<li><strong>Cursos:</strong> podéis ver la descripción en el <a title="matriculación" href="http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/" target="_blank">artículo anterior</a>.</li>
<li><strong>Profesores: </strong>el personal que imparte las clases.</li>
<li><strong>Grupos</strong>: La oferta de horarios y días entre los que los alumnos pueden elegir para asistir a clase, dentro de cada curso.</li>
<li><strong>Horarios: </strong>Dentro de cada grupo, tenemos que almacenar su horario (que puede tener una estructura compleja, por ejemplo: Lunes y Miércoles de 19:00 a 20:00 y Viernes de 13:00 a 14:00, es más común de lo que parece). Además, hay que almacenar el historial de horarios por los que ha pasado el grupo, incluyendo los profesores.</li>
<li><strong>Clases:</strong> Cada uno de los días de clase dentro del horario del grupo. Por ejemplo, si tenemos un horario Lunes de 19:00 a 20:00, entre el 1 y el 30 de Abril, tendrá que haber un registro para cada Lunes entre esas dos fechas, para que después podamos gestionar si las clases se han impartido o no, cada una por separado.</li>
<li><strong>Tipos de tarea: </strong>Hay situaciones en las que es conveniente diferenciar qué se hace en los horarios del grupo. Podemos tener grupos de formación, como los que se describen en todo el artículo, pero también podemos tener grupos que gestionen las tareas administrativas de los profesores (preparación de clases, etc.) o incluso la agenda del personal no docente, simplemente diferenciando por tipo de tarea.</li>
<li><strong>Tipos de cancelación:</strong> Necesitamos saber cuando una clase no se imparte, así que nos hará falta una gestión de motivos de cancelación, y por tanto una entidad que los defina.</li>
<li><strong>Alumnos:</strong> ya la vimos en el artículo anterior.</li>
<li><strong>Alumnos en grupos:</strong> Tenemos que almacenar la información de qué alumnos están apuntados a qué grupos y, además, nos hace falta saber, según el caso de uso, cuándo entró y cuándo salió cada alumno de su grupo.</li>
<li><strong>Asistencia</strong>: Para cada una de las clases, tenemos que saber qué alumnos estaban apuntados a ella, y para cada uno de ellos, si asistió a clase o no.</li>
</ul>
<p>Gráficamente:</p>
<p><a rel="attachment wp-att-749" href="http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/modelo-grupos-2/"><img class="size-full wp-image-749 alignleft" title="modelo grupos" src="http://www.ender.es/wp-content/uploads/2010/04/modelo-grupos1.png" alt="modelo grupos" width="747" height="620" /></a></p>
<p>Con PK se marcan las claves primarias, y con FK, las claves ajenas… algunas líneas se cruzan, no lo puedo evitar. Las flechas indican que una tabla es ‘hija’ de otra, con la punta de flecha apuntando al padre.</p>
<p>Como podéis ver, sólo están indicados los campos que forman el modelo de datos… las claves primarias y las claves ajenas, que en cualquier caso deben estar ocultas al usuario final. En la siguiente sección describiremos los campos de cada tabla.</p>
<h1>Campos</h1>
<p>Como siempre, sólo pongo los campos que considero más relevantes para la descripción del modelo de datos, y no repito los campos de clave ajena para las relaciones, que ya están descritos en el gráfico. La definición de cursos y grupos es la misma que en la que hay en el artículo de matriculación:</p>
<h3>Cursos</h3>
<ul>
<li>nombre: varchar(100)</li>
<li>descripcion: Memo. Se utilizará, en el contrato que se imprime para el cliente, para hacer una descripción larga del curso en el que el alumno se está matriculando. En uno de los sistemas que tenemos, en lugar de tener un campo memo, tenemos una tabla separada en la que se guardan, por tipologías, distintos campos memo, que se imprimen en distintos lugares del contrato.</li>
<li>fecha_inicio: date</li>
<li>fecha_fin: date</li>
</ul>
<h3>Profesores</h3>
<ul>
<li>nombre, primer_apellido, segundo_apellido: varchar(100)</li>
<li>nombre_completo: es una costumbre crear un campo calculado que almacene el nombre completo del profesor. Así, las búsquedas se hacen sobre este campo y es más fácil encontrar al profesor en cuestión.</li>
<li>dirección: Memo</li>
<li>telefono, telefono_movil: varchar(50). No os quedéis cortos con el tamaño de los campos, más vale pasarse que dejarlo con 9 dígitos y descubrir que tienes que poner el +34 delante para poder mandar SMS después.</li>
<li>NIF_NIE, Pasaporte: en campos separados</li>
</ul>
<h3>Grupos</h3>
<ul>
<li>nombre: varchar(100)</li>
<li>codigo: varchar(20). Siempre viene bien tener una codificación además del nombre. Por ejemplo, en algunos sistemas lo utilizamos para guardar el código del grupo en la Fundación Tripartita.</li>
<li>fecha_inicio: date</li>
<li>fecha_fin: date. Por defecto, las del curso al que pertenece el grupo, y además estas fechas no pueden estar fuera de las fechas del curso al que pertenecen.</li>
<li>lugar: varchar(100) de impartición del grupo. En general, hacemos una gestión de aulas, pero eso lo ampliaré en otro artículo.</li>
<li>notas: memo, del grupo</li>
<li>horario: varchar(100) del grupo. En realidad, el horario se trata como una tabla por debajo de esta, pero no voy a entrar en tanto nivel de detalle ahora.</li>
<li>maximo_alumnos: Integer. Máximo número de alumnos permitidos en el grupo.</li>
<li>numero_alumnos: Integer. Es el número de alumnos existentes en el grupo. Este campo es de sólo lectura para el usuario, y es calculado, a través de una serie de Triggers en la base de datos, para poder saber rápidamente el número de alumnos activos en cada grupo sin tener que estar sumando.</li>
</ul>
<h3>Horarios</h3>
<ul>
<li>fecha_inicio, fechafin : date. Por defecto, serán las del grupo con el que estamos trabajando, pero si cambiamos de horario a mitad del grupo, habrá que cerrar el horario anterior (cambiar fecha_fin) y crear un horario nuevo.</li>
<li>L,M,X,J,V: Boolean. Aquí hay dos formas de hacerlo&#8230; puedes poner campos booleanos para cada día de la semana, y si el horario tiene L = sí y X = sí, entonces el horario es Lunes y Miércoles, o poner un campo &#8220;día&#8221; de tipo entero y tener un registro de horario para cada día de la semana. Me inclino por la primera solución, que hemos utilizado en nuestro sistema <strong>Atenea</strong> que por la segunda, que es la que utilizamos en <strong>Bravo</strong>. Los días de la semana no son algo que vaya a cambiar, y el interface y la forma de mostrar el horario es más fácil de implementar y más intuitivo para el usuario cuando usas una sóla fila que cuando tienes 3 para el mismo horario.</li>
<li>hora_inicio, hora_fin: Time</li>
<li>id_profesor: por defecto, es el profesor definido como profesor del grupo, pero podemos tener la situación en la que haya dos profesores en el mismo grupo (como pasa muy a menudo con los seminarios y los cursos intensivos).</li>
<li>id_tipo_tarea: Integer. Es el tipo de tarea por defecto que tendrán todas las clases del horario. También existe la posibilidad de poner un tipo de cancelación por defecto, como hemos hecho en Atenea. Lo vemos más abajo, en las clases.</li>
</ul>
<h3>Clases</h3>
<ul>
<li>fecha: Date. A estas alturas, ya no tenemos fecha de inicio y fecha de fin&#8230; esto es ya cada uno de los días de clase individuales, y por tanto lo que hay es una fecha</li>
<li>hora_inicio, hora_fin: Time. Por defecto serán las del horario al que pertenece la clase. Están también en la tabla de clases porque eso te permite gestionar excepciones, del tipo que la clase de hoy dura media hora más para recuperar parte de una clase anterior que se canceló, cosas así.</li>
<li>id_tipo_tarea: el tipo de tarea del horario, por defecto. Igual que antes, está replicado en esta tabla para permitir excepciones.</li>
<li>id_tipo_cancelacion: Tenemos dos formas de proceder&#8230; podemos definir un tipo de cancelación por defecto, que será el que tengan todas las clases (nosotros utilizamos &#8220;clase impartida&#8221;, para indicar que no ha habido cancelación), o también podemos poner el tipo de cancelación en el horario, de forma que todas las clases de ese horario tendrán ese tipo de cancelación y luego nosotros cambiamos el tipo de cancelación para las clases que no se imparten.</li>
<li>Notas pedagógicas: Memo. Suele ser buena idea poner un campo de notas pedagógicas que, el profesor, al rellenar la asistencia (lo vemos más abajo) puede completar. Esto hace que, cuando un profesor tiene que hacerse cargo de un grupo que ya ha empezado, puede leer las notas que dejó el otro profesor (lo que se llama el <strong>Class Record</strong>) y saber por dónde van y qué es lo siguiente que hay que hacer.</li>
</ul>
<h3>Tipos de Tarea</h3>
<ul>
<li>nombre: varchar(100)</li>
<li>lectiva, transporte, administrativa : boolean. Con estos campos podemos sumar después fácilmente las horas según los tipos de tarea. Por ejemplo, podemos tener un tipo de tarea &#8220;Horas lectivas&#8221; y otra &#8220;Horas lectivas en Sábado&#8221;, que se pagan de distinta forma y queremos tener controladas, pero sin embargo todas son horas lectivas, y a la hora calcular totales de horas, las queremos agrupadas.</li>
</ul>
<h3>Tipos de cancelación</h3>
<ul>
<li>Nombre : varchar(100)</li>
<li>clase_impartida: boolean. Así podemos tener distintos tipos de cancelación que indican que la clase no se ha impartido, y luego sumar todas juntas para saber cuántas horas se han impartido y cuántas no.</li>
<li>implica_pago_profesor: Según el tipo de cancelación y el convenio, hay tipos de cancelación que, aunque no cuenten como clase impartida, sí que se van a pagar al profesor.</li>
<li>implica_cobo_cliente: En el caso de los grupos para empresa o en los individuales, normalmente se factura por horas (lo veremos en el artículo sobre facturación), y en estos casos se da la circunstancia de que las cancelaciones no son sólo por parte del profesor o del centro de formación: en estos casos, es posible (de hecho, es lo más común) que sea el cliente el que cancele la clase. Normalmente, se definen en este caso dos tipos de cancelación: <strong>Cancelación en plazo</strong>, que es cuando el cliente ha avisado de que no va a darse la clase, y entonces no se le factura, o <strong>Cancelación fuera de plazo</strong>, que es el caso tan típico en el que el profesor se presenta y no hay nadie a quién darle clase. En este caso, normalmente, la clase se factura aunque no haya sido impartida, pero es importante para el DOS saber qué clases han sido canceladas de esta manera. A final de curso, cuando se evalúa el avance del alumno, es importante tener en cuenta a cuántas clases el alumno ha acudido realmente, no cuántas se le ha facturado al cliente.</li>
</ul>
<h3>Alumnos</h3>
<ul>
<li>nombre: varchar(100). Lo mismo que en clientes, pero lo requerido es nombre y primer apellido (en clientes es sólo nombre por si</li>
<li>primer_apellido: varchar(100)</li>
<li>segundo_apellido: varchar(100)</li>
<li>nombre_completo: varchar(300):</li>
<li>etc. de datos personales (profesión, teléfonos, email, etc.)</li>
</ul>
<h3>Alumnos en grupos</h3>
<ul>
<li>fecha_inicio: date</li>
<li>fecha_fin: date. Suele ser una intersección entre la duración del grupo y la de la matrícula, pero cuando el alumno cambia de grupo, para una matrícula puede haber varios registros de alumnos en grupos. Hay que tener en cuenta también la posibilidad de que en un mismo curso, pagando más, un alumno pueda asistir a varios grupos (esto también lo he visto).</li>
</ul>
<h3>Asistencia</h3>
<ul>
<li>asiste: boolean. Normalmente, cuando se crean los registros de asistencia (que se crean automáticamente cuando se crean las clases), el campo asiste está inicializado a NULL, para que así sepamos que esta información todavía no está disponible. Será el profesor cuando introduzca la asistencia el que indique si el alumno asiste o no. Mientras tanto&#8230; no se sabe.</li>
<li>falta_justificada: boolean. Todo el proceso que está definido en este artículo se basa en la idea de que la asistencia de los alumnos y la cancelación de una clase son cosas separadas, porque la gestionan personas separadas. La información de cancelación de clases implica que se indique el motivo de dicha cancelación, y dicha información va a afecta a la facturación al cliente y al pago a los profesores, y por tanto es responsabilidad del DOS. La información de asistencia de los alumnos tiene valor desde el punto de vista académico (para calcular los porcentajes de asistencia de los alumnos a la hora de evaluar el rendimiento) y se usa en conjunción con la información de calificaciones. Como actualizar esta información es muy trabajoso por el volumen de datos que representa, los sistemas en general están pensados para que sean los profesores los que introduzcan esta información. Como la información de cancelaciones puede afectar directamente a sus pagos, los profesores no la introducen directamente en el sistema. Por tanto, que todos los alumnos tengan asiste = NO no implica que la clase esté cancelada&#8230; es lo tendrá que introducir el DOS, incluyendo el motivo.</li>
</ul>
<h1>Triggers y procedimientos almacenados</h1>
<p>Este proceso, como hemos visto por la definición de las tablas, tiene muchos procesos &#8216;automáticos&#8217;, propios de la base de datos. Principalmente:</p>
<ul>
<li>Al crear un horario, tiene que haber un trigger que inserte en la base de datos todas las clases de ese horario, teniendo en cuenta la fecha de inicio y de fin y los días de clase, e incluyendo la gestión de días no lectivos si la hemos hecho.</li>
<li>De la misma forma, necesitamos un trigger que al crear clases o incluir alumnos en grupos inserte en la base de datos los registros de asistencia de los alumnos y las clases a los que pertenecen.</li>
</ul>
<p>Es muy importante que estos dos procesos estén incluidos en la base de datos&#8230; El trabajo principal de los DOS, y la fuente principal de información de producción en la empresa es esta parte, y por tanto es muy importante que estos procesos sean ágiles. En las primeras versiones de Bravo, este proceso sea hacía en el lado cliente del sistema, y el rendimiento dejaba muchísimo que desear.</p>
<h1>Consideraciones finales</h1>
<p>Creo que más o menos es todo&#8230; es muy importante que seamos conscientes de que esta gestión de horarios es muy detallada, y que por tanto implica mucha gestión para mantenerla al día: además de dar de alta los grupos, hay que mantener los cambios de profesor y ser muy preciso con las fechas de modificación, hay que introducir las cancelaciones, la asistencia de los alumnos&#8230; implica muchas horas de trabajo mantenerlo al día. A la hora de hacer una implementación como esta, hay que valorar los beneficios que reporta. Al principio del artículo he hablado que este modelo está pensado para centros de enseñanza de idiomas, lo cual no es del todo exacto. Este modelo está pensado para organizaciones que necesitan saber el número exacto de horas que se han trabajado en un periodo de tiempo dado, ya sea para facturar al cliente (como ocurre en los centros de idioma, en los departamentos de enseñanza para empresas) como para pagar al personal.</p>
<p>No he hablado de la gestión de los contratos de los profesores, o del proceso de facturación mismo, que incluiré en otros artículos, ni he descrito la manera de obtener informes de totales de horas (que se basa simplemente en sumar la duración de las clases en base a los criterios de fechas, tipos de cancelación, tareas, profesores, etc. que se necesiten).</p>
<p>Intentaré, en mi siguiente artículo, hacer un descripción de un proceso de facturación en el que se tengan que cobrar horas, y de cómo dejarlo lo suficientemente abierto como para facturar cualquier otra cosa.</p>
<p>Saludos a todos,</p>
<p>d</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;t=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29&amp;srcUrl=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;srcTitle=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29&amp;snippet=En%20mi%20%C3%BAltimo%20art%C3%ADculo%20hac%C3%ADa%20una%20introducci%C3%B3n%20al%20proceso%20de%20modelado%20de%20una%20base%20de%20datos%20relacional%2C%20utilizando%20como%20ejemplo%20el%20proceso%20de%20matriculaci%C3%B3n%20de%20un%20centro%20de%20ense%C3%B1anza.%20Siguiendo%20con%20esa%20l%C3%ADnea%2C%20en%20este%20art%C3%ADculo%20voy%20a%20describir%20c%C3%B3mo%20hacemos%20el%20modelo%20de%20datos%20en%20Bravo%2C%20uno%20de%20nues" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29&amp;summary=En%20mi%20%C3%BAltimo%20art%C3%ADculo%20hac%C3%ADa%20una%20introducci%C3%B3n%20al%20proceso%20de%20modelado%20de%20una%20base%20de%20datos%20relacional%2C%20utilizando%20como%20ejemplo%20el%20proceso%20de%20matriculaci%C3%B3n%20de%20un%20centro%20de%20ense%C3%B1anza.%20Siguiendo%20con%20esa%20l%C3%ADnea%2C%20en%20este%20art%C3%ADculo%20voy%20a%20describir%20c%C3%B3mo%20hacemos%20el%20modelo%20de%20datos%20en%20Bravo%2C%20uno%20de%20nues&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29+-+http://b2l.me/z5gqd&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28II.+Horarios%29" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/04/modelo-entidad-relacion-un-ejemplo-practico-ii-horarios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Modelo entidad-relación, un ejemplo práctico (I. Matriculación)</title>
		<link>http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/</link>
		<comments>http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:21:31 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Procesos]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=709</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! En el desarrollo de software para empresas, el almacenamiento de la información de un modo organizado es fundamental&#8230; la mayoría de los casos en los que el programador contesta &#8220;no se<a href="http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;t=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29&amp;srcUrl=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;srcTitle=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29&amp;snippet=En%20el%20desarrollo%20de%20software%20para%20empresas%2C%20el%20almacenamiento%20de%20la%20informaci%C3%B3n%20de%20un%20modo%20organizado%20es%20fundamental...%20la%20mayor%C3%ADa%20de%20los%20casos%20en%20los%20que%20el%20programador%20contesta%20%22no%20se%20puede%20hacer%22%20a%20un%20requerimiento%20de%20un%20cliente%20se%20debe%20a%20un%20error%20en%20el%20modelado%20de%20la%20base%20de%20datos%20que%20funciona" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29&amp;summary=En%20el%20desarrollo%20de%20software%20para%20empresas%2C%20el%20almacenamiento%20de%20la%20informaci%C3%B3n%20de%20un%20modo%20organizado%20es%20fundamental...%20la%20mayor%C3%ADa%20de%20los%20casos%20en%20los%20que%20el%20programador%20contesta%20%22no%20se%20puede%20hacer%22%20a%20un%20requerimiento%20de%20un%20cliente%20se%20debe%20a%20un%20error%20en%20el%20modelado%20de%20la%20base%20de%20datos%20que%20funciona&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29+-+http://b2l.me/z5gqs&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>En el desarrollo de software para empresas, el almacenamiento de la información de un modo organizado es fundamental&#8230; la mayoría de los casos en los que el programador contesta &#8220;no se puede hacer&#8221; a un requerimiento de un cliente se debe a un error en el modelado de la base de datos que funciona como soporte a la aplicación. En este artículo voy a intentar explicar, con un ejemplo práctico, un buen modelado de datos.</p>
<p>Como, de alguna forma, estamos especializados en el software de gestión de empresas de enseñanza, voy a utilizar un ejemplo de uno de esos modelos: la gestión de matriculación de los alumnos, incluyendo los recibos que tienen que pagar, y el pago parcial de los mismos. Voy a explicar en este artículo el funcionamiento del proceso (para que podamos hacer el seguimiento de la implementación), las tablas que utilizamos y los campos (de forma resumida) que componen cada una de las tablas. De paso, daré una idea de los índices, procedimientos almacenados y triggers que nos pueden resultar útiles para que el rendimiento de la base de datos sea bueno.</p>
<h1>Descripción del proceso de matriculación (el caso de uso)</h1>
<p>Vamos a imaginarnos que nos encontramos en una academia de idiomas, en la que los alumnos se matriculan y asisten a clase de forma temporal. En este caso me voy a centrar en lo que se llaman &#8220;grupos abiertos&#8221;, es decir, grupos en los que cualquiera se puede matricular (en oposición a los grupos de empresa o grupos cerrados, que suelen funcionar de forma diferente).</p>
<p>Cuando llegamos a la academia, se nos ofrece un folleto o catálogo de productos y servicios, en el que se detallan los diferentes cursos en los que nos podemos matricular, y las diferentes formas de pago que podemos utilizar. Seleccionamos uno de los cursos, la forma de pago que más nos conviene, el horario al que vamos a asistir, y con esta información nos matriculamos. Como forma de pago, en este caso, vamos a utilizar un pago mensual, y queremos que se nos domicilie el pago a través de nuestra cuenta bancaria.</p>
<p>En la academia, llegado este punto, introducen en su sistema de información nuestros datos y nos imprimen el contrato de prestación de servicios, en el que se incluyen todos nuestros datos, el curso en el que nos hemos matriculado y todos los pagos que vamos a tener que realizar mientras estemos matriculados. Nos piden, de paso, que paguemos una reserva de plaza, que es una pequeña cantidad del primer recibo.</p>
<p>En el siguiente día de clase, nos presentamos, y el profesor comprueba en su hoja de asistencia que estamos incluidos en el grupo&#8230; nos da la bienvenida, y empezamos a estudiar.</p>
<h1>El modelo de datos</h1>
<p>A partir de aquí haré una descripción de la estructura de tablas y columnas para almacenar la información de este proceso. Primero, algunas generalidades sobre cómo crear los campos.</p>
<h2>Generalidades</h2>
<p>Hay algunas cosas básicas a la hora de modelizar el modelo de datos que usamos como convenciones (nomenclatura, cosas así). Por ejemplo:</p>
<ol>
<li>La clave primaria de las tablas siempre es un identificador autoincremental. Todas las tablas tienen así un identificador interno, mantenido por el sistema. Así, las claves ajenas son más fáciles de mantener.</li>
<li>En general, nosotros no solemos poner campos requeridos&#8230; preferimos hacer la gestión dentro de la lógica de negocio. Nunca se sabe lo que te vas a encontrar, y se nos han dado casos de campos de los que estábamos completamente seguros que eran requeridos y hemos tenido que quitar la marca.</li>
<li>No se duplica información. Es decir, una de las reglas básica es que la misma información no puede estar en dos sitios, salvo&#8230;</li>
<li>En muchos casos, creamos campos calculados, que permiten acceder de forma rápida a información&#8230; por ejemplo, el importe pendiente de un recibo, en realidad, se calcula como el importe total del recibo menos la suma de los pagos parciales&#8230; como hacer este cálculo cada vez que nos hace falta ralentiza el funcionamiento del sistema, hacemos un campo calculado que se mantiene automáticamente (en nuestro caso, a través de Triggers de la base de datos). La información está duplicada en dos sitios, sí, pero por motivos de rendimiento (y siempre está sincronizada).</li>
<li>En los nombres de los campos no ponemos caracteres especiales (ni acentos, ni espacios, etc.). Aunque el gestor de base de datos lo admita, no lo hacemos, porque luego nunca se sabe desde dónde vas a tener que acceder.</li>
</ol>
<h2>Descripción de las entidades</h2>
<p>El primer paso para hacer el modelo de datos es identificar las entidades (tablas) que vamos a tener. Según el caso de uso descrito, las tablas necesarias son las siguientes (al menos, son las que nosotros usamos):</p>
<ul>
<li><strong>Cursos: </strong>almacena la oferta formativa del centro. Representa el catálogo o folleto que te dan al llegar al centro.</li>
<li><strong>Formas de Pago: </strong>para cada curso, las distintas opciones de pago que existen (es parte del folleto también). Trimestral, mensual, anual, etc.</li>
<li><strong>Grupos:</strong> dentro de cada curso, los diferentes horarios a los que se puede asistir. En este caso, el modelo que utilizamos es bastante más complejo que el que voy a describir aquí&#8230; en un artículo posterior lo describiré en detalle.</li>
<li><strong>Clientes:</strong> el que paga&#8230; puede ser el mismo que el alumno, pero también puede que no.</li>
<li><strong>Medios de pago</strong>: Contiene los diferentes métodos que los clientes pueden usar para pagar (contado, domicilación bancaria, etc), incluyendo las cuentas bancarias del cliente.</li>
<li><strong>Alumnos: </strong>la gente que va a clase. Los clientes pueden ser empresas (personas jurídicas), los alumnos son personas físicas. Un mismo cliente puede tener múltiples alumnos.</li>
<li><strong>Matrículas: </strong>Refleja en qué curso nos matriculamos, las fechas, la forma de pago, etc. De forma física, se refleja en el contrato que te dan para firmar.</li>
<li><strong>Recibos:</strong> almacena los recibos que el cliente tiene que pagar (o ha pagado) en el centro.</li>
<li><strong>Pagos:</strong> esta tabla refleja los pagos que el cliente ha hecho (un recibo no necesariamente se paga de una vez). Como antes, la gestión de recibos y pagos que hacemos en realidad es más compleja de lo que voy a describir aquí. En otro artículo haré una descripción más completa.</li>
<li><strong>Alumnos en grupos</strong>: refleja los alumnos que están asignados a los distintos grupos. El alumno puede cambiar de grupo, y no queremos perder esa información histórica, así que necesitamos una tabla para gestionarlo.</li>
</ul>
<p>Aquí podéis ver el modelo gráficamente:</p>
<p><a rel="attachment wp-att-712" href="http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/modelo_entidad_relacion_matriculacion-2/"><img class="size-full wp-image-712 alignnone" title="Modelo entidad-relación para matriculación" src="http://www.ender.es/wp-content/uploads/2010/03/modelo_entidad_relacion_matriculacion1.png" alt="Modelo entidad-relación para matriculación" width="724" height="627" /></a></p>
<p>Con PK se marcan las claves primarias, y con FK, las claves ajenas&#8230; algunas líneas se cruzan, no lo puedo evitar. Las flechas indican que una tabla es &#8216;hija&#8217; de otra, con la punta de flecha apuntando al padre.</p>
<p>Como podéis ver, sólo están indicados los campos que forman el modelo de datos&#8230; las claves primarias y las claves ajenas, que en cualquier caso deben estar ocultas al usuario final. En la siguiente sección describiremos los campos de cada tabla.</p>
<h2>Campos para las entidades</h2>
<p>Sólo describiré los campos más importantes, y no incluiré los campos de clave primaria y ajena que se describen en el gráfico.</p>
<h3>Cursos</h3>
<ul>
<li>nombre: varchar(100)</li>
<li>descripcion: Memo. Se utilizará, en el contrato que se imprime para el cliente, para hacer una descripción larga del curso en el que el alumno se está matriculando. En uno de los sistemas que tenemos, en lugar de tener un campo memo, tenemos una tabla separada en la que se guardan, por tipologías, distintos campos memo, que se imprimen en distintos lugares del contrato.</li>
<li>fecha_inicio: date</li>
<li>fecha_fin: date</li>
</ul>
<h3>Formas de pago</h3>
<ul>
<li>nombre: varchar(100)</li>
<li>importe: float. Es el importe de cada recibo que se cobrará</li>
<li>numero_meses: integer. El número de meses de cada recibo. Si es 1, se creará un recibo cada mes mientras dure la matriculación, si es 3, uno cada tres meses, etc. En algún sistema hemos hecho, en lugar de esto, una estructura de plantillas de recibos, con fechas, descripciones, etc. personalizadas. Eso permite más flexibilidad y más control, pero el modelo es bastante más complejo.</li>
<li>numero_orden: integer. A la hora de presentárselo al cliente, poder mostrar primero las que más nos interesen.</li>
<li>importe_matricula: float. Si además del importe del curso hay un importe de matrícula, se marca aquí.</li>
<li>concepto_matricula. El concepto del recibo de matrícula, si creamos uno.</li>
</ul>
<h3>Grupos</h3>
<ul>
<li>nombre: varchar(100)</li>
<li>codigo: varchar(20). Siempre viene bien tener una codificación además del nombre. Por ejemplo, en algunos sistemas lo utilizamos para guardar el código del grupo en la Fundación Tripartita.</li>
<li>fecha_inicio: date</li>
<li>fecha_fin: date. Por defecto, las del curso al que pertenece el grupo, y además estas fechas no pueden estar fuera de las fechas del curso al que pertenecen.</li>
<li>lugar: varchar(100) de impartición del grupo. En general, hacemos una gestión de aulas, pero eso lo ampliaré en otro artículo.</li>
<li>notas: memo, del grupo</li>
<li>horario: varchar(100) del grupo. En realidad, el horario se trata como una tabla por debajo de esta, pero no voy a entrar en tanto nivel de detalle ahora.</li>
<li>maximo_alumnos: Integer. Máximo número de alumnos permitidos en el grupo.</li>
<li>numero_alumnos: Integer. Es el número de alumnos existentes en el grupo. Este campo es de sólo lectura para el usuario, y es calculado, a través de una serie de Triggers en la base de datos, para poder saber rápidamente el número de alumnos activos en cada grupo sin tener que estar sumando.</li>
</ul>
<h3>Clientes</h3>
<ul>
<li>nombre: varchar(100). En nuestros sistemas, normalmente, este es el único campo requerido (por código, no en la base) que tenemos. Así, el usuario puede dar de alta el registro aunque no tenga todos los datos, y volver después.</li>
<li>primer_apellido: varchar(100)</li>
<li>segundo_apellido: varchar(100)</li>
<li>nombre_completo: varchar(300): Esto es un campo calculado, que se mantiene con Triggers, para poder coger de forma rápida el conjunto Nombre+&#8217; &#8216;+primer_apellido+&#8217; &#8216;+segundo_apellido</li>
<li>direccion: memo</li>
<li>codigo_postal: varchar(20): no hay que ser tacaño&#8230; de vez en cuando hay que meter una dirección extranjera y el código postal puede ser más grande.</li>
<li>poblacion: varchar(50)</li>
<li>notas_internas: memo</li>
<li>etc. de datos personales (profesión, teléfonos, email, etc.)</li>
</ul>
<h3>Alumnos</h3>
<ul>
<li>nombre: varchar(100). Lo mismo que en clientes, pero lo requerido es nombre y primer apellido (en clientes es sólo nombre por si</li>
<li>primer_apellido: varchar(100)</li>
<li>segundo_apellido: varchar(100)</li>
<li>nombre_completo: varchar(300):</li>
<li>etc. de datos personales (profesión, teléfonos, email, etc.)</li>
</ul>
<h3>Medios de pago</h3>
<ul>
<li>tipo_medio: Integer. Normalmente tiene una tabla asociada con los tipos de medios de pago, que suelen ser: Sin Pago, Contado, Banco</li>
<li>nombre_titular: varchar(100)</li>
<li>direccion_titular: memo</li>
<li>entidad: varchar(4)</li>
<li>oficina: varchar(4)</li>
<li>dc: varchar(2)</li>
<li>numero_cuenta: varchar(10). Si el tipo_medio es banco, entonces se tiene que rellenar la información bancaria del cliente.</li>
<li>por_defecto: boolean. Se suele preguntar el medio de pago, pero teniendo uno por defecto, para no tener que rellenarlo siempre. Normalmente, cada cliente, al crearse, se crea un medio de pago &#8220;contado&#8221;, y se le pone por defecto.</li>
</ul>
<h3>Matrículas</h3>
<p>Además de los datos de curso, forma de pago, medio de pago, alumno y cliente (esto último puede parece redundante, pero no lo es&#8230; podemos tener el caso (yo lo he visto) de un alumno que se matricula para estudiar, digamos, inglés y francés&#8230; el inglés lo paga el padre y el francés la madre. Así, es necesario que cada matrícula esté asociada con el alumno, y también con el cliente), necesitamos los siguientes campos:</p>
<ul>
<li>fecha_inicio: date.</li>
<li>fecha_fin: date.  Por defecto, las del curso, pero hay gente que puede matricularse después o terminar antes (si se da de baja, por ejemplo).</li>
<li>importe: real. Por defecto, el de la forma de pago escogida, pero puede ser también distinto&#8230; descuentos por familiares, cosas así. Suele ser buena idea dejarlo abierto, para que el cliente lo pueda cambiar.</li>
<li>motivo_baja: varchar(100). Normalmente, los motivos de baja son una tabla separada, para luego poder obtener estadísticas de número de bajas por tipo, cosas así.</li>
</ul>
<h3>Recibos</h3>
<ul>
<li>fecha_emision: date</li>
<li>fecha_cobro_completo: date</li>
<li>numero_recibo: varchar(20)</li>
<li>concepto: varchar(50)</li>
<li>importe_recibo: float.</li>
<li>importe_pendiente: float. Es un campo de sólo lectura, actualizado a través de triggers, que permite acceder a la información sin tener que sumar.</li>
</ul>
<h3>Pagos</h3>
<ul>
<li>fecha: date</li>
<li>importe: real</li>
<li>forma_cobro: varchar(20). Normalmente es una tabla separada, igual que el caso de los tipos de baja. Puede ser: contado, transferencia, tarjeta, talón, etc.</li>
</ul>
<h3>Alumnos en grupos</h3>
<ul>
<li>fecha_inicio: date</li>
<li>fecha_fin: date. Suele ser una intersección entre la duración del grupo y la de la matrícula, pero cuando el alumno cambia de grupo, para una matrícula puede haber varios registros de alumnos en grupos. Hay que tener en cuenta también la posibilidad de que en un mismo curso, pagando más, un alumno pueda asistir a varios grupos (esto también lo he visto).</li>
</ul>
<h1>Triggers y procedimientos almacenados</h1>
<p>El modelo de datos y la lógica del negocio están muy estrechamente relacionados. Los sistemas de base de datos nos permiten desarrollar triggers y procedimientos almacenados, lo que es muy conveniente para dejar trozos de la lógica de negocio asociados con la base de datos, tanto por motivos de organización del código como por motivos de rendimiento (un procedimiento almacenado es varios órdenes de magnitud más rápido que hacer el mismo proceso a través de un lenguaje de programación).</p>
<p>En el ejemplo que estoy describiendo, hay varios triggers y procedimientos que se usan:</p>
<ul>
<li>Actualización de los campos &#8220;NombreCompleto&#8221; de alumnos y clientes: normalmente, es un trigger BEFORE INSERT y BEFORE UPDATE, que actualiza el campo en base al contenido del nombre y los apellidos.</li>
<li>Actualización del campo &#8220;ImportePagado&#8221; de recibos, AFTER INSERT, UPDATE y DELETE de pagos, que actualiza el campo ImportePendiente de recibos como la suma de los pagos de ese recibo.</li>
<li>Es habitual hacer un procedimiento CREARRECIBOS, que se ejecuta en el proceso de creación de la matrícula (o un trigger AFTER INSERT), que crea los recibos de la matrícula en base al importe y forma de pago seleccionadas.</li>
</ul>
<p>En las próximas semanas continuaré esta serie de artículos, describiendo otros submodelos de sistemas que hemos desarrollado&#8230; algunas ideas que tengo:</p>
<ol>
<li>Gestión de horarios y citas</li>
<li>Facturación</li>
<li>Gestión de horas trabajadas</li>
<li>Stock</li>
</ol>
<p>Cualquier otra idea será bienvenida&#8230;</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;t=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29&amp;srcUrl=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;srcTitle=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29&amp;snippet=En%20el%20desarrollo%20de%20software%20para%20empresas%2C%20el%20almacenamiento%20de%20la%20informaci%C3%B3n%20de%20un%20modo%20organizado%20es%20fundamental...%20la%20mayor%C3%ADa%20de%20los%20casos%20en%20los%20que%20el%20programador%20contesta%20%22no%20se%20puede%20hacer%22%20a%20un%20requerimiento%20de%20un%20cliente%20se%20debe%20a%20un%20error%20en%20el%20modelado%20de%20la%20base%20de%20datos%20que%20funciona" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29&amp;summary=En%20el%20desarrollo%20de%20software%20para%20empresas%2C%20el%20almacenamiento%20de%20la%20informaci%C3%B3n%20de%20un%20modo%20organizado%20es%20fundamental...%20la%20mayor%C3%ADa%20de%20los%20casos%20en%20los%20que%20el%20programador%20contesta%20%22no%20se%20puede%20hacer%22%20a%20un%20requerimiento%20de%20un%20cliente%20se%20debe%20a%20un%20error%20en%20el%20modelado%20de%20la%20base%20de%20datos%20que%20funciona&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29+-+http://b2l.me/z5gqs&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/&amp;title=Modelo+entidad-relaci%C3%B3n%2C+un+ejemplo+pr%C3%A1ctico+%28I.+Matriculaci%C3%B3n%29" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/03/modelo-entidad-relacion-un-ejemplo-practico-i-matriculacion/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>El software libre en tu empresa: qué puedes hacer y qué no</title>
		<link>http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/</link>
		<comments>http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 16:40:30 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=608</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! En todas las empresas, a día de hoy, hace falta software&#8230; ya sea para escribir cartas, para llevar la contabilidad o para publicar cosas en la web, sin software a día<a href="http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;t=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;srcUrl=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;srcTitle=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;snippet=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;summary=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no+-+File: /data/app/webapp/functions.php<br />Line: 66<br />Message: Duplicate entry 'z5snX' for key 'code'&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>En todas las empresas, a día de hoy, hace falta software&#8230; ya sea para escribir cartas, para llevar la contabilidad o para publicar cosas en la web, sin software a día de hoy no se hace casi nada. Así que&#8230; ¿de dónde lo sacamos? Se me ocurren tres formas de obtener software (que en realidad son cuatro):</p>
<ul>
<li>Pagar por el software: ya sea pagar por licencias de uso de un software que ya existe, como comprar Windows o la Office, o pagando a empresas como nosotros para que os hagan el software a medida.</li>
<li>Tener software pirata: hace unos años esto era, de largo, lo más común&#8230; pero creo que poco a poco va disminuyendo, cada vez hay menos. Entre las campañas anti piratería y los sistemas anti copia, con la conexión ubicua a internet esto es cada vez más difícil.</li>
<li>Usar software libre. Es una alternativa muy atractiva, claro, por varias razones que ahora explicaré&#8230; sin embargo, hay que tener en cuenta un par de cosas, sobre todo en cuanto a las licencias a través de las cuáles se <a href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/170px-Heckert_GNU_white.svg.png"><img class="alignright" title="GNU" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/170px-Heckert_GNU_white.svg.png" alt="Licencia GPL" width="170" height="166" /></a>distribuye el software.</li>
</ul>
<h2>¿Software libre, o software gratis?</h2>
<p>Puede ser una de las dos cosas, y también las dos&#8230; la confusión puede venir de la palabra <em>free</em>, que en inglés significa tanto &#8216;libre&#8217; como &#8216;gratis&#8217;. Por eso, en inglés, cuando se habla de &#8216;free software&#8217; se distingue entre <strong>free, as in beer</strong> (es decir, gratis, como en &#8216;cerveza gratis&#8217;) y <strong>free, as in speech</strong> (es decir, libre, como en &#8216;libre expresión&#8217;).</p>
<p>Yo entiendo software libre como el que está abierto a modificaciones externas&#8230; es decir, se permite el acceso libre al código fuente y a la documentación de desarrollo, de forma que cualquiera pueda obtener dicho software, y hacer el uso que necesite, siempre que se ajuste a los términos de la licencia de distribución del software que sea. Cuando alguien libera un software, lo hace bajo una <a title="Licencias de uso" href="http://es.wikipedia.org/wiki/Software_libre#Tipos_de_licencias" target="_self">licencia de uso</a>; es decir, una serie de condiciones que hay que cumplir si usas ese software. Lo que puedes o no puedes hacer, por tanto, viene definido por los términos de dichas licencias. No me voy a extender en los términos de cada licencia, está bien explicado en la <a title="wikipedia" href="http://es.wikipedia.org/wiki/Software_libre" target="_blank">wikipedia</a>, sino que me interesa más reflexionar sobre qué puedes y qué no puedes hacer con el software dependiendo de la licencia que tenga.</p>
<p>Es decir, puedes tener software libre que es gratuito (que es el caso más común, que todos conocemos), pero también hay otras alternativas: puedes tener software libre que no es gratuito (más abajo hablaré de ello), y software gratis que no es libre, como todo el software freeware de los 90.</p>
<h2>La madre del cordero: el copyleft</h2>
<p>La filosofía básica que envuelve a la licencia libre más restrictiva, la <a title="licencia GPL" href="http://es.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">GPL</a>, es lo que se llama el <a title="copyleft" href="http://es.wikipedia.org/wiki/Copyleft" target="_blank">copyleft</a>. Este concepto viene como oposición directa del copyright, y se basa en la idea de compartir libremente las obras producidas (no se aplica sólo a software, sino a cualquier obra de producción propia). La idea básica es la que cualquiera pueda acceder a tu software, en este caso, y hacer las modificaciones que quiera, las mejoras o los cambios, sin ninguna limitación y sin tener que pagar derechos de autor. Pero esto no significa que este modelo de licencia no tenga ninguna restricción, todo lo contrario. La idea es que, si el software que se ha liberado tiene copyleft, todas las derivaciones del mismo tienen que tener copyleft. Es decir, no se puede coger un software libre, hacer unas modificaciones, y generar un producto nuevo que no sea libre.  Cuidado, esto no significa en absoluto que no se pueda cobrar por el trabajo. <strong>GPL no significa gratis, sino libre</strong>.</p>
<p>A la hora de evaluar si podemos usar un software que está distribuido  sobre una licencia libre tenemos que tener en cuenta qué es lo que vamos  a hacer con él. Si es para uso privado, podemos coger el software, modificarlo, cambiarlo como queramos, no tiene ningún problema&#8230; el asunto viene cuando lo que queremos hacer es distribuir las modificaciones que hemos hecho&#8230; entonces es cuando entra en juego el asunto <strong>viral </strong>que tiene la GPL: cualquier producto que incluya software GPL como alguno de sus componentes, debe ser GPL a su vez.</p>
<p>Hay licencias menos restrictivas, como la <a title="LGPL" href="http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License" target="_blank">LGPL</a>, que permiten el enlace de software LGPL con software de otros modelos de licencia y licenciar el software obtenido de la forma que se quiera&#8230; lo fundamental de la licencia GPL es que todo lo que contenga al menos una linea de código GPL debe ser distribuido con la misma licencia</p>
<h2>Libre no significa gratis necesariamente &#8211; un ejemplo con WordPress</h2>
<p>O no habría nicho de negocio para nadie&#8230; ninguna de las licencias de software libre dicen que tenga que ser gratuito. Lo que dice la GPL es que el software que tú distribuyas debe serlo utilizando la GPL&#8230; es decir, puedes cobrar por el software, o por el trabajo, pero no puedes decirle al cliente que no puede distribuir libremente ni cambiar el software que le das, porque como está protegido por la GPL, tiene derecho a hacer lo que quiera dentro de la GPL.</p>
<p><a href="http://www.wordpress.org"><img class="alignleft" title="Wordpress" src="http://t0.gstatic.com/images?q=tbn:Yduk3uKrjyKpjM:http://en.flossmanuals.net/floss/publish/WordPress/rsrc/WordPress/Introduction/icon_big.png" alt="wordpress" width="125" height="112" /></a>Un ejemplo que estamos utilizando nosotros ahora: cuando los clientes nos piden que les hagamos desarrollos web, estamos utilizando <a title="Wordpress" href="http://wordpress.org/" target="_blank">WordPress</a> para hacerlos (de hecho, nuestra propia página está hecha utilizando wordpress). WordPress está distribuido utilizando la licencia GPL y, por tanto, los temas (que son las adaptaciones que cambian el aspecto que tiene la página), también están sujetos a la licencia GPL (como se explica muy bien en este <a title="artículo" href="http://carrero.es/todos-los-temas-de-wordpress-son-gpl/3553" target="_blank">artículo</a>). Esto significa que, si nosotros le desarrollamos un tema especializado a un cliente, nosotros no le podemos exigir al cliente que no cambie o distribuya dicho tema a quién quiera (bueno, nosotros podemos decir lo que queramos, pero el cliente no tiene por qué hacernos caso, ya que la licencia del tema tiene por fuerza que ser GPL). Si queremos, podemos poner una tienda de temas WordPress y que la gente los compre, siempre y cuando nosotros no limitemos las acciones de nuestros clientes dentro de la GPL.</p>
<p>Siempre había pensado que la GPL era una licencia muy restrictiva, y creo que es uno de esos problemas de <a title="Lost in translation" href="http://www.youtube.com/watch?v=yYAS92XPvIM" target="_blank">lost in translation</a>, ya que al leer &#8220;todo software derivado de GPL debe ser GPL&#8221;, y &#8220;GPL es una licencia &#8216;free&#8217;&#8221;, durante años he interpretado que todo software GPL debe ser gratis, y que los derivados también, y esto no es cierto. Una extensión a esta explicación, y un análisis de las implicaciones podéis leerlo <a title="artículo" href="http://www.prelovac.com/vladimir/interesting-wordpress-gpl-implications" target="_blank">aquí</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;t=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;srcUrl=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;srcTitle=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;snippet=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no&amp;summary=En%20todas%20las%20empresas%2C%20a%20d%C3%ADa%20de%20hoy%2C%20hace%20falta%20software...%20ya%20sea%20para%20escribir%20cartas%2C%20para%20llevar%20la%20contabilidad%20o%20para%20publicar%20cosas%20en%20la%20web%2C%20sin%20software%20a%20d%C3%ADa%20de%20hoy%20no%20se%20hace%20casi%20nada.%20As%C3%AD%20que...%20%C2%BFde%20d%C3%B3nde%20lo%20sacamos%3F%20Se%20me%20ocurren%20tres%20formas%20de%20obtener%20software%20%28que%20en%20realidad%20s&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no+-+File: /data/app/webapp/functions.php<br />Line: 66<br />Message: Duplicate entry 'z5snX' for key 'code'&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/&amp;title=El+software+libre+en+tu+empresa%3A+qu%C3%A9+puedes+hacer+y+qu%C3%A9+no" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/03/el-software-libre-en-tu-empresa-que-puedes-hacer-y-que-no/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Selenium y Windmill, para hacer tests de interface de sitios web</title>
		<link>http://www.ender.es/2010/02/selenium-y-windmill/</link>
		<comments>http://www.ender.es/2010/02/selenium-y-windmill/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 18:40:17 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=423</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Para hacer desarrollo basado en tests es imprescindible tener un framework de desarrollo de tests para cada entorno de desarrollo que utilicemos. Hasta ahora, estamos usando los siguientes: Para Delphi, DUnit.<a href="http://www.ender.es/2010/02/selenium-y-windmill/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/selenium-y-windmill/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/selenium-y-windmill/&amp;t=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/selenium-y-windmill/&amp;title=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web&amp;srcUrl=http://www.ender.es/2010/02/selenium-y-windmill/&amp;srcTitle=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web&amp;snippet=Para%20hacer%20desarrollo%20basado%20en%20tests%20es%20imprescindible%20tener%20un%20framework%20de%20desarrollo%20de%20tests%20para%20cada%20entorno%20de%20desarrollo%20que%20utilicemos.%20Hasta%20ahora%2C%20estamos%20usando%20los%20siguientes%3A%0D%0A%0D%0A%09Para%20Delphi%2C%20DUnit.%0D%0A%09Para%20Python%2C%20PyUnit.%0D%0A%0D%0AEstas%20dos%20soluciones%20son%20buenas%2C%20ambas%20basadas%20en%20el%20framewo" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/selenium-y-windmill/&amp;title=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web&amp;summary=Para%20hacer%20desarrollo%20basado%20en%20tests%20es%20imprescindible%20tener%20un%20framework%20de%20desarrollo%20de%20tests%20para%20cada%20entorno%20de%20desarrollo%20que%20utilicemos.%20Hasta%20ahora%2C%20estamos%20usando%20los%20siguientes%3A%0D%0A%0D%0A%09Para%20Delphi%2C%20DUnit.%0D%0A%09Para%20Python%2C%20PyUnit.%0D%0A%0D%0AEstas%20dos%20soluciones%20son%20buenas%2C%20ambas%20basadas%20en%20el%20framewo&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web+-+File: /data/app/webapp/functions.php<br />Line: 7<br />Message: Too many connections&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/selenium-y-windmill/&amp;title=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p><a href="http://seleniumhq.org/"><img class="alignright size-full wp-image-504" title="big-logo" src="http://www.ender.es/wp-content/uploads/2010/02/big-logo.png" alt="Logo Selenium" width="200" height="181" /></a>Para hacer desarrollo <a title="desarrollo basado en tests" href="http://www.ender.es/metodologia/desarrollo-basado-en-tests/" target="_blank">basado en tests</a> es imprescindible tener un framework de desarrollo de tests para cada entorno de desarrollo que utilicemos. Hasta ahora, estamos usando los siguientes:</p>
<ul>
<li>Para <a title="Delphi" href="http://www.embarcadero.com/products/delphi" target="_blank">Delphi</a>, <a title="DUnit" href="http://dunit.sourceforge.net/" target="_blank">DUnit</a>.</li>
<li>Para <a title="Python" href="http://www.python.org/" target="_blank">Python</a>, <a title="Pyunit" href="http://pyunit.sourceforge.net/" target="_blank">PyUnit</a>.</li>
</ul>
<p>Estas dos soluciones son buenas, ambas basadas en el framework de tests original de la eXtreme Programming, la <a title="JUnit" href="http://www.junit.org/" target="_blank">JUnit</a>. Cuando se programan tests de procesos no visuales, o se testean procesos de ataque a bases de datos, resulta bastante fácil tener el control&#8230; el problema viene cuando testeamos interfaces, que implica simular acciones de los usuarios; especialmente cuando lo que hay que testear es el interface de aplicaciones web.</p>
<p>En este caso concreto, nuestros criterios a la hora de seleccionar un framework son los siguientes:</p>
<ul>
<li>Que sea software libre: no quiero estar atado a un software propietario si es posible&#8230; muchos años de Delphi, Windows y SQL Server me dejan espantado.</li>
<li>Que tenga un editor de macros, que permita que alguien que no sea programador grabe tests de forma fácil&#8230; así descargamos parte de la tarea del programador a la gente de soporte.</li>
<li>Que tenga un plugin de integración con Hudson, para poder hacer pruebas regresivas.</li>
</ul>
<p>Mirando por ahí, he encontrado dos:</p>
<ul>
<li>Un plugin de <a title="Firefox" href="http://www.mozilla-europe.org/es/firefox/" target="_blank">Firefox</a> llamado <a title="Selenium" href="http://seleniumhq.org/" target="_blank">Selenium</a>, integrado con <a title="Integración continua" href="http://www.ender.es/metodologia/integracion-continua/" target="_blank">Hudson</a> a través de un plugin. Permite grabar tests, agrupados en unidades, y funciona muy bien&#8230; hace bastante que no sacan versión nueva, y a día de hoy el plugin no funciona con Firefox 3.6. Por lo que veo, puede emular el funcionamiento de Firefox, Internet Explorer y Firefox en modo Chrome. La gestión de ficheros (guardar test cases, test units, cosas de esas) es un poco &#8216;caprichosa&#8217;, pero por lo demás me parece bastante estable.</li>
<li><a title="Windmill" href="http://www.getwindmill.com/" target="_blank">Windmill</a>. Está programado en Python, es muy fácil de instalar si ya tienes Python montado. También tiene grabador de macros, pero yo he tenido peores experiencias que con Selenium, en términos de acciones que no se guardan bien, esperas a que la página cargue que no funcionan del todo bien y, no sé si tiene que ver, de repente mi Chrome ya no se conecta a Internet (y el Firefox sí, muy wraro).</li>
</ul>
<p>He estado valorando los dos y me gusta más Selenium. Además, creo que es más usado que Windmill, y eso es muy importante a la hora de escoger un framework de cualquier tipo&#8230; ninguno queremos que deje de actualizarse el sistema que usamos.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/selenium-y-windmill/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/selenium-y-windmill/&amp;t=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/selenium-y-windmill/&amp;title=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web&amp;srcUrl=http://www.ender.es/2010/02/selenium-y-windmill/&amp;srcTitle=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web&amp;snippet=Para%20hacer%20desarrollo%20basado%20en%20tests%20es%20imprescindible%20tener%20un%20framework%20de%20desarrollo%20de%20tests%20para%20cada%20entorno%20de%20desarrollo%20que%20utilicemos.%20Hasta%20ahora%2C%20estamos%20usando%20los%20siguientes%3A%0D%0A%0D%0A%09Para%20Delphi%2C%20DUnit.%0D%0A%09Para%20Python%2C%20PyUnit.%0D%0A%0D%0AEstas%20dos%20soluciones%20son%20buenas%2C%20ambas%20basadas%20en%20el%20framewo" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/selenium-y-windmill/&amp;title=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web&amp;summary=Para%20hacer%20desarrollo%20basado%20en%20tests%20es%20imprescindible%20tener%20un%20framework%20de%20desarrollo%20de%20tests%20para%20cada%20entorno%20de%20desarrollo%20que%20utilicemos.%20Hasta%20ahora%2C%20estamos%20usando%20los%20siguientes%3A%0D%0A%0D%0A%09Para%20Delphi%2C%20DUnit.%0D%0A%09Para%20Python%2C%20PyUnit.%0D%0A%0D%0AEstas%20dos%20soluciones%20son%20buenas%2C%20ambas%20basadas%20en%20el%20framewo&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web+-+File: /data/app/webapp/functions.php<br />Line: 7<br />Message: Too many connections&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/selenium-y-windmill/&amp;title=Selenium+y+Windmill%2C+para+hacer+tests+de+interface+de+sitios+web" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/02/selenium-y-windmill/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>¿La era pos-ágil? ¿Tan pronto?</title>
		<link>http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/</link>
		<comments>http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 13:17:07 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=379</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! En este artículo se analiza el impacto en el desarrollo de videojuegos de la metodología ágil. Es un sector con algunas particularidades muy concretas, y coincido con el autor prácticamente en<a href="http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/¿la-era-pos-agil-¿tan-pronto/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;t=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;title=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F&amp;srcUrl=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;srcTitle=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F&amp;snippet=En%20este%20art%C3%ADculo%20se%20analiza%20el%20impacto%20en%20el%20desarrollo%20de%20videojuegos%20de%20la%20metodolog%C3%ADa%20%C3%A1gil.%20Es%20un%20sector%20con%20algunas%20particularidades%20muy%20concretas%2C%20y%20coincido%20con%20el%20autor%20pr%C3%A1cticamente%20en%20casi%20todo%2C%20aunque%20lo%20que%20hace%20es%2C%20b%C3%A1sicamente%2C%20criticar%20los%20peores%20aspectos%20de%20la%20%27ola%20%C3%A1gil%27.%0D%0A%0D%0A%0D%0A%0D%0A" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;title=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F&amp;summary=En%20este%20art%C3%ADculo%20se%20analiza%20el%20impacto%20en%20el%20desarrollo%20de%20videojuegos%20de%20la%20metodolog%C3%ADa%20%C3%A1gil.%20Es%20un%20sector%20con%20algunas%20particularidades%20muy%20concretas%2C%20y%20coincido%20con%20el%20autor%20pr%C3%A1cticamente%20en%20casi%20todo%2C%20aunque%20lo%20que%20hace%20es%2C%20b%C3%A1sicamente%2C%20criticar%20los%20peores%20aspectos%20de%20la%20%27ola%20%C3%A1gil%27.%0D%0A%0D%0A%0D%0A%0D%0A&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F+-+http://b2l.me/2gwhc&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;title=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>En este <a title="Desarrollo de videojuegos en la era post-agile" href="http://gwaredd.blogspot.com/2010/02/game-development-in-post-agile-world.html" target="_blank">artículo</a> se analiza el impacto en el desarrollo de videojuegos de la <a title="desarrollo ágil" href="http://www.ender.es/metodologia/desarrollo-agil/" target="_blank">metodología ágil</a>. Es un sector con algunas particularidades muy concretas, y coincido con el <a title="autor del post" href="http://gwaredd.blogspot.com/" target="_blank">autor</a> prácticamente en casi todo, aunque lo que hace es, básicamente, criticar los peores aspectos de la &#8216;ola ágil&#8217;.</p>
<div class="wp-caption alignright" style="width: 384px"><a href="http://ejecucion.files.wordpress.com/2009/11/scrum-overview-diagram.png"><img class=" " title="Metodología Scrum" src="http://ejecucion.files.wordpress.com/2009/11/scrum-overview-diagram.png?w=468&amp;h=292" alt="Metodología Scrum" width="374" height="234" /></a><p class="wp-caption-text">Descripción de la metodolgía Scrum</p></div>
<p>Estoy completamente de acuerdo en su desprecio por el &#8216;fanatismo&#8217;&#8230; una cosa es que los conceptos teóricos del modelo de desarrollo ágil me convenzan, y otra cosa es utilizar <a title="Kanban y Scrum" href="http://www.dosideas.com/metodologias/184-kanban-y-scrum.html" target="_blank">Kanban</a> o <a title="Scrum" href="http://www.proyectosagiles.org/que-es-scrum" target="_blank">Scrum</a> como palabras mágicas que van a resolver todos los problemas y nos llevan al paraiso en la tierra.</p>
<p>Primero, considero mucho más importantes los principios del <a title="Manifiesto ágil" href="http://www.agilemanifesto.org/" target="_blank">manifiesto ágil</a> que las metodologías que se desprenden de él. Me gusta el concepto de dar más prioridad al software funcional que a la documentación, pero eso no es una carta blanca que permite no documentar porque el proceso lo dice. No estoy diciendo con esto que las metodologías ágiles sean erróneas, sino que es muchísimo más importante, en mi opinión, tener un conocimiento de las ideas que hay detrás, y después desarrollar tu propia metodología, recogiendo las cosas que te resulten más útiles de unas u otras.</p>
<p>Como bien dice el autor del artículo, parece que ha llegado el momento en el que &#8216;Ágil&#8217; y &#8216;Scrum&#8217; son términos intercambiables, es decir, que la gente se queda con la parte &#8216;brillante&#8217;, que le da más juego a su currículum, y no con la teoría que hay detrás. Creo que es muy común haber salido de un proyecto manejado con los parámetros del desarrollo clásico tan espantado, que buscas cualquier cosa que te prometa que el siguiente proyecto va a salir mejor&#8230; como ha habido (o sigue habiendo) una moda de Scrum, te agarras a él, sin conocer muy bien de qué va la película, aferrándote al término como si fuera una varita mágica.</p>
<p>Me parece mucho menos importante seguir los preceptos del Scrum que utilizar las herramientas que se proponen como ayuda:</p>
<ul>
<li><a title="Integración continua" href="http://www.ender.es/metodologia/integracion-continua/" target="_blank">Integración continua</a></li>
<li><a title="desarrollo basado en tests" href="http://www.ender.es/metodologia/desarrollo-basado-en-tests/" target="_blank">Desarrollo basado en tests</a></li>
<li><a title="pair programming" href="http://en.wikipedia.org/wiki/Pair_programming" target="_blank">Programación por parejas</a></li>
</ul>
<p>&#8230;esas cosas, que tienen un impacto directo y fácilmente mensurable en el desarrollo del proyecto, y menos importante el hecho de dibujar en un tablón las cosas de una forma o de otra.</p>
<p>Hablando de desarrollo basado en tests, hay una parte interesante del artículo, en la que se menciona un <a title="estudio de Microsoft" href="http://research.microsoft.com/en-us/projects/esm/nagappan_tdd.pdf" target="_blank">estudio de Microsoft</a> en el que se analizan datos empíricos de sistemas desarrollados utilizando el desarrollo basado en tests y otros en los que no. Creo que son relevantes los resultado. Cito (y traduzco yo mismo):</p>
<blockquote><p>Los resultados de los casos de estudio indican que la densidad de errores pre-release [..] descendió entre un 40 y un 90% comparado con proyectos similares que no usaron TDD (desarrollo basado en tests).  Además de esto, los equipos experimentaron un incremento entre el 15 y el 35% de tiempo de desarrollo inicial desde la adopción del TDD.</p></blockquote>
<p>Quiere decir que, al utilizar la TDD el tiempo de desarrollo en la fase inicial aumenta entre un 15 y un 35%, comparado con una disminución del nº de defectos muy superior. Para el autor del artículo, este incremento en el tiempo inicial de desarrollo no compensa ante el nº de errores eliminados, y en esto no estoy en absoluto de acuerdo. Es probable que nuestra diferencia de opinión se basa en que trabajamos en productos software distintos: para nosotros, cada sistema que desarrollamos está pensado para que nunca (mientras el cliente quiera) dejemos de trabajar en él, mientras que el desarrollo de un videojuego es un proyecto que tiene una fecha límite de presentación. Nosotros siempre pensamos en los proyectos a medio y largo plazo, y para esto, tener una buena suite de tests regresivos desde el principio es fundamental (de hecho, en proyectos antiguos los echamos de menos enormemente).</p>
<p>Finalmente, en lo que sí estoy de acuerdo, y lo que más me preocupa, es su afirmación de que el mayor problema de las empresas que afirman utilizar desarrollo ágil es que es muy fácil usarlo como una excusa para no hacer una buena dirección del proyecto, para no hacer planificación o para hacer una <a title="gran bola de barro." href="http://en.wikipedia.org/wiki/Big_ball_of_mud" target="_blank">gran bola de barro</a> teniendo la excusa de que &#8220;nosotros hacemos Scrum, así que tiene que funcionar&#8221;.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/¿la-era-pos-agil-¿tan-pronto/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;t=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;title=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F&amp;srcUrl=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;srcTitle=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F&amp;snippet=En%20este%20art%C3%ADculo%20se%20analiza%20el%20impacto%20en%20el%20desarrollo%20de%20videojuegos%20de%20la%20metodolog%C3%ADa%20%C3%A1gil.%20Es%20un%20sector%20con%20algunas%20particularidades%20muy%20concretas%2C%20y%20coincido%20con%20el%20autor%20pr%C3%A1cticamente%20en%20casi%20todo%2C%20aunque%20lo%20que%20hace%20es%2C%20b%C3%A1sicamente%2C%20criticar%20los%20peores%20aspectos%20de%20la%20%27ola%20%C3%A1gil%27.%0D%0A%0D%0A%0D%0A%0D%0A" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;title=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F&amp;summary=En%20este%20art%C3%ADculo%20se%20analiza%20el%20impacto%20en%20el%20desarrollo%20de%20videojuegos%20de%20la%20metodolog%C3%ADa%20%C3%A1gil.%20Es%20un%20sector%20con%20algunas%20particularidades%20muy%20concretas%2C%20y%20coincido%20con%20el%20autor%20pr%C3%A1cticamente%20en%20casi%20todo%2C%20aunque%20lo%20que%20hace%20es%2C%20b%C3%A1sicamente%2C%20criticar%20los%20peores%20aspectos%20de%20la%20%27ola%20%C3%A1gil%27.%0D%0A%0D%0A%0D%0A%0D%0A&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F+-+http://b2l.me/2gwhc&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/&amp;title=%C2%BFLa+era+pos-%C3%A1gil%3F+%C2%BFTan+pronto%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/02/%c2%bfla-era-pos-agil-%c2%bftan-pronto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Cómo de informatizada está tu empresa?</title>
		<link>http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/</link>
		<comments>http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 20:16:36 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=302</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Antes de que nadie se me eche al cuello, esto no es un sesudo análisis del grado de penetración (con perdón) de las tecnologías de la información en las empresas españolas,<a href="http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;t=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;title=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F&amp;srcUrl=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;srcTitle=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F&amp;snippet=Antes%20de%20que%20nadie%20se%20me%20eche%20al%20cuello%2C%20esto%20no%20es%20un%20sesudo%20an%C3%A1lisis%20del%20grado%20de%20penetraci%C3%B3n%20%28con%20perd%C3%B3n%29%20de%20las%20tecnolog%C3%ADas%20de%20la%20informaci%C3%B3n%20en%20las%20empresas%20espa%C3%B1olas%2C%20ni%20nada%20eso...%20simplemente%20es%20una%20reflexi%C3%B3n%2C%20basada%20en%20las%20empresas%20que%20hemos%20visto%20durante%20los%20%C3%BAltimos%20a%C3%B1os%2C%20del%20uso%20" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;title=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F&amp;summary=Antes%20de%20que%20nadie%20se%20me%20eche%20al%20cuello%2C%20esto%20no%20es%20un%20sesudo%20an%C3%A1lisis%20del%20grado%20de%20penetraci%C3%B3n%20%28con%20perd%C3%B3n%29%20de%20las%20tecnolog%C3%ADas%20de%20la%20informaci%C3%B3n%20en%20las%20empresas%20espa%C3%B1olas%2C%20ni%20nada%20eso...%20simplemente%20es%20una%20reflexi%C3%B3n%2C%20basada%20en%20las%20empresas%20que%20hemos%20visto%20durante%20los%20%C3%BAltimos%20a%C3%B1os%2C%20del%20uso%20&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F+-+http://b2l.me/z6n5n&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;title=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>Antes de que nadie se me eche al cuello, esto no es un sesudo análisis del grado de penetración (con perdón) de las tecnologías de la información en las empresas españolas, ni nada eso&#8230; simplemente es una reflexión, basada en las empresas que hemos visto durante los últimos años, del uso que las empresas pequeñas le están dando a las TI para su trabajo diario.</p>
<p>En este caso, no estoy pensando tanto en &#8216;cuántos ordenadores tiene la empresa&#8217;, o cuánto dinero se gasta anualmente, sino en términos de cómo la informática, y especialmente el software, que es lo que más me interesa, altera la forma de trabajar la empresa (y si la mejora o no, claro). Además de escribir cartas, correos electrónicos y navegar por Internet, la parte que más me interesa es qué hace la gente para ayudarse en la gestión de la empresa&#8230; ¿cómo facturan? ¿cómo llevan la base de datos de clientes? ¿tienen alguna?</p>
<div class="wp-caption alignright" style="width: 510px"><a href="http://www.flickr.com/photos/lockergnome/43132645/"><img title="Solitario" src="http://farm1.static.flickr.com/28/43132645_122b54f699.jpg" alt="Windows solitaire" width="500" height="352" /></a><p class="wp-caption-text">El solitario, famoso solitario</p></div>
<p>Todos sabemos que, mal que bien, prácticamente cualquier empresa actual tiene al menos un ordenador en la oficina, casi siempre uno por trabajador, pero&#8230; ¿qué hace la gente con ellos? ¿jugar al <a title="Solitario" href="http://en.wikipedia.org/wiki/Solitaire_(Windows)" target="_blank">solitario</a>? Me gustaría reflexionar sobre hasta dónde llegan las empresas en términos de software.</p>
<p><strong>Correo electrónico, la sempiterna office y bases de datos Excel por doquier</strong></p>
<p>Dejando de lado algunas empresas en las que el uso del ordenador se limita a ocupar espacio, creo que al menos aquí llegan la mayoría de las pequeñas empresas que conozco: tienen una cuenta de correo (normalmente una por empleado) y llevan su gestión a través de una mezcla, mejor o peor, de hojas de <a title="Excel" href="http://office.microsoft.com/es-es/excel/FX100487623082.aspx" target="_blank">Excel</a>, tablas Access y documentos <a title="Word" href="http://office.microsoft.com/es-es/word/FX100487983082.aspx" target="_blank">Word</a>.</p>
<p>Todos los años de versiones piratas de la Office (ya que estoy: coged la <a title="Open office" href="http://es.openoffice.org/" target="_blank">OpenOffice</a>, que es gratis o usad alguna de las <a title="Zoho" href="http://www.zoho.com/" target="_blank">alternativas</a> <a title="Google docs" href="https://www.google.com/accounts/ServiceLogin?service=writely&amp;passive=true&amp;nui=1&amp;continue=http://docs.google.com/&amp;followup=http://docs.google.com/&amp;ltmpl=homepage&amp;rm=false" target="_blank">libres</a> que hay online) han hecho que, mal que bien, todo el mundo se maneje con Word y Excel.</p>
<p>Así que, como es lo que tienes a mano, es lo que utilizas&#8230; para tener una base de datos de clientes, te haces una Excel y vas guardando los datos. Luego, para hacer la facturación, o haces las facturas directamente en Word, o las haces en Excel, que es más fácil de formatear&#8230; al final, parece que la Excel vale para todo (y es así en algunos casos). Así, el encargado de facturación tiene su Excel con las facturas. El comercial, otra en la que lleva la lista de clientes, la gente de producción sus propias hojas para controlar el trabajo, etc.</p>
<p>Que nadie me entienda mal&#8230; esto funciona, y en muchos casos la empresa no necesita nada más. Ya sabéis lo que dice la piedra angular de la informática&#8230; <a title="si funciona..." href="http://blogs.20minutos.es/blog404/post/2007/12/04/si-funciona-aano-toques-" target="_blank">si funciona, no lo toques</a>. Ahora bien, hay veces en que ya sea la complejidad de los procesos (muchos datos que hay que gestionar o cruzar) o simplemente el tiempo, hacen que esto no sea cómodo. Principalmente, lo que pasa, es que las Excel se hacen tan complejas, sobre todo cuando la gente aprende a usarla mejor, que nadie las puede comprender salvo el que las ha hecho (para ejemplo, este fantástico artículo sobre &#8216;<a title="the Great Excel spreadsheet" href="http://thedailywtf.com/Articles/The-Great-Excel-Spreadsheet.aspx" target="_blank">la gran hoja Excel</a>&#8216;).</p>
<p>Llegado a este momento, la siguiente fase:</p>
<h3>La aplicación de gestión</h3>
<p>Una vez llegado a este punto (y creo firmemente que en la PYME hay que pasar por el anterior y llegar a su umbral para pasar a la siguiente fase), pasamos a buscar un programa de gestión que esté pensado para nuestro negocio. El ejemplo más claro es la contabilidad&#8230; creo que a día de hoy no hay ninguna empresa que no tenga un software de contabilidad para su gestión. También es verdad que la mayoría tiene la contabilidad subcontratada a una gestoría, así que está un poco más oculto.</p>
<p>Igual que con la contabilidad, la empresa tiende a buscar o bien un software para facturar y llevar la cartera de clientes, o bien un software para gestionar su proceso productivo (lo que más le preocupe). En algunos casos, las dos cosas.</p>
<div id="attachment_336" class="wp-caption alignleft" style="width: 310px"><a rel="attachment wp-att-336" href="http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/880-from-my-cold-dead-hands/"><img class="size-medium wp-image-336" title="de mis manos frías y muertas" src="http://www.ender.es/wp-content/uploads/2010/02/880-from-my-cold-dead-hands-300x188.jpg" alt="de mis manos frías y muertas" width="300" height="188" /></a><p class="wp-caption-text">Me quitaréis la Excel de mis manos frías y muertas!</p></div>
<p>Aquí empieza una gran batalla, que durará mucho tiempo&#8230; conseguir que la gente que ha trabajado duramente para conseguir una hoja Excel con muchísima funcionalidad deje de utilizarla, y se ponga a usar una aplicación completamente nueva, de la que en muchos casos no se fía.</p>
<p>Esta pelea puede durar años, y he visto situaciones en la que la gente llega a trabajar el doble: por un lado rellena los datos en la aplicación de gestión, porque se lo dice el jefe, y por otro tiene su Excel que es lo que utiliza para trabajar. En fin!</p>
<p>Una vez todo el mundo, más o menos, se acostumbra a usar la aplicación, las cosas mejoran sensiblemente: se reduce la duplicación (aunque no se elimina del todo), los procesos tediosos se acortan y se tiene más información (que no conocimiento) sobre lo que pasa en la empresa.</p>
<p>Creo que para la mayoría de las Pymes esta situación es suficiente&#8230; han resuelto lo que llamo el &#8216;día a día&#8217;, es decir, no se les pierde información, no dejan de cobrar facturas porque se les olvida que estaban pendientes, los clientes están todos atendidos y controlados, etc. Todos contentos.</p>
<p>O casi todos, porque hay algunas situaciones en las que esto no es suficiente: cuando el proceso de la empresa es un poco particular, o cuando no encuentras una aplicación estándar que te satisfaga. Aquí, muchas empresas caen en un pantano:</p>
<h3>Tengo un amigo que es informático, nos hace un programa por cuatro duros</h3>
<p>Muchos de los que hayan pasado por esta etapa (que puede ser que vaya antes de la etapa del software estándar, depende) sentirá un escalofrío por la espalda al recordarla&#8230; es aquél momento en el que alguien de la empresa propone hacer un programa a medida, por varias posibles razones:</p>
<ul>
<li>Las aplicaciones que hay en el mercado no nos convencen&#8230; nuestra forma de hacer las cosas es particular.</li>
<li>Son caras, podemos hacernos una más barato si la hacemos nosotros (los pelos de punta sólo de escribir esto).</li>
<li>Hacemos una, y la vendemos, así al final nos sale gratis y tenemos un programa como nosotros queremos.</li>
<li>Buscamos una solución de software libre, y la adaptamos.</li>
</ul>
<p>Puede ser alguna de estas razones o una combinación de varias, pero mucha gente se encuentra en esta situación.</p>
<p>El caso de la solución de software libre es un poco especial, y es la mejor opción si es posible: si es un proyecto activo, que tiene muchos programadores colaborando, el software será bueno; en cualquier caso, hay que conseguir a alguien que se encargue de la programación que haga falta.</p>
<p>En algunos casos es uno de los trabajadores de la empresa, que tiene conocimientos de programación, o el hijo/hermano/primo de alguien de la empresa (perdón por el sexismo, también hay hijas, hermanas y primas) el que se hace cargo, como parte de su trabajo si es un empleado o cobrando poco dinero si es un allegado&#8230; con la mejor voluntad del mundo, se pone Access y Visual Studio en ristre a programar lo que la gente de la empresa le va pidiendo. En otros casos, se contrata a un programador Freelance, por un precio fijo, para que programe lo que necesitamos.</p>
<p>Una vez más, el disclaimer: a mucha gente esto le funciona bien, y tienen una aplicación que les sirve para lo que necesitan. Sin embargo, también hay dos situaciones muy comunes:</p>
<ul>
<li>El empleado o allegado se cansa o se va, por esas circunstancias de la vida, y el proyecto se queda a medias o esbozado. Conclusión: tiempo perdido por parte de todos.</li>
<li>El programador se da cuenta del marrón en el que se ha metido: se pactó un precio cerrado y como la especificación no hace más que cambiar, el tiempo de trabajo se dispara. En estas circunstancias, y dependiendo de la experiencia del programador, o bien ejerce de <a title="Pringao!" href="http://www.sromero.org/wiki/doku.php/linux:sistema:pringao_howto" target="_self">pringao</a> y sigue adelante, o se planta y pide más dinero, y empiezan las peleas.</li>
</ul>
<p>Si hay suerte, llegamos a tener una aplicación que funciona bien y que cumple los requisitos actuales de la empresa&#8230; se ajusta bien y tiene los informes que hacen falta.</p>
<p>Igual que en todos los casos anteriores, muchas empresas pueden quedarse aquí tan contentas, pero hay una cosa a tener en cuenta: eventualmente, la forma de hacer las cosas de la empresa puede cambiar. Puede ser un cambio de legislación (el ejemplo clásico: el IVA codificado en bruto al 16%, ahora que está a punto de subir al 18), o una decisión de la dirección de la empresa de cambiar la forma de hacer las cosas: mejorar el proceso, que es algo que todas las empresas deberían hacer continuamente.</p>
<p>Aquí se presenta un problema: ¿modificamos la aplicación que hay? puede ser que el programador que la hizo ahora se dedique a otras cosas y no le interese&#8230; también puede ser que la aplicación esté tan liada que ya no haya quien le meta mano (lo que se llama <a title="gran bola de barro" href="http://en.wikipedia.org/wiki/Big_ball_of_mud" target="_self">la gran bola de barro</a>). El único que puede hacer algo en la aplicación es el programador que la hizo, y ni siquiera está claro que le interese.</p>
<p>En esta situación hay varias alternativas: o la empresa se vuelve a un sistema estándar del mercado, o se lía la manta a la cabeza y hace uno nuevo con otro programador, o hace lo que creo que es peor para todos, y lo que pasa a menudo: ajusta su forma de trabajar a la aplicación de gestión que tiene&#8230; así se pierde ventaja competitiva, todas las empresas acaban haciendo más o menos lo mismo, que es lo que dictan las aplicaciones de gestión del mercado.</p>
<p>La otra opción, que es la que me parece mejor (eso estaba claro, porque es a lo que nos dedicamos), es buscar una empresa que sea capaz de hacer desarrollo a medida, y si es posible que tenga una plantilla de sistema que se pueda adaptar&#8230;</p>
<h3>Un sistema de información que vaya contigo</h3>
<p>El objetivo llegado a esta fase es intentar no repetir los problemas del pasado:</p>
<ul>
<li>No duplicar la información: si es posible, tener un sistema que englobe toda la actividad de la empresa.</li>
<li>Tener una aplicación que pueda modificarse con el tiempo, no algo completamente cerrado.</li>
<li>No quedarte &#8216;colgado&#8217;, confiar en una empresa que vaya a estar contigo años.</li>
</ul>
<p>En realidad, todo esto es lo que se llama un <a title="ERP" href="http://es.wikipedia.org/wiki/Planificaci%C3%B3n_de_Recursos_Empresariales" target="_blank">ERP</a>, no una aplicación de gestión: es un sistema informático que funciona como un mapa de todo lo que pasa en la empresa&#8230; centraliza toda la información que se produce y maneja en el sistema y permite procesarla a posteriori para extraer conocimiento.</p>
<div id="attachment_341" class="wp-caption alignright" style="width: 213px"><a rel="attachment wp-att-341" href="http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/dilbert_consultor/"><img class="size-full wp-image-341" title="Consultores" src="http://www.ender.es/wp-content/uploads/2010/02/dilbert_consultor.png" alt="los consultores..." width="203" height="190" /></a><p class="wp-caption-text">El fantástico mundo de los consultores</p></div>
<p>Si tienes unos pocos de cientos de miles de Euros, vas a las grandes compañías del mercado, y te implantan lo que se llama una <a title="Soluciones sectoriales" href="http://www.sap.com/spain/industries/index.epx" target="_blank">solución sectorial</a>. Es más o menos lo que describía en al final del punto anterior: una plantilla de sistema de información del sector de la empresa, y que un equipo de consultores y programadores adaptan a tus necesidades.</p>
<p>Que nadie se engañe aquí: si se hacen las cosas de forma medianamente correcta, al final la empresa va a tener un sistema fantástico, que puede ser modificado a posteriori y que es extremadamente estable, porque está implantado por diversos equipos en infinidad de empresas.</p>
<p>Ahora bien, esto tiene un precio, y si estamos hablando de las grandes consultoras&#8230; ese precio no es pequeño. Sólo el importe de las licencias es tremendo, a lo que hay que añadir las horas de consultoría y adaptación necesarias para tener un sistema como el que necesitas&#8230;</p>
<p>¿Y si eres una empresa pequeña de verdad? Si no te puedes gastar 60.000 Euros en un sistema de información, qué haces? pues lo tienes chungo, la verdad&#8230; buscar una empresa que pueda hacerte un desarrollo a medida y que tenga todas estas cosas en la cabeza.</p>
<p>Qué voy a decir a estas alturas&#8230; cuento esto porque describe lo que hemos estado haciendo los últimos años, y lo que entiendo que debe hacerse en las Pymes&#8230; nosotros hemos hecho aplicaciones estándar durante mucho tiempo, y siempre nos hemos encontrado con los mismos problemas&#8230; la gente quiere cambios continuamente, así que me parece que ese modelo no se ajusta del todo a lo que la gente quiere&#8230;</p>
<p>Poco más tengo para contar de este tema&#8230; con un poco de suerte tú que lees esto identificarás la fase en la que se encuentra tu empresa, y este artículo te servirá de ayuda para saber por dónde seguir (o para avisarte de los peligros que hay en la carretera).</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;t=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;title=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F&amp;srcUrl=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;srcTitle=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F&amp;snippet=Antes%20de%20que%20nadie%20se%20me%20eche%20al%20cuello%2C%20esto%20no%20es%20un%20sesudo%20an%C3%A1lisis%20del%20grado%20de%20penetraci%C3%B3n%20%28con%20perd%C3%B3n%29%20de%20las%20tecnolog%C3%ADas%20de%20la%20informaci%C3%B3n%20en%20las%20empresas%20espa%C3%B1olas%2C%20ni%20nada%20eso...%20simplemente%20es%20una%20reflexi%C3%B3n%2C%20basada%20en%20las%20empresas%20que%20hemos%20visto%20durante%20los%20%C3%BAltimos%20a%C3%B1os%2C%20del%20uso%20" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;title=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F&amp;summary=Antes%20de%20que%20nadie%20se%20me%20eche%20al%20cuello%2C%20esto%20no%20es%20un%20sesudo%20an%C3%A1lisis%20del%20grado%20de%20penetraci%C3%B3n%20%28con%20perd%C3%B3n%29%20de%20las%20tecnolog%C3%ADas%20de%20la%20informaci%C3%B3n%20en%20las%20empresas%20espa%C3%B1olas%2C%20ni%20nada%20eso...%20simplemente%20es%20una%20reflexi%C3%B3n%2C%20basada%20en%20las%20empresas%20que%20hemos%20visto%20durante%20los%20%C3%BAltimos%20a%C3%B1os%2C%20del%20uso%20&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F+-+http://b2l.me/z6n5n&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/&amp;title=%C2%BFC%C3%B3mo+de+informatizada+est%C3%A1+tu+empresa%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/02/como-de-informatizada-esta-tu-empresa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Desarrollo de software a medida</title>
		<link>http://www.ender.es/2010/02/desarrollo_de_software/</link>
		<comments>http://www.ender.es/2010/02/desarrollo_de_software/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:26:01 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[Ender]]></category>

		<guid isPermaLink="false">http://www.ender.es/?p=239</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Somos un equipo de fanáticos de la programación a medida. Utilizamos métodos ágiles de desarrollo para que nuestros clientes puedan tener software hecho a medida, que cambie según sus necesidades y a<a href="http://www.ender.es/2010/02/desarrollo_de_software/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/desarrollo_de_software/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/desarrollo_de_software/&amp;t=Desarrollo+de+software+a+medida" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/desarrollo_de_software/&amp;title=Desarrollo+de+software+a+medida&amp;srcUrl=http://www.ender.es/2010/02/desarrollo_de_software/&amp;srcTitle=Desarrollo+de+software+a+medida&amp;snippet=Somos%20un%20equipo%20de%20fan%C3%A1ticos%20de%20la%20programaci%C3%B3n%20a%20medida.%20Utilizamos%C2%A0m%C3%A9todos%20%C3%A1giles%20de%20desarrollo%20para%20que%20nuestros%20clientes%20puedan%20tener%20software%20hecho%20a%20medida%2C%20que%20cambie%20seg%C3%BAn%20sus%20necesidades%20y%20a%20un%20precio%20ajustado.%0D%0A%0D%0APara%20nosotros%20es%20fundamental%20que%20puedas%20saber%20el%20estado%20de%20tu%20proyecto%3B" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/desarrollo_de_software/&amp;title=Desarrollo+de+software+a+medida&amp;summary=Somos%20un%20equipo%20de%20fan%C3%A1ticos%20de%20la%20programaci%C3%B3n%20a%20medida.%20Utilizamos%C2%A0m%C3%A9todos%20%C3%A1giles%20de%20desarrollo%20para%20que%20nuestros%20clientes%20puedan%20tener%20software%20hecho%20a%20medida%2C%20que%20cambie%20seg%C3%BAn%20sus%20necesidades%20y%20a%20un%20precio%20ajustado.%0D%0A%0D%0APara%20nosotros%20es%20fundamental%20que%20puedas%20saber%20el%20estado%20de%20tu%20proyecto%3B&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Desarrollo+de+software+a+medida+-+http://b2l.me/2peyq&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/desarrollo_de_software/&amp;title=Desarrollo+de+software+a+medida" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>Somos un equipo de fanáticos de la programación a medida. Utilizamos <a title="métodos ágiles de programación" href="http://www.ender.es/metodologia/">métodos ágiles</a> de desarrollo para que nuestros clientes puedan tener software hecho a medida, que cambie según sus necesidades y a un precio ajustado.</p>
<p>Para nosotros es fundamental que puedas saber el estado de tu proyecto; por eso tenemos <a title="disponibilidad de la información de desarrollo" href="http://www.ender.es/metodologia/disponibilidad-de-la-informacion-de-desarrollo/">múltiples métodos</a> para que estés informado en tiempo real de nuestros progresos.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/02/desarrollo_de_software/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/02/desarrollo_de_software/&amp;t=Desarrollo+de+software+a+medida" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/02/desarrollo_de_software/&amp;title=Desarrollo+de+software+a+medida&amp;srcUrl=http://www.ender.es/2010/02/desarrollo_de_software/&amp;srcTitle=Desarrollo+de+software+a+medida&amp;snippet=Somos%20un%20equipo%20de%20fan%C3%A1ticos%20de%20la%20programaci%C3%B3n%20a%20medida.%20Utilizamos%C2%A0m%C3%A9todos%20%C3%A1giles%20de%20desarrollo%20para%20que%20nuestros%20clientes%20puedan%20tener%20software%20hecho%20a%20medida%2C%20que%20cambie%20seg%C3%BAn%20sus%20necesidades%20y%20a%20un%20precio%20ajustado.%0D%0A%0D%0APara%20nosotros%20es%20fundamental%20que%20puedas%20saber%20el%20estado%20de%20tu%20proyecto%3B" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/02/desarrollo_de_software/&amp;title=Desarrollo+de+software+a+medida&amp;summary=Somos%20un%20equipo%20de%20fan%C3%A1ticos%20de%20la%20programaci%C3%B3n%20a%20medida.%20Utilizamos%C2%A0m%C3%A9todos%20%C3%A1giles%20de%20desarrollo%20para%20que%20nuestros%20clientes%20puedan%20tener%20software%20hecho%20a%20medida%2C%20que%20cambie%20seg%C3%BAn%20sus%20necesidades%20y%20a%20un%20precio%20ajustado.%0D%0A%0D%0APara%20nosotros%20es%20fundamental%20que%20puedas%20saber%20el%20estado%20de%20tu%20proyecto%3B&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Desarrollo+de+software+a+medida+-+http://b2l.me/2peyq&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/02/desarrollo_de_software/&amp;title=Desarrollo+de+software+a+medida" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/02/desarrollo_de_software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modelado de datos: ¿los límites del modelo entidad-relación?</title>
		<link>http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/</link>
		<comments>http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:35:28 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Procesos]]></category>

		<guid isPermaLink="false">http://www.ender.es/blog/?p=192</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! Atributos Los campos del modelo entidad-relacion no siempre representan información sobre el modelo de negocio que están tratando. A menudo, son campos auxiliares que ayudan a la implementación del modelo dentro<a href="http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/01/modelado-de-datos-¿los-limites-del-modelo-entidad-relacion/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;t=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;title=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F&amp;srcUrl=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;srcTitle=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F&amp;snippet=Atributos%20Los%20campos%20del%20modelo%20entidad-relacion%20no%20siempre%20representan%20informaci%C3%B3n%20sobre%20el%20modelo%20de%20negocio%20que%20est%C3%A1n%20tratando.%20A%20menudo%2C%20son%20campos%20auxiliares%20que%20ayudan%20a%20la%20implementaci%C3%B3n%20del%20modelo%20dentro%20de%20la%20base%20de%20datos.%20Los%20atributos%20del%20modelo%20Clase-Colecci%C3%B3n%20representan%20siempre%20in" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;title=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F&amp;summary=Atributos%20Los%20campos%20del%20modelo%20entidad-relacion%20no%20siempre%20representan%20informaci%C3%B3n%20sobre%20el%20modelo%20de%20negocio%20que%20est%C3%A1n%20tratando.%20A%20menudo%2C%20son%20campos%20auxiliares%20que%20ayudan%20a%20la%20implementaci%C3%B3n%20del%20modelo%20dentro%20de%20la%20base%20de%20datos.%20Los%20atributos%20del%20modelo%20Clase-Colecci%C3%B3n%20representan%20siempre%20in&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F+-+http://b2l.me/z7vs8&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;title=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>Atributos Los campos del modelo entidad-relacion no siempre representan información sobre el modelo de negocio que están tratando. A menudo, son campos auxiliares que ayudan a la implementación del modelo dentro de la base de datos. Los atributos del modelo Clase-Colección representan siempre información sobre el modelo de negocio. Si es necesario algún campo auxiliar en alguna tabla, es completamente transparente tanto para el usuario como para el analista (y en la mayoría de los casos para el desarrollador). Por otro lado, además de los tipos de datos clásicos en una base de datos (carácter, numérico, fecha, etc.) en este modelado se incluyen otros dos tipos de atributos. En general, en el modelo Clase-Colección existen tres tipos de atributos: Atributos de tipo valor, de tipo objeto y de tipo colección. La incorporación más importante del modelo clase-colección es la asociación de los atributos tipo objeto y tipo colección en parejas. Como decíamos antes, en el modelo entidad-relación las relaciones se ven siempre desde un único punto de vista a la hora de modelizar. Como en el mundo real, las relaciones en un modelo de negocio siempre tienen dos puntos de vista, y nuestro modelo de datos intenta representar eso. Una relación se representa por un par de atributos, enlazados entre sí. De esta forma, no hay que pensar en estructuras predefinidas y ver cuál se adapta mejor, sino analizar la realidad y representarla de la mejor forma posible. Más adelante lo veremos con más detalle. A continuación se hace una pequeña introducción a los tres tipos de atributos:Todos los que programamos sistemas de información para empresas tenemos que tener conocimientos de modelado de datos en bases de datos relacionales. Bases de datos y SQL son habilidades imprescindibles para nuestro trabajo.</p>
<p>Desde siempre ha habido cosas que no me han acabado de convencer del <a title="Modelo entidad-relación" href="http://es.wikipedia.org/wiki/Modelo_entidad-relación" target="_blank">modelo entidad-relación</a>, o mejor dicho, de la implementación que los sistemas de <a title="Bases de datos relacionales" href="http://es.wikipedia.org/wiki/Base_de_datos_relacional" target="_blank">bases de datos relaciones</a> hacen del mismo. Hay algunas cosas que no me han parecido naturales, y hemos desarrollado una teoría que, al menos a nosotros, nos ha servido los últimos 5 años para los proyectos que hemos desarrollado.</p>
<h2>Cosas raras en el modelo entidad-relación (con todo respeto)</h2>
<p>Nuestra teoría (la llamamos, a falta de un término mejor, el modelo objeto-colección) se basa dos ideas, aparentemente sin nada que ver una con la otra:</p>
<p>Primero, la programación orientada a objetos (estaba claro, habiendo en el título la palabra &#8220;objeto&#8221;). Segundo, la idea de que las relaciones siempre se pueden ver, de forma distinta, desde el punto de vista de las dos entidades involucradas&#8230;</p>
<p>En la implementación de una relación 1 a N entre dos tablas, la relación se establece creando una clave ajena que &#8216;apunta&#8217; a la tabla &#8216;madre&#8217;. Sin acceder a los metadatos de la base, no se puede saber, mirando una tabla, cuántas tablas están relacionadas con ella. Es como si la relación sólo se estuviera viendo desde el lado de la tabla &#8216;hija&#8217;, sólo desde un punto de vista. No nos &#8216;suena&#8217; bien.</p>
<p>Otra cosa es la implementación de las relaciones M..N. Implica la existencia de una tabla intermedia en la que se almacenan las duplas de claves ajenas que representan la relación. En teoría (nos enseñaban en la facultad), cada entidad tiene que tener una representación física en el sistema que estamos modelizando, y durante las clases se pasaba de puntillas por el hecho de que estas tablas eran &#8216;auxiliares&#8217;, que ayudaban a montar la relación pero no tenían existencia como entidades. Hmpf!</p>
<h2>Lo que hacemos</h2>
<p>Proponemos una forma similar, pero ligeramente diferente, de entender las relaciones, y una forma de implementarla utilizando los sistemas de base de datos relacionales existentes actualmente.</p>
<div id="_mcePaste">
<p>El modelo entidad-relación y las bases de datos relacionales están intimamente relacionados (como sus nombres indican) y todas las bases de datos modernas están orientadas en este sentido. Existen otras aproximaciones, como las bases de datos orientadas a objetos, pero su implantación en sistemas en producción es más bien escasa. Por otro lado, con esta técnica y un poco de imaginación se puede modelizar cualquier negocio que pueda presentarse. Por tanto, parece la metodología óptima para el desarrollo de aplicaciones de gestión. Sin embargo, presenta una serie de dificultades para la modelización.</p>
<p>Principalmente, la implementación de las relaciones, sobre todo las 1 a N , se basa en una representación desde un sólo punto de vista. La relación “todas las facturas tienen un cliente” también puede enunciarse “un cliente tiene n facturas”. A la hora de modelizar, esta dualidad de la representación puede crear problemas de identificación que afecten a la calidad del modelo creado.</p>
<p>Por otro lado, esta forma de trabajo “descubre” demasiado de la implementación al diseñador. Para hacer un buen diseño de base de datos el analista debe conocer hasta cierto punto el diseño de las bases de datos relacionales, lo que quizá sean demasiados requerimientos para alguien que debe dedicarse a modelizar procesos de negocio.</p>
<h2>El modelo Objeto-Colección</h2>
<p>El modelo se basa actualmente en una implementación similar del mismo, pero presentando las ideas de una forma diferente, extraída de la orientación a objetos, con el objetivo de facilitar tanto el diseño de los modelos de datos como su mantenimiento. En este modelo de datos se introducen varios cambios sobre el modelo entidad-relación:</p>
<h3>Clases</h3>
<p>El concepto de tabla se altera ligeramente en este modelo, y se asocia con el concepto de clase de la orientación a objetos. Una clase es una estructura que contiene tanto los datos como los procesos que se aplican a los mismos, y lo mismo se trata de hacer aquí. Además de una serie de atributos (que sustituyen a los campos, y que analizaremos posteriormente), una clase también posee una serie de métodos (o procesos que se aplican sobre sus datos) y consultas, o informes que presentan al usuario información sobre sus datos. Por otro lado, el modelo entidad-relación identifica una entidad con una tabla. En el modelo Clase-Colección no es necesariamente así. De hecho, la implementación actual, que no es la única y que puede cambiar, presenta cada clase como dos tablas y una secuencia.</p>
<h3>Atributos</h3>
<p>Los campos del modelo entidad-relacion no siempre representan información sobre el modelo de negocio que están tratando. A menudo, son campos auxiliares que ayudan a la implementación del modelo dentro de la base de datos. Los atributos del modelo Clase-Colección representan siempre información sobre el modelo de negocio. Si es necesario algún campo auxiliar en alguna tabla, es completamente transparente tanto para el usuario como para el analista (y en la mayoría de los casos para el desarrollador). Por otro lado, además de los tipos de datos clásicos en una base de datos (carácter, numérico, fecha, etc.) en este modelado se incluyen otros dos tipos de atributos. En general, en el modelo Clase-Colección existen tres tipos de atributos: Atributos de tipo valor, de tipo objeto y de tipo colección. La incorporación más importante del modelo clase-colección es la asociación de los atributos tipo objeto y tipo colección en parejas. Como decíamos antes, en el modelo entidad-relación las relaciones se ven siempre desde un único punto de vista a la hora de modelizar. Como en el mundo real, las relaciones en un modelo de negocio siempre tienen dos puntos de vista, y nuestro modelo de datos intenta representar eso. Una relación se representa por un par de atributos, enlazados entre sí. De esta forma, no hay que pensar en estructuras predefinidas y ver cuál se adapta mejor, sino analizar la realidad y representarla de la mejor forma posible. Más adelante lo veremos con más detalle. A continuación se hace una pequeña introducción a los tres tipos de atributos:</p>
<h4>Tipo valor</h4>
<p>Los atributos tipo valor se asocian con datos que vaya a escribir el usuario o información real del modelo de negocio. Dentro de los atributos tipo valor existen todos los tipos de datos especificados anteriomente (carácter, etc.). Por ejemplo, atributos tipo valor son el nombre de un cliente, su NIF, el número de una factura o la fecha de creación de una factura.</p>
<h4>Tipo objeto</h4>
<p>Los atributos tipo objeto tienen su origen en los campos de clave ajena que se utilizan en el modelo entidad- relación para implementar las relaciones. Son un enlace en una clase a un objeto de otra, de forma que se integra en la información de la clase como un atributo más, y se comporta como cualquier otro.</p>
<h4>Tipo colección</h4>
<p>Los atributos tipo colección representan un conjunto de objetos de otra clase, y son la incorporación de este tipo de modelado. Anteriormente, analizando aisladamente la clase Clientes es imposible saber que está relacionada con facturas. De esta forma, la ingeniería inversa de los modelos de datos se complica enormemente. Actualmente, la clase clientes tiene un atributo tipo colección llamado “Facturas”, de forma que es muy fácil identificar todas las relaciones que la clase clientes tiene con otras clases. Además, la relación se puede ver desde los dos lados. La factura tiene un cliente y el cliente tiene un conjunto de facturas.</p>
<h3>Implementación de las relaciones</h3>
<p>Al crear un atributo tipo objeto o colección, el sistema solicita al usuario la creación del atributo enlazado de la clase de destino, así se asegura la integridad del sistema.  Después a la hora de utilizar dichas relaciones, siempre se tratarán en parejas de forma transparente para el usuario. Por ejemplo, si se modifica el atributo “Cliente” de un objeto de la clase Facturas, y se cambia su enlace, el sistema automáticamente actualizará la colección de “Facturas” de los clientes implicados: Sacará la factura del cliente antiguo y la meterá en el nuevo. Este proceso ayuda bastante a la modelización de los datos, creandose así varios tipos de relaciones: Relaciones Objeto-Objeto En general no son recomendables, porque representan relaciones 1 a 1 que son erróneas normalmente, pero en algunas ocasiones son necesarias. Por ejemplo, la implementación de los pares de atributos (atributo y atributo enlazado), se hace a través de una relación objeto-objeto Relaciones Objeto-Colección Representan las relaciones 1 a N del modelo entidad-relación, con la salvedad que ambas clases incluyen una relación, los que ayuda a la comprensión del modelo de datos, a su mantenimiento y a la visualización por parte del usario. Relaciones Colección-Colección Representan las relaciones M a N del modelo entidad-relación, con la diferencia que no existen tablas intermedias o auxiliares, y resulta mucho más visual para todas las partes implicadas.</p>
</div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/01/modelado-de-datos-¿los-limites-del-modelo-entidad-relacion/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;t=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;title=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F&amp;srcUrl=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;srcTitle=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F&amp;snippet=Atributos%20Los%20campos%20del%20modelo%20entidad-relacion%20no%20siempre%20representan%20informaci%C3%B3n%20sobre%20el%20modelo%20de%20negocio%20que%20est%C3%A1n%20tratando.%20A%20menudo%2C%20son%20campos%20auxiliares%20que%20ayudan%20a%20la%20implementaci%C3%B3n%20del%20modelo%20dentro%20de%20la%20base%20de%20datos.%20Los%20atributos%20del%20modelo%20Clase-Colecci%C3%B3n%20representan%20siempre%20in" rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;title=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F&amp;summary=Atributos%20Los%20campos%20del%20modelo%20entidad-relacion%20no%20siempre%20representan%20informaci%C3%B3n%20sobre%20el%20modelo%20de%20negocio%20que%20est%C3%A1n%20tratando.%20A%20menudo%2C%20son%20campos%20auxiliares%20que%20ayudan%20a%20la%20implementaci%C3%B3n%20del%20modelo%20dentro%20de%20la%20base%20de%20datos.%20Los%20atributos%20del%20modelo%20Clase-Colecci%C3%B3n%20representan%20siempre%20in&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F+-+http://b2l.me/z7vs8&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/&amp;title=Modelado+de+datos%3A+%C2%BFlos+l%C3%ADmites+del+modelo+entidad-relaci%C3%B3n%3F" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/01/modelado-de-datos-%c2%bflos-limites-del-modelo-entidad-relacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integración entre sistemas, o cómo ahorrar tiempo y dinero</title>
		<link>http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/</link>
		<comments>http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 15:34:34 +0000</pubDate>
		<dc:creator>Domingo</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ender.es/blog/?p=194</guid>
		<description><![CDATA[&#191;Quieres suscribirte a los comentarios de este Post? Compartir con Facebook A&#241;dirlo a Google Reader Compartir con LinkedIn &#161;Comp&#225;rtelo en Twitter! &#161;Comp&#225;rtelo con Digg! En lugar de hacer sistemas a medida, vamos a coger sistemas ya existentes, que son estables y que funcionan bien, y vamos a buscar una forma de que se comuniquen&#8230; no<a href="http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/"> [Leer más ..]</a>]]></description>
			<content:encoded><![CDATA[

<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;t=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;title=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero&amp;srcUrl=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;srcTitle=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero&amp;snippet=En%20lugar%20de%20hacer%20sistemas%20a%20medida%2C%20vamos%20a%20coger%20sistemas%20ya%20existentes%2C%20que%20son%20estables%20y%20que%20funcionan%20bien%2C%20y%20vamos%20a%20buscar%20una%20forma%20de%20que%20se%20comuniquen...%20no%20hace%20falta%20que%20todo%20est%C3%A9%20en%20la%20misma%20base%20de%20datos." rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;title=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero&amp;summary=En%20lugar%20de%20hacer%20sistemas%20a%20medida%2C%20vamos%20a%20coger%20sistemas%20ya%20existentes%2C%20que%20son%20estables%20y%20que%20funcionan%20bien%2C%20y%20vamos%20a%20buscar%20una%20forma%20de%20que%20se%20comuniquen...%20no%20hace%20falta%20que%20todo%20est%C3%A9%20en%20la%20misma%20base%20de%20datos.&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero+-+http://b2l.me/2qbt6&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;title=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

<p>En lugar de hacer sistemas a medida, vamos a coger sistemas ya existentes, que son estables y que funcionan bien, y vamos a buscar una forma de que se comuniquen&#8230; no hace falta que todo esté en la misma base de datos.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/feed" rel="nofollow" class="external" title="&iquest;Quieres suscribirte a los comentarios de este Post?">&iquest;Quieres suscribirte a los comentarios de este Post?</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;t=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero" rel="nofollow" class="external" title="Compartir con Facebook">Compartir con Facebook</a>
		</li>
		<li class="shr-googlereader">
			<a href="http://www.google.com/reader/link?url=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;title=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero&amp;srcUrl=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;srcTitle=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero&amp;snippet=En%20lugar%20de%20hacer%20sistemas%20a%20medida%2C%20vamos%20a%20coger%20sistemas%20ya%20existentes%2C%20que%20son%20estables%20y%20que%20funcionan%20bien%2C%20y%20vamos%20a%20buscar%20una%20forma%20de%20que%20se%20comuniquen...%20no%20hace%20falta%20que%20todo%20est%C3%A9%20en%20la%20misma%20base%20de%20datos." rel="nofollow" class="external" title="A&ntilde;dirlo a Google Reader">A&ntilde;dirlo a Google Reader</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;title=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero&amp;summary=En%20lugar%20de%20hacer%20sistemas%20a%20medida%2C%20vamos%20a%20coger%20sistemas%20ya%20existentes%2C%20que%20son%20estables%20y%20que%20funcionan%20bien%2C%20y%20vamos%20a%20buscar%20una%20forma%20de%20que%20se%20comuniquen...%20no%20hace%20falta%20que%20todo%20est%C3%A9%20en%20la%20misma%20base%20de%20datos.&amp;source=ENDER SOFTWARE, desarrollo de software a medida" rel="nofollow" class="external" title="Compartir con LinkedIn">Compartir con LinkedIn</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero+-+http://b2l.me/2qbt6&amp;source=shareaholic" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo en Twitter!">&iexcl;Comp&aacute;rtelo en Twitter!</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/&amp;title=Integraci%C3%B3n+entre+sistemas%2C+o+c%C3%B3mo+ahorrar+tiempo+y+dinero" rel="nofollow" class="external" title="&iexcl;Comp&aacute;rtelo con Digg!">&iexcl;Comp&aacute;rtelo con Digg!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.ender.es/2010/01/integracion-entre-sistemas-o-como-ahorrar-tiempo-y-dinero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
