23
Proyecto de Investigación Desarrollo rápido de software libre de alta calidad Ingeniería de software asistida por computadora enfocada en tareas para agilizar el ciclo de vida de las aplicaciones mediante mejora continua disciplinada a nivel personal Mariano Reingart [email protected] Trabajo Final del Máster en Software Libre Universidad Abierta de Cataluña

Desarrollo rapido de software libre de alta calidad UOC 2015 tesis maestria

Embed Size (px)

Citation preview

Proyecto de Investigación

Desarrollo rápido de software libre de alta calidadIngeniería de software asistida por computadora

enfocada en tareaspara

agilizar el ciclo de vida de las aplicaciones mediante

mejora continua disciplinada a nivel personal

Mariano [email protected]

Trabajo Final del Máster en Software LibreUniversidad Abierta de Cataluña

Trabajo Previo: Tesis de GradoPlataforma Python para el Desarrollo Rápido de Aplicaciones

bajo un Proceso de Software Personal

● Universidad de Morón - Licenciatura de Sistemas● Trabajo de Diploma (Tesis) ● Iniciada en 2006: Plan de tesis presentado en Dic 2006 ● Defensa Dic 2011: http://t.co/SsMfYDGJ ● Artículo (Junio 2012) 41° JAIIO - EST

ISSN: 1850-2946 - pp 344 - 367

IntroducciónDesarrollo rápido de software libre de alta calidad:

Implementar un marco de trabajo teórico/práctico para:

● creación y mantenimiento ágil de software libre● orientado al desarrollo de aplicaciones empresariales centradas en datos

(ppalmente transaccionales, con bb.dd. relacionales, lenguaje de programación dinámico e interfaces web y visuales)

Incluye:● herramientas integradas para ingeniería asistida por computadora (I-CASE) ● bibliotecas de soporte y despliegue● aplicación de recolección de datos estadísticos para una validación cualitativa y cuantitativa.

IntroducciónDesarrollo rápido de software libre de alta calidad:

PSP-BOK (Personal Software Process – Body of Knowledge)Team Software Process del SEI

conjunto de prácticas disciplinadas de la ingeniería del software

Ley 25.922 de Promoción de la Industria del Software en Argentina

Elementos una certificación de calidad de software CMMI nivel 5

Se explorarán investigaciones modernas Mylyn (IDE Eclipse)

Agile ALM (Application Lifecycle Management)

Antecedentes RADDesarrollo rápido de software libre de alta calidad:

Visual Basic Clásico (5,6)Visual Fox Pro

discontinuados

Conversor EBNF(migración)

Notación Extendida Backus-Naurestandarizada según ISO / IEC 14977

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1. Modelo de Producción del Software Libre

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.1. Fomento y motivación de los desarrolladores

● ¿superador “homo œconomicus”? ● recompensas extrínsecas: reputación y reconocimiento pares, solución

necesidades propias -scratching an itch-, aprendizaje/mejoramiento siklls● favorece la libre revelación de innovaciones● motivaciones intrínsecas: diversión y autodeterminación● evita “tragedia de los comunes”● elaborado sistema tabúes y costumbres

(normas “esotéricas”, disputas de ego) → menor tolerancia a novatos y principiantes

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.2. Crecimiento orgánico: modularización y gobernanza

● atracción de programadores altamente capacitados y motivados● calidad del producto final, rapidez de desarrollo y bajos costos● “catedral vs. bazar” (descentralización de decisiones ex-ante, diseño

concurrente, integración de usuarios, auto-selección según habilidades)● proceso desarrollo paralelo larga escala vs “proceso producción fabril”● aprovecha la inteligencia de la comunidad

→ ritmo determinado por el más productivo

Pero...

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.2. Crecimiento orgánico: modularización y gobernanza

La mayoría de los proyectos cuentan con pocos desarrolladores y el contacto entre comunidades suele ser bajo

→ “cueva” vs “comunidad” (“red plana de pares interactuando”)

División del trabajo entre contribuidores heterogéneos:núcleo de desarrolladores, desarrolladores ocasionales y usuarios

La existencia de barreras depende de:● la facilidad de la programación y modificación de los módulos● el grado de independencia entre los módulos● la libertad de elección del lenguaje de programación● la posibilidad de “conectar” el módulo a la arquitectura

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.2. Crecimiento orgánico: modularización y gobernanza

“dictadura benevolente” o “comité de votación”imagen anárquica del FOSS : esencial el liderazgo y autoridad

(reputación, lealtad e identificación → coordinación en un contexto de colaboración voluntaria e impedir bifurcaciones)

“lugartenientes” (modularización)“solo” projects vs. jerarquía “dueños de módulos” o “mantenedores” balancear anarquía con control: ¿cuánta estructura sin desencantar?motivación fundamental: ver rápidamente los resultados del trabajo

burocracia excesiva vs relax“integración big bang” / versiones inestables

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.2. Crecimiento orgánico: modularización y gobernanza

Por ello, la solución propuesta en esta investigación propone:

● Bibliotecas livianas y marcos de trabajo concretos y concisos (e incrementales)● Desarrollo y mantenimiento de aplicaciones modulares con aspectos bien separados● Enfocado a nivel de programadores individuales (basado en el PSP)

para:

● Favorecer la concurrencia y viabilidad aún en grupos reducidos; ● Visibilizando el trabajo● Incluyendo mecanismos de control y planificación apropiados ● (por ej., apoyado en herramientas visuales de diseño y seguimiento).

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.3. Alternativa a la disyuntiva entre “construir” o “comprar”

complejidad creciente del software → la mayor parte del costos → pruebas, depuración y mantenimiento (diseño y codificación).

El software empaquetado parece haber alcanzado límites significativos (30% en inversión de software), y las empresas propietarias no han podido cumplir adecuadamente las necesidades

de una porción sustancial del mercado.

modelo de coexistencia alternativomodelo de innovación privada-colectiva

modelos de “producción entre pares basada en bienes comunes”prosumidores: cada usuario potencial desarrollador / depurador

Estado del ArteDesarrollo rápido de software libre de alta calidad:

1.4. Posibilidades de prototipado rápido de calidad (no descartables)

La codificación (primera fase) es la actividad sine qua non.muchos colaboradores temen enviar su código a revisión, pero también es un incentivo real para mejorar la calidad

Paradoja: cuanto más simple es el código, mas revisiones tendrá generalmente será difícil obtener revisiones del diseño.

Ley de Linus: “Dado un número suficientemente elevado de ojos, todos los errores se convierten en obvios”

goto fail de Apple y Heartbleed …

Estado del ArteDesarrollo rápido de software libre de alta calidad:

2. Proceso de Software Personal (PSP)

2.1. Recolección automática de métricas (evitar cambio de contexto)

sensores → reconocimiento facial?

2.2. Dificultades en la fase de Diseño

PSP design tool → pseudocódigo (python)

2.3. Reconciliación procesos disciplinados y metodologías ágiles

SCRUM-PSP

Estado del ArteDesarrollo rápido de software libre de alta calidad:

3. Desarrollo Rápido de Aplicaciones (RAD)

3.1. Herramientas de desarrollo integrada (IDE)

Estudio desarrolladores Java que utilizan la IDE Eclipse → MylynEnfoques sociales a la SWE, detectando “patrones de tareas”Incorporación de herramientas de asistencia al desarrollador

Estudios empíricos sobre patrones de edición

4. Mantenimiento y evolución del Software

4.1. Migración de Aplicaciones Legadas (VB) TXL, EBNF

4.2. Seguimiento de líneas de código fuente (LHDiff)

MetodologíaDesarrollo rápido de software libre de alta calidad:

Action Research

http://cadres.pepperdine.edu/ccar/define.html

“Experimentos”Desarrollo rápido de software libre de alta calidad:

AvancesDesarrollo rápido de software libre de alta calidad:

Resultados (software)Desarrollo rápido de software libre de alta calidad:

Resultados (prueba)Desarrollo rápido de software libre de alta calidad:

Project Plan.Time

ActualTime

Int.Time CPI Plan.

LOCActualLOC Defects Fix Time

Issue #1 8.58 h 1.93 h 8.58 h 4.44 16 15.30 hIssue #2 4 h 4.50 h 4 h 0.89 6 43.23 m

DiscusiónDesarrollo rápido de software libre de alta calidad:

mejorar las técnicas y herramientasproponiendo un marco teórico: bases sólidas → superar

las deficiencias conocidas RAD, carencias PSP y desafíos FOSS

buenas prácticas de la ingeniería de software (PSP)entorno de desarrollo totalmente integrado aplicando

interfaces enfocadas en tareas

migración de código legado (lenguaje propietario Visual Basic)

ConclusiónDesarrollo rápido de software libre de alta calidad:

Logros: Implementar un marco de trabajo teórico/prácticopara creación y mantenimiento ágil de software libreorientado desarrollo de aplicaciones empresariales centradas en datos

Relevancia: Superar obsolescencia: PythonCard, WinPDB o Boa ConstructorAportes originales: seguimiento líneas UUID + WebCam control tiempos

Limitaciones: datos empíricos acotados / participación comunidades software libre

Futuras líneas de investigación: migración VB (EBNF), extender Action Researchajustes técnicos

Demostración...Direcciones Útiles: ● Sitio del Proyecto: rad2py.googlecode.com ● Mirror: https://www.github.com/reingart/rad2py ● Python: www.python.org Argentina: www.python.org.ar

Licencias: GNU GPL● rad2py: GPLv3.0+● gui2py / web2py: LGPLv3+

Esta presentación se publica bajo licencia CC-BY-SA 2.5 AR2015 Copyright Mariano Reingart [email protected]