PROCESO PERSONAL DE SOFTWARE EN LA FORMACION DEL PROFESIONAL INFORMATICO MSc. Dario E. Soto Duran Tecnológico de Antioquia Calle 78B No. 72A – 220, Medellín, Colombia Tel.: (034) 4547039 E-mail: dsoto@tdea.edu.co MSc. Adriana X. Reyes Gamboa Politécnico Colombiano Jaime Isaza Cadavid Carrera 48 N° 7-151, Medellín, Colombia Tel.: (034) 3197900 Ext. 445 E-mail: axreyes@elpoli.edu.co RESUMEN Existe en los estudiantes de programas informáticos un desconocimiento en la gestión del tiempo, la planificación y la gestión de la calidad en los proyectos de desarrollo de software, y esto se puede evitar si se aplica el Proceso de Software Personal (PSP) el cual contribuye a alcanzar disciplina en el trabajo individual. Este artículo propone un conjunto de consideraciones para introducir las prácticas de PSP, de forma paulatina e incremental en la formación del profesional en la universidad; con el objetivo de crear las bases para introducir métodos disciplinados de trabajo en equipo y cumplir con los requerimientos de la industria. Se plantean algunas estrategias para su implementación en el ámbito de la Universidad desde el área de conocimiento de la algoritmia y la programación. Palabras claves: PSP, Ingeniería de Software, Proceso, Calidad y Gestión. 1. INTRODUCION El software se ha convertido en un tema relevante en la sociedad mundial. Todos parecen necesitar mejores software en menos tiempo y a menor costo, los programas se vuelven cada vez más complejos en todos los aspectos del ciclo de vida del software. Los métodos intuitivos de desarrollo de software que se usan actualmente son, básicamente, aquellos que los propios individuos artesanalmente siguen, los cuales sólo servirán mientras la sociedad pueda tolerar la falta de predicción que ellos acarrean. Por tal motivo el desarrollo de software debe ser un proceso definido, repetible, en lugar de una actividad ad hoc reinventada para cada nuevo proyecto. El ciclo de vida es algo que tiene en común cada software que se desarrolla y es algo por lo que inevitablemente deben de pasar [1]. El software desarrollado o que se desarrollará tiene normalmente el siguiente ciclo de vida: Análisis de requerimientos, Diseño, Programación, Pruebas, Implantación, Operación. En algunas metodologías y procedimientos este ciclo de vida llega a sufrir algunos cambios, sin embargo en esencia ha sido, sigue y seguirá siendo lo mismo. Los programadores deben de tener en cuenta que este ciclo de vida requiere de un control absoluto en cada paso que se dé. Sin embargo la cultura de desarrollo de software en nuestro país no está consciente de este aspecto. En la actualidad muchos programadores tienen la idea errónea de que llevar un registro representa una pérdida de tiempo muy grande y que por lo tanto es innecesario realizar esta tarea. Ha llegado a observarse que cuando se desarrollan programas pequeños y que no se lleva un registro, se resuelven de manera más rápida que si se llevara éste. Sin embargo, puede que exista una mayor rapidez de desarrollo pero la calidad resulta ser menor así como la eficiencia y eficacia del programa desarrollado. Por lo tanto no cubre con los máximos requerimientos del ciclo de vida. También es cierto que el próximo programa que se desarrolle no contará con una estimación de todos los parámetros que se involucran en la primera etapa de desarrollo. Esto permite deducir que es mejor desarrollar programas con una metodología o un modelo bien definido, y así incrementar la calidad en la construcción de productos de software, implementando la aplicación de mejores prácticas a nivel individual, como la metodología PSP que se deriva del Modelo de capacidad y madurez, ambos desarrollados por Watts S. Humphrey en el Instituto de Ingeniería del Software SEI. Partiendo de la necesidad de entregar productos de software con alto nivel de calidad, es evidente garantizar que los procesos que conlleva a estos desarrollos deben surgir de un proceso maduro a nivel personal como es la planificación, y ejecución de acuerdo con dicho plan. Los resultados serán productos de alta calidad ajustados a un presupuesto y a unos plazos. Para lograr este objetivo es necesario articular la educación tecnológica y profesional con estándares reconocidos a nivel mundial, para de esta forma lograr consolidar una cultura de calidad en los procesos asociados al desarrollo del software. En la mayoría de las profesiones el trabajo competente requiere el uso de prácticas establecidas, planes y procedimientos que traen orden y eficiencia a cualquier trabajo y permite a los trabajadores concentrarse en producir productos de la más alta calidad. 2. PSP: PROCESO PERSONAL DE SOFTWARE El proceso personal de software (PSP, Personal Software Process) es un proceso de auto mejoramiento diseñado para ayudar a controlar, administrar y mejorar la forma en que se trabaja individualmente. Está estructurado por formularios, guías y procedimientos para desarrollar software. Si es usado apropiadamente, brinda los datos históricos necesarios para trabajar mejor y lograr que los elementos rutinarios del trabajo sean más predecibles y eficientes [2].La disciplina del PSP provee un marco estructurado para desarrollar habilidades personales y métodos que se necesitarán más adelante para ir forjando al profesional informático. Es importante que la calidad del software desarrollado abarque hasta el más mínimo detalle, por muy pequeño que éste sea, ya que si no se hace así, puede dañar el sistema entero. El Proceso Personal de Software, PSP, indica a los profesionales de software cómo: • Administrar la calidad de los proyectos de desarrollo de software. • Reducir defectos en los productos. • Estimar y planear el trabajo. PSP, fue diseñado para ayudar al profesional informático a hacer bien el trabajo, aplicar métodos avanzados de ingeniería en su labor diaria, a utilizar métodos detallados de planificación y estimación y controlar rendimientos frente a los tiempos planeados[3]. PSP es disciplina del trabajo con alta calidad. El trabajo del profesional informático según PSP, se puede resumir en planificar el trabajo, hacer el trabajo de acuerdo al plan y producir productos de calidad. Principios de PSP El diseño de PSP se basa en los siguientes principios de planeación y de calidad. [4] • • • Cada ingeniero es esencialmente diferente; para ser más precisos, los ingenieros deben planear su trabajo y basar sus planes en sus propios datos personales. Para mejorar constantemente su funcionamiento, los ingenieros deben utilizar personalmente procesos bien definidos y medidos. Para desarrollar productos de calidad, los ingenieros deben sentirse personalmente comprometidos con la calidad de sus productos. • • • Cuesta menos encontrar y arreglar errores en la etapa inicial del proyecto que encontrarlos en las etapas subsecuentes. Es más eficiente prevenir defectos que encontrarlos y arreglarlos. La manera correcta de hacer las cosas es siempre la manera más rápida y más barata de hacer un trabajo. Para hacer un trabajo de ingeniería de software de la manera correcta, los ingenieros deben planear de la mejor manera su trabajo antes de comenzarlo y deben utilizar un proceso bien definido para realizar la planeación del trabajo. Para que los desarrolladores lleguen a entender su funcionamiento de manera personal, deben medir el tiempo que pasan en cada proceso, los defectos que inyectan y remueven de cada proyecto y finalmente medir los diferentes tamaños de los productos que llegan a producir. Para producir constantemente productos de calidad, los ingenieros deben planear, medir y rastrear constantemente la calidad del producto y deben centrarse en la calidad desde el principio de un trabajo. Finalmente, deben analizar los resultados de cada trabajo y utilizar estos resultados para mejorar sus procesos personales. Niveles de PSP PSP tiene un marco de proceso de evolución similar al que tiene CMMI. El Instituto de Ingeniería del Software (SEI) ha desarrollado el Proceso Personal del Software para definir y reparar la holgura que existe entre el modelo CMMI y el individuo. Por lo tanto, es ideal utilizarlo junto con CMMI, pero no es obligatorio, ya que es un proceso y no un modelo como lo es CMMI. [5] Para desarrollar software con calidad, cada componente individual también debe contar con procesos definidos de calidad. La estrategia total de PSP es cerciorarse de que todos los componentes individuales se desarrollen con calidad. PSP logra esto proporcionando un marco de proceso personal ya definido, que el programador puede utilizar. Este marco es: • Desarrollar un plan para cada proyecto y/o componente. • Registrar su tiempo de desarrollo. • Registrar sus defectos • Conservar sus datos en informes del proyecto • Utilizar sus datos para planear los proyectos y/o los componentes futuros. • Analizar sus datos para desarrollar sus procesos con más calidad para mejorar su desempeño. En la figura 1 se muestra un diagrama que contiene todos los niveles de PSP. Asimismo, se muestra que cada nivel cuenta con sus propios requerimientos pertenecientes únicamente a PSP. A nivel académico, la conducta del educando frente al proceso de software debe ser producto de una planificación madura, que permita el cumplimiento de compromisos inicialmente en el ámbito educativo, pero que trasciendan al plano laboral, como un hábito permanente dentro del quehacer profesional. 4. COMO IMPLEMENTAR PSP EN EL PROCESO DE FORMACION PSP hace uso de un gran número de formatos los cuales son muy útiles para que se haga un análisis a fondo del programa que se desarrollará. Todo programa se desarrolla siguiendo una serie de pasos definidos para ir cumpliendo con los requerimientos del cliente de manera uniforme y disciplinada [7]. Para ir cumpliendo con estos pasos es necesario tener en cuenta lo siguiente: FIGURA 1 Evolución en el proceso personal de software (Humphrey 2000) • 3. IMPACTO DE PSP EN EL CONTEXTO EMPRESARIAL Y ACADEMICO • • • En la actualidad, las instituciones de educación superior de nuestro país y especialmente en nuestra región, ofrecen al mercado, egresados con actitudes y aptitudes para desempeñarse en diversos campos de la Informática, con tendencias principalmente en el desarrollo de Software, pero a la vez, con grandes deficiencias para enfrentar una globalización, a nivel de la metodología adecuada para implementar la construcción de productos de software que cumplan con niveles de calidad aceptables. Por esta razón, las empresas que ofrecen soluciones informáticas consideran que los mayores problemas que afectan el crecimiento del sector es la falta de aplicación de estándares de calidad que autoregulen los procesos asociados con el desarrollo de software [6]. Partiendo de este planteamiento, es pertinente centrarnos en una metodología que impacte a nivel individual y permita crear una conciencia en la necesidad de adoptar otras metodologías a nivel grupal y corporativo. Siendo coherentes con las necesidades del sector productivo y académico, la metodología PSP surge como objeto de estudio, porque crea en el individuo un trabajo disciplinado y tiene mecanismos que permiten medir la efectividad del trabajo e identificar las debilidades y fortalezas del proceso, como también adquirir habilidades y métodos que aseguren la calidad en el producto. Este trabajo disciplinado que ofrece la metodología se convierte en un plus para la internacionalización del sector, garantizando que el talento humano que construye soluciones informáticas tiene una fundamentación enfocada en la optimización de los recursos y procesos que implican la construcción de productos de software. • • Determinar de qué forma se va a resolver el programa. Decidir cómo se va a "atacar" el problema. Resolverlo. Estar seguro de que se solucionó de la forma correcta. Arreglar los problemas que se han encontrado. Entregar el resultado final. Está claro que éstos pasos toman mucho tiempo, sin embargo cuando está bien definido lo que se va a hacer, sólo resta diligenciar los formatos hasta obtener el resultado deseado. Está comprobado que procesos automatizados ayudan a resolver el problema de la manera más simple y fácil. Pero el problema central reside en la cultura que se ha formado en los profesionales informáticos de no seguir procesos automatizados, por este motivo es que se hace necesario atacar este problema desde su raíz y esto se busca con la implementación de la metodología PSP, los métodos de calidad lleva tiempo aprenderlos y practicarlos, pero ayudaran al educando durante su carrera a mejorar consistentemente la calidad del desarrollo. El objetivo primordial es la ejercitación y el desarrollo, por parte de los estudiantes, de los roles, habilidades y funciones que deberán desplegar en su vida como profesional de la informática. Es por ello que el acercamiento a las técnicas de PSP se debe realizar de forma vivencial en las diferentes asignaturas que cursan en su formación, incrementando en complejidad de forma paralela a la experiencia y conocimiento adquiridos por cada uno de ellos. Cuando el estudiante inicia su formación se busca que identifique las diferentes fases del proceso las cuales son planeación, desarrollo y post-proceso, al igual que vaya incorporando en su conducta y trabajo diario el control del tiempo, no solo de trabajos de programación sino de la vida en general, que interioricen la necesidad de gestionar el tiempo, los compromisos y las programaciones como una vía para mejorar la calidad del software. Con esta iniciación se pretende que los estudiantes reconozcan el valor de registrar los datos de esfuerzo y tamaño y que puedan usar estos datos en la planificación de sus proyectos y analizar su efectividad personal. Esto permite que a medida que se avanza en la formación se interiorice esta conducta y se asuma como un estilo de vida permitiendo lograr que la estimación de trabajos futuros, tenga como principio la referencia de los trabajos anteriores. 5. CONCLUSIONES Para asegurar que los productos sean de calidad, los procesos con los cuales se construyen, deben cumplir con lineamientos de calidad. Estos lineamientos parten de la disciplina y de la definición que debe tener un proceso utilizado por un profesional informático. Partiendo de esta necesidad la academia debe promover prácticas probadas y aceptadas por la industria, impartiéndolas en los currículos académicos de forma incremental y paulatina con la enseñanza de los conceptos de algoritmia y programación. Estas prácticas solo son adoptadas por el profesional informático cuando son aplicadas de forma periódica, permitiendo evidenciar las ventajas que conlleva trabajarlas. Este marco de buenas prácticas provee datos que permiten autoregular el desempeño del programador, permitiendo asumir una conducta orientada al control y el cumplimiento de compromisos resultado de las tendencias de los datos. Por estas razones los fundamentos de calidad del software, no se deben impartir como una asignatura aislada al final del currículo académico, sino por el contrario, como una filosofía vivencial y transversal en la construcción cualquier producto de software. El proceso de desarrollo de software es, sin lugar a dudas, uno de los elementos fundamentales para tal propósito por lo que los estudiantes deben comenzar a entenderla y aplicarla desde el inicio de la carrera. REFERENCIAS [1] P.I. Velasco, PSP: Una Alternativa para Mejorar los Procesos del Software. LANIA. Año 12, Vol. 39 y 40. 2003. [2] J.J. Peláez, El Modelo de Capacidad de Madurez y su Enfoque al Proceso Personal de Software (PSP). Capítulo 2. Proceso Personal de Software. http://www.pue.udlap.mx/~tesis/lis/pelaez_r_jj/capitulo2 .pdf [13 Julio 2005]. [3] Carnegie Mellon University. What is PSP? http://www.sei.cmu.edu/tsp/psp.html [24 Junio 2006] [4] W.S. Humprey, Introducción al Proceso Software Personal. Addison Wesley, 2005. [5] SEI, Software Engineering Institute. Publications. http://www.sei.cmu.edu/publications/publications.html [09 Julio 2006]. [6] L. Chapela, Calidad y Competitividad en la Industria del Software. Newsletters Primavera Verano, Año 12, Vol. 39 y 40. 2003. http://www.lania.mx/biblioteca/newsletters/2003primavera-verano/psp.html [24 Junio 2006] [7] I. Jacobson, G. Booch, J. Rumbaugh. El Proceso Unificado de Desarrollo de Software, Addison Wesley Madrid, 2000.