Metodología de Desarrollo de
Software
Las
más utilizadas son: La Programación Extrema (XP), Scrum
y el Proceso Unificado de Software (RUP).
¿Qué es una metodología de desarrollo de software?
Una metodología de desarrollo de software no es mas que una serie de pasos que se realizan de forma rigurosa tal que su resultado a partir de unos requisitos nuevos o modificados sea un software nuevo o modificado. Se puede ver como una caja negra, como muestra la siguiente imagen:
Metodología:
Conjunto
de procedimientos, técnicas, herramientas y un soporte documental que ayuda a
los desarrolladores a realizar nuevo software.
Técnica:
Herramienta utilizada para aplicar un procedimiento. Se pueden utilizar una o varias.
Herramienta:
Para
realizar una técnica, podemos apoyarnos
en las herramientas software que
automatizan su aplicación.
Metodologías tradicionales y metodologías ágiles
Teniendo
en cuenta la filosofía de desarrollo de las metodologías, aquellas con mayor
énfasis en la planificación y control del proyecto, en especificación precisa
de requisitos y modelado, reciben el apelativo de Metodologías Tradicionales o
Pesadas.
Estas metodologías
tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo
del software, con el fin de conseguir un software más eficiente. Para ello, se
hace énfasis en la planificación total de todo el trabajo a realizar y una vez que
está todo detallado, comienza el ciclo de desarrollo del producto software. Se
centran especialmente en el control del proceso, mediante una rigurosa
definición de roles, actividades, artefactos, herramientas y notaciones para el
modelado y documentación detallada. Además, las metodologías tradicionales no
se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados
cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o
bien pueden variar.
Entre las metodologías tradicionales
o pesadas podemos citar:
• RUP (Rational Unified
Procces)
• MSF (Microsoft Solution
Framework)
• Win-Win Spiral Model
• Iconix
Pero sin dudas adaptarse a
la agitada sociedad actual implica ser “ágil”, es decir, tener la capacidad de
proveer respuestas rápidas y ser adaptables al cambio. Ambas cualidades siempre
han sido deseables, pero en el entorno de negocio actual resultan
indispensables. Este requerimiento de agilidad en las empresas, gobiernos y
cualquier otra organización provoca que el software también deba ser
desarrollado de manera ágil.
Las necesidades de un
cliente pueden sufrir cambios importantes del momento de contratación de un
software al momento de su entrega; y es mucho más importante satisfacer estas
últimas que las primeras. Esto requiere procesos de software diferentes que en
lugar de rechazar los cambios sean capaces de incorporarlos.
Los procesos ágiles son
una buena elección cuando se trabaja con requisitos desconocidos o variables.
Si no existen requisitos estables, no existe una gran posibilidad de tener un
diseño estable y de seguir un proceso totalmente planificado, que no vaya a
variar ni en tiempo ni en dinero. En estas situaciones, un proceso adaptativo
será mucho más efectivo que un proceso predictivo. Por otra parte, los procesos
de desarrollo adaptativos también facilitan la generación rápida de prototipos
y de versiones previos a la entrega final, lo cual agradará al cliente.
Las metodologías ágiles
proporcionan una serie de pautas y principios junto a técnicas pragmáticas que
puede que no curen todos los males pero harán la entrega del proyecto menos
complicada y más satisfactoria tanto para los clientes como para los equipos de
entrega. En la figura 1 se muestran los principios que rigen el desarrollo ágil.
Principios del
Manifiesto Ágil
Entre las metodologías
ágiles más destacadas hasta el momento se pueden nombrar:
• XP (Extreme Programming)
• Scrum
• Crystal Clear
• DSDM (Dynamic Systems
Developmemt Method)
• FDD (Feature Driven
Development)
• ASD (Adaptive Software
Development)
• XBreed
• Extreme Modeling
PROCESO UNIFICADO DE DESARROLLO DE SOFTWARE (RUP)
Está dirigido por Casos de Usos: Los casos de uso reflejan lo que los usuarios futuros necesitan y desean. A partir de aquí los casos de uso guían el proceso de desarrollo ya que los modelos que se obtienen, como resultado de los diferentes flujos de trabajo, representan la realización de los casos de uso (cómo se llevan a cabo).
Centrado en la arquitectura: La arquitectura muestra la visión común del sistema completo en la que el equipo de proyecto y los usuarios deben estar de acuerdo, se describe los elementos del modelo que son más importantes para su construcción, los cimientos del sistema que facilitan comprenderlo, desarrollarlo y producirlo económicamente.
Iterativo e Incremental: Es el modelo utilizado por RUP para el desarrollo de un proyecto de software, plantea la implementación del proyecto a realizar en Iteraciones (iteración por iteración), con lo cual se tienen varias ventajas; tener pequeños avances del proyectos que son entregables al cliente el cual puede probar mientras se está desarrollando otra iteración del proyecto, con lo cual el proyecto va creciendo hasta completarlo en su totalidad.
PROGRAMACIÓN EXTREMA O XP (EXTREME PROGRAMMING)
La Programación Extrema surge ideada por Kent Beck, como proceso de creación de software diferente al convencional. En palabras de Beck: “XP es una metodología ligera, eficiente, con bajo riesgo, flexible, predecible y divertida para desarrollar software”.
3P
Paradigma 3P es una metodología de desarrollo de software nacida al calor de la experiencia acumulada del grupo de investigación y desarrollo Atis, debido a la insuficiente capacidad de respuesta a los clientes utilizando las metodologías tradicionales.
Resumen puntos clave :
RUP
Pesado
Dividido en cuatro fases, que se dividen en iteraciones
Los artefactos son el objetivo de cada actividad
Se basa en roles
UML
Muy organizativo
Mucha documentación
XP
Ligero
Cercano al desarrollo
Se basa en UserStories
Fuerte comunicación con el cliente
El código fuente pertenece a todos
Programación por parejas
Solo el mínimo de organización
Pobre en cuanto a documentación
3P
Ágil
Cercano al desarrollo, pero sin olvidar el diseño
Se basa en 3 principios: Personal, Problema, Proceso
Gran interacción con el cliente
Logra alcanzar un control y organización del proceso
Logra un equilibrio en cuanto a la generación de documentación
Scrum
Scrum es una metodología ágil y flexible para gestionar el desarrollo de software, cuyo principal objetivo es maximizar el retorno de la inversión para su empresa. Se basa en construir primero la funcionalidad de mayor valor para el cliente y en los principios de inspección continua, adaptación, auto-gestión e innovación.
¿Cuándo se utiliza?
Con la metodología Scrum el cliente se entusiasma y se compromete con el proyecto dado que lo ve crecer iteración a iteración. Asimismo le permite en cualquier momento realinear el software con los objetivos de negocio de su empresa, ya que puede introducir cambios funcionales o de prioridad en el inicio de cada nueva iteración sin ningún problema.
Esta metódica de trabajo promueve la innovación, motivación y compromiso del equipo que forma parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para desarrollar sus capacidades.
Con la metodología Scrum el cliente se entusiasma y se compromete con el proyecto dado que lo ve crecer iteración a iteración. Asimismo le permite en cualquier momento realinear el software con los objetivos de negocio de su empresa, ya que puede introducir cambios funcionales o de prioridad en el inicio de cada nueva iteración sin ningún problema.
Esta metódica de trabajo promueve la innovación, motivación y compromiso del equipo que forma parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para desarrollar sus capacidades.
REFERENCIAS:
Alianza Ágil. Disponible en: http://www.agilealliance.org
Alistair Desarrollo de Software Ágil. Disponible en: http://www.amazon.com/exec/ obidos/ASIN/0201699699/programacione-20.
https://pid.dsic.upv.es/C1/Material/Documentos%20Disponibles/Introducci%C3%B3n%20Proceso %20de%20Desarrollo%20de%20SW.doc
www.softeng.es › ... › Empresa › Metodologías de trabajo