desarrollo rapido de software libre de alta calidad uoc 2015 tesis maestria
Post on 12-Aug-2015
85 Views
Preview:
TRANSCRIPT
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 Reingartreingart@uoc.edu
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
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 reinagart@gmail.com
top related