1eras Jornadas Técnicas con el Estado Herramientas de Apoyo al desarrollo de Software Ernesto Quiñones Azcárate Presidencia de Apesol 2006-2008 ernestoq@apesol.org Agenda 1. Herramientas para diseñar software 2. Herramientas para modelar bases de datos 3. Gestión de la configuración 1. Herramientas para diseñar software ● Existe al menos 20 herramientas libres para diseñar software totalmente libres. ● Todas utilizan la notación UML ● El nivel de avance entre una y otra es notable, casi todas ofrecen como funcionalidad : ● ● Diagramas de caso de uso ● Diagramas de clases ● Diagramas de secuencia ● Generación de código en java, c++, python y php ● Algunas entidad-relación (pero ninguna lo suficientemente avanzada) Pocas herramientas permiten ingeniería reversa, y si lo hacen solo es de lenguajes tipo java o c++ 1. Herramientas para diseñar software ● Use Case Maker, solo documentar casos de usos y requerimientos relativos, http://use-case-maker.sourceforge.net/index.html ● ObjectBuilder, permite documentar clases, relaciones, métodos, etc., http://sourceforge.net/projects/objectbuilder/ ● BoUml, herramienta de diseño UML multiplataforma, es bastante completa tiene todos los diagramas UML estándares y genera código, http://bouml.sourceforge.net/ ● Gaphor, mismas característica que BoUml pero menos diagramas, http://gaphor.devjavu.com ● Taylor, es un set de plug-ins para Eclipse para modelar bajo UML, genera y lee código Java, permite modelar incluse modelos de procesos de negocios y muchas cosas mas, http://taylor.sourceforge.net incorpora muchas tecnologías, 1. Herramientas para diseñar software Umbrello ● Desarrollado en C++ es parte del escritorio KDE, actualmente únicamente utilizado en Linux pero ya el escritorio KDE se puede correr en Windows por lo cual la herramienta podría ser utilizada. ● Rápida, ligera, sencilla de usar, no se pone lenta cuando los proyectos son enormes. ● Requiere de mas opciones de generación de documentación de los diseños modelados dentro de ella. ● Permite generar código en diversos lenguajes. ● Soporta los diagramas UML estándares. http://uml.sourceforge.net/index.php 1. Herramientas para diseñar software Umbrello Diagrama de clases Diagrama de secuencia 1. Herramientas para diseñar software Umbrello Casos de uso Diagrama de colaboración 1. Herramientas para diseñar software ArgoUML ● Desarrollado en Java es multiplataforma. ● Provee toda la funcionalidad desea en una herramienta para modelar bajo UML. ● Genera código en varios lenguajes. ● Sus diseños son exportables a XMI y pueden ser importados por algunos Frameworks. ● Tiene un depurador del diseño que vamos creando, el depurador sugiere soluciones o detecta incongruencias, sus mensajes son bastante claros y de mucha ayuda. http://argouml.tigris.org/ 1. Herramientas para diseñar software ArgoUML Relación de Diagramas y componentes Mensajes de depuración Diagrama Detalles de los componentes 1. Herramientas para diseñar software ArgoUML Relación de Diagramas y componentes Mensajes de depuración ordenados por diferentes conceptos Diagrama Ayuda para depurar el componente 1. Herramientas para diseñar software ArgoUML Relación de Diagramas y componentes Mensajes de depuración ordenados por diferentes conceptos Diagrama Código fuente inmediatamente generado en diferentes lenguajes 2. Herramientas para modelar bases de datos ● Algunas de las herramientas case libres permiten modelar bajo EntidadRelación, sin embargo su funcionalidad es bastante limitada. ● Básicamente existen herramientas orientadas a una db en especifico y estas son MySql y PostgreSQL, el de MySql (MySql WorkBench no es libre). ● Permiten hacer ingeniería reversa de la db para las que fueron diseñadas, algunas otras soportan UnixODBC/Odbc según sea el caso. ● Existen algunos modeladores en linea. ● La documentación que generan es bien básica. 2. Herramientas para modelar bases de datos PgDesigner ● Desarrollada en Gambas v. 2 solo puede ser usada de momento en Linux. ● Unicamente permite modelar para PostgreSQL y genera código para este dbms, también es posible conectarse directamente a la db para generar los objetos. ● Puede realizar ingeniería reversa. ● Asistente para creación de vistas. ● Soporta una gran cantidad de objetos. 2. Herramientas para modelar bases de datos PgDesigner B a r r a h e r r a m d i e e n t a s Zona de diseño Selector de tipos de objetos 2. Herramientas para modelar bases de datos PgDesigner Importando un esquema ya creado 2. Herramientas para modelar bases de datos PgDesigner Ingeniería reversa concluida y generando reporte 2. Herramientas para modelar bases de datos Diseñadores por WEB ● Los diseñadores por web son una manera rápida y sencilla de generar diagramas para atender necesidades inmediatas o compartir diseños con varias personas e incluso trabajarlos en conjunto. ● Pueden usarse casi con cualquier navegador de Internet. ● Poseen los objetos de base de datos mas comunes. ● Genera código SQL y en algunos casos importan código para generar el diagrama. ● Algunos generan documentación básica . WWW Sql Designer : http://ondras.zarovi.cz/sql/ PHP DB Designer : http://sourceforge.net/projects/phpdbdesigner/ 2. Herramientas para modelar bases de datos WWW SQL Designer 2. Herramientas para modelar bases de datos PHP Db Designer Solo funciona con Oracle y MySql 3. Gestión de la configuración ● Uno de los principales problemas en todos los proyectos de desarrollo de software es el “versionaje”. ● El versionaje nos permite llevar un control de los cambios en nuestro código, quien y cuando lo hizo, porque lo hizo, que cambio a razón de que. ● Existe muchas alternativas libres en el mercado que unidos a otros productos permiten tener incluso hasta los historiales, hacer comparaciones, manejar tickets, llevar métricas, etc. ● Casi todas las opciones cuentan con soporte de GUI para administración y/o soporte Web lo que hace mucho mas cómodo trabajar en equipos de desarrollo distribuidos en varios lugares. 3. Gestión de la configuración SVN+TRAC ● Subversion mas conocido como SVN es probablemente el sistema mas desarrollado para el control de cambios. ● SVN posee clientes Consola, GUI y WEB para acceder a los arboles de directorios y actualizar código, retornar versiones, etc., existen clientes GUI para Linux y Windows (existe un plug-in para Eclipse). http://subversion.tigris.org/ 3. Gestión de la configuración SVN+TRAC ● Trac es un sistema web libre para la gestión de proyectos y seguimiento de errores. ● Depende de SVN y permite analizar cambios en el código, ver los responsables de los mismos y los motivos por los cuales se hicieron los cambios. ● Cuenta además con un wiki (se podría utilizar para despliegue de procedimientos o gestión de documentación de acuerdos de reuniones) y gestión de tickets. ● Tiene algunos plug-ins para diferentes trabajos, mayor seguridad y hasta métricas, existen modificaciones que lo une al gestor de proyectos dotProject. ● Tanto TRAC como SVN sirven para diferentes lenguajes de programación. http://trac.edgewall.org/ 3. Gestión de la configuración SVN+TRAC 3. Gestión de la configuración GIT ● Git fue diseñado por Linus Torvalds, pensando en la eficiencia y confiabilidad de mantenimiento de versiones de aplicaciones con una enorme cantidad de archivos de código fuente. ● A diferencia de SVN esta más pensado en soportar muchas modificaciones independientes bajo la premisa que los códigos subidos no necesariamente son definitivos y/o estables. ● GIT también puede ser configurado en varias instancia de subida de código, generando todo un esquema de servidores remotos intermedios hasta llegar a “producción”. ● Posee clientes WEB y GUI Linux y Windows. ● Se puede unir a TRAC. http://git.or.cz/ 3. Gestión de la configuración GIT Gracias Toda la información con la que se realizo estas diapositivas puede ser vista aquí: http://tinyurl.com/6qa848 APESOL Website: http://www.apesol.org IRC: server: irc.freenode.net sala: #apesol Listas: http://apesol.org/listas.php