xp y entorno de desarrollo Ágil

Post on 15-Apr-2017

155 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

David de Francisco MarcosMsc, MBA, PMP y CSM

XP y Entornos de Desarrollo Ágil

Máster en InformáticaUniversidad de Valladolid2015-2016

david.de.fco@gmail.comwww.linkedin.com/in/daviddefcohttp://es.slideshare.net/daviddefco

Notas Rápidas sobre XP

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

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

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

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

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

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?

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?

Entornos de Desarrollo

Ejemplo Entorno de Desarrollo

Servidor CI

Métricas de Calidad (Sonar)

top related