martes, 26 de mayo de 2009

Ingeniería de software

Hace un par de semanas me solicitaron la elaboración de dos propuestas, una para la migración y otra para un nuevo desarrollo por lo me solicitaron hacer un resumen general sobre Metodologías RUP, MSF y XP, el mismo para ambas propuestas, el resultado fue el siguiente:


Microsoft Solution Framework (MSF) proporciona un conjunto de modelos, principios, y guías para diseñar y desarrollar soluciones empresariales de una manera que asegura que todos los elementos del proyecto tal como gente, procesos y herramientas, puedan ser exitosamente conducidos. No solamente es aplicable a los proyectos de desarrollo sino igualmente a los de infraestructura o redes. MSF actualmente tiene dos instancias: MSF for Agile Software Development y MSF for CMMI (Capability Maturity Model Integration) Process Improvement.MSF contiene un meta-modelo que estaba basado en la filosofía de que un proceso esta creado para ayudar y no para estorba, este modelo es compartido para procesos agiles y maduros que ocupen MSF.MSF consta de cinco fases: Previsión, Planificación, Desarrollo, Estabilización e Implementación y es continuamente refinado por clientes, consultores, grupos de producto y partners de Microsoft.



Rational United Process (RUP) Es un refinamiento del proceso unificado, sus características principales son combinar las prácticas comúnmente aceptadas de los procesos incremental e iterativo. Su objetivo principal es entregar artefactos verificables por el cliente. El énfasis en el desarrollo iterativo e incremental previene muchos de los riesgos comunes en los proyectos al animar al equipo a desarrollar en principio lo más riesgoso del proyecto, además de que los artefactos y los roles de los participantes están bien definidos y que el proceso esta soportado por muchas herramientas de desarrollo, el proceso toma en cuenta que cada proyecto es diferente, con necesidades diferentes y habilita para que cada fase del proyecto sea personalizada para lo requerido por el proyecto. Este proceso comienza con la toma de requerimientos, el análisis y el diseño para todo el proyecto incluyendo el modelado de datos y de objetos antes de la construcción. En este sentido toma un enfoque de proceso en cascada para el análisis y el diseño y un enfoque iterativo para la construcción y la liberación.



Extreme Programming (XP) Los procesos ágiles mueven el enfoque de desarrollo de software hacia lo que se considera la importancia del desarrollo de software: ejecutar software. Esto es posible si se acepta que el desarrollo de software es un trabajo creativo hecho por seres humanos individuales, por eso este proceso anima a la comunicación, interacción y diversión. XP se distingue de otras metodologías en: es inmediato, concreto y se retroalimenta en ciclos muy cortos, tiene flexibilidad para programar las funcionalidades en acuerdo con los cambios en los requerimientos, se confía de pruebas automatizadas escritas por los programadores y clientes para monitorear el progreso del desarrollo que permite una detección de pruebas tempranas, se confía de la comunicación oral y el código fuente para mostrar la estructura del programa, tiene confianza en la cercana colaboración de los programadores con habilidades ordinarias. XP es diseñado para trabajar con proyectos que pueden ser construidos por equipos de dos a diez programadores.



En la revisión de las propuestas por parte del cliente, se selecciono la metodología MSF para el nuevo desarrollo y RUP para la migración, lo interesante de esta elección es que la tecnología empleada por el cliente en ambos proyectos es .NET, por lo que la elección natural hubiera sido MSF sin miramientos.

Pero bueno el cliente es el cliente y sus razones tendrá, aunque esta decisión no es tan dispar como pudiera parecerse, ya que MSF y RUP comparten una gran cantidad de artefactos, por lo que solo deberé que usar lo común a las dos metodologías.