• No se han encontrado resultados

4 Taller Programación por pares y TDD Sep 26 2014 VF+

N/A
N/A
Protected

Academic year: 2020

Share "4 Taller Programación por pares y TDD Sep 26 2014 VF+"

Copied!
44
0
0

Texto completo

(1)

CI3715 Sep. – Dic. 2014

(2)

Agenda

Programación

Programación por pares

Programación dirigida por casos de prueba (TDD)

Práctica

(3)

Programación por pares

Programación por pares (45 min)

Introducción y descripción breve del concepto (10 min)

Recomendaciones (10 min)

Mostrar video de la sesión buena.

Notar las cosas que se hicieron bien.

Anti-valores (10 min)

Mostrar video de la sesión de antivalores.

Notar los antivalores que se mostraron en el video.

Discusión con los estudiantes de sus dudas y posibles

(4)

A simple vista, la programación en parejas es un concepto muy simple. Dos programadores trabajan juntos en un equipo en la misma tarea.

PERO

Programación por pares

(5)

Programación por pares

Si fuera tan fácil y funciona, eso sería todo lo que hay que decir.

Hay, sin embargo, las personas y personalidades involucradas…

(6)

Conductor

Navegante Siguiente línea de código,

sintaxis, API, clase bajo Python

estamos en la dirección correcta, los requisitos, las alternativas, siguiente casos de prueba, el impacto .

Puesto de la pareja

" ¿Eh?

Programación por pares es un estilo de programación en la que dos programadores trabajan codo con codo en equipo , colaborando continuamente en el mismo diseño , algoritmo , código o prueba.

Programación por pares

(7)

También es muy importante cambiar los roles periódicamente entre el conductor y el navegante

Programación por pares

Cambio de roles

(8)

Programación por pares

(9)

... O no emparejar, esta es la pregunta

La confianza y trabajo en equipo Tiempo

Moral

Transferencia del Conocimiento

Calidad

La mejora del aprendizaje

(10)

kryptonita.

Programación por pares

(11)

Los siete mitos de la programación en parejas

Programación por pares

Mito 1:

La carga de trabajo será doble, con dos haciendo el trabajo que uno puede

hacer.

Mito 2:

Nunca volveré a trabajar solo. Yo no podría soportarlo!

Mito 3:

Va a funcionar bien sólo con el socio adecuado

.

Mito 4

: La programación en parejas es bueno para la formación. Pero, una vez

que sabes lo que estás haciendo, es una pérdida de tiempo

Mito 5:

Nunca voy a conseguir el crédito por hacer cualquier cosa. Voy a tener

que compartir todo el reconocimiento con mi pareja

Mito 6:

El navegador sólo encuentra errores de sintaxis. Qué aburrido es eso! Los

compiladores pueden hacer mejor eso que los humanos.

Mito 7:

Las únicas veces que he hecho bien algún trabajo interesante, es cuando

estoy solo. Ahora con esto de PP, nunca voy a hacer nada! La

(12)

Sesión normal de programación en parejas

Programación por pares

(13)

Sesión normal de programación en parejas

Programación por pares

(14)

¿Cómo ayuda?

Programación por pares

Revisión continua.

Menos defectos, estos se

detectan a tiempo

Mejo Calidad del Diseño

Mejor Solución de Problemas

Más económico

La presión de pareja asegura la

entrega oportuna

Rápido método práctico para el

aprendizaje

Mejor inducción de nuevos

miembros del equipo

Ahorra esfuerzo de

documentación Intra-Equipo

Menos distracción conduce a

una mayor productividad

Mejora de la satisfacción

Progreso sostenible: Ayuda a

reducir la velocidad y pensar

Mejor Trabajo en Equipo y

Comunicación

Gestión de proyectos:

(15)

Más económico

(16)

Más económico

(17)

Anti patrón de programación en parejas

Programación por pares

(18)

Programación por pares

(19)

Programación por pares

El emparejamiento es delicado - Cosas a tener en cuenta ...

Parejas sin rotación

Sólo una persona conduce

Par Distraído

Emparejamiento selectivo más cerca de una

salida

(20)

Programación por pares

Puntos de resistencia - Cosas a tener en cuenta …

Dificultad para convencer a las partes interesadas para

que dos personas trabajen en una misma tarea

Todo el mundo se establece en una "zona de confort"

El emparejamiento podría alterarlo

Sentido de dueño del código

Las personas que no se preocupan

Los desarrolladores no participan en Estimación y

Planificación

(21)

Programación por pares

(22)

Agenda

Programación

Programación por pares

Programación dirigida por casos de prueba (TDD)

Práctica

(23)

Pruebe antes con PyUnit

Añadir el esqueleto de la clase y métodos (sin

contenido)

Retrabajar

Agregar caso de prueba

Ejecutar la prueba

(24)

Agenda

Programación

Programación por pares

Programación dirigida por casos de prueba (TDD)

Práctica

(25)

25

(26)

26

Añadir el esqueleto de la clase y métodos (sin

(27)

27

(28)
(29)

29

(30)

30

(31)
(32)

32

(33)
(34)

34

(35)

35

TDD en la practica…

 Requerimiento: desarrollar una función que toma dos argumentos y los suma con TDD:

entero + entero,string + string  lista + lista

 entero + string; convierte el entero a una cadena antes de concatenación

 string o un entero +lista, añade el enero a la lista (independientemente de si es el primero o segundo argumento).

Crear un proyecto nuevo en PyDev: Proyecto-Taller3

Añadir un modulo nuevo denominado: mdlmytdd

 Modificamos la clase Test:

class clsTestSuma (unittest.TestCase):

Añadir el método testSumaEntero:

def testSumaEntero(self): pass

Probar (Ctrl+F11)

 Modificar el método testSumaEntero:

def testSumaEntero(self):

self.assertEqual(7, suma(3,4), “3+4 debe ser 7”)

(36)

36

PyUnit en la practica…

Crear un nuevo modulo y una nueva función (Ctrl+1 y click con botón derecho

del mouse sobre mdlsumar) :

from mdlsumar import sumar

Codificar la función o método sumar:

def sumar(x, y) pass

Probar (Ctrl+F11)

Modificar la función sumar:

def sumar(x, y) return x+y

Añadir el método testSumaString: def testSumaString(self):

pass

Probar (Ctrl+F11)

Modificar el método testSumaString :

def testSumaString(self):

self.assertEqual(‘34’, Sumar(´3’,’4’), “3+4 debe ser 34”)

(37)

37

PyUnit en la practica…

Añadir el método testSumaListas:

def

testSumaListas(self):

pass

Probar (Ctrl+F11)

Modificar el método testSumaListas:

def

clsTestSumaListas

(self):

self.assertEqual([1,2,3,4], suma([1,2],[3,4]), "[1,2] + [3,4]

debe es [1,2,3,4]")

Probar (Ctrl+F11)

Añadir el método testSumaNumeroString:

def

testSumaNumeroString(self):

pass

(38)

38

PyUnit en la practica…

Añadir el método testSumaListas:

def

testSumaListas(self):

pass

Probar (Ctrl+F11)

Modificar el método testSumaListas :

def

clsTestSumaListas

(self):

self.assertEqual([1,2,3,4], suma([1,2],[3,4]), "[1,2] + [3,4]

debe es [1,2,3,4]")

Probar (Ctrl+F11)

Añadir el método testSumaNumeroString:

def

testSumaNumeroString(self):

pass

(39)

39

PyUnit en la practica…

Modificar el método testSumaNumeroString:

def testSumaNumeroString (self):

self.assertEqual('1two', suma(1,'two'), "1 + two debe ser 1two")

Probar (Ctrl+F11)

EL TEST FALLA

Modificar la función o método suma del modulo mdlsumar:

import numbers

def suma(x, y):

if isinstance(x, list) and not isinstance(y, list): return x + [y]

elif isinstance(y, list) and not isinstance(x, list): return y + [x]

elif isinstance(x, numbers.Number) and isinstance(y, str): return str(x)+y

elif isinstance(x, str) and isinstance(y, numbers.Number): return x+str(y)

return x+y

(40)

40

PyUnit en la practica…

Añadir el método testSumaNumeroListas:

def

testSumaNumeroListas

(self):

pass

Probar (Ctrl+F11)

Modificar el método testSumaNumeroListas:

def

clsTestNumeroListas

(self):

self.assertEqual([1,2,3,4], suma(4,[1,2,3]), "4 + [1,2,3]

debe ser [1,2,3,4]")

(41)

Agenda

Programación

Programación por pares

Programación dirigida por casos de prueba (TDD)

Práctica

(42)

Agenda

Programación

Programación por pares

Programación dirigida por casos de prueba (TDD)

Práctica

(43)

Quiz

Desarrolle en PyDev una función que evalúe la siguiente expresión

y retorne su valor numérico con seis cifras decimales de precisión:

e

x

* ln x + “1” * x + π

Probarla con x = 0 y x = 1.

Envié su respuesta en dos archivos

modcarnet.py

y

(44)

Referencias

Documento similar

Se dice que la Administración no está obligada a seguir sus pre- cedentes y puede, por tanto, conculcar legítimamente los principios de igualdad, seguridad jurídica y buena fe,

La metodología de investigación empleada fue del tipo experimental. población en proceso de evaluación judicial). Los sujetos de la muestra en evaluación de custodias

cv.wait espera hasta que reciba una notifiación, entonces hace lock con el mutex y pregunta por la condición (lambda).. Variables

En este capítulo se introduce un algoritmo genético híbrido para resolver el problema de la programación de tareas en una y múltiples máquinas, en donde el algoritmo genético trabaja

En el marco de la programación prevista por la Concejalía de Cultura de Torrelodones para el mes de diciembre se desarollará un variado programa de actividades en el

Somos un pequeño gran equipo, donde trabajan codo con codo también con nosotros Roberto como economista, Marta como administradora concur- sal, Enma como procuradora, Fran

• En personas con un diagnóstico de esquizofrenia que habían presentado complicaciones obstétricas relacionadas con algún tipo de complicación durante la gestación, presentaban

En el Espacio Multiusos “Garnacha Fórum”, Concentra- ción de Peñas para acompañar a las reinas en charanga hasta la plaza de toros.. (Se prohíbe terminantemente a los