Introducción al Personal Software Process (PSP) - UT-AGS

Anuncio
Introducción al Personal Software Process
(PSP)
El Personal Software Process ayuda a los desarrolladores de software a
mejorar su funcionamiento disciplinando la manera en que desarrollan
software. De acuerdo con las prácticas encontradas en el modelo de la
madurez de la capacidad integrado (CMMI), el PSP puede ser utilizado como
guía a un acercamiento disciplinado y estructurado para el desarrollo de
software.
El PSP se puede aplicar a muchas partes del proceso del desarrollo del
software, incluyendo el análisis, definición de requerimientos, desarrollo del
programa, documentación, las pruebas del sistema, y mantenimiento.
PSP es un proceso de software diseñado para ser utilizado por un
Desarrollador de Software. Fue desarrollado por Watts Humphrey y se
describe en su libro “A discipline for Software Engineering”. Es utilizado
para guiar el planeamiento y desarrollo de módulos de software o pequeños
programas, pero es adaptable a otras tareas personales.
Como CMMI, PSP está basado en principios de mejoramiento de procesos,
pero mientras que CMMI está enfocado en mejorar las capacidades
organizacionales, PSP está puesto en el desarrollo individual. Para fomentar
el mejoramiento en el nivel personal, PSP se extiende a la administración y
control de procesos del desarrollador. Utilizando PSP los desarrolladores
producen software usando un enfoque estructurado y disciplinado. Siguen un
proceso definido, planifican, miden, supervisan su trabajo, administran la
calidad de los productos y aplican un feedback cuantitativo para mejorar sus
procesos personales de trabajo, llevando así a





mejores estimaciones
mejor planificación y seguimiento
protección contra compromisos que nunca se cumplen
un compromiso personal hacia la calidad
involucrarse en un proceso de mejoramiento continuo
PSP se está utilizando en un gran número de universidades y en algunas
organizaciones industriales. Podemos decir que PSP es efectivo para la
planificación de los trabajos de los ingenieros y para la calidad de los
productos que se realizan, ya que ayuda a que los ingenieros aprendan a usar
datos y técnicas de análisis para determinar su propia realización del trabajo,
y medir así la efectividad de los métodos que se usan. El proceso de PSP
tiene la siguiente evolución:
PSP 3
Desarrollo Cíclico
PSP 2
Revisión del código
Revisión del diseño
PSP 1
Estimación del
Tamaño
Informe de pruebas
PSP 0
Proceso
Figura 2.1 Evolución del PSP
Las fases que se necesitan para llevar a cabo un trabajo utilizando PSP son:




Medición Personal (PSP0)
Planificación Personal (PSP1)
Calidad Personal (PSP2)
Proceso Personal Cíclico (PSP3)
2.1.1 Los principios del PSP
El diseño de PSP se basa en los principios siguientes del planeamiento y de
la calidad:

Cada ingeniero es diferente; los ingenieros deben planear su trabajo y
deben basar sus planes en sus propios datos personales.

Para mejorar constantemente su funcionamiento, los ingenieros deben
utilizar personalmente procesos bien definidos y medidos.

Para producir productos de calidad, los ingenieros deben sentirse
personalmente responsables de la calidad de sus productos. Los
productos superiores no son producidos por error; los ingenieros deben
esforzarse hacer el trabajo de la calidad.

Cuesta menos al hallazgo y el arreglo deserta anterior en un proceso
que más adelante.

Es más eficiente prevenir defectos que encontrarlos y fijar.

La manera derecha es siempre la manera más rápida y más barata de
hacer un trabajo.
Para hacer software de la manera correcta, los desarrolladores deben
planificar sus trabajos antes de comprometerse a comenzar una tarea,
utilizando un proceso definido de planificación de trabajos. Para comprender
su rendimiento personal, deben medir el tiempo que pasan en cada paso de la
tarea, los defectos que agregan y remueven, y los tamaños de los productos
que producen. Para producir consistentemente productos de calidad, los
desarrolladores deben planificar, medir, y realizar un seguimiento de la
calidad del producto, y deben enfocarse en la calidad desde el comienzo de
la tarea. Finalmente, deben analizar los resultados obtenidos de cada tarea y
utilizar esos datos para mejorar sus procesos personales.
2.2.1 Los 7 pasos del PSP
2.2.1.1 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. Se pasa a PSP0.1 agregando un estándar de código, mediciones
de tamaño y el denominado PIP (Process Improvement Proposal). El PIP
provee una manera estructurada de registrar problemas, experiencias y
sugerencias para mejorar. PSP0.1 también mejora las mediciones para contar
separadamente métodos y procedimientos.
PSP 3
Proceso
Personal
Cíclico
Administración
de Calidad
Personal
Desarrollo Cíclico
Revisión de Código
Revisión de Diseño
Proceso de
Medición
Personal
Estimación de tamaño
Reporte de pruebas
PSP 0
Proceso actual
Registro de tiempo
Registro de defectos
Estándar de tipos de defectos
Formatos de Diseño
PSP 1.1
PSP 1
Proceso de
Planeación
Personal
PSP 2.1
PSP 2
Planeación de tareas
Planeación de tiempos de
actividades
Estándar de tipos de
PSP 0.1
Estándar de Codificación
Medición de Tamaño
Propuesta de mejora del
proceso
Figura 2.2 Evolución detallada del PSP
2.2.1.2 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:

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.
Mientras que la importancia de estas técnicas en proyectos grandes es
comprendida, pocos desarrolladores las aplican a su trabajo personal. PSP
demuestra el valor de estos métodos en el nivel personal.
2.2.1.3 PSP2 Administración de Calidad Personal
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. 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.
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.
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.
2.2.1.4 PSP3 Proceso Personal Cíclico
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. 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.
Especificaciones
Requerimientos
Y
Planificación
Diseño de
Alto nivel
Ciclo específico
.
.
.
Diseño detallado
Y
Repaso del diseño
Desarrollo de las pruebas
Y repaso
Repaso al Diseño
De
Alto nivel
Implementación
Y Repaso del código
Desarrollo
Cíclico
Compilación
Postmortem
Pruebas
Integración
Pruebas del sistema
Uso
.
.
.
Valorar de nuevo
Y Reciclar
Producto
Fig. 2.3 Proceso cíclico de 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.
Descargar