Desarrollar software implica muchas cosas, desde su
planificación hasta la puesta en marcha se deben de seguir un sinnúmero de
pasos o actividades. Hoy en día existen diversas metodologías para hacerlo, sin
embargo es necesario definir primero la naturaleza del software antes de elegir
un determinado ciclo de vida.
En el presente
trabajo se detallan los dos grandes enfoques, tanto metodologías tradicionales
y metodologías ágiles, las primeras están pensadas para el uso exhaustivo de
documentación durante todo el ciclo del proyecto mientras que las segundas
ponen vital importancia en la capacidad de respuesta a los cambios, la
confianza en las habilidades del equipo y al mantener una buena relación con el
cliente. Se verán diferencias, ventajas, desventajas y cual puede encajar en un
proyecto de software para interés del lector.
Palabras Claves ¾
Metodología, RUP, MSF AUP, Scrum, Metodología Tradicional, Metodología Ágil
2.
Metodologías
tradicionales.-
Al inicio el desarrollo de software era artesanal en
su totalidad, la fuerte necesidad de mejorar el proceso y llevar los proyectos
a la meta deseada, tuvieron que importarse la concepción y fundamentos de
metodologías existentes en otras áreas y
adaptarlas al desarrollo de software. Esta nueva etapa de adaptación contenía
el desarrollo dividido en etapas de manera secuencial que de algo mejoraba la
necesidad latente en el campo del software.
Entre las principales metodologías tradicionales
tenemos los ya tan conocidos RUP y MSF entre otros, que centran su atención en
llevar una documentación exhaustiva de todo el proyecto y centran su atención
en cumplir con un plan de proyecto, definido todo esto, en la fase inicial del
desarrollo del proyecto.
Otra de las características importantes dentro de este
enfoque tenemos los altos costos al implementar un cambio y al no ofrecer una
buena solución para proyectos donde el
entorno es volátil.
Las metodologías tradicionales (formales) se focalizan
en documentación, planificación y procesos. (Plantillas, técnicas de
administración, revisiones, etc.), a continuación se detalla RUP uno de los
métodos más usados dentro de los métodos tradicionales
Rational
Unified Process (RUP)
Proceso Unificado Rational
RUP es un proceso formal: Provee un acercamiento disciplinado para
asignar tareas y responsabilidades dentro de una organización de desarrollo.
Fases
Las cuatro fases del ciclo de vida son:
Las cuatro fases del ciclo de vida son:
Ø
Concepción
Ø
Elaboración
Ø
Construcción
Ø
Transición
Ventajas
Ø
Evaluación en cada fase que permite cambios de objetivos
Ø
Funciona bien en proyectos de innovación.
Ø
Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de
desarrollar el software.
Ø
Seguimiento detallado en cada una de las fases.
Desventajas
Ø
La evaluación de riesgos es compleja
Ø
Excesiva flexibilidad para algunos proyectos
Ø
Estamos poniendo a nuestro cliente en una situación que puede ser muy
incómoda para él.
Nuestro cliente deberá ser
capaz de describir y entender a un gran nivel de detalle para poder acordar un
alcance del proyecto con él.
Microsoft Solution Framework (MSF)
MSF es un compendio de las mejores prácticas en
cuanto a administración de proyectos se refiere. Más que una metodología rígida
de administración de proyectos, MSF es una serie de modelos que puede adaptarse
a cualquier proyecto de tecnología de información.
Todo proyecto es separado en cinco principales fases:
·
Visión y Alcances.
·
Planificación.
·
Desarrollo.
·
Estabilización.
·
Implantación.
Modelo de Equipo de MSF
Microsoft
Operation Framework.-
El modelo de proceso MOF está formado por cuadrantes, revisiones de la
administración de las operaciones y revisiones de la administración de los
servicios. En la figura 1 se muestra el funcionamiento del ciclo de MOF.
Ciclo de Microsoft Operations Framework
En la figura, se observa que el modelo de proceso MOF se desplaza en
sentido de las agujas del reloj y se divide en los cuatro cuadrantes integrados
siguientes:
Ø Cambios
Ø Operaciones
Ø Soporte técnico
Ø Optimización
3.
Metodologías
Agiles.-
Extreme
Programming (XP)
Los defensores de XP consideran que los cambios de
requisitos sobre la marcha son un aspecto natural, inevitable e incluso
deseable del desarrollo de proyectos. Creen que ser capaz de adaptarse a los
cambios de requisitos en cualquier punto de la vida del proyecto es una
aproximación mejor y más realista que intentar definir todos los requisitos al
comienzo del proyecto e invertir esfuerzos después en controlar los cambios en
los requisitos.
Scrum
4.
Diferencias:
Diferencias entre Metodología
Tradicionales y Ágiles
Metodologías Tradicionales
|
Metodologías Agiles
|
Basadas en normas provenientes de estándares seguidos
por el entorno de desarrollo
|
Basadas en heurísticas provenientes de prácticas de
producción de código
|
Cierta resistencia a los cambios
|
Especialmente preparados para cambios durante el
proyecto
|
Impuestas externamente
|
Impuestas internamente (por el equipo)
|
Proceso mucho más controlado, con numerosas
políticas/normas
|
Proceso menos controlado, con pocos principios.
|
El cliente interactúa con el equipo de desarrollo
mediante reuniones
|
El cliente es parte del equipo de desarrollo
|
Más artefactos
|
Pocos artefactos
|
Más roles
|
Pocos roles
|
Grupos grandes y posiblemente distribuidos
|
Grupos pequeños (<10 integrantes) y trabajando en el
mismo sitio
|
La arquitectura del software es esencial y se
expresa mediante modelos
|
Menos énfasis en la arquitectura del software
|
Existe un contrato prefijado
|
No existe contrato tradicional o al menos es bastante
flexible
|
5.
Conclusión.-
Ø El retrasar las decisiones en un proyecto de software
permite potenciar el valor del producto tanto para el cliente como al equipo o
empresa que desarrolla
Ø Para que un grupo de desarrollo adopte una metodología
ágil debe poseer experiencia trabajando
con metodologías tradicionales, ya que la experiencia es la que predomina en
los mementos cruciales del proyecto, además debe tener la capacidad de ser
equipos auto-gestionados, altamente
motivados y con gran innovación
Ø Las metodologías
tradicionales son pesadas y que suponen obligatoriamente un “todo o nada”.
Ø Las metodologías
ágiles son más modernas y mejores que cualquiera de las tradicionales.
Ø Las actividades “de
calidad” son inútiles y sólo funcionan en equipos grandes, no se adaptan a
nuestros proyectos. Cualquier cosa que nos quite tiempo de tareas técnicas
(programar, etc.) es una pérdida de tiempo.
Ø El uso de metodologías tradicionales es esencial al
inicio en un equipo de desarrollo de software
Ø Las metodologías ágiles se deberían aplicar en proyectos
donde exista mucha incertidumbre donde el entorno es volátil, donde los
requisitos no se conocen con exactitud, mientras que las metodologías
tradicionales obligan al cliente a tomar las decisiones al inicio del proyecto.