Date post: | 22-Jul-2015 |
Category: |
Technology |
Upload: | guest02514d |
View: | 209 times |
Download: | 0 times |
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
Comparativo de Densidad de Errores en fase de Pruebas
0 100 200 300
Proyecto C
Proyecto D
Proyecto E
Apache
/layout
/js
/rdf
/netwerk
/editor
/intl
/xpinstall
Pro
ye
cto
Error/KLOC
Error / KLOC Cambiada
Error/ KLOC Agregada
Módulos de Mozilla
Miles de lineas de códigoKLOC
Leyenda
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
Comparativo de Densidad de Errores en fase de Pruebas y Release
0 100 200 300
Apache
Project A
Project C
Project D
Project E
Pro
yect
o
Error/KLOC
Errores en Pruebas / KLOCCambiado
Errores en Pruebas / KLOCAgregado
Errores en Release / KLOCCambiado
Errores en Release / KLOCAgregado
Calidad en el Software Libre
Calidad en el Software Libre
Tomado de Mockus et al, ACM Transactions on Software Engineering and Methodology, Vol. 11, No. 3, July 2002
140 días90%
42 días75%
1 día50%
Tiempo de resolución
% de problemas
Tiempo de resolución en días de problemas en Apache Web Server
É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
0,00%
10,00%20,00%
30,00%
40,00%
50,00%60,00%
70,00%
80,00%
Ene-05
Jul-0
5
Ene-06
Jul-0
6
Ene-07
Jul-0
7
Ene-08
IE7
IE6
IE5
Firefox
Moz
Otros
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?
1. 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
2. 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
Factores de Éxito en el Desarrollo de Software Libre
1. 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
independiente2. 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.
1. 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”.2. 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
1. 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.2. 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
1. Liberar rápido y frecuentemente– Release early, release often.– Los errores son encontrados y notificados
rápidamente.– La comunidad se mantiene activa.
2. 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 tradicionalesdesafiados
• 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 tradicionalesdesafiados
• 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 tradicionalesdesafiados
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!
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
+ 1 (312) 224.8358+58 (212) 761.9206www.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