Metodología de Desarrollo  en el Software Libre: Rompiendo Paradigmas Ing. Arístides Castillo Colmenárez
Agenda Introducción Desarrollo tradicional vs. Desarrollo en SL Desafíos en el SL Calidad y Éxito en el SL Factores de Éxito en el SL Paradigmas tradicionales desafiados Aprendiendo de los factores de éxito
Introducción Primeros desarrollos libres seguían metodología tradicional Hoy, el Software Libre tiene su propia metodología: Linux es Subversivo! Estudio canónico:  La Catedral y el Bazar  por Eric S. Raymond. Impresión inicial: El desarrollo del Software Libre no debería poder ser exitoso.
Desarrollo tradicional vs.  Desarrollo en SL Desarrollo Tradicional Construcción de catedrales: Objetivos y requerimientos bien planteados Liderazgo tradicional, descendente Asignación de tareas Equipos estables de tamaño reducido Control y seguimiento estricto de actividades Normalmente, requiere agrupar los desarrolladores en la misma locación Motivación extrínseca Desarrollo en Software Libre Cada desarrollador agrega las funcionalidades que considera necesarias Liderazgo emergente, no impuesto Cada desarrollador escoge en que trabajar Decenas o cientos de desarrolladores participando, con alta rotación. Desarrolladores participan en tiempo parcial y cuando lo desean Desarrolladores rara vez comparten espacio físico. Motivación intrínseca.
Desafíos en el SL Generalmente, los desarrolladores no participan bajo contrato. Desarrollo distribuido por toda la Internet. Coordinación de cientos de desarrolladores. Cada desarrollador participa como desea. No hay autoridad centralizada que define funcionalidades Alta rotación de desarrolladores. “ Intentar liderar esta comunidad es como arrear gatos”  1 1 . Bruce Perens,  http://slashdot.org/comments.pl?sid=38937&cid=4166266
Tomado de Mockus et al,  ACM Transactions on Software Engineering and Methodology, Vol. 11, No. 3, July 2002 Densidad de Defectos encontrados en Mozilla y Apache Calidad en el Software Libre Módulos de Mozilla Miles de lineas de código KLOC Leyenda
Calidad en el Software Libre Tomado de Mockus et al,  ACM Transactions on Software Engineering and Methodology, Vol. 11, No. 3, July 2002 Tiempo de resolución en días   de problemas en Apache Web Server 140 días 90% 42 días 75% 1 día 50% Tiempo de resolución % de problemas
Éxito en el Software Libre Hoy por hoy y desde 1996, el Web Server más usado en la Internet Referencia: www.netcraft.com Estadísticas de uso de Servidores Web activos en Internet
Estadísticas de uso de Navegadores Web en la Red Referencia: http://www.w3schools.com/browsers/browsers_stats.asp Éxito en el Software Libre El navegador que logró revivir la batalla de los navegadores!!!
Éxito en el Software Libre De acuerdo con Netcraft.com, GNU/Linux es el SO usado por 5 de los mejores 10 hosting en el mundo. De los mejores 47 hosting, 21 tienen GNU/Linux como Sistema Operativo. El desarrollo del Kernel de Linux revolucionó la manera de hacer software libre. Ocupó el lugar desde hacía mucho tiempo vacante como núcleo del sistema operativo GNU. Dio a GNU el impulso que necesitaba para esparcir la noción de Software Libre. Hoy estamos abordando este tema gracias al desarrollo mismo de Linux!!!
Casos de Éxito en el  Software Libre ¿Cómo pueden ser exitosos estos proyectos y aplicaciones con las condiciones con las que se producen?
Protección de la Propiedad Intelectual con licencias como GPL, entre otras. Motiva a los desarrolladores a participar voluntariamente. Esto asegura que hay beneficio en la participación de otros El interés está en el software como tal, no en los beneficios derivados. Creatividad y disfrute del trabajo son los motivadores principales. La calidad se convierte en una meta  irrenunciable Factores de Éxito en el  Desarrollo de Software Libre
Modularidad en el diseño Facilita la división emergente del trabajo y la autoorganización del equipo. Disminuye la necesidad de coordinación colectiva. Permite la apropiación de actividades de manera independiente Código autoexplicativo Elegancia del código es vital Promueve la fácil integración de nuevos recursos voluntarios Disminuye el costo de entender el trabajo de los demás, y de cambiarlo. Factores de Éxito en el  Desarrollo de Software Libre
Control de calidad es llevado a cabo por toda la comunidad emergentemente “ Hall of Shame”. El código resultante será visto, publicado y criticado en Internet. Un trabajo de baja calidad produce “flamming” y “spamming”. División emergente del trabajo Participación abierta al público (Usuarios, Notificadores de Errores, Desarrolladores) Cada quien selecciona la tarea que más le agrada, en el módulo que más le interesa Si lo disfrutas, sobresaldrás en tu rol. Si  sobresales, te convertirás en líder. Factores de Éxito en el  Desarrollo de Software Libre
Los desarrolladores son usuarios Tienen requerimientos propios y los diseñan e implementan ellos mismos. Aportan sus necesidades y sus soluciones, promoviendo la evolución del software. Los conflictos se resuelven haciendo y no hablando Si hay más de una opción en competencia, generalmente se hacen las dos. Es común tener líneas paralelas de desarrollo. No hay ambigüedad cuando se habla en líneas de código. Factores de Éxito en el  Desarrollo de Software Libre
Liberar rápido y frecuentemente Release early, release often. Los errores son encontrados y notificados rápidamente. La comunidad se mantiene activa. Aprovechamiento de la participación masiva Ley de Linus: Dados muchos ojos, todos los errores son visibles. Miles de notificadores de errores. Cientos de usuarios-desarrolladores. Factores de Éxito en el  Desarrollo de Software Libre
Paradigmas tradicionales desafiados Ley de Brooks vs Ley de Linus Ley de Brooks: “Añadir más personal a un proyecto retrasado lo retrasa más”  1 La necesidad de intercomunicación se ve minimizada por la elegancia del código y la modularidad del diseño, y esto es crítico en el SL. Ley de Linus: “ Dados muchos ojos, todos los errores serán obvios ”  2   Reduce dramáticamente la necesidad de un equipo dedicado de pruebas 1  Brooks, F. The Mythical Man Month.  2  Raymond, E. The Cathedral and The Bazaar
Ineficiencia de líneas de desarrollo paralelas Mecanismo de resolución de conflictos Selección de la mejor opción Resolver haciendo y no hablando Criticidad de la ubicación física vs. Independencia de la ubicación En la medida en que la necesidad de comunicación directa entre desarrolladores se minimiza, la ubicación física deja de ser crítica. Consecuencia de la modularidad y  autoexplicación del código Paradigmas tradicionales desafiados
Impacto mínimo por alta rotación de desarrolladores Diseños sencillos y de calidad, autoexplicación del código, facilitan la integración de nuevos desarrolladores todos los días. La calidad del código puede sustituir la necesidad de documentación adicional. Orientación ascendente del producto (bazar) vs. orientación descendente (catedrales):   Generación emergente de funcionalidades Aprovechamiento de la inteligencia colectiva. Producto del rol compartido desarrollador – usuario. Paradigmas tradicionales desafiados
Aprendiendo de los factores de éxito El desarrollo tradicional puede nutrirse de las lecciones dictadas por el Software Libre Esquema dual Comercial – Libre IBM, MySQL, Qt Esquemas intermedios: Community Source. No subestimar la importancia de un diseño modular y la calidad del código. Beneficios de crear comunidades alrededor de los proyectos de desarrollo de software. Liberar temprano y frecuentemente!
Metodología + Innovación =  . La metodología de desarrollo de software hace la diferencia. Certificación CMM Nivel 2 Certificación ISO 9000 Metodología DBA en constante evolución Unified Process Agile Development Free Software
[email_address] +  1 (312) 224.8358 +58 (212) 761.9206 www.dbaccess.com Si deseas conectarte  con nuestra organización, por favor  contáctanos hoy  a través de: ¡Gente como tú! ¡Gente DBA! www.dbaccess.net
Gracias por su atención ¿Preguntas?

Metodologia SL

  • 1.
    Metodología de Desarrollo en el Software Libre: Rompiendo Paradigmas Ing. Arístides Castillo Colmenárez
  • 2.
    Agenda Introducción Desarrollotradicional vs. Desarrollo en SL Desafíos en el SL Calidad y Éxito en el SL Factores de Éxito en el SL Paradigmas tradicionales desafiados Aprendiendo de los factores de éxito
  • 3.
    Introducción Primeros desarrolloslibres seguían metodología tradicional Hoy, el Software Libre tiene su propia metodología: Linux es Subversivo! Estudio canónico: La Catedral y el Bazar por Eric S. Raymond. Impresión inicial: El desarrollo del Software Libre no debería poder ser exitoso.
  • 4.
    Desarrollo tradicional vs. Desarrollo en SL Desarrollo Tradicional Construcción de catedrales: Objetivos y requerimientos bien planteados Liderazgo tradicional, descendente Asignación de tareas Equipos estables de tamaño reducido Control y seguimiento estricto de actividades Normalmente, requiere agrupar los desarrolladores en la misma locación Motivación extrínseca Desarrollo en Software Libre Cada desarrollador agrega las funcionalidades que considera necesarias Liderazgo emergente, no impuesto Cada desarrollador escoge en que trabajar Decenas o cientos de desarrolladores participando, con alta rotación. Desarrolladores participan en tiempo parcial y cuando lo desean Desarrolladores rara vez comparten espacio físico. Motivación intrínseca.
  • 5.
    Desafíos en elSL Generalmente, los desarrolladores no participan bajo contrato. Desarrollo distribuido por toda la Internet. Coordinación de cientos de desarrolladores. Cada desarrollador participa como desea. No hay autoridad centralizada que define funcionalidades Alta rotación de desarrolladores. “ Intentar liderar esta comunidad es como arrear gatos” 1 1 . Bruce Perens, http://slashdot.org/comments.pl?sid=38937&cid=4166266
  • 6.
    Tomado de Mockuset al, ACM Transactions on Software Engineering and Methodology, Vol. 11, No. 3, July 2002 Densidad de Defectos encontrados en Mozilla y Apache Calidad en el Software Libre Módulos de Mozilla Miles de lineas de código KLOC Leyenda
  • 7.
    Calidad en elSoftware Libre Tomado de Mockus et al, ACM Transactions on Software Engineering and Methodology, Vol. 11, No. 3, July 2002 Tiempo de resolución en días de problemas en Apache Web Server 140 días 90% 42 días 75% 1 día 50% Tiempo de resolución % de problemas
  • 8.
    Éxito en elSoftware Libre Hoy por hoy y desde 1996, el Web Server más usado en la Internet Referencia: www.netcraft.com Estadísticas de uso de Servidores Web activos en Internet
  • 9.
    Estadísticas de usode Navegadores Web en la Red Referencia: http://www.w3schools.com/browsers/browsers_stats.asp Éxito en el Software Libre El navegador que logró revivir la batalla de los navegadores!!!
  • 10.
    Éxito en elSoftware Libre De acuerdo con Netcraft.com, GNU/Linux es el SO usado por 5 de los mejores 10 hosting en el mundo. De los mejores 47 hosting, 21 tienen GNU/Linux como Sistema Operativo. El desarrollo del Kernel de Linux revolucionó la manera de hacer software libre. Ocupó el lugar desde hacía mucho tiempo vacante como núcleo del sistema operativo GNU. Dio a GNU el impulso que necesitaba para esparcir la noción de Software Libre. Hoy estamos abordando este tema gracias al desarrollo mismo de Linux!!!
  • 11.
    Casos de Éxitoen el Software Libre ¿Cómo pueden ser exitosos estos proyectos y aplicaciones con las condiciones con las que se producen?
  • 12.
    Protección de laPropiedad Intelectual con licencias como GPL, entre otras. Motiva a los desarrolladores a participar voluntariamente. Esto asegura que hay beneficio en la participación de otros El interés está en el software como tal, no en los beneficios derivados. Creatividad y disfrute del trabajo son los motivadores principales. La calidad se convierte en una meta irrenunciable Factores de Éxito en el Desarrollo de Software Libre
  • 13.
    Modularidad en eldiseño Facilita la división emergente del trabajo y la autoorganización del equipo. Disminuye la necesidad de coordinación colectiva. Permite la apropiación de actividades de manera independiente Código autoexplicativo Elegancia del código es vital Promueve la fácil integración de nuevos recursos voluntarios Disminuye el costo de entender el trabajo de los demás, y de cambiarlo. Factores de Éxito en el Desarrollo de Software Libre
  • 14.
    Control de calidades llevado a cabo por toda la comunidad emergentemente “ Hall of Shame”. El código resultante será visto, publicado y criticado en Internet. Un trabajo de baja calidad produce “flamming” y “spamming”. División emergente del trabajo Participación abierta al público (Usuarios, Notificadores de Errores, Desarrolladores) Cada quien selecciona la tarea que más le agrada, en el módulo que más le interesa Si lo disfrutas, sobresaldrás en tu rol. Si sobresales, te convertirás en líder. Factores de Éxito en el Desarrollo de Software Libre
  • 15.
    Los desarrolladores sonusuarios Tienen requerimientos propios y los diseñan e implementan ellos mismos. Aportan sus necesidades y sus soluciones, promoviendo la evolución del software. Los conflictos se resuelven haciendo y no hablando Si hay más de una opción en competencia, generalmente se hacen las dos. Es común tener líneas paralelas de desarrollo. No hay ambigüedad cuando se habla en líneas de código. Factores de Éxito en el Desarrollo de Software Libre
  • 16.
    Liberar rápido yfrecuentemente Release early, release often. Los errores son encontrados y notificados rápidamente. La comunidad se mantiene activa. Aprovechamiento de la participación masiva Ley de Linus: Dados muchos ojos, todos los errores son visibles. Miles de notificadores de errores. Cientos de usuarios-desarrolladores. Factores de Éxito en el Desarrollo de Software Libre
  • 17.
    Paradigmas tradicionales desafiadosLey de Brooks vs Ley de Linus Ley de Brooks: “Añadir más personal a un proyecto retrasado lo retrasa más” 1 La necesidad de intercomunicación se ve minimizada por la elegancia del código y la modularidad del diseño, y esto es crítico en el SL. Ley de Linus: “ Dados muchos ojos, todos los errores serán obvios ” 2 Reduce dramáticamente la necesidad de un equipo dedicado de pruebas 1 Brooks, F. The Mythical Man Month. 2 Raymond, E. The Cathedral and The Bazaar
  • 18.
    Ineficiencia de líneasde desarrollo paralelas Mecanismo de resolución de conflictos Selección de la mejor opción Resolver haciendo y no hablando Criticidad de la ubicación física vs. Independencia de la ubicación En la medida en que la necesidad de comunicación directa entre desarrolladores se minimiza, la ubicación física deja de ser crítica. Consecuencia de la modularidad y autoexplicación del código Paradigmas tradicionales desafiados
  • 19.
    Impacto mínimo poralta rotación de desarrolladores Diseños sencillos y de calidad, autoexplicación del código, facilitan la integración de nuevos desarrolladores todos los días. La calidad del código puede sustituir la necesidad de documentación adicional. Orientación ascendente del producto (bazar) vs. orientación descendente (catedrales): Generación emergente de funcionalidades Aprovechamiento de la inteligencia colectiva. Producto del rol compartido desarrollador – usuario. Paradigmas tradicionales desafiados
  • 20.
    Aprendiendo de losfactores de éxito El desarrollo tradicional puede nutrirse de las lecciones dictadas por el Software Libre Esquema dual Comercial – Libre IBM, MySQL, Qt Esquemas intermedios: Community Source. No subestimar la importancia de un diseño modular y la calidad del código. Beneficios de crear comunidades alrededor de los proyectos de desarrollo de software. Liberar temprano y frecuentemente!
  • 21.
    Metodología + Innovación= . La metodología de desarrollo de software hace la diferencia. Certificación CMM Nivel 2 Certificación ISO 9000 Metodología DBA en constante evolución Unified Process Agile Development Free Software
  • 22.
    [email_address] + 1 (312) 224.8358 +58 (212) 761.9206 www.dbaccess.com Si deseas conectarte con nuestra organización, por favor contáctanos hoy a través de: ¡Gente como tú! ¡Gente DBA! www.dbaccess.net
  • 23.
    Gracias por suatención ¿Preguntas?