Por: Christian Camilo Gómez Páez (@chrisystems)
El RUP (Rational Unified Process) en su marco de referencia establece una serie de practicas con un objetivo definido que consiste en mejorar las practicas o actividades del conjunto de procesos que se llevan a cabo durante el ciclo de vida del software, dichas mejoras nos pueden dar una base que conduzca a ejecutar de mejor manera la actividades del equipo de trabajo.
La industria del software aparentemente posee una "plataforma" que abarca todas sus practicas, sin embargo esta plataforma no puede ser general teniendo en cuenta que existen diferentes metodologías que se ajustan a las necesidades propias de un proyecto, conseguir unificar el equipo de trabajo nos permitirá obtener resultados planificados y definir procesos "comunes" que optimicen la comunicación entre las áreas del proyecto, creando un rendimiento constante y en continuo progreso para tareas, responsabilidades de cada uno de los roles y/o recursos.
La unificación del proceso de desarrollo de software provee a cada miembro de un rol ciertos parámetros definidos de forma especifica para el proyecto, asegurando que la asignación de recursos sea eficiente a lo largo de todas sus fases.
El proceso unificado mantiene al equipo enfocado en desarrollar un progreso coherente a sus características, con la calidad necesaria para entregar a tiempo un software de confianza.
La buena ejecución de las practicas del RUP genera diferentes beneficios en el desarrollo del software, como disminuir su complejidad mediante un trabajo enfocado a objetivos, interacción interpersonal y frecuente velocidad de reacción en sus diferentes actividades.
En el RUP Los miembros del equipo de trabajo tienen en común:
1. Base de conocimiento
2. Visión de desarrollo del producto
3. Lenguaje unificado de modelado (UML)
Los roles definidos son los siguientes:
1. Analista de documentación (documenting)
2. Programador (Programmer)
3. Administrador del proyecto (Project Manager)
4. Cliente (Customer)
5. Analista y/o ejecutor de pruebas (tester)
6. Revisor (tracker)
El rol de cada miembro del grupo debe ser definido de acuerdo a su experiencia y capacidades, para cada uno de los roles se establecen objetivos, actividades y/o tareas, interacción y comunicación con otros roles, herramientas y/o recursos a utilizar, misión y visión del rol, y por ultimo el plan de trabajo.
De acuerdo al tipo y tamaño del proyecto se definirá si se requiere contar con todos los roles, en el desarrollo de sistemas de información "complejos" cada rol deberá tener más de una personas, el numero de miembros del rol se establece mediante la cantidad, dificultad y tiempos de ejecución de las actividades.
El compromiso de cada una de las personas pertenecientes a un área es de vital importación en cada una de las fases teniendo en cuenta que el trabajo de cada persona debe estar enfocado a conseguir metas comunes.
Los analistas deben identificar las necesidades y objetivos del cliente, la información que será suministrada al sistema, las funcionalidad del sistema y el rendimiento requerido, ademas de determinar si los requisitos especificados son esenciales para su funcionamiento, de acuerdo a lo anterior el rol de analista es muy importante, debido a que el éxito del proyecto dependerá de una buena especificación de requisitos, para ejecutar sus actividades el analista tiene diferentes metodologías de análisis.
Los programadores deben convertir la especificación del sistema en código fuente ejecutable utilizando uno o más lenguajes de programación, así como herramientas de software de apoyo a la programación. El programador dentro de sus actividades tiene diferentes metas y/o objetivo como lo es reducir la complejidad del software, aumentar la eficiencia en el mantenimiento del software, reducir los tiempos de desarrollo, disminuir el numero de errores encontrados durante el ciclo de vida del proyecto.
El administrador del proyecto deberá entonces tener diferentes fortalezas y cualidades como los son la organización, liderazgo, experiencia, creatividad, toma asertiva de decisiones, además de una comunicación fluida con cada miembro del equipo para analizar problemas particulares, y si es necesario, tomar acciones correctivas.
El cliente es aquella persona responsable de llevar a cabo la evaluación de el buen desempeño del proyecto, por parte de la empresa que contrata el desarrollo, debe estar presente en todas las fases del desarrollo del producto, y realizar todas las actividades que se esperan de él, tales como la aceptación provisional y final del producto, acompañamiento en pruebas y implementación del software.
Los tésters deben utilizar tener habilidades que le permitan definir y ejecutar una metodología que en forma sistemática, organizada y estructurada, les permita detectar y establecer documentación con ideas funcionales e integrales para la corrección de los errores y inconsistencias conceptuales y/o funcionales encontradas en el proceso de desarrollo del sistema.
Los revisores deben tener las habilidades necesarias para descubrir errores en funciones, lógica e implementación en cualquiera de las representaciones del software; verificar que el software bajo revisión cumple con los requisitos, asegurarse que el software ha sido representado de acuerdo al estándar en uso; hacer el proyecto más manejable.
Imagenes: http://gisolutions.us/site/wp-content/uploads/2009/05/rup.jpg