xp y entorno de desarrollo Ágil

14
David de Francisco Marcos Msc, MBA, PMP y CSM XP y Entornos de Desarrollo Ágil Máster en Informática Universidad de Valladolid 2015-2016 [email protected] www.linkedin.com/in/ daviddefco http://es.slideshare.net/

Upload: david-de-francisco-marcos

Post on 15-Apr-2017

153 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: XP y Entorno de Desarrollo Ágil

David de Francisco MarcosMsc, MBA, PMP y CSM

XP y Entornos de Desarrollo Ágil

Máster en InformáticaUniversidad de Valladolid2015-2016

[email protected]/in/daviddefcohttp://es.slideshare.net/daviddefco

Page 2: XP y Entorno de Desarrollo Ágil

Notas Rápidas sobre XP

Page 3: XP y Entorno de Desarrollo Ágil

DesarrollarAnálisis IncrementalTests de ClienteTDDRefactorizaciónDiseño SimpleDesarrollo IncrementalSpikesOptimizaciónTests Exploratorios

Prácticas XPPensarProgramación ParesTrabajo con EnergíaControles VisualesAnálisis Causa – EfectoRetrospectivas

ColaborarConfianzaSentarse JuntosCliente InvolucradoDaily MeetingsEstándares de CódigoDemos ContinuasInformar y Comunicar

PlanificarVisiónPlanificar EntregasJuegos de PlanificaciónGestión de RiesgosHistoriasBacklogs

EntregarDefinición de HechoNo BugsControl de VersionesBuild en 10 MinutosAutoría CompartidaDocumentación

Page 4: XP y Entorno de Desarrollo Ágil

DesarrollarAnálisis IncrementalTests de ClienteTDDRefactorizaciónDiseño SimpleDesarrollo IncrementalSpikesOptimizaciónTests Exploratorios

Prácticas XPPensarProgramación ParesTrabajo con EnergíaControles VisualesAnálisis Causa – EfectoRetrospectivas

ColaborarConfianzaSentarse JuntosCliente InvolucradoDaily MeetingsEstándares de CódigoDemos ContinuasInformar y Comunicar

PlanificarVisiónPlanificar EntregasJuegos de PlanificaciónGestión de RiesgosHistoriasBacklogs

EntregarDefinición de HechoNo BugsControl de VersionesBuild en 10 MinutosAutoría CompartidaDocumentación

Page 5: XP y Entorno de Desarrollo Ágil

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 resolver2)Categorizar las causas3)Detallar las causas4)Analizar causas principales5)Buscar correlaciones entre ellas

1

2

3

Page 6: XP y Entorno de Desarrollo Ágil

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:PruebaDesarrolloRefactorización

Reduce el efecto de errores y mejora el diseño del código

Behaviour Driven DevelopmentLleva TDD un paso más allá, al diseño guiado por dominio, involucrando a los BSE en los procesos de test / aceptación

Page 7: XP y Entorno de Desarrollo Ágil

Refactorización

Refactorizar es cambiar el código fuente sin alterar su funcionalidad.

BeneficiosMejora el diseño del softwareContribuye a detectar erroresFacilita la comprensión del SWAyuda a programar más rápido

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

Page 8: XP y Entorno de Desarrollo Ágil

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));}

}

¿Para qué sirve este código?

¿Es fácil de reutilizar?

¿Es fácil de mantener?

Page 9: XP y Entorno de Desarrollo Ágil

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);}

}

¿Se podría mejorar fácilmente?

Page 10: XP y Entorno de Desarrollo Ágil

Entornos de Desarrollo

Page 11: XP y Entorno de Desarrollo Ágil

Ejemplo Entorno de Desarrollo

Page 13: XP y Entorno de Desarrollo Ágil

Servidor CI

Page 14: XP y Entorno de Desarrollo Ágil

Métricas de Calidad (Sonar)