<?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>Bosque Viejo &#187; martin fowler</title>
	<atom:link href="http://bosqueviejo.net/tag/martin-fowler/feed/" rel="self" type="application/rss+xml" />
	<link>http://bosqueviejo.net</link>
	<description>Sitio web sobre programación, software libre, redes, servidores, ofimática... y todo lo relacionado con la informática que nos rodea</description>
	<lastBuildDate>Tue, 08 May 2012 14:40:56 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Inversión de Control, el patrón de los frameworks</title>
		<link>http://bosqueviejo.net/2011/03/08/inversion-de-control-el-patron-de-los-frameworks/</link>
		<comments>http://bosqueviejo.net/2011/03/08/inversion-de-control-el-patron-de-los-frameworks/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 17:48:39 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[desarrollo ágil]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[martin fowler]]></category>
		<category><![CDATA[patrones de diseño]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=571</guid>
		<description><![CDATA[ Leyendo un artículo de Martin Fowler, sobre el tema Inversión de Control (en inglés), comenzando por el final, la etimología de la frase (entendido como el origen del concepto), se comenta que, en un principio (sobre los años 80) la gente se refería a una nueva forma de hacer las cosas como el Principio de Hollywood, teniendo presente la famosa frase de los cineastas: &#8220;no nos llames, nosotros te llamaremos&#8221;.
Si pensamos en las librerías, en cualquier lenguaje, ya sean módulos, paquetes u objetos, siempre alcanzamos una funcionalidad encapsulada dentro de una forma específica a la que se la puede llamar para realizar una acción. Pero esto cambia radicalmente en los frameworks, u entornos de desarrollo, ya que estos entornos, normalmente, realizan un cierto trabajo, y te permiten extender esa funcionalidad base, con ciertas reglas, a través de código que se escribe.
Se podría pensar en los frameworks como piezas de software que permiten agregar una funcionalidad extra desarrollada por el programador que usa el framework, a modo de addon, plugin o extensión. Pero no es eso. Las extensiones (o llámese como se quiera) son trozos de código, que opcionalmente se puede ejecutar en un programa completamente funcional. Como es obvio, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://bosqueviejo.net/wp-content/uploads/ioc.jpeg" alt="" title="ioc" width="120" height="120" class="alignleft size-full wp-image-685" /> Leyendo un artículo de Martin Fowler, sobre el tema <a href="http://martinfowler.com/bliki/InversionOfControl.html">Inversión de Control</a> (en inglés), comenzando por el final, la etimología de la frase (entendido como el origen del concepto), se comenta que, en un principio (sobre los años 80) la gente se refería a una nueva forma de hacer las cosas como <em>el Principio de Hollywood</em>, teniendo presente la famosa frase de los cineastas: &#8220;no nos llames, nosotros te llamaremos&#8221;.</p>
<p>Si pensamos en las librerías, en cualquier lenguaje, ya sean módulos, paquetes u objetos, siempre alcanzamos una funcionalidad encapsulada dentro de una forma específica a la que se la puede llamar para realizar una acción. Pero esto cambia radicalmente en los <em>frameworks</em>, u entornos de desarrollo, ya que estos entornos, normalmente, realizan un cierto trabajo, y te permiten extender esa funcionalidad base, con ciertas reglas, a través de código que se escribe.</p>
<p>Se podría pensar en los <em>frameworks</em> como piezas de software que permiten agregar una funcionalidad extra desarrollada por el programador que usa el <em>framework</em>, a modo de <em>addon</em>, <em>plugin</em> o extensión. Pero no es eso. Las extensiones (o llámese como se quiera) son trozos de código, que opcionalmente se puede ejecutar en un programa completamente funcional. Como es obvio, ningún <em>framework</em> es completamente funcional sin agregar ningún código por parte del programador.</p>
<p>Por lo tanto, la inversión de control es más una base sobre la que construir un elemento, es nuestra arquitectura de soporte, mientras que la base sobre la que se programa un plugin es un elemento completo y funcional que se extiende mediante el plugin, pero que no depende de él.</p>
<p>Este es otro de los grandes elementos en los que se basa la Ingeniería del Software al decir que, lo importante, es la lógica de negocio o el sistema en sí que se quiere desarrollar, dejando la parte de arquitectura de soporte y el trasfondo sobre el que se ejecuta la solución al <em>framework</em>.</p>
<p>Si aún se tiene alguna duda, puede que con este ejemplo se disipen (o aumenten <img src='http://bosqueviejo.net/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' />  ), tomado del artículo de Martin Fowler comentado antes, tenemos un trozo de código en Ruby tal que así:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'¿Cómo te llamas?'</span>
nombre = <span style="color:#CC0066; font-weight:bold;">gets</span>
procesa_nombre<span style="color:#006600; font-weight:bold;">&#40;</span>nombre<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'¿Qué buscas?'</span>
busqueda = <span style="color:#CC0066; font-weight:bold;">gets</span>
procesa_busqueda<span style="color:#006600; font-weight:bold;">&#40;</span>busqueda<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>En este trozo de código todo está bajo control, el sistema se ejecuta de forma lineal, pide la información en el momento en el que se le ha escrito y descrito y el código se ejecuta, secuencialmente, de forma predecible.</p>
<p>Ahora veremos otro ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'tk'</span>
&nbsp;
root = TkRoot.<span style="color:#9900CC;">new</span>
nombre_etiqueta = TkLabel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> text <span style="color:#996600;">&quot;¿Cómo te llamas?&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
nombre_etiqueta.<span style="color:#9900CC;">pack</span>
&nbsp;
nombre = TkEntry.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>root<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">pack</span>
nombre.<span style="color:#9900CC;">bind</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;FocusOut&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> procesa_nombre<span style="color:#006600; font-weight:bold;">&#40;</span>nombre<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
busqueda_etiqueta = TkLabel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> text <span style="color:#996600;">&quot;¿Qué buscas?&quot;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
busqueda_etiqueta.<span style="color:#9900CC;">pack</span>
&nbsp;
busqueda = TkEntry.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>root<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">pack</span>
busqueda.<span style="color:#9900CC;">bind</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;FocusOut&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> procesa_busqueda<span style="color:#006600; font-weight:bold;">&#40;</span>busqueda<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
Tk.<span style="color:#9900CC;">mainloop</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Aquí hay una gran diferencia en el flujo de ejecución, ya que los mensajes se ejecutan en el orden que el framework los llama, según la interacción del usuario. En este caso, el framework controla la ventana, los eventos que se suceden sobre los elementos gráficos y, en el caso de que haya un evento, si hemos desarrollado código para atender a ese evento, es el framework el que llama a nuestro código. Eso es <em>inversión de control</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2011/03/08/inversion-de-control-el-patron-de-los-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patrones de Análisis</title>
		<link>http://bosqueviejo.net/2010/07/22/patrones-de-analisis/</link>
		<comments>http://bosqueviejo.net/2010/07/22/patrones-de-analisis/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 07:02:55 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Libros]]></category>
		<category><![CDATA[desarrollo software]]></category>
		<category><![CDATA[martin fowler]]></category>
		<category><![CDATA[patrones de diseño]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=460</guid>
		<description><![CDATA[Una de las personas que más ha aportado al mundo del desarrollo de software es, sin duda, Martin Fowler.
Este autor, en su afán por facilitar dentro de lo posible el desarrollo de software para todo tipo, se ha introducido en las entrañas de lo que es el software de empresa típico y ha definido elementos, objetos, patrones y ayudas específicas que facilitan el análisis, diseño y programación en general de aplicaciones de este tipo. El libro es Analysis Patterns.
La obra nos introduce en el mundo de los patrones, los conceptos y modelos de los negocios e intenta dar una visión general del porqué estos patrones pueden ayudarnos a simplificar la creación de aplicaciones. A través de los capítulos, se van viendo, tema por tema, todos los aspectos que en toda empresa se suelen abordar: contabilidad, plannings, inventario, etc.
Como suele decir Richard Stallman: &#8220;para leer buen código hay que leer buen código&#8220;; y esta obra la considero un buen sistema de análisis para el que se quiera aventurar a realizar análisis de sistemas de información.
]]></description>
			<content:encoded><![CDATA[<p>Una de las personas que más ha aportado al mundo del desarrollo de software es, sin duda, Martin Fowler.</p>
<div style="float:left;padding-right:10px;padding-bottom:10px;"><a href='http://openlibrary.org/books/OL7409173M/Analysis_Patterns' ><img src='http://covers.openlibrary.org/b/id/136590-M.jpg' alt='Analysis Patterns' title='View this title in Open Library' /></a></div><div style="font-size:18px;font-weight:bold;"><a href='http://openlibrary.org/books/OL7409173M/Analysis_Patterns' title='View this title in Open Library' >Analysis Patterns: Reusable Object Models (The Addison-Wesley Object Technology Series)</a></div><div style="font-size:14px;"><a href='http://openlibrary.org/authors/OL27090A/Martin_Fowler' title='View this author in Open Library' >Martin Fowler</a>; Addison-Wesley Professional 1996</div><div style="font-size:10px;"><a href="http://worldcat.org/isbn/9780201895421" title="View this title at WorldCat">WorldCat</a>&#8226;<a href="http://www.librarything.com/work/10491" title="View this title at LibraryThing">LibraryThing</a>&#8226;<a href="http://books.google.com/books?as_isbn=9780201895421" title="View this title at Google Books">Google Books</a>&#8226;<a href="http://www.bookfinder.com/search/?st=xl&ac=qr&isbn=9780201895421" title="Search for the best price at BookFinder">BookFinder</a></div><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info%3Asid%2Fbosqueviejo.net%3AOpenBook&amp;rft.genre=book&amp;rft.btitle=Analysis+Patterns&amp;rft.isbn=9780201895421&amp;rft.au=Martin+Fowler&amp;rft.pub=Addison-Wesley+Professional&amp;rft.date=October+9%2C+1996&amp;rft.tpages=384">&nbsp;</span><p>
<p>Este autor, en su afán por facilitar dentro de lo posible el desarrollo de software para todo tipo, se ha introducido en las entrañas de lo que es el software de empresa típico y ha definido elementos, objetos, patrones y ayudas específicas que facilitan el análisis, diseño y programación en general de aplicaciones de este tipo. El libro es <strong>Analysis Patterns</strong>.</p>
<p>La obra nos introduce en el mundo de los patrones, los conceptos y modelos de los negocios e intenta dar una visión general del porqué estos patrones pueden ayudarnos a simplificar la creación de aplicaciones. A través de los capítulos, se van viendo, tema por tema, todos los aspectos que en toda empresa se suelen abordar: contabilidad, plannings, inventario, etc.</p>
<p>Como suele decir Richard Stallman: &#8220;<em>para leer buen código hay que leer buen código</em>&#8220;; y esta obra la considero un buen sistema de análisis para el que se quiera aventurar a realizar análisis de sistemas de información.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2010/07/22/patrones-de-analisis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

