Xp y Entornos de Desarrollo Software

Post on 29-Jul-2015

36 views 2 download

Tags:

transcript

David de Francisco Marcos Msc, MBA, PMP y CSM

XP y Entornos

de Desarrollo

Ágil

Máster en Informática

Universidad de Valladolid

2014-2015 Sesión 3

david.de.fco@gmail.com

www.linkedin.com/in/daviddefco

Notas Rápidas sobre XP

Desarrollar

Análisis Incremental

Tests de Cliente

TDD

Refactorización

Diseño Simple

Desarrollo Incremental

Spikes

Optimización

Tests Exploratorios

Prácticas XP

Pensar

Programación Pares

Trabajo con Energía

Controles Visuales

Análisis Causa – Efecto

Retrospectivas

Colaborar

Confianza

Sentarse Juntos

Cliente Involucrado

Daily Meetings

Estándares de Código

Demos Continuas

Informar y Comunicar

Planificar

Visión

Planificar Entregas

Juegos de Planificación

Gestión de Riesgos

Historias

Backlogs

Entregar

Definición de Hecho

No Bugs

Control de Versiones

Build en 10 Minutos

Autoría Compartida

Documentación

Desarrollar

Análisis Incremental

Tests de Cliente

TDD

Refactorización

Diseño Simple

Desarrollo Incremental

Spikes

Optimización

Tests Exploratorios

Prácticas XP

Pensar

Programación Pares

Trabajo con Energía

Controles Visuales

Análisis Causa – Efecto

Retrospectivas

Colaborar

Confianza

Sentarse Juntos

Cliente Involucrado

Daily Meetings

Estándares de Código

Demos Continuas

Informar y Comunicar

Planificar

Visión

Planificar Entregas

Juegos de Planificación

Gestión de Riesgos

Historias

Backlogs

Entregar

Definición de Hecho

No Bugs

Control de Versiones

Build en 10 Minutos

Autoría Compartida

Documentación

Análisis Causa - Efecto

5 Whys

Para llegar al fondo de algo

continuar preguntando por qué

hasta que llegamos a un motivo

de peso

Diagrama de Raspa de Pez

1) Dibujar el problema a resolver

2) Categorizar las causas

3) Detallar las causas

4) Analizar causas principales

5) Buscar correlaciones entre ellas

Ejemplo Cucumber

Característica: Proceso de login de mi tienda online

Como cliente de la tienda online

Quiero poder autenticarme en la tienda

De forma que pueda acceder al contenido de la aplicación y mi autenticación quede registrada a lo largo de toda la sesión

Antecedentes:

Dado que me encuentro en la vista de autenticacion de la Web

Y que no estoy autenticado dentro de la aplicación

Escenario: proceso de autenticación

Esquema del escenario: autenticación

Cuando relleno el campo de identificador de usuario con el valor <username>

Y relleno el campo de password con el valor <password>

Entonces al pulsar en el botón de acción debería estar en la pagina <page>

Ejemplos:

| username | password | page | | user01 | claveerronea | LoginPage |

| inexistente | user01pass | LoginPage |

| super | user01pass | RootPage |

TDD y BDD

TDD: Ciclo rápido de:

Prueba

Desarrollo

Refactorización

Reduce el efecto de errores y

mejora el diseño del código

Behaviour Driven Development

Lleva TDD un paso más allá, al

diseño guiado por dominio,

involucrando a los BSE en los

procesos de test / aceptación

Refactorización

Refactorizar es cambiar el

código fuente sin alterar su

funcionalidad.

Beneficios

Mejora el diseño del software

Contribuye a detectar errores

Facilita la comprensión del SW

Ayuda a programar más rápido

Imagen obtenida de www.flickr.com/photos/danisarda

Ejemplo Refactorización

public class CalcSal { private static final int meses = 12; private static final double ss = 6.3; private static final double imp = 14; public static double calcSalNet(double s) { if (s < 0) throw new IllegalArgumentException(); double sMens = s/meses; return sMens - (s/meses * (ss/100)) - (sMens * (imp/100)); } }

Ejemplo Refactorización

public class Salario { private static final int CUOTAS_ANUALES_DE_SEGURIDAD_SOCIAL = 12; private static final int NUMERO_DE_PAGAS_ANUALES = 12; private static final double PORCENTAJE_RETENCION_SEGURIDAD_SOCIAL = 6.3; private static final double PORCENTAJE_RETENCION_IRPF = 14; public static double calcularSalarioMensualNeto(double salarioAnualBruto) { validarCifraDeSalario(salarioAnualBruto); double salarioMensualBruto = salarioAnualBruto / NUMERO_DE_PAGAS_ANUALES; return salarioMensualBruto - getRetencionesMensualesSeguridadSocial(salarioAnualBruto) - getRetencionesMensualesIrpf(salarioMensualBruto); } private static void validarCifraDeSalario(double salarioParaValidar) { if (salarioParaValidar < 0) throw new IllegalArgumentException( "El valor de un salario no puede ser menor que 0" ); } private static double getRetencionesMensualesSeguridadSocial(double salarioAnualBruto) { double decimalRetencionSeguridadSocial = PORCENTAJE_RETENCION_SEGURIDAD_SOCIAL / 100; return (salarioAnualBruto / CUOTAS_ANUALES_DE_SEGURIDAD_SOCIAL) * decimalRetencionSeguridadSocial; } private static double getRetencionesMensualesIrpf(double salarioMensualBruto) { double decimalRetencionIrpf = PORCENTAJE_RETENCION_IRPF / 100; return (salarioMensualBruto * decimalRetencionIrpf); } }

Entornos de Desarrollo

Ejemplo Entorno de Desarrollo

Servidor CI

Métricas de Calidad (Sonar)

Próximos Pasos:

1) Encuesta: https://es.surveymonkey.com/s/WJSJVNS

2) Bibliografía y PPTs en la plataforma y Slideshare

3) Cualquier duda / comentario es bienvenido

David de Francisco Marcos Msc, MBA, PMP y CSM

david.de.fco@gmail.com

www.linkedin.com/in/daviddefco

Gracias por la Atención