<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="Tiki CMS/Groupware via FeedCreator 1.7.2.1" -->
<?xml-stylesheet href="http://www.hormigaproject.com.ar/lib/rss/rss-style.css" type="text/css"?>
<?xml-stylesheet href="http://www.hormigaproject.com.ar/lib/rss/rss20.xsl" type="text/xsl"?>
<rss version="2.0">
    <channel>
        <title>Tiki RSS feed para las páginas wiki</title>
        <description><![CDATA[Últimas modificaciones para el Wiki.]]></description>
        <link>http://www.hormigaproject.com.ar/tiki-wiki_rss.php?ver=2</link>
        <lastBuildDate>Mon, 21 May 2012 05:24:54 +0100</lastBuildDate>
        <generator>Tiki CMS/Groupware via FeedCreator 1.7.2.1</generator>
        <image>
            <url>http://www.hormigaproject.com.ar/img/tiki/tikilogo.png</url>
            <title>Hormiga Project</title>
            <link>http://www.hormigaproject.com.ar/tiki-index.php</link>
            <description><![CDATA[Feed ofrecido por Hormiga Project. Haga click para visitarlo.]]></description>
        </image>
        <language>en-us</language>
        <item>
            <title>Autores</title>
            <link>http://www.hormigaproject.com.ar/Autores</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>+ Desarrollador del proyecto Software Hormiga<br />]]></description>
            <pubDate>Wed, 18 May 2011 14:14:37 +0100</pubDate>
        </item>
        <item>
            <title>Descarga e instalacion</title>
            <link>http://www.hormigaproject.com.ar/Descarga+e+instalacion</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- <h3 class="showhide_heading" id="Instalaci<span class="diffchar">o</span>n_desde_el_c_digo_fuente"><span style="color:#3366ff; background:">Instalaci<span class="diffchar">o</span>n desde el código fuente</span></h3><br />Pueden instalarlo f<span class="diffchar">a</span>cilmente a partir del código fuente, que pueden descargar del SVN (ver m<span class="diffchar">a</span>s arriba). Allí encontrarán un archivo README con toda la información necesaria.<br />+ <h3 class="showhide_heading" id="Instalaci<span class="diffchar">_</span>n_desde_el_c_digo_fuente"><span style="color:#3366ff; background:">Instalaci<span class="diffchar">ó</span>n desde el código fuente</span></h3><br />Pueden instalarlo f<span class="diffchar">á</span>cilmente a partir del código fuente, que pueden descargar del SVN (ver m<span class="diffchar">á</span>s arriba). Allí encontrarán un archivo README con toda la información necesaria.<br />]]></description>
            <pubDate>Wed, 18 May 2011 14:04:35 +0100</pubDate>
        </item>
        <item>
            <title>Principal</title>
            <link>http://www.hormigaproject.com.ar/Principal</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- En este <a class="wiki"  href="/tracker1" rel="">Tracker</a> se organizan las tareas por hacer y qui<span class="diffchar">e</span>n las hace. Asi<span class="diffchar"> </span>mismo est<span class="diffchar">a</span> conectado con el repositorio para mantener la trazabilidad de las tareas con el release de svn en que se implementan (o corrigen) si corresponde.<br />+ En este <a class="wiki"  href="/tracker1" rel="">Tracker</a> se organizan las tareas por hacer y qui<span class="diffchar">é</span>n las hace. Asimismo est<span class="diffchar">á</span> conectado con el repositorio para mantener la trazabilidad de las tareas con el release de svn en que se implementan (o corrigen) si corresponde.<br />]]></description>
            <pubDate>Wed, 18 May 2011 13:23:53 +0100</pubDate>
        </item>
        <item>
            <title>Documentación</title>
            <link>http://www.hormigaproject.com.ar/Documentaci%C3%B3n</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- <h2 class="showhide_heading" id="DOCUMENTACI<span class="diffchar">O</span>N">DOCUMENTACI<span class="diffchar">O</span>N</h2>+ <h2 class="showhide_heading" id="DOCUMENTACI<span class="diffchar">_</span>N">DOCUMENTACI<span class="diffchar">Ó</span>N</h2>]]></description>
            <pubDate>Wed, 18 May 2011 12:58:41 +0100</pubDate>
        </item>
        <item>
            <title>Inicio</title>
            <link>http://www.hormigaproject.com.ar/Inicio</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- <h4 class="showhide_heading" id="PROYECTO_DE_TRANSFERENCIA_TECNOL<span class="diffchar">O</span>GICA">PROYECTO DE TRANSFERENCIA TECNOL<span class="diffchar">O</span>GICA</h4>+ <h4 class="showhide_heading" id="PROYECTO_DE_TRANSFERENCIA_TECNOL<span class="diffchar">_</span>GICA">PROYECTO DE TRANSFERENCIA TECNOL<span class="diffchar">Ó</span>GICA</h4>+ <br />]]></description>
            <pubDate>Wed, 18 May 2011 12:55:46 +0100</pubDate>
        </item>
        <item>
            <title>Visión y Misión</title>
            <link>http://www.hormigaproject.com.ar/Visi%C3%B3n+y+Misi%C3%B3n</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- Dar <span class="diffchar">e</span>l pod<span class="diffchar">er</span> a los ingenieros civiles para modificar las herramientas de cálculo que utilizan según sus propias necesidades, de manera colaborativa y libre, buscando así una adaptación natural a la evolución de la disciplina, así como también una mejora continua a partir del proceso natural de revisión de pares que se produce entre usuarios y desarrolladores.<br />+ Dar l<span class="diffchar">a</span> po<span class="diffchar">sibilida</span>d a los ingenieros civiles para modificar las herramientas de cálculo que utilizan según sus propias necesidades, de manera colaborativa y libre, buscando así una adaptación natural a la evolución de la disciplina, así como también una mejora continua a partir del proceso natural de revisión de pares que se produce entre usuarios y desarrolladores.<br />]]></description>
            <pubDate>Thu, 28 Oct 2010 22:19:14 +0100</pubDate>
        </item>
        <item>
            <title>Acerca de</title>
            <link>http://www.hormigaproject.com.ar/Acerca+de</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>+ <div style="text-align: center;"><span class="img"><a href="http://creativecommons.org/licenses/by-sa/2.5/ar/" rel="license" target="_blank"><img alt="Licencia CreativeCommons SA" src="http://creativecommons.org/images/public/somerights20.png" border="0"  style="float: center" /></a></span> <span class="img"><a href="http://www.gnu.org/licenses/gpl.html" rel="box[g]" target="_blank"><img alt="Licencia Pública General GNU V3" src="dl25&amp;display" border="0"  /></a></span></div><br />]]></description>
            <pubDate>Wed, 27 Oct 2010 18:34:45 +0100</pubDate>
        </item>
        <item>
            <title>Whitepaper</title>
            <link>http://www.hormigaproject.com.ar/Whitepaper</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- <span class="diffchar"><table align="center"><tr><td><div class='cbox '><div class='cbox-data'></span><table class="wikitable"><tr><td class="wikicell" >  <div style="text-align: center;"> <strong> Norma Ércoli     </strong></div></td><td class="wikicell" >     <div style="text-align: center;"><strong>Hugo J. Curti    </strong></div></td><td class="wikicell" >  <div style="text-align: center;"><strong>Leonardo Román </strong> </div></td></tr><tr><td class="wikicell"  colspan="3"></td></tr><tr><td class="wikicell" >   <div style="text-align: center;"><strong>Claudia Dietrich</strong></div></td><td class="wikicell" > <div style="text-align: center;">  <strong>Mariano Sanchez  </strong></div></td><td class="wikicell" ><div style="text-align: center;">   <strong>Facundo Cabrera </strong></div></td></tr></table><br /><br />+ <table class="wikitable"><tr><td class="wikicell" >  <div style="text-align: center;"> <strong> Norma Ércoli     </strong></div></td><td class="wikicell" >     <div style="text-align: center;"><strong>Hugo J. Curti    </strong></div></td><td class="wikicell" >  <div style="text-align: center;"><strong>Leonardo Román </strong> </div></td></tr><tr><td class="wikicell"  colspan="3"></td></tr><tr><td class="wikicell" >   <div style="text-align: center;"><strong>Claudia Dietrich</strong></div></td><td class="wikicell" > <div style="text-align: center;">  <strong>Mariano Sanchez  </strong></div></td><td class="wikicell" ><div style="text-align: center;">   <strong>Facundo Cabrera </strong></div></td></tr></table<span class="diffchar">><br /><br /><br /</span>><br /><br />- <br /><br /><br /><br />La resolución de problemas de Ingeniería Civil (diseño de estructuras, cálculo de dimensionado, etc.) tiene en su esencia una combinación de pasos completamente automatizados por un lado y pasos donde se deben tomar decisiones por el otro. Además, todo el proceso está regulado por reglamentos complejos, a veces cambiantes, y diferentes en función del país donde se aplique. Este artículo presenta el Proyecto Hormiga, un esfuerzo interdisciplinario realizado por Ingenieros Civiles e Ingenieros de Sistemas con el objeto de crear un sistema informático que dé soporte a la resolución de estos problemas. El Proyecto presenta un lenguaje de programación con componentes declarativas especialmente estudiado para adaptarse a las estructuras de pensamiento que utilizan los ingenieros civiles. La especificación de los problemas y sus soluciones son aportadas por los mismos usuarios, que colaboran constantemente en la extensión y actualización, sin necesidad de conocimientos avanzados de programación.<br />+ <span class="diffchar"><br /><br /><br /><br /></span><br /><br /><br /><br />La resolución de problemas de Ingeniería Civil (diseño de estructuras, cálculo de dimensionado, etc.) tiene en su esencia una combinación de pasos completamente automatizados por un lado y pasos donde se deben tomar decisiones por el otro. Además, todo el proceso está regulado por reglamentos complejos, a veces cambiantes, y diferentes en función del país donde se aplique. Este artículo presenta el Proyecto Hormiga, un esfuerzo interdisciplinario realizado por Ingenieros Civiles e Ingenieros de Sistemas con el objeto de crear un sistema informático que dé soporte a la resolución de estos problemas. El Proyecto presenta un lenguaje de programación con componentes declarativas especialmente estudiado para adaptarse a las estructuras de pensamiento que utilizan los ingenieros civiles. La especificación de los problemas y sus soluciones son aportadas por los mismos usuarios, que colaboran constantemente en la extensión y actualización, sin necesidad de conocimientos avanzados de programación.<span class="diffchar"><br /><br /></span><br />- <br />El diseño y/o verificación de secciones de hormigón armado correspondientes a losas llenas, vigas y columnas, solicitadas por flexión, corte y compresión son solo algunos ejemplos de los diversos cálculos que se hacen en la disciplina de la Ingeniería Civil. Estos cálculos se caracterizan por tener algunos pasos que se siguen en forma automática, ya sea mediante fórmulas matemáticas o algoritmos definidos. Así mismo, estos cálculos también poseen otros pasos donde el Ingeniero debe tomar decisiones, hacer ajustes y repetir iterativamente varias pruebas hasta encontrar una solución óptima. Todos estos cálculos y procesos están regulados por un reglamento que es revisado periódicamente, y que además difiere según el país o región de aplicación.<br />En este contexto se plantea el desarrollo de un sistema informático que permita al Ingeniero Civil tomar las decisiones necesarias en cada paso del cálculo, y automatice el resto del proceso, facilitando de esta manera su tarea, acortando tiempos y reduciendo la probabilidad de cometer errores. Este sistema debe poder adaptarse fácilmente a los cambios reglamentarios y a diferentes países. Para el desarrollo de este proyecto se conforma un grupo interdisciplinario integrado por Ingenieros Civiles, Ingenieros de Sistemas y estudiantes. Se adopta para el sistema el paradigma de Software Libre y se propone una solución que permite a los Ingenieros Civiles especificar los pasos de cálculo, de forma tal que la misma comunidad de Ingenieros Civiles que utilizan el software contribuyan a su constante actualización y extensión. Para este fin se diseña un lenguaje de especificación que tiene componentes declarativas, componentes funcionales y componentes procedurales, con una semántica cercana a la estructura de pensamiento de los Ingenieros Civiles. Este lenguaje puede aprenderse y utilizarse con mínimos conocimientos de programación de computadoras.<br />En la sección 2 se describe brevemente la historia del proyecto. La sección 3 se describe el sistema y sus criterios de diseño. En la sección 4 se especifican los roles de los usuarios del sistema y su interacción con el mismo. La sección 5 presenta el lenguaje de especificación de cálculo y finalmente en la sección 6 se presentan las conclusiones del desarrollo.<br />+ <span class="diffchar"><br /></span><br />El diseño y/o verificación de secciones de hormigón armado correspondientes a losas llenas, vigas y columnas, solicitadas por flexión, corte y compresión son solo algunos ejemplos de los diversos cálculos que se hacen en la disciplina de la Ingeniería Civil. Estos cálculos se caracterizan por tener algunos pasos que se siguen en forma automática, ya sea mediante fórmulas matemáticas o algoritmos definidos. Así mismo, estos cálculos también poseen otros pasos donde el Ingeniero debe tomar decisiones, hacer ajustes y repetir iterativamente varias pruebas hasta encontrar una solución óptima. Todos estos cálculos y procesos están regulados por un reglamento que es revisado periódicamente, y que además difiere según el país o región de aplicación.<span class="diffchar"><br /></span><br />En este contexto se plantea el desarrollo de un sistema informático que permita al Ingeniero Civil tomar las decisiones necesarias en cada paso del cálculo, y automatice el resto del proceso, facilitando de esta manera su tarea, acortando tiempos y reduciendo la probabilidad de cometer errores. Este sistema debe poder adaptarse fácilmente a los cambios reglamentarios y a diferentes países. Para el desarrollo de este proyecto se conforma un grupo interdisciplinario integrado por Ingenieros Civiles, Ingenieros de Sistemas y estudiantes. Se adopta para el sistema el paradigma de Software Libre y se propone una solución que permite a los Ingenieros Civiles especificar los pasos de cálculo, de forma tal que la misma comunidad de Ingenieros Civiles que utilizan el software contribuyan a su constante actualización y extensión. Para este fin se diseña un lenguaje de especificación que tiene componentes declarativas, componentes funcionales y componentes procedurales, con una semántica cercana a la estructura de pensamiento de los Ingenieros Civiles. Este lenguaje puede aprenderse y utilizarse con mínimos conocimientos de programación de computadoras.<span class="diffchar"><br /></span><br />En la sección 2 se describe brevemente la historia del proyecto. La sección 3 se describe el sistema y sus criterios de diseño. En la sección 4 se especifican los roles de los usuarios del sistema y su interacción con el mismo. La sección 5 presenta el lenguaje de especificación de cálculo y finalmente en la sección 6 se presentan las conclusiones del desarrollo.<span class="diffchar"><br /><br /></span><br />- <br />En el año 1998 el Centro de Investigación Nacional de reglamentos para la Seguridad de las Obras Civiles, <strong>CIRSOC</strong> decidió modificar la base reglamentaria utilizada en Argentina (CIRSOC201). El comité ejecutivo de dicho centro envió un su momento una nota solicitando a la Facultad de Ingeniería de la Universidad Nacional del Centro de la Provincia de Buenos Aires colaboración para la elaboración y puesta en operación del nuevo reglamento. Desde la Facultad se generaron varias respuestas a este requerimiento, centradas en difusión de información y capacitación de egresados y profesionales. Como una de esas respuestas nació en el año 2006 el Proyecto Hormiga, por medio de un convenio entre la Facultad de Ingeniería y el Colegio de Ingenieros de la Provincia de Buenos Aires. El objetivo original era la implementación de una herramienta informática que ayudara a los usuarios a diseñar o verificar secciones de hormigón armado en diferentes estructuras. Luego de un estudio cuidadoso del contexto el objetivo evolucionó hacia desarrollar un soporte informático que permita a los mismos usuarios especificar los pasos de cálculo, crear una comunidad de usuarios y mantener la plataforma actualizada.<br />+ <span class="diffchar"><br /></span><br />En el año 1998 el Centro de Investigación Nacional de reglamentos para la Seguridad de las Obras Civiles, <strong>CIRSOC</strong> decidió modificar la base reglamentaria utilizada en Argentina (CIRSOC201). El comité ejecutivo de dicho centro envió un su momento una nota solicitando a la Facultad de Ingeniería de la Universidad Nacional del Centro de la Provincia de Buenos Aires colaboración para la elaboración y puesta en operación del nuevo reglamento. Desde la Facultad se generaron varias respuestas a este requerimiento, centradas en difusión de información y capacitación de egresados y profesionales. Como una de esas respuestas nació en el año 2006 el Proyecto Hormiga, por medio de un convenio entre la Facultad de Ingeniería y el Colegio de Ingenieros de la Provincia de Buenos Aires. El objetivo original era la implementación de una herramienta informática que ayudara a los usuarios a diseñar o verificar secciones de hormigón armado en diferentes estructuras. Luego de un estudio cuidadoso del contexto el objetivo evolucionó hacia desarrollar un soporte informático que permita a los mismos usuarios especificar los pasos de cálculo, crear una comunidad de usuarios y mantener la plataforma actualizada.<span class="diffchar"><br /><br /></span><br />- <br />El sistema se desarrolló de acuerdo a los siguientes criterios de diseño:<br />a)	Los procesos de cálculo deben poder ser especificados por Ingenieros Civiles, con mínima o nula intervención de Ingenieros Informáticos.<br />b)	A los Ingenieros Civiles que especifiquen los procesos de cálculo no se les debe requerir conocimientos de Informática, en particular de programación. Si bien dichos conocimientos son deseables, deben reducirse a un mínimo.<br />c)	El sistema debe adaptarse al esquema de pensamiento de los usuarios finales, ofreciendo un camino de solución similar al que utilizan naturalmente.<br />d)	El sistema debe poder aceptar contribuciones de la comunidad de Ingenieros Civiles.<br />e)	El sistema se desarrollará de acuerdo al paradigma de Software Libre (RS2007), al igual que todas las herramientas y librerías utilizadas como base para desarrollarlo.<br />f)	La interfaz gráfica y el motor de cálculo deben mantenerse con un mínimo de acoplamiento.<br />El criterio a) busca desacoplar la interacción de Ingenieros Civiles e Informáticos, de manera tal de permitir a la herramienta evolucionar según las necesidades de los primeros.<br />El criterio b) tiene por objetivo minimizar la curva de aprendizaje de quienes deseen aportar especificaciones al sistema para extenderlo, adaptarlo o mejorarlo.<br />Aplicando el criterio c) quienes asuman el rol de usuarios finales tendrán acceso al sistema mediante una interfaz intuitiva, adaptada a los esquemas de pensamiento que habitualmente siguen para resolver los problemas, fundamentalmente, dividiendo el problema en pasos de cálculo.<br />El criterio d) busca que el sistema se adapte a las necesidades reales de los usuarios, admitiendo una evolución natural, análoga a la que haga la comunidad de usuarios. Aplicando este criterio el sistema debe poderse extender y actualizar en función de los cambios que se produzcan en la legislación, así como también adaptarse a las legislaciones de otros países o regiones.<br />El criterio e) tiene como objetivo asegurar que tanto el sistema en sí mismo, como las herramientas que se utilicen de base para desarrollarlo permanecerán accesibles a la comunidad. De esta forma se busca garantizar la libertad de uso de la herramienta: el sistema será accesible a todos en el presente y en el futuro sin necesidad del pago de contratos de licencia para utilizarlo, estudiarlo, modificarlo o redistribuirlo.<br />El criterio f) busca que el motor de la aplicación esté separado de la presentación de resultados y la toma de datos, de manera tal que se facilite la adaptación en el futuro a otras formas de uso, o la integración con sistemas mayores.<br /><br /><div style="text-align: center;"><span class="img"><a href="dl18&amp;display" rel="box[g]"><img alt="" src="dl18&amp;display" border="0"  /></a></span>  </div><br /><br />Como primera medida, y para satisfacer los criterios a) y b), se desarrolló un lenguaje de especificación de cálculos que permite describir los mismos en términos sintáctica y semánticamente cercanos al esquema de pensamiento que utilizan los Ingenieros Civiles en la resolución de problemas, reduciendo de esta forma la curva de aprendizaje del lenguaje y del sistema en general.<br />Para satisfacer los criterios c) y d) se definen dos tipos de usuarios: el denominado <em>usuario desarrollador</em>, y el denominado <em>usuario final</em>. El usuario desarrollador contribuye especificaciones de cálculo, mientras que el usuario final accede al sistema por medio de una interfaz gráfica diseñada de manera tal que le permite proponer y probar cada paso del cálculo, pudiendo corregir y verificar los resultados.<br />El sistema informático se divide en dos partes  cuyo acoplamiento se busca minimizar, siguiendo el criterio f). Por un lado el intérprete toma una especificación, datos estáticos provistos junto con ella y los datos de entrada provistos por el usuario final, para procesar los cálculos y ofrecer como salida los resultados de los mismos. Por otro lado la interfaz de usuario interactúa con el intérprete y presenta al usuario final los resultados obtenidos, así como también le permite ingresar o modificar los datos de entrada, de una forma altamente interactiva e intuitiva.<br />La figura 1 muestra los componentes del sistema así como también la interacción entre los mismos y con los usuarios.<br />+ <span class="diffchar"><br /></span><br />El sistema se desarrolló de acuerdo a los siguientes criterios de diseño:<span class="diffchar"><br /></span><br />a)	Los procesos de cálculo deben poder ser especificados por Ingenieros Civiles, con mínima o nula intervención de Ingenieros Informáticos.<span class="diffchar"><br /></span><br />b)	A los Ingenieros Civiles que especifiquen los procesos de cálculo no se les debe requerir conocimientos de Informática, en particular de programación. Si bien dichos conocimientos son deseables, deben reducirse a un mínimo.<span class="diffchar"><br /></span><br />c)	El sistema debe adaptarse al esquema de pensamiento de los usuarios finales, ofreciendo un camino de solución similar al que utilizan naturalmente.<span class="diffchar"><br /></span><br />d)	El sistema debe poder aceptar contribuciones de la comunidad de Ingenieros Civiles.<span class="diffchar"><br /></span><br />e)	El sistema se desarrollará de acuerdo al paradigma de Software Libre (RS2007), al igual que todas las herramientas y librerías utilizadas como base para desarrollarlo.<span class="diffchar"><br /></span><br />f)	La interfaz gráfica y el motor de cálculo deben mantenerse con un mínimo de acoplamiento.<span class="diffchar"><br /></span><br />El criterio a) busca desacoplar la interacción de Ingenieros Civiles e Informáticos, de manera tal de permitir a la herramienta evolucionar según las necesidades de los primeros.<span class="diffchar"><br /></span><br />El criterio b) tiene por objetivo minimizar la curva de aprendizaje de quienes deseen aportar especificaciones al sistema para extenderlo, adaptarlo o mejorarlo.<span class="diffchar"><br /></span><br />Aplicando el criterio c) quienes asuman el rol de usuarios finales tendrán acceso al sistema mediante una interfaz intuitiva, adaptada a los esquemas de pensamiento que habitualmente siguen para resolver los problemas, fundamentalmente, dividiendo el problema en pasos de cálculo.<span class="diffchar"><br /></span><br />El criterio d) busca que el sistema se adapte a las necesidades reales de los usuarios, admitiendo una evolución natural, análoga a la que haga la comunidad de usuarios. Aplicando este criterio el sistema debe poderse extender y actualizar en función de los cambios que se produzcan en la legislación, así como también adaptarse a las legislaciones de otros países o regiones.<span class="diffchar"><br /></span><br />El criterio e) tiene como objetivo asegurar que tanto el sistema en sí mismo, como las herramientas que se utilicen de base para desarrollarlo permanecerán accesibles a la comunidad. De esta forma se busca garantizar la libertad de uso de la herramienta: el sistema será accesible a todos en el presente y en el futuro sin necesidad del pago de contratos de licencia para utilizarlo, estudiarlo, modificarlo o redistribuirlo.<span class="diffchar"><br /></span><br />El criterio f) busca que el motor de la aplicación esté separado de la presentación de resultados y la toma de datos, de manera tal que se facilite la adaptación en el futuro a otras formas de uso, o la integración con sistemas mayores.<span class="diffchar"><br /><br /></span><br /><br /><div style="text-align: center;"><span class="img"><a href="dl18&amp;display" rel="box[g]"><img alt="" src="dl18&amp;display" border="0"  /></a></span>  </div<span class="diffchar">><br /><br /</span>><br /><br />Como primera medida, y para satisfacer los criterios a) y b), se desarrolló un lenguaje de especificación de cálculos que permite describir los mismos en términos sintáctica y semánticamente cercanos al esquema de pensamiento que utilizan los Ingenieros Civiles en la resolución de problemas, reduciendo de esta forma la curva de aprendizaje del lenguaje y del sistema en general.<span class="diffchar"><br /></span><br />Para satisfacer los criterios c) y d) se definen dos tipos de usuarios: el denominado <em>usuario desarrollador</em>, y el denominado <em>usuario final</em>. El usuario desarrollador contribuye especificaciones de cálculo, mientras que el usuario final accede al sistema por medio de una interfaz gráfica diseñada de manera tal que le permite proponer y probar cada paso del cálculo, pudiendo corregir y verificar los resultados.<span class="diffchar"><br /></span><br />El sistema informático se divide en dos partes  cuyo acoplamiento se busca minimizar, siguiendo el criterio f). Por un lado el intérprete toma una especificación, datos estáticos provistos junto con ella y los datos de entrada provistos por el usuario final, para procesar los cálculos y ofrecer como salida los resultados de los mismos. Por otro lado la interfaz de usuario interactúa con el intérprete y presenta al usuario final los resultados obtenidos, así como también le permite ingresar o modificar los datos de entrada, de una forma altamente interactiva e intuitiva.<span class="diffchar"><br /></span><br />La figura 1 muestra los componentes del sistema así como también la interacción entre los mismos y con los usuarios.<span class="diffchar"><br /><br /></span><br />- <br />Siguiendo los criterios de diseño, se definen dos perfiles de usuario para el sistema, descriptos a continuación. La interacción entre los mismos y el sistema puede verse también en la figura 1.<br />+ <span class="diffchar"><br /></span><br />Siguiendo los criterios de diseño, se definen dos perfiles de usuario para el sistema, descriptos a continuación. La interacción entre los mismos y el sistema puede verse también en la figura 1.<span class="diffchar"><br /><br /></span><br />- <br />El usuario final utiliza el sistema desde su interfaz gráfica. El sistema le presenta los <em>pasos</em> de cálculo, tal como están especificados, ordenados en una vista de árbol a partir de sus dependencias. Cada paso tiene un <em>estado</em>, representado por un color. Un paso está <em>deshabilitado </em>(gris) cuando sus dependencias no están satisfechas, <em>nunca ejecutado </em>(negro) cuando las dependencias están satisfechas y el usuario nunca ejecutó el paso, <em>ejecutado exitosamente </em>(verde) cuando el paso fue ejecutado y las postcondiciones se cumplen y <em>ejecutado en falla </em>(rojo) cuando el paso fue ejecutado pero las postcondiciones no se cumplen.<br />El usuario final puede optar por ejecutar cualquier paso que no se encuentre en estado <em>deshabilitado</em>. Luego de la ejecución el sistema recalculará automáticamente el paso ejecutado y todos los pasos que dependan de él, actualizando sus estados.<br />Para cada paso ejecutado, se presentan al usuario las <em>capturas</em>, donde el usuario especificará los datos de entrada del paso. Luego de la ejecución, y si las postcondiciones se cumplen, el sistema mostrará al usuario la pantalla de resultados.<br />El usuario repetirá los pasos de cálculo todas las veces que sean necesarias hasta obtener una solución que considere óptima, en un proceso de aproximación iterativa.<br />+ <span class="diffchar"><br /></span><br />El usuario final utiliza el sistema desde su interfaz gráfica. El sistema le presenta los <em>pasos</em> de cálculo, tal como están especificados, ordenados en una vista de árbol a partir de sus dependencias. Cada paso tiene un <em>estado</em>, representado por un color. Un paso está <em>deshabilitado </em>(gris) cuando sus dependencias no están satisfechas, <em>nunca ejecutado </em>(negro) cuando las dependencias están satisfechas y el usuario nunca ejecutó el paso, <em>ejecutado exitosamente </em>(verde) cuando el paso fue ejecutado y las postcondiciones se cumplen y <em>ejecutado en falla </em>(rojo) cuando el paso fue ejecutado pero las postcondiciones no se cumplen.<span class="diffchar"><br /></span><br />El usuario final puede optar por ejecutar cualquier paso que no se encuentre en estado <em>deshabilitado</em>. Luego de la ejecución el sistema recalculará automáticamente el paso ejecutado y todos los pasos que dependan de él, actualizando sus estados.<span class="diffchar"><br /></span><br />Para cada paso ejecutado, se presentan al usuario las <em>capturas</em>, donde el usuario especificará los datos de entrada del paso. Luego de la ejecución, y si las postcondiciones se cumplen, el sistema mostrará al usuario la pantalla de resultados.<span class="diffchar"><br /></span><br />El usuario repetirá los pasos de cálculo todas las veces que sean necesarias hasta obtener una solución que considere óptima, en un proceso de aproximación iterativa.<span class="diffchar"><br /><br /></span><br />- <br />El usuario desarrollador provee una especificación, escrita en el lenguaje <em>hormiga</em> pensado para tal fin, y descripto en la siguiente sección. El usuario desarrollador debe dividir el cálculo en pasos, especificando para cada paso las <em>dependencias </em>(conjunto de datos que se necesitan a fin de que el paso pueda ejecutarse), las <em>capturas</em> (conjunto de datos que deben requerirse al usuario final), las <em>precondiciones </em>(condiciones que deben cumplir las capturas para ser consideradas datos de entrada válidos), el <em>bloque de ejecución </em>(calculo de los resultados a partir de las capturas y las dependencias), las <em>postcondiciones</em> (condiciones que deben cumplir los resultados luego de la ejecución a fin de considerarse que los resultados son válidos) y los <em>reportes</em> (datos a presentarse al usuario final). Junto con la especificación, el usuario puede proveer <em>datos estáticos </em>(tablas, gráficos, etc.) que ayuden al usuario final a elegir los valores de las capturas.<br />Todas las contribuciones hechas por los usuarios pueden publicarse en un <em>repositorio</em> donde quedan accesibles para usuarios finales y usuarios desarrolladores. De acuerdo con el paradigma de Software Libre, los usuarios pueden utilizar, revisar, corregir, mejorar o extender los trabajos realizados por otros usuarios, de manera tal que la comunidad de usuarios del sistema es la misma que lo mantiene actualizado para que satisfaga sus necesidades, y corrige errores que puedan cometerse.<br /><div style="text-align: center;"><span class="img"><a href="dl20&amp;display" rel="box[g]"><img alt="" src="dl20&amp;display" border="0"  /></a></span> </div><br />+ <span class="diffchar"><br /></span><br />El usuario desarrollador provee una especificación, escrita en el lenguaje <em>hormiga</em> pensado para tal fin, y descripto en la siguiente sección. El usuario desarrollador debe dividir el cálculo en pasos, especificando para cada paso las <em>dependencias </em>(conjunto de datos que se necesitan a fin de que el paso pueda ejecutarse), las <em>capturas</em> (conjunto de datos que deben requerirse al usuario final), las <em>precondiciones </em>(condiciones que deben cumplir las capturas para ser consideradas datos de entrada válidos), el <em>bloque de ejecución </em>(calculo de los resultados a partir de las capturas y las dependencias), las <em>postcondiciones</em> (condiciones que deben cumplir los resultados luego de la ejecución a fin de considerarse que los resultados son válidos) y los <em>reportes</em> (datos a presentarse al usuario final). Junto con la especificación, el usuario puede proveer <em>datos estáticos </em>(tablas, gráficos, etc.) que ayuden al usuario final a elegir los valores de las capturas.<span class="diffchar"><br /></span><br />Todas las contribuciones hechas por los usuarios pueden publicarse en un <em>repositorio</em> donde quedan accesibles para usuarios finales y usuarios desarrolladores. De acuerdo con el paradigma de Software Libre, los usuarios pueden utilizar, revisar, corregir, mejorar o extender los trabajos realizados por otros usuarios, de manera tal que la comunidad de usuarios del sistema es la misma que lo mantiene actualizado para que satisfaga sus necesidades, y corrige errores que puedan cometerse.<span class="diffchar"><br /></span><br /><div style="text-align: center;"><span class="img"><a href="dl20&amp;display" rel="box[g]"><img alt="" src="dl20&amp;display" border="0"  /></a></span> </div<span class="diffchar">><br /><br /</span>><br />- <br />El lenguaje de especificación, denominado <em>lenguaje hormiga</em>, es un lenguaje multi paradigma con orientación declarativa (PL2007), especialmente diseñado para adaptarse al esquema de pensamiento que utilizan habitualmente los ingenieros civiles para resolver los problemas de cálculo.<br />+ <span class="diffchar"><br /></span><br />El lenguaje de especificación, denominado <em>lenguaje hormiga</em>, es un lenguaje multi paradigma con orientación declarativa (PL2007), especialmente diseñado para adaptarse al esquema de pensamiento que utilizan habitualmente los ingenieros civiles para resolver los problemas de cálculo.<span class="diffchar"><br /><br /></span><br />- <br />En el lenguaje se modela la solución de un problema de cálculo dividiendo el mismo en <em>pasos</em>. Cada paso debe ser <em>declarado</em> por el usuario desarrollador. La figura 2 muestra los componentes del paso de cálculo. Puede considerarse que el paso de cálculo es la unidad declarativa principal del lenguaje. Dentro del ámbito de un paso pueden declararse <em>funciones, magnitudes, unidades, variables locales </em>(solo serán visibles dentro del bloque de ejecución), <em>variables exportadas </em>(resultados provistos por el paso), <em>reportes</em> (resultados mostrados al usuario final), <em>capturas</em> (valores requeridos al usuario final),<em> dependencias</em> (variables exportadas de otros pasos que se requieren para calcular este paso), <em>precondiciones</em> (condiciones que deben cumplir las capturas para poder ejecutarse el paso) y <em>postcondiciones</em> (condiciones que deben cumplir los resultados para considerarse que el paso es válido).<br />El bloque de ejecución del paso se especifica de manera similar a una función. En este bloque son visibles todas las dependencias, y pueden modificarse los valores de las variables, tanto locales como exportadas.<br />+ <span class="diffchar"><br /></span><br />En el lenguaje se modela la solución de un problema de cálculo dividiendo el mismo en <em>pasos</em>. Cada paso debe ser <em>declarado</em> por el usuario desarrollador. La figura 2 muestra los componentes del paso de cálculo. Puede considerarse que el paso de cálculo es la unidad declarativa principal del lenguaje. Dentro del ámbito de un paso pueden declararse <em>funciones, magnitudes, unidades, variables locales </em>(solo serán visibles dentro del bloque de ejecución), <em>variables exportadas </em>(resultados provistos por el paso), <em>reportes</em> (resultados mostrados al usuario final), <em>capturas</em> (valores requeridos al usuario final),<em> dependencias</em> (variables exportadas de otros pasos que se requieren para calcular este paso), <em>precondiciones</em> (condiciones que deben cumplir las capturas para poder ejecutarse el paso) y <em>postcondiciones</em> (condiciones que deben cumplir los resultados para considerarse que el paso es válido).<span class="diffchar"><br /></span><br />El bloque de ejecución del paso se especifica de manera similar a una función. En este bloque son visibles todas las dependencias, y pueden modificarse los valores de las variables, tanto locales como exportadas.<span class="diffchar"><br /><br /></span><br />- <br />Una función en lenguaje hormiga coincide con una función matemática: no puede tener estado interno ni efectos colaterales. Las funciones permiten especificar mediante expresiones matemáticas, <em>proceduralmente </em>(o con una combinación de ambos métodos) la forma en que se obtiene un resultado a partir de uno o más <em>parámetros</em>. Dentro de una función se pueden declarar <em>variables</em> que solo tienen visibilidad local y pueden utilizarse para almacenar resultados intermedios. Respetando el paradigma funcional puro, todos los datos que se utilizan para calcular el resultado de una función deben ser estrictamente pasados como parámetro.<br />+ <span class="diffchar"><br /></span><br />Una función en lenguaje hormiga coincide con una función matemática: no puede tener estado interno ni efectos colaterales. Las funciones permiten especificar mediante expresiones matemáticas, <em>proceduralmente </em>(o con una combinación de ambos métodos) la forma en que se obtiene un resultado a partir de uno o más <em>parámetros</em>. Dentro de una función se pueden declarar <em>variables</em> que solo tienen visibilidad local y pueden utilizarse para almacenar resultados intermedios. Respetando el paradigma funcional puro, todos los datos que se utilizan para calcular el resultado de una función deben ser estrictamente pasados como parámetro.<span class="diffchar"><br /><br /></span><br />- <br />Las magnitudes son los tipos de datos del lenguaje hormiga. Cada variable, captura o reporte debe corresponder a una magnitud. A su vez, cada magnitud debe tener una o más unidades. Cuando se asigna un valor a una variable puede indicarse una unidad, para que el sistema realice automáticamente la conversión a la unidad canónica. Las magnitudes serán controladas por el sistema durante el pasaje de parámetros a las funciones.<br />+ <span class="diffchar"><br /></span><br />Las magnitudes son los tipos de datos del lenguaje hormiga. Cada variable, captura o reporte debe corresponder a una magnitud. A su vez, cada magnitud debe tener una o más unidades. Cuando se asigna un valor a una variable puede indicarse una unidad, para que el sistema realice automáticamente la conversión a la unidad canónica. Las magnitudes serán controladas por el sistema durante el pasaje de parámetros a las funciones.<span class="diffchar"><br /><br /></span><br />- <br />Las variables pueden declararse dentro de una función, o dentro del ámbito de un paso. Las variables declaradas dentro de una función solo son visibles dentro de la función, y solo tienen alcance dentro de la declaración de función. Las variables locales en el ámbito del paso de cálculo solamente son visibles dentro del bloque de ejecución. Las variable exportadas, también dentro del ámbito del paso de cálculo, tienen alcance global, y para ser visibles dentro de otro paso, deben ser declaradas como dependencia en el mismo.<br />+ <span class="diffchar"><br /></span><br />Las variables pueden declararse dentro de una función, o dentro del ámbito de un paso. Las variables declaradas dentro de una función solo son visibles dentro de la función, y solo tienen alcance dentro de la declaración de función. Las variables locales en el ámbito del paso de cálculo solamente son visibles dentro del bloque de ejecución. Las variable exportadas, también dentro del ámbito del paso de cálculo, tienen alcance global, y para ser visibles dentro de otro paso, deben ser declaradas como dependencia en el mismo.<span class="diffchar"><br /><br /></span><br />- <br />Los reportes son resultados que serán mostrados al usuario final. Además de una variable, también deben tener un tipo de reporte asociado, que indica la forma en que el resultado será presentado (numero, progreso, gráfico, imagen, etc.). Los reportes reflejarán siempre el valor de su variable asociada. El sistema construirá en forma automática la ventana de reporte para el paso de cálculo.<br />+ <span class="diffchar"><br /></span><br />Los reportes son resultados que serán mostrados al usuario final. Además de una variable, también deben tener un tipo de reporte asociado, que indica la forma en que el resultado será presentado (numero, progreso, gráfico, imagen, etc.). Los reportes reflejarán siempre el valor de su variable asociada. El sistema construirá en forma automática la ventana de reporte para el paso de cálculo.<span class="diffchar"><br /><br /></span><br />- <br />Las capturas permiten requerir al usuario final un valor. Además de una variable, también deben tener un tipo de captura asociado (número, progreso, imagen, etc.). Cada captura puede tener una condición asociada, que restringe los valores que el usuario final puede ingresar en la misma. La variable asociada a una captura adquirirá automáticamente el valor indicado por el usuario final en la captura. El sistema construirá en forma automática la ventana de captura para el paso de cálculo.<br />+ <span class="diffchar"><br /></span><br />Las capturas permiten requerir al usuario final un valor. Además de una variable, también deben tener un tipo de captura asociado (número, progreso, imagen, etc.). Cada captura puede tener una condición asociada, que restringe los valores que el usuario final puede ingresar en la misma. La variable asociada a una captura adquirirá automáticamente el valor indicado por el usuario final en la captura. El sistema construirá en forma automática la ventana de captura para el paso de cálculo.<span class="diffchar"><br /><br /></span><br />- <br />Las dependencias indican las variables exportadas de pasos anteriores que deben tener valores válidos a fin de que el paso de cálculo pueda realizarse. También puede indicarse una dependencia hacia otro paso en forma explícita. Utilizando la información provista por las dependencias, el sistema construirá la vista de árbol y calculará en forma automática el estado de cada paso.<br />+ <span class="diffchar"><br /></span><br />Las dependencias indican las variables exportadas de pasos anteriores que deben tener valores válidos a fin de que el paso de cálculo pueda realizarse. También puede indicarse una dependencia hacia otro paso en forma explícita. Utilizando la información provista por las dependencias, el sistema construirá la vista de árbol y calculará en forma automática el estado de cada paso.<span class="diffchar"><br /><br /></span><br />- Las precondiciones son condiciones que deben cumplir las capturas y las dependencias para considerar que el paso de cálculo puede ejecutarse. El sistema evaluará las precondiciones luego de que el usuario ingrese los valores de todas las capturas, y antes de ejecutar el paso. Si alguna precondición no se cumple el paso no se ejecutará y se mostrará un aviso de error al usuario final, quien tendrá entonces la oportunidad de corregir las capturas, o cancelar la ejecución.<br />+ Las precondiciones son condiciones que deben cumplir las capturas y las dependencias para considerar que el paso de cálculo puede ejecutarse. El sistema evaluará las precondiciones luego de que el usuario ingrese los valores de todas las capturas, y antes de ejecutar el paso. Si alguna precondición no se cumple el paso no se ejecutará y se mostrará un aviso de error al usuario final, quien tendrá entonces la oportunidad de corregir las capturas, o cancelar la ejecución.<span class="diffchar"><br /><br /></span><br />- <br />Las postcondiciones son condiciones que deben cumplir los resultados de la evaluación de un paso de cálculo para considerarlos válidos. El sistema evaluará las postcondiciones luego de ejecutar el paso de cálculo. Si alguna postcondición no se cumple el paso se considerará ejecutado en falla, y se mostrará un aviso de error al usuario final.<br />+ <span class="diffchar"><br /></span><br />Las postcondiciones son condiciones que deben cumplir los resultados de la evaluación de un paso de cálculo para considerarlos válidos. El sistema evaluará las postcondiciones luego de ejecutar el paso de cálculo. Si alguna postcondición no se cumple el paso se considerará ejecutado en falla, y se mostrará un aviso de error al usuario final.<span class="diffchar"><br /><br /></span><br />- <br />Un conjunto de magnitudes, unidades, pasos y/o funciones pueden agruparse semánticamente dentro de un módulo. Los módulos pueden ser luego importados en otras especificaciones. El agrupamiento en módulos permite construir librerías de magnitudes, funciones y/o pasos de cálculo que luego podrán ser utilizados en otros proyectos.+ <span class="diffchar"><br /></span><br />Un conjunto de magnitudes, unidades, pasos y/o funciones pueden agruparse semánticamente dentro de un módulo. Los módulos pueden ser luego importados en otras especificaciones. El agrupamiento en módulos permite construir librerías de magnitudes, funciones y/o pasos de cálculo que luego podrán ser utilizados en otros proyectos.<span class="diffchar"><br /></span>- Hormiga es un proyecto interdisciplinario que incluye profesionales de la informática, y de la Ingeniería Civil. Como tal presenta un modelo de desarrollo donde la informática se brinda como un servicio hacia otra disciplina (en este caso la Ingeniería Civil) dando como resultado un trabajo que combina sinérgicamente logros y formas de pensar.<br />El proyecto permite una independencia de los ingenieros civiles respecto de la informática. Ellos mismos pueden especificar las soluciones utilizando sus propios métodos y su propia forma de pensar, logrando naturalmente que la herramienta se adapte a sus necesidades y requerimientos.<br />El desarrollo basado en Software Libre garantiza la disponibilidad de la herramienta y sus componentes, reforzando el principio colaborativo sobre el que este proyecto se afirma, y no podría funcionar si no se creara una comunidad de usuarios finales y usuarios desarrolladores. Para que esta comunidad se sostenga en el tiempo todo el material disponible debe estar accesible.<br />+ Hormiga es un proyecto interdisciplinario que incluye profesionales de la informática, y de la Ingeniería Civil. Como tal presenta un modelo de desarrollo donde la informática se brinda como un servicio hacia otra disciplina (en este caso la Ingeniería Civil) dando como resultado un trabajo que combina sinérgicamente logros y formas de pensar.<span class="diffchar"><br /></span><br />El proyecto permite una independencia de los ingenieros civiles respecto de la informática. Ellos mismos pueden especificar las soluciones utilizando sus propios métodos y su propia forma de pensar, logrando naturalmente que la herramienta se adapte a sus necesidades y requerimientos.<span class="diffchar"><br /></span><br />El desarrollo basado en Software Libre garantiza la disponibilidad de la herramienta y sus componentes, reforzando el principio colaborativo sobre el que este proyecto se afirma, y no podría funcionar si no se creara una comunidad de usuarios finales y usuarios desarrolladores. Para que esta comunidad se sostenga en el tiempo todo el material disponible debe estar accesible.<span class="diffchar"><br /><br /></span><br />- <br />(CIRSOC201)	CIRSOC, Reglamento Argentino de Estructuras de Hormigón, 2005<br />(RS2007)	Richard Stallman, The GNU Manifesto, 2007<br />(PL2007)	Pascual Julián Iranzo y María Alpuente Frasnedo, Programación lógica: teoría y práctica, 2007<br /><<span class="diffchar">/div></div></td></t</span>r<span class="diffchar">><</span>/<span class="diffchar">table</span>><br />+ <span class="diffchar"><br /></span><br />(CIRSOC201)	CIRSOC, Reglamento Argentino de Estructuras de Hormigón, 2005<span class="diffchar"><br /></span><br />(RS2007)	Richard Stallman, The GNU Manifesto, 2007<span class="diffchar"><br /></span><br />(PL2007)	Pascual Julián Iranzo y María Alpuente Frasnedo, Programación lógica: teoría y práctica, 2007<br /><<span class="diffchar">b</span>r<span class="diffchar"> </span>/><br />]]></description>
            <pubDate>Tue, 26 Oct 2010 15:01:02 +0100</pubDate>
        </item>
        <item>
            <title>Historia</title>
            <link>http://www.hormigaproject.com.ar/Historia</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>+ <br />]]></description>
            <pubDate>Tue, 26 Oct 2010 14:14:36 +0100</pubDate>
        </item>
        <item>
            <title>Diagramas de flujo</title>
            <link>http://www.hormigaproject.com.ar/Diagramas+de+flujo</link>
            <description><![CDATA[<style TYPE="text/css"> .diffchar { color:red; } </style>- En esta secci<span class="diffchar">o</span>n se encuentran los diagramas de flujo de algunos programas.<br />+ En esta secci<span class="diffchar">ó</span>n se encuentran los diagramas de flujo de algunos programas.<br />]]></description>
            <pubDate>Tue, 26 Oct 2010 12:00:57 +0100</pubDate>
        </item>
    </channel>
</rss>

