Introducción al Software Process (PSP) El 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 PSP 0 Proceso Figura 21 Evolución del PSP Las fases que se necesitan para llevar a cabo un trabajo utilizando PSP son: Medición (PSP0) Planificación (PSP1) Calidad (PSP2) Proceso Cíclico (PSP3) 211 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 221 Los 7 pasos del PSP 2211 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 PSP01 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 PSP01 también mejora las mediciones para contar separadamente métodos y procedimientos Proceso Cíclico PSP 3 Desarrollo Cíclico Administración de Calidad PSP 2 Revisión de Código Revisión de Diseño PSP 21 Formatos de Diseño Proceso de Planeación PSP 1 Estimación de tamaño Reporte de pruebas PSP 11 Planeación de tareas Planeación de tiempos de actividades Estándar de tipos de Proceso de Medición PSP 0 Proceso actual Registro de tiempo Registro de defectos Estándar de tipos de defectos PSP 01 Estándar de Codificación Medición de Tamaño Propuesta de mejora del proceso 2212 PSP1 Planeación personal Figura 22 Evolución detallada del PSP PSP1 le agrega pasos de planeamiento a PSP0 El primer paso agrega estimaciones de tamaño y recursos y un reporte de prueba En PSP11 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
2213 PSP2 Administración de Calidad 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 PSP21 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 2214 PSP3 Proceso 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 Repaso al Diseño De Alto nivel Desarrollo de las pruebas Y repaso Desarrollo Cíclico Implementación Y Repaso del código Postmortem Compilación Pruebas Integración Pruebas del sistema Uso Producto Valorar de nuevo Y Reciclar Fig 23 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