Sunteți pe pagina 1din 41

Subsecretaría de Servicios Tecnológicos y Productivos

Módulo de Desarrollo de Software

El camino al éxito
está siempre en
construcción

Analistas del Conocimiento


Dimensión Programador

Objetivos de Aprendizaje del Módulo de Desarrollo


Capacidades Profesionales a las que contribuye el
Software
Módulo de Desarrollo de Software • Identificar las disciplinas que conforman la Ingeniería de Software y las técnicas
herramientas relacionadas.
• Conocer los tipos de procesos y los modelos de procesos más adecuados para e
desarrollo de software en cada situación particular.
• Integrar un equipo en el contexto de un Proyecto de Desarrollo •de
Introducir los enfoques de gestión de proyectos tradicional y ágil.
Software. • Conocer los principales métodos de desarrollo y gestión ágil.
• Valorar la relación existente entre el Proceso, el Proyecto y el Producto de Softw
• Dimensionar su trabajo en el contexto del proyecto de desarrolloconstruir
de software. • Reconocer la importancia de la Gestión de Configuración de Software.
• Conocer técnicas y herramientas para realizar pruebas y revisiones técnicas al
software.
• Integrar por medio de casos prácticos concretos los conocimientos adquiridos e
parte teórica, empleando así las técnicas y herramientas de aplicación de la ing
de software.
6

Cuando pensamos en Software… ¿en qué pensamos? Definición de Software


Software, en general, es un set de
Conjunto de: programas y la documentación
que acompaña.
• Programas  Existen tres tipos básicos de software.
Estos son:
• Procedimientos
 System software
• Reglas  Utilitarios
 Software de Aplicación
• Documentación

• Datos

7 8

¿Y dónde encontramos software? Conclusión….

Saber programar NO es suficiente!!!!


Ingeniería de Software: disciplinas principales Módulo de Desarrollo de Software en Contexto

Controlar
Diseñar Configur
a-ción

Estimar Planificar

Disciplinas de Soporte
Disciplinas Técnicas

Disciplinas de Gestión
• Requerimient • Planificación • Gestión de Recolecta
os de Proyecto Configuración r
Requeri-
• Análisis y • Monitoreo y de Software mientos
Desarroll
Diseño Control de • Aseguramient ar Program

• Construcción Proyectos o de Calidad Software


Revisar
Controlar
ar

• Prueba • Métricas Diseñar


Técnica- Configur
Probar
mente
• Despliegue Monitore a-ción
ar y
Controlar

Estimar Planificar
Recolecta
r
Requeri-
mientos
Desarroll
Program
12

ar
Software ar
Revisar Definición de un Proceso de Software
Desarrollar Software
Técnica-
Proceso: La secuencia de
pasos ejecutados para un
Probar
mente
propósito dado (IEEE)

Monitore
Proceso de Software: Un
conjunto de actividades,
métodos, prácticas,ar
y y B
transformaciones que la A D
gente usa paraControlar
desarrollar C Procedimientos y métodos
o mantener software y sus
productos asociados (Sw-
CMM)

Personas con
habilidades,
entrenamiento y PROCESO
motivación
Herramientas y
Equipos
13 14

Definido (inspirados en las líneas de producción) Empírico

Asume que podemos  Asume procesos complicados


repetir el mismo proceso con variables cambiantes.
Cuando se repite el proceso,
una y otra vez,
se pueden llegar a obtener
indefinidamente, y resultados diferentes.
obtener los mismos  La administración y control
resultados. es a través de inspecciones
La administración y frecuentes y adaptaciones
control provienen de la  Son procesos que trabajan

predictibilidad del proceso bien con procesos creativos y


definido. complejos. (a que suena??)

15 16

Ciclos de Vida Clasificación de los Modelos de Proceso


Un ciclo de vida de software es un representación Ciclos de Vida
de un proceso. Grafica una descripción del  Hay tres tipos básicos de Ciclos
proceso desde una perspectiva particular de Vida
Los modelos especifican  Secuencial
 Las fases de proceso.  Iterativo/Incremental
 Ejemplo: requerimientos, especificación, diseño…  Recursivo (sólo se lo nombra, no
 El orden en el cual se llevan a cabo vamos a profundizar)
17 18

En los extremos…. 100% Secuencial Algunos Modelos de Proceso o Ciclos


 Build and Fix de vida
 Secuencial
 Cascada
 Cascada con Retroalimentación
RequerimientosArquitectura Desarrollo Test  Cascada con Subproyectos
 Modelo V
100% Iterativo  Espiral
 Modelo Evolucionario
 RAD ( Desarrollo Rápido de Aplicaciones)
 Incremental

Cascada Cascada con Subproyectos


Iterativo
Incremental

Reque
rimien
tos de
Negoc
io

Requerimientos de Usuario

Requerimientos
Requerimientos de Software Reque
rimien
tos de
“La parte más difícil de construir un Negoc
sistema de software es decidir io Dom
precisamente qué construir. Ninguna otra de
Requerimientos de Usuario Probl
parte del trabajo conceptual, es tan difícil
como establecer los requerimientos
técnicos detallados... Ninguna otra parte
del trabajo afecta tanto el sistema Requerimientos de Software
resultante si se hace incorrectamente.
Ninguna otra parte es tan difícil de
rectificar más adelante” Dominio
Fred Brooks - “No Silver Bullet - Essence and de la
Accidents of Software Engineering”. IEEE
Computer, Abril de 1987. Solución
25 26

Requerimientos Funcionales Requerimientos No Funcionales


Juegan un papel crucial en el diseño y
Relacionados con la descripción del desarrollo del sistema de información.
comportamiento fundamental de los
componentes del software. Pueden definirse como consideraciones
o restricciones asociadas a un servicio
Las funciones son especificadas en del sistema.
términos de entradas, procesos y salidas.
Suelen llamarse también
Una vista dinámica podría considerar requerimientos de calidad o no
aspectos como el control, el tiempo de comportamentales en contraste con los
comportamentales.
las funciones (de comienzo a fin) y su
comportamiento en situaciones
Pueden ser tan críticos con los
excepcionales. funcionales.

28

Dominios involucrados en el desarrollo de


Software
El problema de los
Requerimientos…
Problemas más comunes…
• Dificultad en el seguimiento de los cambios en los requerimientos.
• Dificultad en la especificación de los requerimientos.
• Errores en la detección de características esperadas para el software
• Mala organización.
• Los requerimientos no son siempre obvios y provienen de fuentes dife
• Los requerimientos no son siempre fáciles de expresar de manera clar
mediante palabras.
• Existen diferentes tipos de requerimientos a diferentes niveles de deta
• El número de requerimientos puede volverse inmanejable si no se con
• Existen varias partes interesadas y responsables, lo que significa que
requerimientos necesitan ser gestionados por grupos de personas de
cruzadas.
• Los requerimientos cambian

Un enfoque ágil para el tratamiento de los El cara-a-cara permite que fluya información
Requerimientos vocal, subvocal, gestual con realimentación rápida.2 personas
el pizarrón

Efectividad en la Comunicación
2 personas
en el teléfono

Video
2 personas
en el chat
Audiotaped
Papel

Más frío más cálido


Riqueza del Canal de Comunicación
Las tres “C” de una Historia de Usuario

Tarjeta
Conversaci
ón
Historias de Usuario
(User Stories) Confirmació
n

“….se las llama “historias” porque se supone que


Ud. cuenta una historia. Lo que se escribe en la
tarjeta no es importante, lo que Ud. habla, si!.
--- Jeff Patton, InfoQ,
GUI
Historia

Sintáxis recomendada Lógica


Historias que de Negpcio
entregan valor…
para escribir Historias de Usuario
Representa a
Historia 1 Historia 2
Como <nombre del rol>, quién necesita el
requerimiento
yo puedo <actividad> Base de Datos
GUI
de forma tal que <valor de Representa el
requerimiento del
negocio que recibo> sistema
Lógica de Negpcio

Base de Datos

Comunica por qué es


necesaria la actividad
Ejemplo: Historia de Usuario (User Ejemplo: Historia de Usuario complete par
Story)para un software de un GPS un software de un GPS
Como Conductor quiero • Probar buscar un destino en un
buscar un destino a partir de país y ciudad existentes, de dos
sus coordenadas para coordenadas existentes (pasa).
Como Conductor quiero buscar conocer el camino a recorrer
• Probar buscar un destino en un
país y ciudad existentes, de una
y así llegar destino
  deseado. 
un destino a partir de sus •
coordenada inexistente (falla).
Probar buscar un destino en un
Criterios de Aceptación: Las
coordenadas para conocer el coordenadas se representan con tres
país y ciudad existentes, de dos
coordenadas existentes sin indic
números que indican longitud y tres
camino a recorrer y así llegar números que indican latitud. Cada
número representa los grados, minutos

la orientación (falla).
Probar ingresar coordenadas de

destino deseado. y segundos respectivamente. Además


se debe indicar •
latitud y longitud válidas (pasa).
Probar ingresar coordenadas de
  la orientación (norte, sur, este, oeste). latitud y longitud inválidas (falla)

INVEST - Características de una Historia de Usuario Planificar Proyectos de Software


• Independientes
• Las Historias de Usuario deben ser independientes de forma tal que no se superpongan en
I funcionalidades y que puedan planificarse y desarrollarse en cualquier orden.
• Negociable
• Una buena Historia de Usuario es Negociable. No es un contrato explícito por el cual se debe entregar
N todo-o-nada. Cuando el
• Valuable mapa y
V • debe tener valor para el cliente y para el negocio del cliente.
el territorio no
• Estimable coinciden…
E • Debe poder asignarse un indicador de peso a esa historia de usuario. confía en el
• Small (Pequeña)
territorio
S • Su tamaño debe ser tal que puede terminarse y entregarse en el tiempo comprometido (iteración).

• Testeable (Verificable)

T • Poder demostrar que una historia fue implementada.


41 42

Proyecto: Características
¿Qué es un proyecto?
Es un esfuerzo temporal que se lleva a cabo para crear un • Temporal
producto, servicio o resultado único • Productos, Servicios o Resultados únicos
• Orientado a Objetivos
• Elaboración Gradual

43

¿Qué es el plan de proyecto? ¿Qué es un plan de proyecto?


 El plan de proyecto documenta:
Un plan es a  ¿Qué es lo que hacemos?
 ¿Cuándo lo hacemos?
un proyecto  ¿Cómo lo hacemos?
 ¿Quién lo va a hacer?
lo que una
hoja de ruta
a un viaje
44
46

Definición del Alcance Relación: Ciclo de Vida del Proyecto


 Alcance del Producto: y del Producto
 Son todas las características que pueden incluirse en
un producto o servicio.
 Alcance del Proyecto: Ciclo de Vida
 Es todo el trabajo y solo el trabajo que debe hacerse del Producto
Actualización
para entregar el producto o servicio con todas las Plan de
características y funciones especificadas. Negocio Producto Operacio
Idea

Ciclo de Vida Inicial


del Proyecto
Intermedia Final

47

La planificación en el contexto de los procesos de co


¿Por qué planificamos? definido
Definir objetivos para el proyecto, que deben ser claros y alcanzables
Definir alcance para el proyecto, que está relacionado con el alcance del producto o
servicio

Transmitir Decidir el proceso y el ciclo de vida que se utilizará.


información
Definir roles y responsabilidades para cada uno de los miembros del equipo.
Generar
confianza Estimar los recursos que serán requeridos.
Soportar la Implica
toma de Estimar tamaño, esfuerzo, tiempo y costo.
Reducir decisiones
incertidumbr Identificar y realizar un análisis de riesgos.
Reducir e
Realizar el cronograma para el proyecto.
Riesgos
Definir el presupuesto.

Determinar el mecanismo de monitoreo y control y las métricas que se utilizarán.


Crear planes para las actividades de soporte, tales como administración de configuración y
aseguramiento de calidad.
49 50

¿Porqué falla la planificación tradicional?


¿Qué hace a la planificación ágil?
Planificación por actividades no por características

Ley de Parkinson
La tardanza se trasmite en la programación Se
Foco en la distribuye
Actividades no independientes Plan
Alienta el
Fallas

planificació
Planificación por actividades no por características
Multitarea causa demoras adicionales
n más que
en el plan
plan
fácilmente
modificable
a lo largo
del
proyecto
Las características no se entregan por prioridad
Ignoramos la incertidumbre
Ley de Parkinson
Estimaciones se vuelven compromisos
La tardanza se trasmite en la programación
Actividades no independientes
Fallas

Multitarea causa demoras adicionales


Principios de Planificación Ágil que propones SCRUM Estimaciones
Las características no se entregan por prioridad
Entregar
algo que el
cliente
pueda usar,

Ignoramos la“PREDICTION
incertidumbre
en cada
Iteracion iteración. IS VERY
es cortas.
Trabajar como DIFFICULT, ESPECIALLY
equipo. ABOUT THE FUTURE.”
Estimaciones se vuelven compromisos
La predicción es muy
Entregamo
s valor de difícil, especialmente
negocio, no
piezas de acerca del futuro.
software.
—NIELS BOHR,
Inspeccion
ar y
adaptar
¿Qué es estimar? Estimaciones en el software:
• El proceso de encontrar una aproximación sobre una medida, lo consideraciones
que se ha de valorar con algún propósito. Por definición una estimación no es precisa
• El resultado del proceso es utilizable incluso si los datos de Estimar no es planear y planear no es
entrada estuvieran incompletos, inciertos, o inestables. estimar.
• Las estimaciones tienen asociado un valor de probabilidad, Las estimaciones son la base de los planes
dado que no se realizan estimaciones en universos de pero los planes no tienen que ser lo mismo
certeza. que lo estimado.
• Cuando una estimación resulta ser incorrecta, A mayor diferencia entre lo estimado y
se denomina “sobreestimar” si la estimación superó el resultado lo planeado mayor riesgo.
real y “subestimar” si la estimación fue un valor inferior respecto del
resultado real.
Las estimaciones no son compromisos.
54

¿De dónde vienen los errores de estimación?


 Tamaño Estimaciones de Softw
Información imprecisa acerca del software Procesos de Control D
a estimar
 Esfuerzo
Fuentes genéricas

Información imprecisa acerca de la


capacidad de la empresa que realizará el
proyecto.
 Calendario
Demasiado caos en el proyecto.  Costo

Imprecisión generada por el proceso de


55 estimación
57 58

Métodos de Estimación Juicio experto: Puro


Un experto estudia las
especificaciones y hace su
estimación.
Experienci Se basa fundamentalmente en los
a Experiencia conocimientos del experto.
Individual Organizacion Si desaparece el experto, la empresa
al deja de estimar

59 60

Juicio de Experto Juicio experto: Wideband Delphi


Es el enfoque de estimaciones mas Un grupo de personas son informadas y
utilizado en la practica. tratan de adivinar lo que costará el
desarrollo tanto en esfuerzo, como en
Acerca del 75% de organizaciones de duración.
software usan principalmente “juicio de Las estimaciones
experto"
en grupo suelen
Experto en qué? ser mejores que
las individuales.
61 62

Mecánica del Wideband Delphi


Analogía
Juan *
Consiste en comparar las especificaciones
Alicia
José
María
*
*
*
de un proyecto, con las de otros
Estimaciones
proyectos.
Tamaño: ¿mayor o menor?
Complejidad: ¿Más complejo de lo usual?
Usuarios: Si hay más usuarios habrán más
complicaciones.
Juan *
Alicia *
José *
María * Otros factores:
Estimaciones Sistema Operativo, entornos (la primera vez más).
Hardware, ¿Es la primera vez que se va a utilizar?
Personal del proyecto, ¿nuevos en la organización?

64

Incertidumbre en las Estimaciones

Estimaciones en
ambientes ágiles

Cono de Incertidumbre Cono de Incertidumbre en el


en contextos estables desarrollo de software
Estimar como
Estimación Relativa
equipo

¿Cómo se  Las personas no saben estimar


en términos absolutos
estima en los Estimaciones
no son
 Somos buenos comparando
compromisos
proyectos cosas ¿Dónde está el proyector en relación
a las dos paredes?

ágiles?  Comparar es generalmente ¿Cuán lejos en metros?

más rápido.
Foco en Certeza
no en Precisión  Se obtiene una mejor dinámica
Use tamaños
relativos versus
grupal
absolutos  Se emplea mejor el tiempo de
análisis de las stories

Tamaño Vs. Esfuerzo ¿Y qué hacemos con el tamaño!???


Las estimaciones basadas en
 Tamaño por números: 1 a 10
tiempo son más propensas a
errores debido a varias
 Talles de remeras: S, M, L, XL, XXL
razones.
 Serie 2n : 1, 2,4, 8, 16, 32, 64, etc.
 Habilidades
 Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
 Conocimiento etc.
 Asunciones
 Experiencia
 Familiaridad con los dominios de
aplicación/negocio

Tamaño NO ES esfuerzo
67
70

Estimación con Story Points (Puntos de Historia)

 Es una unidad de medida


específica (del equipo) de: Poker Planning
complejidad, riesgo y esfuerzo,
es lo que “el kilo” a la unidad de
nuestro sistema de medición de peso
UNA HERRAMIENTA
 Story point da idea del “peso” de DE ESTIMACIÓN
cada historia y decide cuán grande
(compleja) es.
 La complejidad de una historia
tiende a
Incrementarse exponencialmente.

Serie de Fibonacci (¿se acuerdan?)


Basado en consenso Conceptos del Poker Planning La secuencia empieza en 1 y cada numero subsecuente es la suma de lo
precedentes. (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144….)

Opinión Experta

Discusión Intensa

Dimensionamiento
relativo

Influencia de
estimaciones históricas
72
¿Cómo
Estimación como esfuerzo colaborativo basado en la experiencia “decodificar” las estimaciones?
 0: Quizás Ud. no tenga idea de su producto o funcio
Juan * este punto.
Alicia *
José *
 1/2, 1: funcionalidad pequeña (usualmente cosméti
María *  2-3: funcionalidad pequeña a mediana. Es lo que qu

Estimaciones
 5: Funcionalidad media. Es lo que queremos 
 8: Funcionalidad grande, de todas formas lo podemo
pero hay que preguntarse sino se puede partir o div
más pequeño. No es lo mejor, pero todavía 
Juan *
Alicia *  13: Alguien puede explicar por que no lo podemos d
José *
 20: Cuál es la razón de negocio que justifica semeja
María *
más fuerte aún, por qué no se puede dividir?.
Estimaciones  40: no hay forma de hacer esto en un sprint.
 100: confirmación de que está algo muy mal. Mejor
arrancar.

74

Consideraciones finales sobre las estimaciones Ág


Derivar duración en un proyecto ágil • No tiene sentido presentar estimaciones certeras al comienzo
proyecto ya que su probabilidad de ocurrencia es extremadam
baja por el alto nivel de incertidumbre.
• Intentar bajar dicha incertidumbre mediante el análisis puede
llevarnos al “Análisis Parálisis”. Para evitar esto debemos estim
alto nivel con un elevado grado de probabilidad, actuar rápida
aprender de nuestras acciones y refinar las estimaciones
frecuentemente. Este enfoque se conoce también como “Elabo
Progresiva”.
• La mejor estimación es la que provee el Equipo que realizará e
trabajo. Esta estimación será mucho más realista que la estima
provista por un experto ajeno al Equipo.
Objetivos
Revisiones Técnicas en el Software
• Descubrir errores en la función, lógica o
implementación de cualquier representación del
software.
• Verificar que el software bajo revisión alcanza sus
requerimientos.
• Garantizar el uso de estándares predefinidos.
• Conseguir un desarrollo uniforme del software.
• Obtener proyectos que hagan más sencillo los
trabajos técnicos (análisis que permitan buenos
diseños, diseños que permitan implementaciones
sencillas, mejores estrategias de pruebas)

Directrices para la Revisión Técnica


Ventajas de las Revisiones Técnicas
• Revisar el producto y no al productor.
• Hacer foco en los problemas no en la forma de resolverlos.
• Reducción sustancial del costo del software,
• Indicar los errores con tino, tono constructivo.
evitando re-trabajo. • Fijar agenda y mantenerla.
• Gran valor educativo para los participantes. • Enunciar problemas no resueltos.
• Sirve para comunicar la información • Limitar el debate y las impugnaciones.
técnica. • Limitar el número de participantes.
• Fomenta la seguridad y la continuidad. • Desarrollar una lista de comprobaciones para cada
producto que pueda ser revisado.
• Disponer de recursos y planificación de tiempos.
• Entrenar los participantes.
• Reparar las revisiones anteriores.
• El problema debería ser resuelto por el autor.
Ejemplo de artefactos y revisores sugeridos ¿Por qué existen las fallas?
Tipo de Revisores sugeridos
documento Ruido de comunicación Limitaciones de
Arquitectura o Diseño Arquitecto, analista de requerimientos, diseñador, lider
de alto nivel de proyecto, testers.
memoria
Diseño detallado Diseñador, arquitecto, programadores, testers 3 Personas
• Los límites de la memori
3 caminos 5 personas
Planes de proyecto Líder de proyecto, stakeholders, representante de ventas 10 caminos corto plazo: 7 +|- 2
o marketing, líder técnico, representante del área de • “Las fallas más persisten
calidad, están relaciondas con la
Especificacion de Analista de requerimientos, líder de proyecto, arquitecto, complejidad inherente a
requerimientos diseñador, testers, representante de ventas y/o producto que se desarro
marketing
* Robert Glass, “Persistent Software Error
Codigo fuente Programador, diseñador, testers, analista de 10 personas 45 caminos Years Later” 1st International Software Te
requerimientos Analysis & Review Conference

Plan de testing Tester, programador, arquitecto, diseñador,


representante del área de calidad, analista de
requerimientos

Fallas en el Software Revisiones Técnicas – Inspección de Software


Inspección
Falla
Es una actividad de aseguramiento de calidad del software
Error
Defecto
Objetivos:
Originado en el producto de Originado en el
trabajo que se está Descubrir errores.
producto de trabajo
inspeccionando predecesor Verificar que el software alcanza sus requisitos.
Falla mayor, condición que puede causar
Mayor una falla operacional o producir un Garantizar que el software ha sido representado de acuerdo a ciertos
resultado inesperado durante la ejecución Mayor
estándares.
de la operación especificada.
Conseguir un software desarrollado de manera uniforme.
Menor Condición que no es deseable en el
producto pero que no puede Hacer que los proyectos sean más manejables.
ocasionar una falla operacional
Cosmético Error de tipeo, ortografía, errores Se lleva a cabo mediante una reunión y el éxito depende de su planificación.
menores que no se cuentan como
fallas
Inspecciones de Software

SON NO SON
 La forma más barata y  Utilizadaspara encontrar
efectiva de encontrar fallas soluciones a las fallas
 Una forma de proveer  Usadas para obtener la
métricas al proyecto aprobación de un producto
de trabajo
 Una buena forma de proveer


conocimiento cruzado

Una buena forma de promover


 Usadaspara evaluar el
desempeño de las personas El Proceso de Inspección
el trabajo en grupo
 Un método probado para
mejorar la calidad del
producto

Inspección de Software: Roles Inspección de Software


El Proceso de Inspección – Roles participantes El Proceso de Inspección (Convencional)
Rol Responsabilidad
Autor •Creador o encargado de mantener el producto que va a ser inspeccionado.
•Inicia el proceso asignando un moderador y designa junto al moderador el resto de los
Planificación • Elegir equipo, preparar material y
roles calendario
•Entrega el producto a ser inspeccionado al moderador. Visión General • Presentar proceso y producto
•Reporta el tiempo de retrabajo y el nro. total de defectos al moderador.
Moderador •Planifica y lidera la revisión. • Análisis individual para encontrar poten
•Trabaja junto al autor para seleccionar el resto de los roles.
Preparación
Preparación defectos
Preparación
•Entrega el producto a inspeccionar a los inspectores con tiempo (48hs) antes de la
reunión. • Análisis del equipo para recolectar
•Coordina la reunión asegurándose que no hay conductas inapropiadas Reunión de Insp.
potenciales defectos previos, filtrar falso
• Hacer seguimiento de los defectos reportados.
positivos
Lector Lee el producto a ser inspeccionado.
Corrección • Corregir defectos
Anotador Registra los hallazgos de la revisión
Seguimiento • Verificar correcciones, recolectar datos
Inspector Examina el producto antes de la reunión para encontrar defectos. Registra sus tiempos
de preparación.
Puntos Clave

Revisar al producto… no al productor


Fijar una agenda y cumplirla
Limitar el debate y las impugnaciones
Pruebas de Softwar
Enunciar las áreas de problemas, pero no tratar resolver cualquier
problema que se manifieste
Tomar notas escritas
Limitar el nro. de participantes e insistir en la preparación por
anticipado
Desarrollar una lista de revisión
Disponer recursos y una agenda
Entrenamiento
Repasar revisiones anteriores

Definición de Prueba de software Testing exitoso…

Proceso DESTRUCTIVO de tratar de encontrar  Es aquel que encuentra defectos,


defectos (cuya presencia se asume!) en el código.
Se debe ir con una actitud negativa para demostrar lo opuesto.
que algo es incorrecto  Por lo tanto, el desarrollo exitoso,
puede llevar a Testing no exitoso (
encuentra defectos).

91 92
94

Tipos de Pruebas
Principios del Testing
• Un programador debería evitar probar su propio código. • Testing Funcional
• Una unidad de programación no debería probar sus propios desarrollos.

– Las pruebas se basan en funciones y característic
Examinar el software para probar que no hace lo que se supone que debería hacer.
• (descripta en los documentos o entendidas por los
Examinar el software para detectar que hace lo que no se supone que debería hacer.
• analistas de prueba) y su interoperabilidad con sis
No planificar el esfuerzo de testing sobre la suposición de que no se van a encontrar
defectos.
• El testing es una tarea extremadamente creativa e intelectualmente desafiante. específicos
• Testing temprano, lo más temprano posible. • Basado en Requerimientos
• La paradoja del pesticida • Basado en los procesos de negocio
• El testing es dependiente del contexto:
• Falacia sobre la ausencia de errores: que no encontremos errores no significa que no
estén ahí.

93

95 96

Tipos de Pruebas
Niveles de Prueba
• Testing No Funcional
– Es la prueba de “cómo” funciona el sistema
– NO HAY QUE OLVIDARLAS!!!! Los requerimientos no funcionales son tan importantes como
los funcionales
Aceptaci
• Performance Testing ón
Sistema
• Pruebas de Carga
Integraci
• Pruebas de Stress ón
Unidad
• Pruebas de usabilidad,
• Pruebas de mantenimiento
• Pruebas de fiabilidad
• Pruebas de portabilidad
97 98

Niveles de Prueba: Prueba de Integración


Niveles de Prueba: Prueba de Unidad
• Test orientado a verificar que las partes de un sistema que
funcionan bien aisladamente, también lo hacen en conjunto
• Se prueba cada componente tras su realización/construcción. • Cualquier estrategia de prueba de versión o de integración de
• Solo se prueban componentes individuales.
ser incremental, para lo que existen dos esquemas principales
• Cada componente es probado de forma independiente – •Integración de arriba hacia abajo (top-down)
• Se produce con acceso al código bajo pruebas y con el apoyo del – •Integración de abajo hacia arriba (bottom-up).
entorno de desarrollo, tales como un framework de pruebas unitarias• Lo ideal es una combinación de ambos esquemas.
o herramientas de depuración.
• Los errores se suelen reparar tan pronto como se encuentran, sin
• Tener en cuenta que los módulos críticos deben ser probados l
constancia oficial de los incidentes. más tempranamente posible.
• Los puntos clave del test de integración son simples:
– Conectar de a poco las partes más complejas
– Minimizar la necesidad de programas auxiliares

99 100

Niveles de Prueba: Prueba de Sistema

• Es la prueba realizada cuando una aplicación esta funcionando como un


Niveles de Prueba: Prueba de
todo (Prueba de la construcción Final). Aceptación
• Trata de determinar si el sistema en su globalidad opera • Es la prueba realizada por el usuario para determinar si la aplicación se ajus
satisfactoriamente (recuperación de fallas, seguridad y protección, sus necesidades.
stress, performance, etc.) • La meta en las pruebas de aceptación es el de establecer confianza en el
• El entorno de prueba debe corresponder al entorno de producción tanto sistema, las partes del sistema o las características específicas y no funcion
del sistema.
como sea posible para reducir al mínimo el riesgo de incidentes debidos
• Encontrar defectos no es el foco principal en las pruebas de aceptación.
al ambiente específicamente y que no se encontraron en las pruebas.
• Comprende tanto la prueba realizada por el usuario en ambiente de laborato
• Deben investigar tanto requerimientos funcionales y no funcionales del
(pruebas alfa), como la prueba en ambientes de trabajo reales (pruebas bet
sistema.
101 102

Planif
El Proceso de Prueba de Software ón
El Proceso de Prueba de Software Con
• La Planificación de las pruebas es la actividad de verificar que se
entienden las metas y los objetivos del cliente, las partes interesadas
(stakeholders), el proyecto, y los riesgos de las pruebas que se pretende
abordar. 
Planificaci Evaluació • Construcción del Test Plan:
Análisis y • Riesgos y Objetivos de la prueba
ón y Ejecución ny
Diseño • Estrategia de prueba
Control Reportes • Recursos
• Criterio de Aceptación
• Controlar:
• Revisar los resultados de la prueba
• Cobertura y criterio de aceptación

103 104

El Proceso de Prueba de Software


El Proceso de Prueba de Software Análisis y Eje
Diseño
ó
• Desarrollar y dar prioridad a nuestros casos de prueba
• Revisión de la base de pruebas • Crear los datos de prueba 
• Verificación de las especificaciones para el • Automatizar lo que sea necesario
software bajo pruebas • Creación de conjuntos de pruebas de los casos de
• Evaluar la verificabilidad de los
prueba para la ejecución de la prueba eficientemente.
requerimientos y el sistema • Implementar y verificar el ambiente. 
• Identificar los datos necesarios • Ejecutar los casos de prueba
• Diseño y priorización de los casos de las • Registrar el resultado de la ejecución de pruebas y
pruebas registrar la identidad y las versiones del software en las
• Diseño del entorno de prueba
herramientas de pruebas. 
• Comparar los resultados reales con los resultados
esperados.
105 106

¿Cuánto testing es suficiente?


El Proceso de Prueba de Software Evaluació
ny
Promedio, 3 menus
Reporte 4 opciones
• Evaluar los criterios de Aceptación
• Reporte de los resultados de las pruebas
para los stakeholders.
• Recolección de la información de las Promedio, 10 campos
actividades de prueba completadas para pantalla
consolidar.  
Sistema con Numero de dos dígito
• Verificación de los entregables y que los
20 pantallas valores posibles
defectos hayan sido corregidos.
• Evaluación de cómo resultaron las Total de testing exhaustivo:
Suponiendo 1 seg por prueba:
actividades de testing y se analizan las • 20 x 3 x 4 x 10 x 100 = 240.000
4000 minutos -> 67 horas -> 8,5 días
lecciones aprendidas.
10 seg -> 17 semanas1 min -> 1,4 años 10 min -> 13,7 años

¿Cuándo dejar de Administración de Configuración de Software (A


probar?
Problema: imposible en la práctica de estimar la
intensidad del testing para alcanzar determinada
densidad de defectos
Estrategias (confiando en la convergencia):
Pasa exitosamente el conjunto de pruebas
diseñado
“Good Enough”: cierta cantidad de fallas no
críticas es aceptable (umbral de fallas no críticas
por unidad de testing) . MicroSoft
Defectos detectados es similar a la cantidad de
defectos estimados
10
7
109 110

El Software
La Administración de Configuración del Software

• Su propósito es establecer y mantener la integridad de los productos


del proyecto de software a lo largo del ciclo de vida del mismo.
• Involucra para la configuración:
– Identificarla en un momento dado
• Información: – controlar sistemáticamente sus cambios
– estructurada con propiedades lógicas y funcionales. – mantener su integridad y origen
– creada y mantenida en varias formas y representaciones.
– confeccionada para ser procesada por computadora en su estado más Una disciplina que aplica dirección y monitoreo
desarrollado administrativo y técnico a: identificar y
documentar las características funcionales y
técnicas de los ítems de configuración, controlar
los cambios de esas características, registrar y
reportar los cambios y su estado de
implementación y verificar correspondencia con los
requerimientos (ANSI/IEEE 828, 1990)

111 112

Integridad del Producto


El software
Requerimientos
• Integridad
Una disciplina que aplica dirección y monitoreo
– satisface las necesidades del usuario Enero
administrativo y técnico a: identificar y Diseño
– documentar
puede ser fácil y completamente las
rastreado características
durante su ciclo de vida funcionales y
El software: un blanco móvil

técnicas de los ítems de configuración, controlar


– satisface criterios de performance
los cambios de esas características, registrar y
Fuente 1 Fuente 2 Fuente 3 Fuente 4 Fuente 5 Fuent

– reportar
cumple con sus expectativas los cambios y su estado de
de costo

implementación y verificar correspondencia con los Objeto 2 Objeto 3 Objeto 5

requerimientos (ANSI/IEEE 828, 1990)


113 114

La evolución del software Problemas


Requerimientos
Requerimientos
Febrero Requerimientos
Enero Diseño

Diseño ¿Febrero?
Requerimientos
Fuente 1 Fuente 2 Fuente 3 Fuente 4 Fuente 5 Fuente 6 Diseño

Fuente 1 Fuente 2 Fuente 3 Fuente 4 Fuente 5 Fuente 6 Febrero


Diseño Objeto 2 Objeto 3 Objeto 5

Fuente 1 Fuente 2 Fuente 3 Fuente 4 Fuente


Objeto 2 Objeto 3 Objeto 5

Fuente 1 Fuente 2 Fuente 3 Fuente 4 Fuente 5 Fuente 6

Objeto 2 Objeto 3 O

Objeto 2 Objeto 3 Objeto 5

115 116

Problemas en el manejo de componentes


La configuración

• Pérdida de un componente • El arreglo de un sistema o red definido por la naturaleza, número, y


• Pérdida de cambios (el componente que tengo no es el último) características principales de sus unidades funcionales
• Doble mantenimiento • Una configuración es el conjunto de todos los componentes fuentes que
• Superposición de cambios compilados en un ejecutable consistente
• Cambios no validados • Son todos los componentes, documentos e información de su estructura
definen una versión determinada del producto a entregar
117 118

¿Qué es un Repositorio?  Un repositorio de


Modelo de Check in - Check Out
información conteniendo los
ítems de configuración (CIs)
 Mantiene la historia de cada E x t r a c c ió n
(C h e c k o u t)
CI con sus atributos y R e p o s i to r io d e F u e n te s
A A .o b j
A B
relaciones.
 Usado para hacer C C .o b

evaluaciones de impacto de D e v o lu c ió n
los cambios propuestos. ( C h e c k in )

a c t u a liz a
C S e c u e n c ia
 Pueden ser una o varias c o n s tr u c c i ó n

bases de datos.

Repositorios Ítem de Configuración


• Repositorio Centralizado • Repositorio Distribuido
Se llama ítem de
configuración (IC) a todos
y cada uno de los artefactos
que forman parte del
producto o del proyecto, que
pueden sufrir cambios o
necesitan ser compartidos
entre los miembros del
equipo y sobre los cuales
necesitamos conocer su
estado y evolución.
Algunos ejemplos de CI
• Plan de CM • Planes de fases Versión
• Propuestas de Cambio • Estándares de codificación

• Visión • Casos de prueba • Una versión se define, desde el punto de


• Código fuente vista de la evolución, como la forma
• 10 Riesgos principales
particular de un artefacto en un instante o
• Plan de desarrollo • Gráficos, iconos, ...
contexto dado.
• Prototipo de Interface • Instructivo de ensamble
• El control de versiones se refiere a la
• Guía de Estilo de IHM • Programa de instalación evolución de un único ítem de Evolución lineal de un ítem de c
• Manual de Usuario • Documento de despliegue configuración (IC), o de cada IC por
• Requerimientos • Lista de Control de entrega separado.
• Plan de Calidad
• La evolución puede representarse
• Formulario de aceptación
gráficamente en forma de grafo.
• Arquitectura del Software
• Registro del proyecto
• Plan de Integración

Variante
Evolución de una configuración

• Una variante es una versión de un ítem de


configuración (o de la configuración) que
evoluciona por separado.
• Las variantes representan configuraciones
alternativas.
• Un producto de software puede adoptar distintas
formas (configuraciones) dependiendo del lugar
donde se instale.
• Por ejemplo, dependiendo de la plataforma Variante de un ítem de configuración
(máquina + S.O.) que la soporta, o de las
funciones opcionales que haya de realizar o no.
Líneas Base Representación de Líneas Base
Pueden ser:
• Una configuración que ha sido revisada
• De
formalmente y sobre la que se ha llegado a especificación (Requerimientos, Diseño)
un acuerdo
• De productos que han pasado por un control de calidad
• Sirve como base para desarrollos definido previamente
posteriores y puede cambiarse sólo a
través de un procedimiento formal de
control de cambios

• Permiten ir atrás en el tiempo y reproducir


el entorno de desarrollo en un momento
dado del proyecto

128

Actividades Fundamentales de la
El Comité de Control de Cambios Administración de Configuración de Software
• Está formado por
representantes de todas las Control de
áreas involucradas en el Cambios
desarrollo:

– Análisis, Diseño Informes de SCM:


Elementos Identificación
Estado Principale de Ítems
– Implementación
s
– Testing
Auditorías de
– Otros interesados Configuración
130

Planeando la Gestión de Configuración de Software Productos

• MicroFocus - PVCS Dimensions


Todos los • Platinum - CCC/Harvest
productos del • Rational – ClearCase
proceso deben
Definir los • Microsoft – Team Fundation
administrarse
documentos que
se
• Accurev – Accurev
Hacerla administrarán • Borland – StarTeam
tempranamente
• Herramientas de software libre para control de
configuración:
– TortoiseSVN
– Subversion
– Git
12
9

131
13

Mejores Prácticas en la Gestión


de
Configuración de Software
• Hacer de la Gestión de Configuración el trabajo de todos
• Crear un ambiente y un proceso de ingeniería que permita
Filosofí
la Gestión de Configuración
• Definir y documentar el proceso de ACS/Ingeniería , luego seleccionar
Ágil
la/las herramientas que le den soporte al proceso.
• El personal de ACS debe contar con Individuos con expertez técnica para
dar soporte al desarrollo y mantenimiento del producto
• Los procedimientos y el Plan de ACS debe realizarse en las etapas iniciales
del proyectos
Manifiesto Ágil: Valores
¿Qué es Ágil?
Individuos e interacciones
por sobre procesos y herramientas
NO es una metodología o proceso Software funcionando
por sobre documentación detallada
Ágil es una ideología con un Colaboración
conjunto definido de principios por sobre negociación con el cliente
que guían el desarrollo del Responder a cambios
Iterative TDD
por sobre seguir un plan
producto development

©2001, Kent Beck, Mike Beedle, Arievan Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning,
Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland,
Thomas, 850+ signers

Los 12 principios del Manifiesto Ágil La actitud Ágil se focaliza en:


Satisfacer al Cliente con entregas frecuentes y tempranas
Menos Estrategi
papeles, as
Cambios de Requerimientos son bienvenidos Talento y Reflexió
diferente
Habilidad n más
comunicaci s para
Releases frecuentes (de 2 a 4 semanas) proyectos
ón verbal
diferente
Técnicos y no técnicos juntos s
Principio

Individuos motivados
Medio comunicación: cara a cara Entregas
Proximida
s

frecuente Calidad
Métrica de progreso: software funcionando d
s
Herramient
en el
as
Ritmo de desarrollo sostenible trabajo

Atención continua a la excelencia técnica


Simplicidad: Maximización del trabajo no hecho
Comunic Just in
Arquitecturas, diseños y requerimientos emergentes ación time

A intervalos regulares el equipo evalúa su desempeño


El framework SCRUM
SCRUM

139 140

Colaboración Auto-organizació
Valores de SCRUM Empirismo

Cimientos
de
Scrum
Prio

Time Boxing
141

Roles de Scrum Gestionar la economía Product


Product Owner Scrum Master
Owner

Responsabilida
Participa en la planificación

Cuida el Product Backlog

des
Define el criterio de aceptación y
verifica si no se cumple

Colabora con el equipo

Colabora con los Stakeholders


Equipo Desarrollo

Coach Auto-organizado

Scrum Master Funcionalmente Transversal


Equipo Scr
Responsabilida

Características
Líder de Servicio Habilidades en forma de “T”

Muy buena comunicación


Autoridad sobre el Proceso
des

Tamaño correcto

Focalizado y comprometido
Escudo de interferencia
Larga vida

Trabajo en clima de paz sostenible


Remueve impedimentos
Tamaño Adecuado
Agente de Cambio
Actitud de Mosquetero
Story time, reconfigura el Product Backlog
Ítem Tamaño
Artefactos: Product Backlog
Estimado
Insertar Ítem
Ítem
Re priorizar Ítem Debo tener

Flujo
Sería lindo
tener

Tamaño original
del Ítem Refinar Ítem
No lo
tendrá
Borrar Ítem
Planificación
Listo del Sprint

147 148

Ceremonias: Sprint Planning (Planificación Timebox…


del Sprint) Planificación del Sprint Fecha de Inicio Fecha de Fin
Sprint Backlog
Product Backlog
Característica A
Tareas = Longitud Fija
Característica B
Qué hacer? Característica C
cómo hacerlo

Story Time
Timebox de
La planificación del Sprint hasta un mes
es la primera actividad
calendario
de cada Sprint
Sprint 1 Artefacto: Sprint Backlog
Suma
Sprint Backlog Cada característica…
… se divide en un conjunto de tareas. horas-
de las

esfuerz
Cada Sprint tiene su o
estimad
IPBs Tareas
Sprint Backlog 8
Crear Esquema BD as
Codificar la IU Automatizar Pruebas
19
Hs=5 Hs=8 Hs=6

+
Crear Esquema BD
Codificar la IU Automatizar Pruebas
Agregar registro error Crear iconos Buffer para prueba
Hs=5 Hs=8 Hs=6
5 Hs=12 Hs=8 Hs=2 22
+
Agregar registro error Crear iconos Buffer para prueba
Hs=12 Hs=8 Hs=2 Instalar LibreríaAutomatizar Pruebas
3 de Gráficos Hs=8 Hs=6 14

Instalar LibreríaAutomatizar Pruebas


de Gráficos Hs=8 Hs=6
16 Story Points 55
Horas-Esfuerzo

152

Definición de Hecho (DONE)


Duración corta:
Longitud Constante Desde 1 semana  Diseño revisado
Timeboxed hasta 1 mes calendario
 Código Completo

Sprint 1 Sprint 2 Sprint 3 Sprint 4


Ejecución  Código refactorizado
 Código con formato estándar
del Sprint  Código Comentado
 Código en el repositorio
 Código Inspeccionado
Sin cambios Definición acordada
que alteren el del criterio de  Documentación de Usuario actualizada
objetivo “Hecho”  Probado
 Prueba de unidad hecha
 Prueba de integración hecha
 Prueba de Regresión hecha
 Plataforma probada
 Lenguaje probado
 Cero defectos conocidos
 Prueba de Aceptación realizada
 En los servidores de producción
154

Resumiendo Roles
• Scrum Master
• Product Owner
Sprint
Execution
SCRUM… • Scrum Team

• Sprint Plan
Artefacto: Roles • Daily Scrum
Versión del Producto Ceremonia • Sprint Rev
so • Sprint
Incremento Reuniones
del producto Retrospect
potencialment • Story Time
e entregable
(opcional)
• Product Backlo
• Sprint Backlog
Artefactos
Sprint Review • Versión del
Producto
Ceremonia
so
Reuniones
Programación Extrema (Extreme Programming)

Extreme
Programm
ing
Artefactos
158

XP: Prácticas Fortalezas de Extreme Programming


(Extreme Programming)
• Técnicas de desarrollo prácticas y de alto impacto, fácilmente utilizadas po
• Planificar el juego desarrolladores (integración continua, desarrollo conducido por pruebas).
• • Énfasis en la participación y conducción del cliente.
Releases pequeños y frecuentes
• • Requerimientos y desarrollo evolutivo e incremental y comportamiento ada
Metáforas de sistema
• Diseño simple • Programadores estiman las tareas que han elegido.
• Prueba • Énfasis en la comunicación de todos los involucrados.
• Refactoring frecuente • Clarifica lo que es un sistema aceptable, requiriendo al cliente que defina l
pruebas de aceptación.
• Programación de a pares
• Medición diaria, y los desarrolladores deciden que medir y toman las medic
• Propiedad del código es del equipo
• Cada iteración identifica tareas y las estima, permitiendo que los desarrolla
• Integración continua mejoren en esas habilidades.
• Ritmo sostenible • Revisiones e inspecciones detalladas, todo el trabajo significativo se realiza
• El equipo completo junto pares. Las inspecciones están relacionadas con la reducción del nivel de de
• Estándares de codificación

160

Test Driven Development

0. Leer el
requerimien

Test Driven Development (Desarrollo Conducido por


to

Pruebas) 5. Re
factorizar
1. Agregar
una prueba

4. Ejecutar 2. Ejecutar
la prueba la Prueba

3.
Implementa
r

(Todo código es culpable hasta


que se pruebe su inocencia)
Razones para utilizar TDD
• La calidad del software aumenta.
• Se obtiene código altamente reutilizable.
• El trabajo en equipo se hace más fácil, une a las personas.
• Nos permite confiar en nuestros compañeros, aunque tengan menos
experiencia.
• Multiplica la comunicación entre los miembros del equipo.
• Las personas encargadas del aseguramiento de calidad adquieren un rol más
inteligente e interesante.
• Escribir el ejemplo (test) antes que el código obliga a escribir el mínimo de
funcionalidad necesaria, evitando sobre-diseñar.
• Los tests son la mejor documentación técnica que podemos consultar a la hora
de entender qué misión cumple cada pieza de software.
• Incrementa la productividad.

S-ar putea să vă placă și