Personal Software Process (PSP)

PSP representa una metodología o un marco de trabajo desarrollado en 1993 por Watts S. Humphrey. Lo importante al construir software es tener un proceso disciplinado para llevar a cabo el desarrollo e implementar mejoras para lograr resultados de calidad. Enfocada principalmente en el rol del programador, ayuda a que este ponga atención en aspectos de planeación, diseño, estándares y revisiones al detalle de lo que va realizando, registrando todo aquello en formas o plantillas que han sido diseñadas por Humphrey.La metodología maneja un conjunto de scripts que especifican los requerimientos de entrada, el proceso que debe de seguirse y los resultados esperados,todo esto enfocado a cada fase de la metodología (ver figura 1).



Esta metodología esta apoyada por una herramienta computacional desarrollada por el Instituto de Carnegie Mellon, que genera una serie de registros con información valiosa para llevar a cabo la siguiente planeación
y para actualizar el plan al terminar cada programa de software.

Cuando se termina el curso de PSP y se empieza a realizar su primer proyecto siguiendo la nueva metodología, uno mismo se da cuenta del tiempo que a veces invierte incorrectamente cuando quiere dirigirse directamente a codificar el programa, en lugar de haber realizado un análisis y un diseño general de la solución. Al ir avanzando en el desarrollo de los diferentes proyectos uno se acostumbra a definir cuántas líneas de código se programan, esto basado en un diseño conceptual y en aquel código que uno ha desarrollado, cuántas líneas pueden servir como base, que tanto código podemos reutilizar e incluso cuantas líneas modificarás o borrarás del código base que se usará. Lo importante es que toda esta información se registra y uno puede planear con más exactitud tamaños y tiempo relacionados al desarrollo de su programa.

Cuando codificamos directamente utilizando un IDE (Medio ambiente de desarrollo integrado) estamos de una u otra forma tratando de quitar errores de sintaxis a través de la compilación, sin considerar que la mayor cantidad de errores serán por lógica y que muchas de las veces estamos depurándolos hasta la fase de prueba, cuando estos errores deberían de ser descubiertos si revisáramos a consciencia el diseño realizado. Lo que realmente se espera es que el tiempo en hacer las pruebas sea solo el tiempo que le tome en capturar los datos para cada caso de prueba y que los resultados esperados sean realmente igual a los resultados obtenidos. Quizás en muy pocas ocasiones esto no suceda.

La revisión incorporada en la metodología implica la realización de un documento completo del diseño definiendo la parte operacional, lógica, de estados y funcional; asimismo será importante checar el
cumplimiento de estándares tanto en el diseño como en la construcción y revisar este código generado no usando el compilador, sino de forma manual para encontrar la mayor cantidad de errores antes de la primera compilación, siendo los errores de lógica verificados con tablas de rastreo o tablas de ejecución, entre otras.

Tu productividad mejorará, los defectos antes cometidos serán minimizados o eliminados esto debido a su registro constante, tus estimaciones serán más certeras pudiendo cumplir con las fechas prometidas al líder de proyecto.

No está por demás mencionar que es importante que quien esté desarrollando y vaya a aplicar la metodología debe dominar el lenguaje de programación. Creo que esta es un área de oportunidad para
aquellos que enseñamos a programar pues el inculcar desde los primeros semestres aspectos valiosos de esta metodología es fundamental para que al llegar al final de una carrera se evite programar con vicios o errores graves.

Referencias:
[Humphrey, Watts. “PSP,A Self Improvement Process For Software Engineers”]
[sei.cmu.edu/certification/psp.html]

Acerca del Autor
Ing. Ma. del Consuelo Jiménez Fernández, profesor asociado de la Universidad de Monterrey en el Departamento de Ciencias Computacionales desde hace 22 años, certificada en PSP developer y PSP Instructor por el SEI of Carnegie Mellon University, con maestria en informática administrativa, especialista en desarrollo de software educativo, calidad de software y metodologías de desarrollo de software.