herramientas para el desarrollo de software libre

58
 El día que Python salvó al Software Libre... Francisco Palm :: Cenditel :: ULA :: Solve I Jornadas de Investigación y Desarrollo de Tecnologías Libres kit de herramientas de Software Libre

Upload: francisco-palm

Post on 10-Jun-2015

7.777 views

Category:

Technology


0 download

DESCRIPTION

Enumeración de herramientas libres basadas en python básicas para asistir y automatizar distintas tareas del desarrollo de software libre.

TRANSCRIPT

Page 1: Herramientas para el Desarrollo de Software Libre

   

El día que Python salvó al Software Libre...

Francisco Palm :: Cenditel :: ULA :: Solve

I Jornadas de Investigación y Desarrollo de Tecnologías Libres

kit de herramientas de Software Libre

Page 2: Herramientas para el Desarrollo de Software Libre

   

¿Ingeniería del SL?

• Lo única cuestión medianamente sensata que han señalado los detractores del Software Libre en Venezuela.

• ¿El Software Libre tiene su propia forma de hacer las cosas, o es qué los métodos diseñados para desarrollar Software Privativo no funcionan?

Page 3: Herramientas para el Desarrollo de Software Libre

   

Page 4: Herramientas para el Desarrollo de Software Libre

   

Page 5: Herramientas para el Desarrollo de Software Libre

   

Page 6: Herramientas para el Desarrollo de Software Libre

   

¿Ingeniería del SL?

• “El prototipado rápido, el desarrollo incremental y evolutivo, el ciclo de vida en espiral, el desarrollo rápido de aplicaciones, y, recientemente, la programación extrema y los procesos ágiles pueden aplicarse por igual al software libre o propietario”

• Alfonso Fugetta (2003), Open source software - an evaluation, Journal of Systems and Software, 66, 77-90.

Page 7: Herramientas para el Desarrollo de Software Libre

   

Modelo del Software Privativo

GESTIÓN

Programación

Page 8: Herramientas para el Desarrollo de Software Libre

   

Modelo de éxito en el Software Libre

GESTIÓN Programación

Page 9: Herramientas para el Desarrollo de Software Libre

   

Page 10: Herramientas para el Desarrollo de Software Libre

   

Puesta en marcha

• Conceptualizar: el proyecto es la idea

• Buscar proyectos similares.

• Escoger un buen nombre.

• Establecer sin ambigüedades que el proyecto es libre: ¿libre o basado en software libre?

• Establecer la licencia del proyecto.

• Realizar el listado de requerimientos y funcionalidades.

Page 11: Herramientas para el Desarrollo de Software Libre

   

Infraestructura tecnológica

• Listas de correo

• Sistema de control de versiones

• Registro de errores

• Documentación

• Presencia web:

– Foros, Canales IRC, Blogs, Wikis

Page 12: Herramientas para el Desarrollo de Software Libre

   

Infraestructura sociopolítica

• Dictador Benevolente, ¿Qué es eso?

• La democracia basada en el consenso

– Sólo cuando es necesario elegir por votación

• En cualquier caso, establecer claramente y por escrito las reglas del juego.

Page 13: Herramientas para el Desarrollo de Software Libre

   

Dinero

• Tipos de involucración:

– ¿Porqué se financian los proyectos de software libre?

• Licenciamiento Doble

• Contratos

• Donaciones

• Financiamiento

• Promoción y difusión

Page 14: Herramientas para el Desarrollo de Software Libre

   

Comunicación

• Manejo de los debates a través de medios electrónicos.

• ¿Cómo tratar a la gente complicada?

• Anuncios públicos del proyecto: liberación de nuevas versiones, reportar fallos, anunciar vulnerabilidades de seguridad.

Page 15: Herramientas para el Desarrollo de Software Libre

   

Empaquetado, liberación y desarrollo rápido

• Sistema de numeración de las versiones

– Estrategia simple

– Estrategia par/impar

– Es único, es incremental

• Versiones alpha, beta, release candidate

• Estabilizando una liberación

– Ramas estables y en desarrollo

• Empaquetamiento

Page 16: Herramientas para el Desarrollo de Software Libre

   

Manejo de voluntarios

• Establecer claramente el liderazgo

• Delegar el trabajo, establecer responsables para la liberación de versiones y gestionar ramas del desarrollo.

• Evitar la formación de parcelas.

• Compartir tanto las tareas de gestión como las tareas técnicas.

Page 17: Herramientas para el Desarrollo de Software Libre

   

Licencias, derechos de autor y patentes.

• Aspectos de las licencias

– Compatibilidad con licencias privativas

– Compatibilidad con otras licencias públicas

– Reforzamiento de la credibilidad

– Protección de los derechos de autor y marcas.

• Escogiendo una licencia

– Licencia GPL o MIT/X Window

Page 18: Herramientas para el Desarrollo de Software Libre

   

Vamos a hablar principalmente de la infraestructura tecnológica

Page 19: Herramientas para el Desarrollo de Software Libre

   

Page 20: Herramientas para el Desarrollo de Software Libre

   

Carpintería del Software

1.¿Usa control de versiones?

2.¿Puede reconstruir todo con un solo comando?

3.¿Construye el software desde cero todos los días?

4.¿Tiene un sistema automatizado de pruebas?

5.¿Antes comprobar los cambios ejecuta el sistema de pruebas?

6.¿Sabe cuánto código cubren sus pruebas?

7.¿Lleva un registro de los errores?

Page 21: Herramientas para el Desarrollo de Software Libre

   

Carpintería del Software

8.¿Utiliza un depurador simbólico?

9.¿Utiliza aserciones defensivas y otras técnicas de programación?

10.¿Puede hacer el seguimiento de todo lo que libera (no sólo de software) hasta sus orígenes?

11.¿Documenta mientras programa?

12.¿Mantiene la documentación de sus archivos fuente?

13.¿Puede configurar un entorno de desarrollo en una nueva máquina sin esfuerzos heroicos?

Page 22: Herramientas para el Desarrollo de Software Libre

   

Carpintería del Software

14.¿Existe un archivo con sistema de búsqueda de las discusiones sobre el proyecto?

15.¿Utiliza un corrector de estilo para garantizar que su software está escrito en forma uniforme y legible?

Page 23: Herramientas para el Desarrollo de Software Libre

   

Carpintería del Software

• Su puntuación:

– Negativo: encontrará este curso difícil, pero gratificante.

– 0-5: este curso llenará las lagunas existentes en lo que ya sabe.

– 6-10: será capaz de aplicar las ideas en este curso a sus propios proyectos de inmediato.

– De 11 en adelante: probablemente debería ir directamente a las fuentes en la Bibliografía.

Page 24: Herramientas para el Desarrollo de Software Libre

   

Lenguajes de programación

• Los lenguajes dinámicos (mal llamados “de scripts”) son el principal aporte que ha hecho el software libre a la ciencia de la computación.

• Los lenguajes dinámicos como Python, Ruby o Perl son los más adecuados para integrar componentes y reducir la complejidad en muchos sentidos.

• No pasar por alto paradigmas de programación alternativos como programación funcional o programación lógica.

Page 25: Herramientas para el Desarrollo de Software Libre

   

Page 26: Herramientas para el Desarrollo de Software Libre

   

Automatización de código

• Se usa para las labores de creación de archivos ejecutables o programas, para instalación, para limpiar archivos temporales.

• Es utilizado también para automatización de otras tareas como la creación de documentos del formato docbook, mantenimiento del sistema, etc.

Page 27: Herramientas para el Desarrollo de Software Libre

   

http://www.scons.org/

Page 28: Herramientas para el Desarrollo de Software Libre

   

Integración continua

• Metodología propuesta inicialmente por Martin Fowler (XP) que consiste en hacer integraciones (compilación y pruebas) automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes.

• El proceso suele ser, cada cierto tiempo (horas), descargarse las fuentes desde el gestor de versiones compilarlo, ejecutar pruebas y generar informes.

Page 29: Herramientas para el Desarrollo de Software Libre

   

http://buildbot.net/

Page 30: Herramientas para el Desarrollo de Software Libre

   

Page 31: Herramientas para el Desarrollo de Software Libre

   

Sistema de control de versiones

• Gestión de los cambios que se realizan para controlar las distintas versiones del código fuente. Sin embargo, los mismos conceptos son aplicables a otros ámbitos como documentos, imágenes, sitios web, etcétera.

• Cuenta con:

– almacenamiento

– mecanismos para realizar cambios

– registro histórico

Page 32: Herramientas para el Desarrollo de Software Libre

   

http://www.selenic.com/mercurial/wiki/

Page 33: Herramientas para el Desarrollo de Software Libre

   

Page 34: Herramientas para el Desarrollo de Software Libre

   

Manejo de diferencias

• Comparación entre distintas versiones de un archivo donde se resaltan las diferencias.

• Es particularmente útil para conciliar las diferencias cuando varios programadores trabajan sobre el mismo código y llevan su trabajo a un repositorio común.

Page 35: Herramientas para el Desarrollo de Software Libre

   

http://meld.sourceforge.net/index.html

Page 36: Herramientas para el Desarrollo de Software Libre

   

Page 37: Herramientas para el Desarrollo de Software Libre

   

Page 38: Herramientas para el Desarrollo de Software Libre

   

Seguimiento de errores

• (BTS, Bug Tracking System) Es una aplicación diseñada para asistir al equipo de desarrollo en el seguimiento de los defectos de software.

• En el software libre, permite que los usuarios den de alta directamente la incidencia detectada.

• Muchos de los sistemas de seguimiento de errores de software se integran frecuentemente con otras herramientas, como pueden ser correo electrónico, control de versiones, y otras herramientas de gestión administrativa.

Page 39: Herramientas para el Desarrollo de Software Libre

   

Page 40: Herramientas para el Desarrollo de Software Libre

   

Gestión de proyectos

• Es un término que abarca muchos tipos de software, incluyendo: planificación, control de costos, gestión del presupuesto, asignación de recursos, software colaborativo, comunicación, gestión de la calidad, y sistemas de documentación o administración.

• Se utilizan para hacer frente a la complejidad de los grandes proyectos

Page 41: Herramientas para el Desarrollo de Software Libre

   

Page 42: Herramientas para el Desarrollo de Software Libre

   

Page 43: Herramientas para el Desarrollo de Software Libre

   

Page 44: Herramientas para el Desarrollo de Software Libre

   

Page 45: Herramientas para el Desarrollo de Software Libre

   

Page 46: Herramientas para el Desarrollo de Software Libre

   

Page 47: Herramientas para el Desarrollo de Software Libre

   

Page 48: Herramientas para el Desarrollo de Software Libre

   

Page 49: Herramientas para el Desarrollo de Software Libre

   

Entornos Integrados de Desarrollo

• Una herramienta que se ha tomado del desarrollo de software privativo, pero que ha mostrado ciertas ventajas.

• La orientación en la actualidad es conjugar lo mejor de los mundos de la consola, vim, emacs, con las interfaces gráficas.

• Por suerte, ActiveState vino al rescate!

Page 50: Herramientas para el Desarrollo de Software Libre

   

Page 51: Herramientas para el Desarrollo de Software Libre

   

Page 52: Herramientas para el Desarrollo de Software Libre

   

Page 53: Herramientas para el Desarrollo de Software Libre

   

Más herramientas

• Foros, wikis, herramientas para documentar código, canales de IRC, blogs, sistemas de gestión de contenido...

• El software ofrece un conjunto de herramientas para el desarrollo más amplio, más coherente y más integrado que el software privativo.

Page 54: Herramientas para el Desarrollo de Software Libre

   

Page 55: Herramientas para el Desarrollo de Software Libre

   

Page 56: Herramientas para el Desarrollo de Software Libre

   

Page 57: Herramientas para el Desarrollo de Software Libre

   

Page 58: Herramientas para el Desarrollo de Software Libre