Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PSP Literatura en Espanol
PSP Literatura en Espanol
Calidad en el Desarrollo
de Software
Calidad en el Desarrollo
de Software
Objetivo General:
• Introducir al alumno a la
Metodología del PSP, así como
conocer los conceptos acerca de
métricas en el desarrollo de
Software.
Calidad en el Desarrollo
de Software
Índice
I. Introducción al Personal Software Process
(PSP)
II. Estructura del PSP
I. Introducción al Personal
Software Process (PSP)
Calidad en el Desarrollo
de Software
Calidad en el Desarrollo
de Software
Antecedentes
• Después de la segunda guerra mundial, la estrategia de calidad en la
mayoría de las organizaciones industriales se basaba casi por completo en
las pruebas. Las empresas establecieron departamentos especiales de la
calidad para encontrar y arreglar problemas después de la producción de
los productos.
• No fué sino hasta los años 70 y los años 80 que W. Edwards Deming y J.M.
Juran convencieron a la industria estadounidense que se centrara en
mejorar la forma en la que la gente hacía sus trabajos y desarrollaban sus
procesos. [ DEMING; 82 ], [ JURAN 88]
Antecedentes
• Aunque la mayoría de las organizaciones industriales ahora han adoptado
principios modernos de calidad, la comunidad del software ha continuado
confiando en la prueba como el método principal de la administración de la
calidad. Para el software, la primera medida principal en la dirección
iniciada por Deming y Juran fué tomada por Michael Fagan cuando en 1976
él introdujo las inspecciones del software [ FAGAN; 86]
Antecedentes
• PSP se concentra en las prácticas de trabajo de los ingenieros en una forma
individual. El principio detrás de PSP es ése, sirve para producir software
de calidad, cada ingeniero debe trabajar en la necesidad de realizar trabajo
de calidad.
• PSP se diseñó para ayudar a profesionales del software
para que utilicen constantemente prácticas sanas de
ingeniería de software.
• Asimismo les enseña a cómo planear y darle un seguimiento a su trabajo, a
utilizar un proceso bien definido y medido, a establecer metas mesurables, y
finalmente a la utilización del rastreo constante para alcanzar dichas metas.
• PSP les demuestra a los ingenieros a cómo manejar la calidad desde el
principio del trabajo, a cómo analizar los resultados de cada trabajo, y a
cómo utilizar los resultados para mejorar el proceso del proyecto siguiente.
[SEI; 2000] .
Calidad en el Desarrollo
de Software
¿ Qué es PSP?
• Un PSP es un proceso personal para desarrollar
software.
▫ pasos definidos
▫ formularios
▫ estándares
• Un PSP es un marco de trabajo de medición y
análisis que te ayuda a caracterizar tu proceso.
• Es también un procedimiento definido para
ayudarte a mejorar tu rendimiento.
Calidad en el Desarrollo
de Software
Introducción
• El PSP es un proceso diseñado para uso individual,
basado en una versión a escala de un proceso industrial.
• El principal objetivo del PSP es ayudar a los ingenieros
software a hacer mejor su trabajo.
• EL PSP se ha diseñado también para demostrar el valor
del uso de un proceso definido y medido.
• Por ultimo, el PSP intenta ayudar a los ingenieros y a las
organizaciones a que cumplan las demandas cada vez
mas estrictas para el desarrollo de sistemas software de
calidad
Calidad en el Desarrollo
de Software
Introducción
• El PSP se aplica en tareas personales
estructuradas:
▫ Desarrollo de módulos de programas.
▫ Definición de requisitos o procesos.
▫ Realización de revisiones o pruebas.
▫ Escritura de documentación, etc.
▫ El PSP se puede extender al desarrollo de sistemas
software de gran tamaño.
▫ Es un proceso de Nivel 5 para los individuos y es un
prerrequisito para el TSP
Calidad en el Desarrollo
de Software
Introducción
• PSP se introduce con siete pasos compatibles.
• Escribes uno o dos pequeños programas en cada
paso.
• Recoges y analizas los datos de tu trabajo.
• Los usas y analizas para mejorar tu trabajo.
Calidad en el Desarrollo
de Software
Estructura de PSP
• Comenzando con los requerimientos, el primer paso en
el proceso de PSP es la planificación.
• Existe un script de planificación que sirve de guía y un
resumen del plan para registrar todos los datos del
mismo. Mientras los desarrolladores van siguiendo el
lineamiento de trabajo sugerido por los scripts, deben ir
registrando los tiempos dedicados y los datos de defectos
en los logs de tiempos y defectos.
• Al final de la tarea, durante la fase de postmortem (PM),
deben resumir los datos de tiempo y defectos, medir el
tamaño del programa, e ingresar esos datos en el
formulario de sumario del plan. Al finalizar, deben
entregar el producto finalizado y el formulario de
sumario del plan completado.
Calidad en el Desarrollo
de Software
Estructura de PSP
• Debido a que generalmente ciertos métodos de PSP no
son utilizados por los desarrolladores, los métodos de
PSP son presentados en una serie de siete versiones de
procesos.
• Estas versiones son denominadas como PSP0 a PSP3.
Cada versión tiene un mismo conjunto de logs,
formularios, scripts, y standards.
• Los scripts de proceso definen los pasos de cada parte
del proceso, los logs y formularios proveen templates
para registrar y almacenar datos, y los standards guían a
los desarrolladores a mientras hacen el trabajo.
• En otras palabras, PSP es un proceso que está diseñado
para ser utilizado.
Calidad en el Desarrollo
de Software
Estructura de PSP
• Está construido en un formato simple de utilizar
con instrucciones simples y precisas. Si bien los
scripts describen qué hacer, en realidad se
parecen más a checklists que a tutoriales.
• Estos no incluyen los materiales instructivos que
serían necesarios para usuarios no entrenados.
El propósito de los scripts es el de guiar a los
desarrolladores en el uso consistente de los
procesos, los cuales ellos conocen (mediante la
asistencia a cursos de capacitación en PSP o a
través de bibliografía introductoria en el uso de
PSP).
Calidad en el Desarrollo
de Software
PSP 2
Revisión del código Calidad Personal
Revisión del diseño
PSP 1
Estimación del Tamaño
Planificación Personal
Informe de pruebas
PSP 2.1
Administración de PSP 2 Formatos de Diseño
Calidad Personal Revisión de Código
Revisión de Diseño
PSP 1.1
PSP 1 Planeación de tareas
Proceso de Estimación de tamaño
Planeación Planeación de tiempos de
Reporte de pruebas actividades
Personal
Estándar de tipos de defectos
PSP 0.1
Proceso de PSP 0 Estándar de Codificación
Medición Proceso actual Medición de Tamaño
Personal Registro de tiempo Propuesta de mejora del proceso
Registro de defectos
Estándar de tipos de defectos
II.I.I. PSP0
El punto de partida de PSP Calidad en el Desarrollo
de Software
Calidad en el Desarrollo
de Software
II.I.I. PSP0
El punto de partida de PSP
• PSP0 es un proceso sencillo, definido y personal.
• Utiliza tus métodos actuales de diseño y
desarrollo.
• Recoge datos sobre tu trabajo:
▫ tiempo gastado por fase
▫ defectos encontrados en compilación y pruebas
• Proporciona un informe resumen.
Calidad en el Desarrollo
de Software
II.I.I. PSP0
El punto de partida de PSP
• El paso inicial en PSP consiste en establecer una
base que incluya mediciones y un formato de
reportes. Esto permite medir el progreso y
define los cimientos para mejorar.
Esencialmente, PSP0 es el proceso habitual con
el que los desarrolladores escriben software,
mejorado para proveer mediciones.
Calidad en el Desarrollo
de Software
II.II. PSP1
• PSP1 Planeación personal
• PSP1 le agrega pasos de planeamiento a PSP0. El
primer paso agrega estimaciones de tamaño y
recursos y un reporte de prueba.
• En PSP1.1 se introduce planeamiento de
cronograma y seguimiento del proyecto. Los
desarrolladores son enseñados a:
Calidad en el Desarrollo
de Software
II.II. PSP1
• Entender la relación entre el tamaño de los programas
que escriben y el tiempo que les toma desarrollarlos.
• Aprender a realizar compromisos que puedan cumplir.
• Preparar un plan ordenado para realizar su trabajo
• Establecer una base para realizar un seguimiento de su
trabajo.
II.III. PSP2
• Un objetivo de PSP es ayudar a los
desarrolladores a lidiar de manera realista y
objetiva con los defectos que introducen. Los
programadores por lo general se avergüenzan de
sus errores. El hecho de que la mayoría de los
errores sean tipográficos o errores tontos hace
que los desarrolladores sientan que pueden
mejorar haciendo más esfuerzo.
Calidad en el Desarrollo
de Software
II.III. PSP2
• El problema es que hacer más esfuerzo por lo
general hace que las cosas empeoren; las claves,
como en otras actividades, son las habilidades
inherentes y las capacidades.
• En PSP2 se enfoca en mejorar la habilidad del
desarrollador para producir programas de calidad.
• La idea es hacer al trabajo de calidad más natural y
consistente. Mejoras significativas en la frecuencia
de defectos de los desarrolladores no son posibles a
menos que conozcan cuantos errores cometen y que
comprendan sus causas y consecuencias.
Calidad en el Desarrollo
de Software
II.III. PSP2
• PSP2 agrega diseño personal y revisiones de
código a PSP1. Estas revisiones ayudan a
encontrar defectos de manera temprana y a ver
los beneficios que esto proporciona. Los
desarrolladores analizan los defectos que
encuentran en los primeros programas y usan
estos datos para establecer checklists de revisión
que estén hechos a medida de su experiencia de
defectos personales.
Calidad en el Desarrollo
de Software
II.III. PSP2
• El proceso de diseño es contemplado en PSP2.1.
El objetivo no es decirle a los desarrolladores
como diseñar sino orientar el criterio para la
finalización del diseño, es decir, cuando han
terminado que es lo que deben haber obtenido.
Se establece un criterio de completitud de diseño
y se examinan varias técnicas de verificación y
consistencia de diseño.
II.IV. PSP3
Proceso Personal Ciclico Calidad en el Desarrollo
de Software
Calidad en el Desarrollo
de Software
II.IV. PSP3
• Hasta este punto PSP se concentró en el proceso
lineal para construcción de pequeños
programas. PSP3 presenta métodos para ser
usados por individuos en la realización de
programas de gran escala. De todas formas sigue
enfocado en el individuo y no trata los
problemas de comunicación y coordinación que
son una parte importante del desarrollo de
sistemas de gran escala.
Calidad en el Desarrollo
de Software
II.IV. PSP3
• Para escalar PSP2 a proyectos más grandes la
estrategia consiste en subdividir el proceso
personal de desarrollo de grandes programas en
elementos en la escala de PSP2. Estos programas
son entonces diseñados para ser desarrollados
en pasos incrementales. La primera
construcción consiste en un módulo base o
kernel que es ampliado en ciclos iterativos. En
cada iteración se utiliza un PSP2 completo,
incluyendo diseño, codificación, compilación y
pruebas.
Calidad en el Desarrollo
de Software
. Diseño detallado
Diseño de . Y
Alto nivel . Repaso del diseño
Implementación
Desarrollo
Y Repaso del código
Cíclico
Compilación
Postmortem
Pruebas
Integración
Pruebas del sistema
. Valorar de nuevo
Uso
. Y Reciclar
.
Producto
Calidad en el Desarrollo
de Software
II.IV. PSP3
• El proceso cíclico PSP3 puede ser un elemento efectivo
en un proceso de desarrollo de gran escala solo si cada
incremento sucesivo de software es de alta calidad.
• De esta manera los desarrolladores pueden concentrarse
en la verificación de la calidad del último incremento sin
preocuparse por defectos en ciclos anteriores.
• Si un incremento anterior tiene muchos defectos, la
prueba será más compleja y los beneficios de escalar PSP
se pierden. Esta es una razón para enfatizar revisiones de
diseño y código en los pasos anteriores de PSP.
Calidad en el Desarrollo
de Software
Planeación en PSP
• ¿Por qué hacer planes?
• Te permiten llegar a acuerdos que tu puedas
cumplir
• Proporcionar las bases para acuerdo en tu
trabajo
• Guía tu trabajo
• Te ayuda a seguir tu progreso
• Terminación del proyecto
Calidad en el Desarrollo
de Software
Planeación PSP
• La primera tarea consiste en definir los requerimientos,
describiendo el trabajo a realizar en el mayor detalle posible.
• Como la etapa de planificación es demasiado temprana como para
hacer un diseño completo del producto, los desarrolladores realizan
un diseño conceptual, mediante el cual se obtiene un primer
acercamiento de cómo debe basarse el producto a ser construido en
la etapa de desarrollo.
• La siguiente tarea consiste en la estimación de tamaño y de
esfuerzo.
• La correlación entre el tamaño de un programa y tiempo de
desarrollo es moderadamente buena para equipos de desarrollo; sin
embargo, para un solo desarrollador, la correlación es generalmente
un poco mayor. Los desarrolladores realizan las estimaciones
utilizando datos históricos personales de tamaño y productividad.
En PSP, las estimaciones se efectúan mediante el método PROBE
(PROxy Based Estimating).
Calidad en el Desarrollo
de Software
Planeación PSP
Necesidad Define los
del usuario requerimientos Tareas
Método PROBE
Recursos
Producir
disponibles
Gestión
Calendario
Planeación PSP
• Una vez que los desarrolladores conocen el tiempo requerido para
cada proceso, deben estimar el tiempo que van a dedicar al trabajo
cada día de la semana, conformando entonces el calendario.
• Luego, durante la etapa de desarrollo del producto, los
desarrolladores efectúan el diseño detallado, la implementación y
las pruebas.
• Después de completar el trabajo, los desarrolladores realizan un
análisis postmortem, en el cual se actualiza el sumario del plan
con los datos reales de tiempos invertidos en cada etapa del
desarrollo, defectos encontrados y removidos, etc, y se comparan los
resultados obtenidos con lo planeado.
• Finalmente, los desarrolladores registran toda esta información en
sus bases de datos históricas de tamaño y productividad. Además se
examinan las Propuestas de Mejoras (PIP) para hacer ajustes en los
procesos.
Calidad en el Desarrollo
de Software
Planeación PSP
• La Medición del trabajo personal es el primer paso por el
que comienza el PSP. Es este primer paso los ingenieros
deben aprender como aplicar los formularios del PSP y
apuntar datos de su trabajo personal. Para hacer todo
esto se mide el desarrollo del tiempo y de los defectos.
Esto hace que los ingenieros recojan datos reales y
prácticos y les proporciona una serie de marcar con las
cuales ir midiendo el proceso.
• Para realizar un trabajo con PSP se debe empezar por el
primer paso de medición personal que incluye la gestión
del tiempo y el siguiente rastreo del mismo.
Calidad en el Desarrollo
de Software
Recolección de datos
• En PSP, los desarrolladores utilizan información para
monitorear su trabajo, la cual los ayuda a hacer mejores
planes. Para esto, deben recolectar datos de los tiempos que
dedican a cada fase del proceso, de los tamaños de los
productos que producen, y de la calidad de esos productos.
• Las medidas básicas de PSP son el tiempo que el ingeniero
utiliza en cada fase del proceso, los defectos introducidos y
encontrados en cada fase, y los tamaños de los productos
desarrollados en líneas de código (LOC).
• Estos datos se recopilan en cada fase del proceso y se
resumen a la terminación del proyecto. Todos estos datos se
utilizan para proporcionar una familia de medidas de
calidad de procesos que los ingenieros usan como guía en su
trabajo.
Calidad en el Desarrollo
de Software
Recolección de datos
Las principales medidas son:
• Tamaño tiempo de estimación de errores
• Coste de realización
• Defectos producidos y corregidos por hora
• Producción del proceso
• Valoración y calidad del coste de los fallos
(COQ)
• Valoración del rango de fallos (A/FR)
Calidad en el Desarrollo
de Software
Por ejemplo
Fecha Inicio Fin Tiempo de Tiempo Actividad Comentarios
Interrupción Delta
9/9 9:00 9:50 50 Planeación
12:40 1:18 38 Diseño
2:45 3:53 10 58 Diseño Teléfono
6:25 7:45 80 Codificació
n
10/9 11:06 12:19 6+5 62 Codificació Baño, tomé café
n
11/9 9:00 9:50 50 Codificació
n
1:15 2:35 3+8 69 Compilació Consulta de un libro
n
4:18 5:11 25 28 Prueba Reunión con mi jefe
12/9 6:42 9:04 10+6+12 114 Prueba Teléfono, Baño, Teléfono
13/9 9:00 9:50 50 Prueba
12:33 1:16 38 Postmortem
Calidad en el Desarrollo
de Software
Manejo de Interrupciones
• Uno de los problemas que se presenta a la hora de
gestionar el tiempo son las interrupciones. Es muy
normal que nos interrumpan por llamadas de teléfono,
gente que viene a hablar con nosotros, o tenemos que
parar porque necesitan nuestra ayuda.
• Cuando se producen estos casos se almacena este tiempo
en el Registro de Almacenamiento de Tiempo
anotándolo en la columna Tiempo de Interrupción.
Durante este periodo no solo se anota el tiempo de la
interrupción sino también porqué se ha producido en la
columna de Comentarios.
Calidad en el Desarrollo
de Software
Manejo de Interrupciones
• Puesto que el tiempo de interrupción no es un tiempo
productivo para el trabajo, se debe llevar un registro de
las interrupciones. El tiempo de las interrupciones suele
ser variable, por lo tanto si no se mide, se debería añadir
un número aleatorio para todos los datos de tiempo.
• Estos datos de tiempo pueden ser útiles para
comprender mejor como es interrumpido el trabajo, ya
que las interrupciones no solo gastan tiempo, sino que
rompen la forma de trabajo y pueden provocar que se
produzcan errores. Conocer como son las interrupciones
podría ayudar a realizar un trabajo más eficaz y de más
calidad.
Calidad en el Desarrollo
de Software
Tamaño
• El tiempo en desarrollar un producto se encuentra
altamente determinado por el tamaño del mismo. En
PSP, los desarrolladores primero estiman el tamaño de
los productos que planean desarrollar. Luego, al finalizar
el producto, se mide el tamaño real obtenido.
• Esta información permite a los desarrolladores realizar a
futuro una estimación de tamaños más precisa. Sin
embargo, para que esta información sea útil, el tamaño
de las mediciones debe corresponderse con el tiempo de
desarrollo del producto. En PSP, el tamaño se mide en
Líneas de Código (LOC).
• Para realizar un seguimiento de la variación del tamaño
de un programa durante el desarrollo, se deben
considerar varias categorías de LOC.
Calidad en el Desarrollo
de Software
Tamaño
Estas son:
• Base (son los LOC iniciales del producto original)
• Agregadas (es el código agregado a un programa base
existente)
• Modificadas (es el código base que es modificado en un
programa existente)
• Eliminadas (es el código base que es eliminado de un
programa existente)
• Reutilización (es el código tomado de una librería u
utilizado, sin realizar ninguna modificación, en un nuevo
programa)
• Nueva Reutilización (esta medida cuenta los LOC que se
agregan a una librería)
• Total (es tamaño total del programa, independientemente del
código fuente).
Calidad en el Desarrollo
de Software
Tamaño
• Luego, para medir el tamaño total de un
producto, el cálculo es el siguiente:
• Total LOC = Base – Eliminadas + Agregadas +
Reutilización
• Las LOC modificadas y de “nueva reutilización”
no son incluidas en el total; esto se debe a que
las LOC modificadas pueden representarse por
LOC eliminadas y agregadas, y las LOC de
“nuevo reutilización” ya se encuentran
contabilizadas en las LOC agregadas.
Calidad en el Desarrollo
de Software
Mediciones de Tiempo
• Los desarrolladores utilizan el log de registro de tiempo
para medir el tiempo que dedican a cada fase del
proceso. En este log se anota la hora en que empezaron a
trabajar en una tarea, la hora en que terminaron una
tarea, y cualquier hora en que efectuaron una
interrupción y/o retomaron una tarea. Por ejemplo, una
interrupción podría ser una llamada telefónica, un
descanso, o alguien interrumpiendo para hacer una
pregunta. Tomando estos tiempos en forma precisa, los
desarrolladores pueden conocer el esfuerzo que
realmente se dedica a las tareas del proyecto. Debido a
que los tiempos de interrupciones son esencialmente al
azar, ignorar estos tiempos sería introducir un error de
gran tamaño en la información de tiempos que reduciría
la exactitud de las estimaciones.
Calidad en el Desarrollo
de Software
Conclusiones
• Conociendo los principios y las características de la
metodología de PSP, conformada por los procesos de
planificación, estimación de tamaño y esfuerzo,
recolección de datos, manejo de calidad y
especificaciones de diseño, se plantea la posibilidad de
incorporar esta metodología al contexto de una
empresa pequeña, o grupo de desarrollo de software
pequeño analizando los factores operativos,
económicos y los riesgos a los que se expone
• Una vez implementada esta metodología en el
ambiente de trabajo, un siguiente paso consiste en
enfocarse en la mejora de la eficiencia y de la dinámica
de trabajo a nivel de equipos de desarrollo, mediante el
método conocido como TSP (Team Software Process).