personal software process / sesion 02

28
SESIÓN 02: Estimación y Planeación 1

Upload: andres-hurtado

Post on 07-Jul-2015

311 views

Category:

Technology


2 download

DESCRIPTION

Sesion de capacitacion sobre Personal Software Process (TM) / Español / 2014.02. NOTA: Todas la marcas son propiedad de sus respectivos dueños.

TRANSCRIPT

Page 1: Personal Software Process / Sesion 02

SESIÓN 02: Estimación y Planeación

1

Page 2: Personal Software Process / Sesion 02

2

Page 3: Personal Software Process / Sesion 02

3

Page 4: Personal Software Process / Sesion 02

4

Page 5: Personal Software Process / Sesion 02

5

Page 6: Personal Software Process / Sesion 02

6

Page 7: Personal Software Process / Sesion 02

7

Page 8: Personal Software Process / Sesion 02

8

Page 9: Personal Software Process / Sesion 02

9

Page 10: Personal Software Process / Sesion 02

10

Page 11: Personal Software Process / Sesion 02

Desarrollo de proyectosPara el desarrollo de un proyecto es importante tener un plan ya que:• Define el trabajo y cómo hacerlo (la estructura de lo que se debe hacer)• Permite arrojar el tamaño del proyecto (y qué tiempo se necesita para construirlo)• Es la base para estar de acuerdo en costos, cronograma, y recursos• Permite registrar el alcance: lo que inicialmente fue acrodado• La idea es que el plan sea lo más realista posible

En el desarrollo del proyecto se deben tener en cuenta ciertos puntos:• planear el trabajo

• preferible: que planeen quienes lo van a ejecutar, que saben hacer las cosas• hacer planeación antes de pensar en ejecutar un trabajo• Planes realistas y que se puedan cumplir. Si la persona está haciendo otra cosa que no es la

que fue planeada, replanear.• si lo hacen los que lo van a ejecutar estarán más de acuerdo en hacerlo• descomponer a detalle: normalmente un cronograma de alto nivel dará menos precisión que

uno más detallado• Definir tareas acorde al schedule• Hacer tracking de plan

• Se hace un seguimiento al valor ganado (Earn Value)• Las personas que hacen el trabajo son las que hacen la recoleccion de datos (precisa: precise

y exacta: accurate).• Luego de hacer el tracking del plan se mide el CPI (cost performance index, ver figura)

11

Page 12: Personal Software Process / Sesion 02

Pasos básicos para planear [15min]Planear es necesario para guiar el trabajo a realizar, poder saber en qué se gasta el tiempo y luego poder hacer seguimientoLos pasos necesarios para planear son:(1) entender requerimientos, descomponer en elementos(2) estimar tamaño y esfuerzo del trabajo a realizar(3) lista de tareas / recursos (4) Hacer un schedule (cronograma)

Para hacer mejores estimados se requieren elementos para hacer mejores estimados, como controles, objetos, LOCs.Sin embargo en fase inicial del proyecto es dificil saber el tamaño.Además a partir del texto de los requerimientos es dificil darse una idea del tamaño de lo que se va a construir.Para poder planear se deben tener en cuenta algunas medidas (measures) que permitan estimar: • Que la medida relacione con el esfuerzo• Que sea precisa• Que pueda ser directamente contable• Que se pueda contar directamente• Que permita planear de forma tempranaNormalmente se asume que en un proceso de desarrollo estable, size y time están correlacionados, y por lo cual se asume que los planes pueden ser creados basados en tamaño y de él se puede derivar el esfuerzo.

• Cada nuevo proyecto debe agregar información a la base de datos histórica• Los nuevos proyectos permiten revisar las categorías y rangos utilizados en la clasificación de

objetos.

12

Page 13: Personal Software Process / Sesion 02

Estimación [20min]Cómo entonces tener algo que nos ayude a visualizar la dimensión delo que construimos?Con proxies:Un proxy es un elemento que permite medir de tal forma que el tamaño que entrega, es relacionado con el esfuerzo para construirlo y que provee un significado de ayuda para la planeación

[>] Hacer la analogia de construccion de una casa• El constructor dice que el costo es directamente relacionado con los m2 de la casa, pero cuando uno

va a comprar, cómo sabe de qué tamaño lo quiere?• El constructor posee detalles de tamaños de cuartos para diferentes casas, y supongamos que se

organizan en tamaños [pequeño,mediano,grande] para cada uno de los tipos de lugares de una casa [baño,cocina,alcoba], como se muestra en la figura:

• Para obtener el estimado de la casa se visualiza el diseño conceptual de ella escuchando el # de alcobas que se quiere y el tamaño relativo de ellas (pequeño,mediano,grande). Luego se suma un area proporcional para halls y closets.

• El costo final se obtiene miltiplicando el tamaño final estimado y multimplcandolo por el costo por m2

De igual forma en software:• A partir de los requerimeintos se examinan las partes necesitadas para constuir el programa y sus

partes relativas (pequeña,mediana,grande)• Se usan datos historicos de las partes desarrolaldas previamente para estimar el tamaño de cada

parte segun el tipo• Se estima el tamaño del programa sumando los distintos estimados y ajustando el estimado total• Luego se multiplica el estimado de tamaño sacado en el punto anterior, por la productividad

(tamaño/hora)ProxiesUn proxy es un sustituto, relaciona el tamaño del producto con la funcionalidad que se planea construir

13

Page 14: Personal Software Process / Sesion 02

Es un medio en la fase de planeación para juzgar el tamaño probable de un productoTabla de tamaño relativoEs la organizacion de los datos historicos del proxy para que se pueda usar al estimar el tamaño de partes similaresSe construye calculando la media y desviacion estandar de un set de datos y luego se computa:VS= μ-2σS = μ-1σM = μ-0σL = μ+1σVL= μ+2σ

13

Page 15: Personal Software Process / Sesion 02

Para el caso de estimacion, se busca que las metricas usadas sean • Precise (preciso): niveles de precisión como dígitos de chequeo • Accurate (exacto,certero): correctamente mide la propiedad deseadaEn psp se quiere usar la combinacion de las 2.La idea es lograr un accuracy del 70% en el intervalo de precisión donde se distribuyan las estimacioneshechas de los productos

14

Page 16: Personal Software Process / Sesion 02

Método PROBE (PROxyBasedEstimating) [45min]

Los pasos que hemos comparado son precisamente la fundación del método PROBE (Proxy-Based Estimating)(a) conceptual design

Define las partes que se necesitan para construir el producto (base apra estimar el tamaño)Las partes se extraen de los requerimientosEs un diseño a alto nivel (no es demasiado detallado)Se identifican las funciones y partes necesarias para producir la soluciónSi no se puede llegar a un diseño conceptual, no se tienen las herramientas suficientes para hacer un plan

(b) identify & size proxies Basado en el diseño conseptual, se categorizan las partes. Se estima el tamaño relativo de cada parte comparando el tamaño esperado con la parte histórica producidaY finalmente se combinan los estimados para estimar el tamaño total de las partes nuevas.

(c) estimate other element sizes Si se va a modificar codigo se necesita estimar ese tipo de partesPartes Base [B] hace referencia a aquellas partes que van a ser modifcadas agregando, eliminando o modifivcando lineas de codigoPartes de Reuso [R] son las que se incluyen directamente y no se van a modificar

(d) calculate total size Se agregan las partes individuales para dar un tamaño totalDicho tamaño sirve ap}ra calcular el tamaño proyectado (ajustado acorde a los datos histricos que hemos capturadoSe debe elegir el metodo probe apropiado

(e) calculate program effort.

15

Page 17: Personal Software Process / Sesion 02

NOTA [5 min]En el metodo PROBE se estimula el uso de LOC’s como criterio de tamaño. Los criterio para seleccionar las LOC como métrica de tamaño (size) son:• Que se relaciona con el esfuerzo (relates to effort)• Precisa (precise): Para hacerlo preciso se necesita establecer un Estandar de

codificación y conteo. Cada dez que alguien cuenta le debe dar lo mismo. Ejemplo:• Cada linea es un LOC• No contar lineas en blanco• No contar comentarios• No contar lineas auto-generadas

• Contable automaticamente (machine countable)

15

Page 18: Personal Software Process / Sesion 02

Tipos de LOC• Todas las LOC son iguales?• 200 LOC de un nuevo programa• 100 LOC de una parte nueva y 100 de una modificada

• Con frecuencia un proyecto consiste en modificar un programa existente en lugar de construir unonuevo

• Igualmente es muy posible que objetos existentes puedan ser reutilizados.• En estos casos hay que tener en cuenta las líneas que hay que agregar y modificar.• También las líneas borradas deben tenerse en cuenta para estimar el tamaño final correcto.• El conteo de líneas efectivamente agregadas, borradas y modificadas al final es complejo.• Por esto es necesario apoyarse en herramientas automatizadas para contar (diff, para la

comparacion de 2 archivos por ejemplo)

[B] Base: Lineas con las cuales se comienzan para hacer cambios[D] Deleted: Lineas removidas del base[M] Lineas del codigo base que se modificarán[A] Lineas nuevas (Tamaño Planeado Agregado)[R] lineas de libreria que son usadas sin cambios[A&M] suma de lineas agregadas y modificadasNew Reusable: nuevas lineas que pueden ser colcoadas en una libreria de reuso[T] Tamaño Total Planeado: LOC del programa entero

Convenciones[E] Tamaño Estimado Proxy[BA] agregadas a la base

16

Page 19: Personal Software Process / Sesion 02

[PA] Partes agregadas[P] Tamaño Proyectado A&M

16

Page 20: Personal Software Process / Sesion 02

17

Page 21: Personal Software Process / Sesion 02

18

Page 22: Personal Software Process / Sesion 02

PROBE A,B,C,DEn la práctica, siempre habrá una diferencia entre los tamaños estimados y los reales.• Normalmente, hay que compensar el tamaño obtenido de los cálculos anteriores, para ajustarlo a la

realidad.• Es razonable esperar que la relación entre tamaño estimado y real sea lineal.• Por ello, el método estadístico de regresión lineal puede aplicarse aquí• La regresión produce dos parámetros que definen una recta sobre la cual debe encontrarse la

estimación, y que define la menor distancia entre estos puntos, y por tanto la mejor prediccion.• Una interpolación sobre dicha recta permite encontrar un valor más realista para el tamaño del

programa.• La regresión lineal sólo puede usarse si se tienen al menos dos estimaciones previas, y usando la

hipótesis de que tiempo y tamaño están correlacionados, podremos usar métodos que nos ayudan a dar una mejor estimación. De ello se derivan los métodos probe A y B. Si se tiene algo de información histórica se puede usar un simple promedio para calcular, lo que deriva el método C. Por el contrario, si no se tiene información histórica, se usa el método D (P=E: lo planeado es igual a lo que se dió como juicio de experto).

• Aún en este caso, la precisión depende de la correlación entre los datos. Si son muchos datos, debe tenerse en cuenta la correlación de ellos. Si son pocos los datos, debe tenerse en cuenta otra medida que se llama significancia (medida de que la correlación entre los datos sea una casualidad.

• El intervalo de predicción es un resultado estadístico que permite determinar qué tan confiable es el resultado obtenido.

• Si los resultados obtenidos previamente han presentado variaciones fuertes, el intervalo será amplio.• Un proceso estable debería producir resultados más predecibles, y, por lo tanto, intervalos de

predicción menores.

19

Page 23: Personal Software Process / Sesion 02

20

Page 24: Personal Software Process / Sesion 02

21

Page 25: Personal Software Process / Sesion 02

22

Page 26: Personal Software Process / Sesion 02

Tutorial: PSP1 [20min]

(1) Sacar una copia de los datos en el processdashboard(2) Se va a trabajar un ejemplo de assignment, donde JohnDoe (N.N / Pepito Perez)(3) John sighe el script y la primera fase es planning. Luego ve que le toca usar PROBE para estimar el

tamaño A&M(4) Mostrar fases, diseño conceptual de JohnDoe y detenerse en la tabla de AddedParts de JohnDoe.(5) Entrar los datos en el SizeEstimatingTemplate (BaseParts,Reused,Added) como se encuentra en el

tutorial.E (estimated proxy size)= BA + PA + MP (ajustado) ~ E (método D)T (estimated total program size) = (P-M) + (B-D) + R

Para el ejemplo:B= 224D=0M=22BA = 11PA=118

E= (11+118+22) = 151P~E=151 (metodo D)

T=(151-22)+(224-0) + (0) = 353(6) Usar el wizard para la selección del metodo probe. Usar como paso 4 el valor P=3 horas

(151minutos)(7) Los estimados del SET (size estimation template) son automaticamente transferidos al plan

23

Page 27: Personal Software Process / Sesion 02

summary.(8) Se desarrolla el proyecto y en el postmortem se verifica el tamaño de las base

parts y added parts. Usar la plantilla SizeEstimate template. En el total size se actualiza el tamaño total del programa.

BasePartSize => actualizar con [B:224 – D:0 – M:12 – A:17]Reused => actualizar con ceroActual AddedPartSize =>

InputData [Size:20,Items:2]LinkedList [Size:52,Items:6]CalcMean [Size:8,Items:1]CalcSd [Size:22,Items:1]PrintResults [Size:18,Items:1]

(9) Actualizar las lineas de codigo en el ProjectPlanSummaryTotal: 361

(10) Ver el project plan summary coon los datos(11) Ir al psp1 process script. Parametrizar un directorio de proyecto. La herramienta crea un documento de word para editar el PIP Form.(12) Ir al psp1 process script. Parametrizar un directorio de proyecto. La herramienta crea un documento de word para editar el Test Report Template.

23

Page 28: Personal Software Process / Sesion 02

Assignment 02: [20min] Contador de LOC’sPara aprender PSP1

Enviar el assignment: Archivo .zip con:• ProcessDashboard backup• Codigo fuente• Test Results

24