<?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>Nosolopau</title>
	<atom:link href="http://nosolopau.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nosolopau.com</link>
	<description></description>
	<lastBuildDate>Sun, 27 Nov 2011 22:31:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Breve historia de la ingeniería de requisitos</title>
		<link>http://nosolopau.com/2011/11/27/breve-historia-de-la-ingenieria-de-requisitos/</link>
		<comments>http://nosolopau.com/2011/11/27/breve-historia-de-la-ingenieria-de-requisitos/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 22:31:10 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[Ingeniería]]></category>
		<category><![CDATA[análisis de sistemas]]></category>
		<category><![CDATA[historia]]></category>
		<category><![CDATA[ingeniería de requisitos]]></category>

		<guid isPermaLink="false">http://nosolopau.com/?p=172</guid>
		<description><![CDATA[Antes de la aparición de la ingeniería de requisitos, éstos eran competencia exclusiva del análisis de sistemas. En esta área se elaboraron algunos métodos de desarrollo estructurado como SA/SD (análisis y diseño estructurados) (De Marco, 1978), SADT (análisis de sistemas y técnica de diseño) (Ross y Schoman, 1977) o SSADM (análisis estructurado de sistema y [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de la aparición de la ingeniería de requisitos, éstos eran competencia exclusiva del<strong> análisis de sistema</strong>s. En esta área se elaboraron algunos métodos de desarrollo estructurado como SA/SD (análisis y diseño estructurados) (De Marco, 1978), SADT (análisis de sistemas y técnica de diseño) (Ross y Schoman, 1977) o SSADM (análisis estructurado de sistema y método de diseño) (Downs et al., 1992). La idea general de todos estos métodos consiste en comenzar analizando los requisitos mediante un enfoque “<strong>divide y vencerás</strong>” que permita ir fraccionando el sistema en piezas más pequeñas y después definir las funciones u objetivos que cada parte del sistema debería realizar.</p>
<p>¿El análisis de sistemas no era suficientemente bueno? ¿Era realmente necesaria una nueva sub-disciplina como la ingeniería de requisitos? Parte de la respuesta hay que encontrarla en la comunidad académica. <strong>El análisis de sistemas está profundamente enraizado con los sistemas de información</strong>, una comunidad centrada en las metodologías y el modelado conceptual, de modo que probablemente el concepto de análisis de los requisitos surgió ligado a los esquemas tradicionales de descomposición funcional <em>top-down</em>. Los requisitos eran capturados y listados como objetivos del usuario, y después elaborados como un conjunto de funciones representados en diagramas de flujo de datos, procesos SADT o cualquier otra técnica de modelado.</p>
<p>El enfoque de los métodos estructurados para el análisis de requisitos fue desafiado en los 80 por las técnicas JAD (<em>Joint Applications Development</em>, Desarrollo Conjunto de Aplicaciones en español) (DSDM Consortium, 1995), que trataron de superar el incómodo y lento proceso de modelado involucrando a los usuarios en el diseño a través de reuniones, tormentas de ideas y escenarios. El enfoque del análisis funcional <em>top-down</em> sería también desafiado por la comunidad partidaria de la orientación a objetos, más inclinada por modelar el dominio del problema antes que establecer objetivos y funciones. Esto <strong>allanó el camino a la generación actual de métodos orientados a objetos</strong>: ingeniería de sistemas orientados a objetos (Jacobson et al., 1992), la técnica de modelado de objetos (Rumbaugh, 1991) y el análisis y el diseño orientados a objetos (Coad y Yourdon, 1991), sólo por citar algunos. Más recientemente, la comunidad de la orientación a objetos definió un estándar de desarrollo con la creación de UML y del Proceso Unificado, aunque sin aportar nada en cuanto al análisis de requisitos más allá de los casos de uso y escenarios.</p>
<p>La otra influencia de la ingeniería de requisitos la encontramos en la <strong>ingeniería del software</strong>, una comunidad tradicionalmente interesada en la especificación formal y en la entrega de productos software fiables, a menudo para sistemas de telecomunicaciones en tiempo real y aplicaciones críticas. Los ingenieros de software se encontraron con que, a pesar de contar con detalladas especificaciones formales, algunos sistemas no eran aceptados o fallaban en circunstancias que no habían podido predecirse.</p>
<p>La ingeniería de requisitos ha crecido a partir de estas áreas, a las que además ha contribuido de manera muy significativa. Asimismo, se ha centrado en investigar técnicas y herramientas que complementen los métodos de ingeniería del software.</p>
<p>La fundación de la ingeniería de requisitos puede encontrarse en una colección de artículos (Thayer y Dorfman, 1990) y ediciones especiales de <em>Transactions on Software Engineering</em> (IEEE-TSE, 1991) (Davies y Hsai, 1994), seguidos por las conferencias del IEEE (Filkenstein y Fickas, 1993). Estos eventos revelaron una importante diversidad de temas de investigación y prácticas industriales que estaban más relacionados con el qué construir que con el cómo construirlo. En 1993 Lubas, Potts y Ritcher (Lubars et al., 1993), en el marco de una investigación sobre las prácticas de ingeniería de requisitos en las empresas, expusieron que los requisitos ambiguos y cambiantes constituían un problema constante y que los desarrolladores preferían <strong>soluciones organizacionales</strong> antes que tecnológicas para hacer frente a los problemas relacionados con la ingeniería de requisitos. Más recientemente, algunos estudios de campo (El Emam y Madhavji, 1995) han determinado que la falta de personal cualificado y los métodos inadecuados son responsables de posteriores defectos en los sistemas.</p>
<h3>Referencias</h3>
<p>Para terminar, algunas referencias bibliográficas interesantes que he citado durante el post:</p>
<p>Coad, P., y Yourdon, E. E. (1991). <em>Object-oriented analysis.</em> Englewood Cliffs, NJ: Yourdon Press.</p>
<p>Davies, A. M., y Hsai, P. (1994). <em>Proceedings IEEE International Conference on Requirements Engineering</em> .</p>
<p>De Marco, T. (1978). <em>Structured analysis and systems specification.</em> Englewood, NJ: Prentice Hall.</p>
<p>Downs, E., Clase, P., y Coe, I. (1992). <em>Structured systems analysis and design method: Application and context</em> (2ª edición ed.). Nueva York: Prentice Hall.</p>
<p>DSDM Consortium. (1995). <em>Dynamic Systems Development Method.</em>Farnham Surrey: Tesseract Publishers.</p>
<p>El Emam, K., y Madhavji, N. H. (1995). A field study of requirements engineering practices in information systems development. <em>Proceedings on 1995 IEEE International Symposium on Requirements Engineering (RE95)</em> .</p>
<p>Filkenstein, A. C., y Fickas, S. (1993). <em>Proceedings on 1993 IEEE International Symposium on Requirements Engineering (RE93).</em></p>
<p>Lubars, M., Potts, C., y Ritcher, C. (1993). A review of the state of the proactive in requirement modeling. <em>Proceedings 1st International Symposium on Requirements Engineering</em>.</p>
<p>Ross, D. T., y Schoman, K. E. (1977). Structured analysis for requirements definition. <em>IEEE Transactions on Software Engineering</em> (3), 23-47.</p>
<p>Rumbaugh, J. (1991). <em>Object oriented modelling and design.</em> Englewood Cliffs, NJ: Prentice Hall.</p>
<p>Thayer, y Dorfman. (1990). <em>Systems and Software Requirements Engineering.</em> IEEE.</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2011/11/27/breve-historia-de-la-ingenieria-de-requisitos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Por qué los requisitos</title>
		<link>http://nosolopau.com/2011/11/22/por-que-los-requisitos/</link>
		<comments>http://nosolopau.com/2011/11/22/por-que-los-requisitos/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 21:26:06 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[Ingeniería]]></category>
		<category><![CDATA[ingeniería de requisitos]]></category>

		<guid isPermaLink="false">http://nosolopau.com/?p=165</guid>
		<description><![CDATA[Nadie duda de que los cimientos son importantes. Por supuesto, se puede construir un edificio sin cimientos, siempre que ese edificio sea una pequeña cabaña de madera o siempre que no nos importe que se derrumbe mientras lo construimos. En cualquier otro caso, necesitaremos una base consistente sobre la que levantar nuestra construcción. Los cimientos [...]]]></description>
			<content:encoded><![CDATA[<p>Nadie duda de que los cimientos son importantes. Por supuesto, se puede construir un edificio sin cimientos, siempre que ese edificio sea una pequeña cabaña de madera o siempre que no nos importe que se derrumbe mientras lo construimos. En cualquier otro caso, necesitaremos una base consistente sobre la que levantar nuestra construcción.</p>
<p>Los cimientos no son importantes sólo en la arquitectura. Desde los años 70 se sabe que el coste de reparar un defecto una vez entregado el producto software es <strong>entre 60 y 100 veces</strong> superior al coste que hubiera representado el mismo cambio durante las fases tempranas del proyecto. Este hecho, verificado de forma independiente y empírica por Fagan (Fagan, 1997), Boehm (Boehm, 1977) y Daly (Daly, 1977), confirma la necesidad de un enfoque de calidad en las primeras fases del proyecto, relacionadas generalmente con la obtención y especificación de los requisitos del sistema.</p>
<h3>Es la economía, estúpido</h3>
<p>Aunque las tareas relativas a ingeniería de requisitos suponen entre el 10 y el 15 por ciento del coste medio del desarrollo de un sistema, las consecuencias de una captura de requisitos defectuosa pueden tener un impacto extremadamente alto. <strong>El coste de corregir un error es proporcional al tiempo que permanece sin ser detectado</strong>: modificar un requisito apenas requiere editar una o dos líneas en lenguaje natural; alterar el diseño implica revisar las especificaciones y comprobar las ramificaciones de los nuevos requisitos; modificar el código significa malgastar el tiempo de los programadores y la realización de cambios que podrían desestabilizar el diseño.</p>
<p>Existen multitud de estudios que demuestran la incidencia directa de las tareas de ingeniería de requisitos en la calidad final del software desarrollado (Bernárdez, 2003). En los años 80, De Marco y Filkelstein estudiaron las causas de los errores encontrados en los sistemas software, encontrando que <strong>sólo el 7% de los errores se producía en la fase de implementación</strong>, mientras que el 56% del total tenía su origen en la fase de ingeniería de requisitos.</p>
<p>En 1993, durante una investigación sobre la seguridad en los sistemas de control de las sondas espaciales Galileo y Voyager, Robin R. Lutz concluyó (Lutz, 1993) que una de las principales causas de errores era la existencia de requisitos incorrectos, no documentados o desconocidos.</p>
<p>El coste de omitir la ingeniería de requisitos es alto. No sólo porque los sistemas puedan fallar, sino porque pueden no aprovecharse correctamente o resultar bastante más caros de lo estrictamente necesario: estudios sobre sistemas bancarios muestran que los usuarios sólo utilizan el 30 por ciento de las funciones proporcionadas (Eason, 1988). Las clásicas historias sobre fallos catastróficos y espectaculares apuntan a menudo a errores en las especificaciones de requisitos, o <strong>al simple hecho de no haber llevado a cabo ningún intento serio por capturar las necesidades de los usuarios</strong>. ¿Se trata simplemente por ello de un problema de motivación y educación? Aunque no resulten tan espectaculares como los desastres, muchos sistemas han sido desarrollados satisfactoriamente, y hoy en día la mayoría de empresas dispone de sistemas automáticos para gestionar partes de su negocio.</p>
<h3>Caminar sobre el agua</h3>
<p>La verdadera clave del problema hay que buscarla en el cambio. Si las organizaciones mantuvieran siempre los mismos procedimientos y el mundo permaneciera inalterable, la gestión de los requisitos sería muy sencilla, <strong>aunque de hecho no lo es</strong>: los directivos necesitan mejorar las prácticas de la organización, los gobiernos cambian los impuestos, las empresas necesitan responder a los desafíos de la competencia… La consecuencia más inmediata de esto es que rara vez se puede decir que los requisitos están terminados, así que los desarrolladores están condenados a disparar a un objetivo en movimiento.</p>
<p>En 1996, el ESI (Instituto Europeo del Software, <em>European Software Institute</em>), publicó los resultados de una encuesta realizada a empresas europeas en el marco del proyecto ESPITI (<em>European Software Process Improvement Training Initiative</em>). Según las conclusiones del estudio posterior, los ingenieros de software encuentran las mayores dificultades durante la especificación y la gestión de requisitos. El resto de las fases de desarrollo presentaban, en la mayoría de los casos, problemas menores poco significativos.</p>
<p>La ingeniería de requisitos nos ayuda a construir cimientos sólidos para nuestro software, enfocándose en un área fundamental:<strong> la definición de lo que se desea desarrollar</strong>. Para ello, nos permite diseñar especificaciones concretas que describan con claridad, sin ambigüedades, de forma consistente y compacta las necesidades de los promotores de un sistema. Una especificación correcta de requisitos formará una base sólida sobre la que podamos levantar un edificio con garantías. Según G. Ñistal, “la calidad no puede implementarse al final del desarrollo o en las etapas finales de los procesos de desarrollo sino que es una característica intrínseca al propio producto. La carrera de la calidad debe iniciarse en las especificaciones de los productos, continuando en las fases posteriores&#8230;” (Ñistal, 1999).</p>
<p>La ingeniería de requisitos permite asimismo <strong>gestionar las necesidades del proyecto de forma estructurada</strong>, mejora la capacidad de realizar una planificación temporal del proyecto, disminuye los costes y retrasos del proyecto, y en general incrementa la calidad del software, facilita la comunicación entre el equipo y evita rechazos por parte de los usuarios finales.</p>
<p><strong>Invertir en los cimientos al principio ahorrará dinero más tarde</strong>, aunque esta tarea no está exenta de problemas: por un lado, los usuarios tienden a descubrir nuevos requisitos justo cuando el analista piensa que tiene todo cuanto necesita. Por otro lado, está el “problema del mundo en movimiento”, comentado con anterioridad. Todo lo que el analista puede hacer es intentar obtener la mejor fotografía posible del mundo cuando realiza la captura de requisitos, tratar de anticipar el futuro y diseñar software que sea flexible y pueda adaptarse a los cambios. Aunque como recuerda Alistair Sutcliffe en (Sutcliffe, 2002), anticipar el futuro sea un arte oscuro.</p>
<h3>Referencias</h3>
<p>Algunos artículos interesantes que he citado:</p>
<p>Bernárdez, B. (2003). Una Aproximación Empírica a la Verificación de Especificaciones de Requisitos para Sistemas de Información. Sevilla. Universidad de Sevilla.</p>
<p>Boehm, B. W. (1977). Some Experience with Automated Aids to the Design of Large-Scale Reliable software. IEEE Transactions on Software Engineering-<br />
Daly, E. (1977). Management of Software Development. IEEE Transactions on Software Engineering.</p>
<p>Fagan, M. (1997). Design and Code Inspections and Process Control in the Development of Programs. IBM.</p>
<p>Lutz, R. R. (1993). Analyzing Software Requirements Errors in Safety-Critical Embedded Systems. Proceedings of IEEE International Symposium on Requirements Engineering.</p>
<p>Ñistal, G. (1999). Calidad del software, punto de vista y experiencias de la Administración Pública. Novática (137), 50-53.</p>
<p>Sutcliffe, A. (2002). User-centred requirements engineering. Springer.</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2011/11/22/por-que-los-requisitos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disabling autocomplete in Rails forms</title>
		<link>http://nosolopau.com/2010/12/17/disabling-autocomplete-in-rails-forms/</link>
		<comments>http://nosolopau.com/2010/12/17/disabling-autocomplete-in-rails-forms/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 11:02:38 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[On the Rails]]></category>
		<category><![CDATA[autocomplete]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://nosolopau.com/?p=118</guid>
		<description><![CDATA[Sometimes might be helpful disable the forms autocomplete feature, specially for the password fields. Just add to the field tag: For example: This adds the parameter autocomplete=&#8221;off&#8221; to the HTML tag.]]></description>
			<content:encoded><![CDATA[<p>Sometimes might be helpful disable the forms autocomplete feature, specially for the password fields.</p>
<p>Just add to the field tag:</p>
<pre class="brush: ruby; title: ; notranslate">
:autocomplete =&gt; 'off'
</pre>
<p>For example:</p>
<pre class="brush: ruby; title: ; notranslate">
 'off' %&gt;
</pre>
<p>This adds the parameter autocomplete=&#8221;off&#8221; to the HTML tag.</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2010/12/17/disabling-autocomplete-in-rails-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Herencia en una única tabla</title>
		<link>http://nosolopau.com/2010/05/28/herencia-en-una-unica-tabla/</link>
		<comments>http://nosolopau.com/2010/05/28/herencia-en-una-unica-tabla/#comments</comments>
		<pubDate>Fri, 28 May 2010 07:39:54 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[On the Rails]]></category>
		<category><![CDATA[herencia]]></category>
		<category><![CDATA[orientación a objetos]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=70</guid>
		<description><![CDATA[Rails proporciona un mecanismo de herencia entre modelos dependientes de ActiveRecord::Base bastante interesante, denominado Single Table Inheritance (STI). La idea fundamental queda bastante bien reflejada en el siguiente diagrama (que hábilmente he plagiado de la web de Martin Fowler): Como queda bastante claro, Rails utiliza una única tabla donde almacena juntos los atributos de todos [...]]]></description>
			<content:encoded><![CDATA[<p>Rails proporciona un mecanismo de herencia entre modelos dependientes de ActiveRecord::Base bastante interesante, denominado Single Table Inheritance (STI). La idea fundamental queda bastante bien reflejada en el siguiente diagrama (que hábilmente <a href="http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html" target="_blank">he plagiado de la web de Martin Fowler</a>):</p>
<p style="text-align: center;"><a href="http://nosolopau.com/2010/05/28/herencia-en-una-unica-tabla/sti/" rel="attachment wp-att-111"><img title="Single Table Inheritance" src="http://nosolopau.com/wp-content/uploads/2010/05/sti.png" alt="" width="438" height="186" /></a></p>
<p>Como queda bastante claro, Rails utiliza una única tabla donde almacena juntos los atributos de todos los objetos participantes en la jerarquía de herencia. Este enfoque puede ser válido para una jerarquía de clases en la que las subclases no añaden muchos atributos, limitándose a modificar aspectos relativos al comportamiento. Pero para jerarquías grandes con muchos atributos puede generar tablas más grandes de lo recomendable (y con más espacio vacío que información), por lo que lo veo poco generalizable.</p>
<p>¿Alternativas? El enfoque más natural desde el punto de vista de la orientación a objetos consiste en utilizar <a href="http://railscasts.com/episodes/154-polymorphic-association" target="_blank">asociaciones polimórficas</a>, a través de relaciones de tipo has_many :through, especificando una relación entre las una subclase y otra a través de la superclase de la segunda.</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2010/05/28/herencia-en-una-unica-tabla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where is rails?</title>
		<link>http://nosolopau.com/2010/05/19/where-is-rails/</link>
		<comments>http://nosolopau.com/2010/05/19/where-is-rails/#comments</comments>
		<pubDate>Wed, 19 May 2010 07:36:55 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[On the Rails]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=68</guid>
		<description><![CDATA[In my Mac OS 10.6, the rails intallation is in: /Library/Ruby/Gems/1.8/gems/rails-2.3.4/]]></description>
			<content:encoded><![CDATA[<p>In my Mac OS 10.6, the rails intallation is in: /Library/Ruby/Gems/1.8/gems/rails-2.3.4/</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2010/05/19/where-is-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cappuccino</title>
		<link>http://nosolopau.com/2010/05/12/cappuccino/</link>
		<comments>http://nosolopau.com/2010/05/12/cappuccino/#comments</comments>
		<pubDate>Wed, 12 May 2010 09:13:04 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[Interfaces de usuario]]></category>
		<category><![CDATA[cappuccino]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=66</guid>
		<description><![CDATA[Cappuccino es un framework para desarrollar aplicaciones web con características de aplicaciones de escritorio. Está desarrollado sobre Objective-J, una variante de Objective-C escrita en Javascript. Se distribuye con licencia GPL. Interesante&#8230;]]></description>
			<content:encoded><![CDATA[<p><a href="http://cappuccino.org/" target="_blank">Cappuccino</a> es un framework para desarrollar aplicaciones web con características de aplicaciones de escritorio. Está desarrollado sobre Objective-J, una variante de Objective-C escrita en Javascript. Se distribuye con licencia GPL.</p>
<p>Interesante&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2010/05/12/cappuccino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Quick Start Zend Framework tutorial with MAMP</title>
		<link>http://nosolopau.com/2010/02/25/the-quick-start-zend-framework-tutorial-with-mamp/</link>
		<comments>http://nosolopau.com/2010/02/25/the-quick-start-zend-framework-tutorial-with-mamp/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 17:54:52 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=55</guid>
		<description><![CDATA[I&#8217;ve spend the whole today&#8217;s afternoon trying out the Zend Framework &#8220;quick&#8221; &#8220;start&#8221; &#8220;tutorial&#8221;. I&#8217;ve found some difficulties so I want write here how configure the example application to work in Mac OS X with PHP and MySQL (i&#8217;m using MAMP). The correct configuration for application.ini (at least in my computer) is: Note that is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spend the whole today&#8217;s afternoon trying out the <a href="http://framework.zend.com/manual/en/learning.quickstart.intro.html" target="_blank">Zend Framework &#8220;quick&#8221; &#8220;start&#8221; &#8220;tutorial&#8221;</a>. I&#8217;ve found some difficulties so I want write here how configure the example application to work in Mac OS X with PHP and MySQL (i&#8217;m using <a href="http://www.mamp.info/en/index.html" target="_blank">MAMP</a>).</p>
<p>The correct configuration for application.ini (at least in my computer) is:</p>
<pre class="brush: php; title: ; notranslate">
resources.db.adapter = &quot;PDO_MYSQL&quot;
resources.db.params.host = &quot;localhost&quot;
resources.db.params.username = &quot;root&quot;
resources.db.params.password = &quot;root&quot;
resources.db.params.port = &quot;8889&quot;
resources.db.params.dbname = &quot;zf_quickstart&quot;
resources.db.isDefaultTableAdapter = true
</pre>
<p>Note that is necessary to specify the port in a separate field. The next configuration will not work:</p>
<pre class="brush: php; title: ; notranslate">
resources.db.params.host = &quot;localhost:8889&quot;
</pre>
<p>Anyway, if you find errors with the database connection (something so descriptive like &#8220;Application error&#8221;), adding the following line to the Bootstrap.php file can be useful:</p>
<pre class="brush: php; title: ; notranslate">
Zend_Controller_Front::getInstance()-&gt;throwExceptions(true);
</pre>
<p>Before placing the line above I was getting the error: &#8220;PHP Fatal error:  Uncaught exception &#8216;PDOException&#8217; with message &#8216;SQLSTATE[HY000] [2005] Unknown MySQL server host &#8216;localhost:8889&#8242;&#8221;.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2010/02/25/the-quick-start-zend-framework-tutorial-with-mamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generar la documentación RDoc para un plugin</title>
		<link>http://nosolopau.com/2010/02/24/generar-la-documentacion-rdoc-para-un-plugin/</link>
		<comments>http://nosolopau.com/2010/02/24/generar-la-documentacion-rdoc-para-un-plugin/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 19:08:19 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[On the Rails]]></category>
		<category><![CDATA[rdoc]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=52</guid>
		<description><![CDATA[Si queremos generar la documentación de un plugin (pongamos, por ejemplo, file_column) utilizando RDoc, es tan sencillo como ejecutar la siguiente tarea de rake: Escribo esto fundamentalmente para futuras referencias. Es una de esas cosas que he aprendido y olvidado ya unas cuantas veces y no quiero tener que volver a buscarlo.]]></description>
			<content:encoded><![CDATA[<p>Si queremos generar la documentación de un plugin (pongamos, por ejemplo, <a href="http://www.kanthak.net/opensource/file_column/" target="_blank">file_column</a>) utilizando RDoc, es tan sencillo como ejecutar la siguiente tarea de rake:</p>
<pre class="brush: bash; title: ; notranslate">
rake doc:plugins:file_column
</pre>
<p>Escribo esto fundamentalmente para futuras referencias. Es una de esas cosas que he aprendido y olvidado ya unas cuantas veces y no quiero tener que volver a buscarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2010/02/24/generar-la-documentacion-rdoc-para-un-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El Proceso Unificado Ágil</title>
		<link>http://nosolopau.com/2009/12/15/el-proceso-unificado-agil/</link>
		<comments>http://nosolopau.com/2009/12/15/el-proceso-unificado-agil/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 20:06:55 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[Ingeniería]]></category>
		<category><![CDATA[metodologías ágiles]]></category>
		<category><![CDATA[proceso unificado]]></category>
		<category><![CDATA[proceso unificado ágil]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=46</guid>
		<description><![CDATA[He pasado unos días alternando las pruebas con Ruby on Rails con una investigación algo superficial sobre metodologías de desarrollo ágiles. Estuve repasando algunos apuntes sin encontrar nada que me convenciera especialmente. El problema es que, acostumbrado a trabajar con el Proceso Unificado, mi cerebro ha quedado irremisiblemente incapacitado para pensar en cualquier otra metodogía, [...]]]></description>
			<content:encoded><![CDATA[<p>He pasado unos días alternando las pruebas con Ruby on Rails con una investigación algo superficial sobre metodologías de desarrollo ágiles. Estuve repasando algunos apuntes sin encontrar nada que me convenciera especialmente.</p>
<p><img class="alignleft size-medium wp-image-47" style="margin-right: 10px;" title="Epi y Blas te ayudan a dirigir un proyecto software" src="http://blog.nosolopau.com/wp-content/uploads/2009/12/epiblas-300x293.gif" alt="Epi y Blas te ayudan a dirigir un proyecto software" width="230" height="223" />El problema es que, acostumbrado a trabajar con el <a href="http://es.wikipedia.org/wiki/Proceso_Unificado" target="_blank">Proceso Unificado</a>, mi cerebro ha quedado irremisiblemente incapacitado para pensar en cualquier otra metodogía, y precisamente este proceso se demuestra bastante inútil para dirigir un desarrollo basado en un framework como Ruby on Rails: por ejemplo, una vez que defines los escenarios y el modelo de análisis, no hace falta un modelo muy detallado del diseño (donde incluiríamos, por ejemplo, las clases encargadas de recuperar los datos de la base de datos, con un patrón DAO o lo que fuera preciso&#8230;), pues la mayoría de los frameworks están orientados al patrón MVC y si algo hacen es encapsular el acceso a datos. El caso es que la distancia entre el papel y el código es algo menor, y obviamente necesitas un proceso que refleje esta circunstancia.</p>
<p>Otro problema añadido es que la mayoría de las metodologías ágiles están centradas en un tipo muy concreto de equipo, y definen roles específicos para los diferentes miembros. Siendo este un desarrollo que voy a acometer en solitario, necesitaba también un proceso que no se centrara demasiado en los roles, o que al menos no los identificara directamente con perfiles empresariales.</p>
<p>Añadiré a la lista de problemas que cuando leo un artículo presentando una metodología ágil tengo la extraña sensación de que se están riendo de mí. Es como ver a Epi y Blas explicándote cómo desarrollar un proyecto. Es todo tan positivo, rápido, sencillo y <em>cool</em>, que acabo poniéndome nervioso. Pero bueno, eso es algo puramente personal.</p>
<p>No quiero distraerme. El caso es que buscando, encontré una adaptación del Proceso Unificado para entornos de desarrollo ágiles que creo que es precisamente lo que necesito. El proceso se centra en el modelado y en la implementación, prestando especial relevancia a las pruebas, lo cual me parece interesante porque es precisamente donde pone el énfasis Ruby on Rails. La adaptación en concreto se denomina <a href="http://www.ambysoft.com/unifiedprocess/agileUP.html" target="_blank">Agile Unified Process</a> (era totalmente imprevisible) y bueno, parece que no hay mucha información al respecto, pero he encontrado algunos artículos que parecen interesantes. Si descubro algo más lo comentaré por aquí.</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2009/12/15/el-proceso-unificado-agil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails for PHP developers</title>
		<link>http://nosolopau.com/2009/12/07/rails-for-php-developers/</link>
		<comments>http://nosolopau.com/2009/12/07/rails-for-php-developers/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 11:17:14 +0000</pubDate>
		<dc:creator>Pau</dc:creator>
				<category><![CDATA[Bibliografía]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[libros]]></category>

		<guid isPermaLink="false">http://blog.nosolopau.com/?p=42</guid>
		<description><![CDATA[Durante estos últimos meses he estado leyendo bastante sobre Ruby on Rails. De los libros que he consultado, Rails for PHP Developers me ha parecido especialmente útil, aunque no tenía muchas esperanzas en aprender algo de un libro con un título semejante. Creo que realmente es un buen punto introductorio para cualquier programador que haya [...]]]></description>
			<content:encoded><![CDATA[<p>Durante estos últimos meses he estado leyendo bastante sobre Ruby on Rails. De los libros que he consultado, <a href="http://www.pragprog.com/titles/ndphpr/rails-for-php-developers" target="_blank">Rails for PHP Developers</a> me ha parecido especialmente útil, aunque no tenía muchas esperanzas en aprender algo de un libro con un título semejante. Creo que realmente es un buen punto introductorio para cualquier programador que haya pasado los últimos años en compañía de PHP, y ayuda a valorar algunas características de Ruby que puede que no sean muy claras en un primer momento.</p>
<p>También me ha gustado mucho <a href="http://www.pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition" target="_blank">Agile Web Development with Rails</a>, que explica los mismos conceptos desde un punto de vista más general, con lo que resulta un buen complemento para el primero. Hay que decir que ambos tienen una metodología muy sencilla y muy centrada en la práctica, abordando este último libro el desarrollo de una tienda virtual bastante completa que sirve como marco para captar muchas de las sutilezas del lenguaje.</p>
<p>Creo que el siguiente paso está claro: empezar a escribir código por mis propios medios de una vez :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://nosolopau.com/2009/12/07/rails-for-php-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

