Elementos de Ingeniería de Software

Back.png Volver a TPI | LIDS

Cursada

Probablemente curses dos días por semana 3 horas cada día.

Vas a tener que rendir un exámen escrito y un trabajo práctico en grupo.

La matería por el momento no tiene página, el profesor te va enviando la información a leer por la lista.

Temas

  • Informática, Software e Ingeniería
  • Modelos de Proceso de Desarrollo de Sofware
  • Proyectos
  • Manejo de GIT
  • TDD
  • User Story
  • Estimaciones en las metodologías ágiles
  • Integración continua con Travis
  • Scrum
  • BDD o ATDD


Repo de ejemplos que usamos en clase

https://github.com/UNVQUI

Lecturas que podrían darte para analizar

Apunte sobre GIT

Archivo:Clase 5 - Control de versiones.pdf

Escueto Apunte sobre User Story

Archivo:Clase 7 user story - ingenieria.txt

Ejercicio

Medio:Ejercicio US - Parte1.jpg

Medio:Ejercicio US - Parte2.jpg

Resúmen sobre Estimaciones

La estimación también se itera y se realiza en varias veces. A los user story se le asignan puntos de acuerdo al nivel de dificultad. Se les dice Points story y son medidas relativas, no de acuerdo a la cantidad de horas que va a llevar implementar esa historia de usuario, sino a la comparación de la complejidad entre ellos.

La realidad es que en la primer iteración no se sabe cuanto se va a tardar, se va aprendiendo / descubriendo en cada iteración. Se debe trabajar en la incertidumbre, bajándola en cada iteración sin hilar fino en la cantidad de horas que se van a utilizar. No es una ciencia exacta.

Como la estimación se realiza en cada una de las iteraciones, esta tarea no debería demorar mucho. Si es una iteración de 10 días, me paso 2 días estimando, es un porcentaje muy alto.

Tipos de estimación

- Wideband Delphi (estimación por expertos)

- Planning poker (https://es.wikipedia.org/wiki/Planning_poker)

- Corriente #NoEstimates

Resúmen sobre BDD / ATDD

TDD

Ventajas

  • El costo de probar es alto, es propenso a fallas. El tdd evita todo esto.
  • Baja de costos al momento de ejecutar las pruebas.
  • Propone hacer un test pero a partir de la lógica de negocio.
  • Con el tdd describimos comportamiento en base a mensajes.
  • Confianza a la hora de reescribir código.
  • Nos da la documentación a raíz de los ejemplos.

Desventajas

  • Se pierde la visión en conjunto
  • No se pone el foco en la interacción con el usuario
  • Se dificulta la mantenibilidad del test

BDD

  • No se hace en base a test de unidad sino a prueba de aceptación del cliente. esto se hace en base a diseño de pruebas de aceptación
  • Se cambia la terminología estando mas cerca del usuario
  • Se basa en los user story

Criterios de aceptación dado que el usuario hace tal cosa obtengo tal otra

Test de aceptación del usuario

Given ...
when ...
then ...

Ventajas

  • mejora las especificaciones (contrato especifico entre el usuario y nosotros)
  • La transición entre la especificación a la prueba es trivial
  • Mejora la comunicación entre distintos perfiles
  • Mejora la visibilidad de la satisfacción de requerimientos
  • Disminuir el gold-plating. Este es un fenómeno que se da cuando los usuario usan tdd y se ponen a codear cosas que no sirven (por ej fechas)
  • La distancia que hay entre la terminología del programador y el cliente se reducen
  • Facilita el refactoring y los cambios de requerimiento
  • Se focaliza en la comunicación y no en las pruebas
  • Los test se basan en el lenguaje del cliente

CUCUMBER

wflow del atdd

  • me siento con el usuario y escribo un criterio de aceptación
  • me siento a armar las expresiones regulares

Examenes

1er Cuat 2018

1 ¿Qué es la ingeniería de software?, ¿Qué la diferencia del resto de las ingenierías?

2 ¿Qué es el Visual Story Mapping?, ¿Para qué sirve?

3 Explique qué significa la parte del manifiesto ágil cuando menciona la relación con el cliente y la negociación de contratos

4 En una estimación agil estilo “Planning Poker” por qué se suele utilizar la serie de Fibonacci para los story points

5 Diga si los siguientes user stories están bien formulados y en caso de no estarlo, porque:

- El proveedor tiene que poder modificar su domicilio

- Como vendedor quiero poder generar facturas, editarlas, imprimirlas y buscarlas por fecha, num de proveedor y cuit

- Los errores del sistema deben poder ejecutar la aplicación en windows y en Mac os

- Como cajero quiero poder ver el subtotal de la compra a medida que voy cargando los ítems comprados

- El sistema tiene que poder manejar el protocolo Edi, para intercambiar información con el anses

- Como gerente de sucursal quiero obtener reportes de facturación mensual

6 Explique la diferencia entre tdd y bdd y como se relacionan

7 Explique en sus palabras que es calidad de software y la diferencia entre validación y verificación

8 nombre dos características ideales que debería tener todo commit