21
SESIÓN 01: Definiendo un proceso 1

Personal Software Process / Sesion 01

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Personal Software Process / Sesion 01

SESIÓN 01: Definiendo un proceso

1

Page 2: Personal Software Process / Sesion 01

AMBIENTACION [20min]

[>] Se concientiza al publico sobre proyectos que no terminan o que no cumplen los requerimientos y o su nivel de calidad es bajo.

2

Page 3: Personal Software Process / Sesion 01

Proyectos de Software Hoy [i]Todos los proyectos de software son 100% exitosos?

• Se entregan a tiempo,?• Cumplen lo que el cliente espera?• Sin defectos, un producto de muy buena calidad, sin bugs?• El cliente está satisfecho?

• [>] Hacer la paradoja de un carro (la construcción de un automóvil, cómo fuera si no tuviese calidad?)

Lo que los desarrolladores quieren• Hacer un trabajo técnicamente interesante y de calidad• Libertad al hacer el trabajo• Requerimientos estables• Cronogramas realistas

• [>] me han pedido algo para ya, por la urgencia? • [>] los superhéroes existen? (los que se trasnochan)• [>] he llegado tarde a casa por algún tema de urgencia? Le han reconocido eso?• [>] mi esposo/esposa está aburrido de la situación?

Lo que los managers quieren

• Se cumplen los acuerdos (se cumplen fechas, con calidad)• Metas agresivas que se cumplen• No hay sorpresas al final• Existe habilidad para cambiar los requerimientos• Entrega de productos tan pronto como es posible

---------------------------

3

Page 4: Personal Software Process / Sesion 01

Primeros puntos para el cambio• Managers son muy optimistas respecto a lo que se puede alcanzar• Desarrolladores aceptan cronogramas irreales• Finalmente el producto no se termina a tiempo y se demora más ajustar el producto acorde a la calidad

requerida• Los desarrolladores pierden credibilidad dado a los retrasos en cronogramas.• Cómo ganar esa credibilidad para controlar el trabajo del programador?• Qué puntos debemos tener en cuenta al planear?, Veamos a continuación:Puntos• Entender lo que el cliente quiere• Planeación

• Con información histórica• Si no hay info histórica: a juicio de experto• Estimar con suficiente detalle (detal forma que al sub-estimar o sobre-estimar haya un balance)• Ser realista en el tiempo que se tiene disponible para hacer el trabajo

[>] Normalmente se toma el tiempo del 100% (40h semanales). Se debe tener en cuenta que la persona va al baño, a veces se desconcentra

• Si no alcanza el tiempo, Ofrecer Alternativas[>] explicar lo racional detrás de las alternativas

• Seguimiento (Tracking)• Hacer planes medibles, hacer planes que se puedan medir• Cuando el plan se desvía, hacer correcciones

[>] si me retraso en un plan por 2horas, necesito 2 horas para desatrasarme? • Comunicación con el equipo de trabajo

• Responder al cambio (Responsiveness)• Si hay cambios en los planes, entregar feedback para poder ajustar el plan• Si no se puede ejecutar todo, hacer entregas incrementales....• ...Pero entregar lo más importante primero

• Responder a los compromisos (commitments)• Cumplir acuerdos realizados• Entregar soluciones de sw que funcionen

• [>] El trabajo con información requiere concentración de la persona, la musa de la inspiración

4

Page 5: Personal Software Process / Sesion 01

Qué se de mi performance hoy (manager)?• De alguna forma se conoce el performance fuera de la caja “Trabajo”• Pero no se tiene la visión de lo que ocurre dentro de la caja (ver algiunos ejemplos en el siguiente slide)

5

Page 6: Personal Software Process / Sesion 01

Que sé de mi performance hoy?• cómo se gasta el tiempo, • qué actividades toman el mayor tiempo paraser realizadas• ´con cuántos defectos sale el producto• Para cuándo puedo tener el producto?

6

Page 7: Personal Software Process / Sesion 01

INTRODUCCIÓN AL PSP [30min]Qué es un proceso?• Una secuencia de pasos que un profesional sigue para realizar una tarea específica• Repetible: que lo pueda realizar muchas veces: Completo y Correcto• Predecible: Que pueda usar para planear mi tiempo, coordinar mis recursos, sin sorpresas• Definido: Un proceso definido es una plantilla “documentada” con series de pasos genéricos para hacer

un trabajo de forma tal que cada vez que se hagan sean de forma similar. De esta forma se puede lograr un marco para planear, manejar la calidad y delimitar el trabajo

• [>] Hacer la paradoja de las salchichas (las salchichas en un proyecto industrial).El plan es hecho para un trabajo específico, mas otra información como esfuerzo, costo, fechas, budget, identificacion de riesgos

7

Page 8: Personal Software Process / Sesion 01

Qué es un proceso personal? • Es una serie de pasos para guiar el desarrollo de software a nivel personal• Se comienza con un proceso realizado por alguien más con experiencia• Se va mejorando cada vez para suplir necesidadesPor qué definirlo?• Consistencia: poder crear un modelo de desarrollo predecible: resultados similares / resultados

predecibles• Eficiencia: estrucutras que guian el trabajo, se enfocan en producir algo y no desviarse• Base para mejora: recolectar datos sobre el proceso, para luego ubicar las oportundiades de mejora y

aplicarlas.Qué es PSP (un proceso personal de software)Un proceso personal para escribir software, con los siguientes principios:(1) Cada desarrollador es diferente(2) Medir el trabajo que se hace ... Para poder luego mejorar(3) El desarrollador es responsable de la calidad del produco(4) Cuesta menos pevenir defectos en fases templranas del proceso quer en fases tardías

Historia de Watts S. Humprey• Muchas de las organizaciones grandes y pequeñas surgieron porque el software resultó ser una industria

rentable en sus inicios por la demanda que tenía. Sin embargo su crecimiento desmedido planteaba interrogantes sobre la calidad de las personas involucradas dentro del desarrollo de los productos (lo que se denominó la Crisis del software: o bien los proyectos no terminaban a tiempo, o bien terminaban con sobrecostos o bien la espectativa de calidad era mayor a la que reflejaba el producto).

• Una de las organizaciones que comenzó a preocuparse por la estandarización en el software que gestionaban fue el Departamento de defensa de EEUU (DoD), quien convoca un concurso a través de universidades, quedando seleccionada la universidad Carneggie Mellon, a través de los fundamentos de lo que hoy es PSP y TSP con Humphrey a la cabeza, y posteriormente su implantación a nivel de empresas mediante la definición de modelos de madurez CMM. (http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/moreno_a_jl/capitulo2.pdf). Sin embargo el interés de PSP no es solo dejar el proceso planteado en papel (enactable, el qué hacer) sino definir cómo poder ejecutarlo (operational, el cómo hacerlo).

• En muchas profesiones, los “primíparos” tienen que aprender sus habilidades a la mano de un experto, y con las medidas en el desempeño de su trabajo se van sumando puntos para medir su desempeño.

• Es precisamente la actividad que se hará a lo largo del presente cursillo, donde iniciaremos realizando una

8

Page 9: Personal Software Process / Sesion 01

planeación del uso del tiempo, comenzar a controlar el consumo de él y posteriormente poder compararlo con lo que realmente hacemos. De igual forma, vamos a i registrando las equivocaciones que cometemos con el fin de establecer puntos de mejora [es lo que se denomina el paradigma plan-do-check-improve]

Principios• Cada quien es diferente• Cada quien es responsable de la calidad de lo que hace• Más eficiente encontrar y corregir en etapas iniciales del proceso que en las finales• Más eficiente prevenir defectos que tener que corregir bugs• Los datos capturados son personales, y no se usan para pagarle al empleado o castigarlo.

Si fuese así, y el trabajo de un empleado es de 40h a la semana, los datos siempre darán 40h reportadas.

8

Page 10: Personal Software Process / Sesion 01

Los elementos de psp son 4 basicamenteScripts, que son el guion que documenta el procesoMeasures (Medidas), que permiten cuantificar el proceso y dar a conocer cómo evoluciona el trabajoFormsPara capturar los datosStarndardsDefiniciones consistentes para clasificar los datos tomados

9

Page 11: Personal Software Process / Sesion 01

ScriptsQue no ocupe mas de una paginaEs la guía para hacer la tareaEs la guía del experto sobre cómo usar el procesoContiene• Propósito• Criterios de entrada• Pasos• Salidas

10

Page 12: Personal Software Process / Sesion 01

Forms• Forma de capturar los datos• Soporte de herramientas para hacerlo• Ejemplos:• (1) timelog• (2) defect log• (3) checklist

11

Page 13: Personal Software Process / Sesion 01

Standards• Definiciones que facilitan la captura de datos

12

Page 14: Personal Software Process / Sesion 01

Las métricas permiten entender:• El tiempo gastado en actividades• Dar a conocer cuántos defectos fueron inyectados y removidosCon dichos datos los desarrolladores puedenPlanear y estimar el trabajoEvaluar los resutladosMejorar (Improve) el proceso para el siguiente proyectoPara medir el proceso:• el trabajo se divide en conjuntos de tareas o actividades llamadas fases. Por fase se mide:• Tiempo gastado por fase• Defectos inyectados• Defectos removidos• El tamaño es medido sólo al final, cuando está completoLas metricas core son• Size (Tamaño): indican qué tan grande es el producto. Se prefiere que este conteo se pueda automatizar y

que lo haga unba herramienta.• Effort (Esfuerzo, Tiempo): se captura en minutos por ser mas sencillo, interrupt-time: no es incluido, y off-

task : normalmente no es capturado, porque no contribuye a las tareas del proceso: ejemplo: management, meetings, training, email

• Quality (Calidad): se preocupa por capturar los defectos que se originan y remueven a lo largo del proceso• Schedule (Cronograma): información de planeación y tracking quye se tienen en cuenta para el

scheduling.

13

Page 15: Personal Software Process / Sesion 01

Aprendiendo PSP [i]• PSP es introducido poco a poco.• A lo largo del cursillo se van a escribir pequeños programas cada paso.• A lo largo de cada programa se va a hacer recolección y análisis de datos• Y los datos se usarán para mejorar (improvement).• PSP0: se establece la linea base de trabajo• PSP1: se practica esfuerzo y estimación, tratando de obtener precision • PSP2: se practica la gestión de defectos y una métrica relacionada (yield)

14

Page 16: Personal Software Process / Sesion 01

PresentaciónCada persona indica : • nombre • seleccionar un lenguaje de programación con el cual va a arealizar algunos ejercicios. • También dirá las espectativas del cursillo[>] 1 minuto por persona

15

Page 17: Personal Software Process / Sesion 01

Aprendiendo PSP [ii]En comparaciones entre 30mil programas realizados:(1) Al inicio hay mayor error de estimacion, y Luego hay mejor precisión (accuracy) y balance entre over y

underestimates (en el ultimo, el error es mas cercano a cero)(2) El tiempo de compiling y testing va disminuyendo a lo largo del desarrollo de los programas(3) La productividad se mantiene, pese a que se van a ir introduciendo actividades nuevas (Grafica de

Tamaño vs LOC/h)

16

Page 18: Personal Software Process / Sesion 01

Tutorial PSP0 [i] [40min]Recoleccion de datos: • No recolectar datos por hacerlo, sino pensar en el objetivo: entender la improtancia de hacerlo, para

poder usar los datos al planear: similares productos, similares estimados• Preferible capturar los datos cuando suceden los hechos (para que no se olvide despues)Fidelidad• Grado en el cual los individuis siguen el planCalidad• La calidad del producto es governada de alguna forma por el proceso que se use

17

Page 19: Personal Software Process / Sesion 01

Tutorial PSP0 [ii]

• Preparación para el assignment• Errores comunes y como evitarlos• Incorporar measures básicos

• Seguir las fases en orden• No amañar los datos

Pasos:• Planning: producir un plan para hacer el trabajo y guiado por los requerimientos• Desarrollo: cómo hacer el trabajo

• Design: producir una especificacion de diseño para el programa definido por los requerimientos

• Coding: Transformar las especificaciones de diseño en statements de un lenguaje de programación

• Compile: Traducir los statements en codigo ejecutable o bytecode ejecutable• Test: verificar que el codigo ejecutable satisface los requerimientos

• Postmortem: (1) resumir y analizar la data capturada alrededor del desarrollo del proyecto (2) actualización de los datos del proyecto y métricas (3) cálculo de los datos relevantes de calidad o desempeño (3) revisión del performance (desempeño) real respecto al plan (4) actualización de BD’s históricas con datos de tamaño y productividad (4) Usar datos personales para hacer ajustes al proceso (5) documentar PIPs (process improvement proposals) generados durante una fase o proyecto

De igual forma se puede trabajar un enfoque iterativo, PSP no es un proceso en cascada (waterfall). La figura muestra 2 modulos desarrollados.Los ciclos tambien pueden incluir la fase de diseño. Usted debe determinar qué sirve según el proyecto.

18

Page 20: Personal Software Process / Sesion 01

Tutorial PSP0 [iii]

CD para estudianteshttp://www.processdash.com/download_mec/pfaStudentCD

Descargar Tutorial asociado y seguirlo con el process dashboard.

(1) Iniciar process dashboard(2) Seleccionar task NonProject / PspFundamentals&Advanced / StudentProfile(3) Seleccionar menu / studentprofile(4) Llenar los datos del estudiante(5) Ver los programas con el hierarchy editor(6) Sacar un backup: c/tools/data backup / (save)(7) Abrir el backup creado (sale una segunda barra processdash)(8) Mostrar las actividades (9) Pararse en la actividcad de planning del program1(10)Abrir el process script (menu/psp0 process script); en el browser dar click en planning(11)Para iniciar a planear dar dlick en play. Mostrar el timelog en el menu “C”(12)Una de las tareas comentadas en el script es hacer el estimado del plan (menu / project plan summary),

y coloar el tiempo estimado (casilla: Plan Total) en formato hh:mm(13)Si se completa una fase, dar click en el checkbox(14)Mostrar el development script (menu/psp 0 development script)(15)Mostrar cómo se registran defectos , mostrar log de defectos (“C/defectlog”). Mostrar defect type

standard en esa pantalla(16)Mostrar la fase de postmortem. Revisar datos capturados. Mostrar project plan summary de nuevo.(17)Marcar el proyecto como completado en el project plan summary.(18)Para enviar la tarea: C/Tools/SaveDataBackup(19)NOTA1: defect-fix-time: desde que se descubre hasta que se soluciona(20)NOTA2: inhected-phase: en la cual está el programa actualmente (no la actividad que estoy haciendo)(21)La practica requiere minimos cambios al proceso que usted desarrolla actualmente.

19

Page 21: Personal Software Process / Sesion 01

Assignment 01: [20min]Para aprender PSP0

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

20