Metodologías de desarrollo de software

Metodología de Desarrollo de Software
Información sobre la plantilla
MD.png
Concepto:Conjunto de procedimientos y pasos que deben ser seguidos para desarrollar un software.

Metodología de Desarrollo de Software. Surge ante la necesidad de utilizar una serie de procedimientos, técnicas, herramientas y soporte documental a la hora de desarrollar un producto (software). Se clasifican en dos tipos. Las más utilizadas son: La Programación Extrema (XP), Scrum y el Proceso Unificado de Software (RUP).

Introducción a las Metodologías Pesadas

Son las más tradicionales, se centran en la definición detallada de los procesos y tareas a realizar, herramientas a utilizar, y requiere una extensa documentación, ya que pretende prever todo de antemano. Este tipo de metodologías son mas eficaces y necesarias cuanto mayor es el proyecto que se pretende realizar respecto a tiempo y recursos que son necesarios emplear, donde una gran organización es requerida. Una de las metodologías pesadas más conocidas y utilizadas es la Metodología RUP (Rational Unified Process) que divide el desarrollo en 4 fases que definen su ciclo de vida:

  • Inicio: El objetivo es determinar la visión del proyecto y definir lo que se desea realizar.
  • Elaboración: Etapa en la que se determina la arquitectura óptima del proyecto.
  • Construcción: Se obtiene la capacidad operacional inicial.
  • Transmisión: Obtener el producto acabado y definido.

Proceso Unificado de Desarrollo de Software (RUP)

Actualmente no existe una metodología de desarrollo de software que sea global, es decir que encierre características que puedan 

Metodología RUP

aplicarse a cualquier tipo de proyecto. Las características de cada proyecto conjuntamente con su equipo de desarrollo, recursos, y requisitos exigen que se escoja una que se adapte en la mayor medida posible a estas características. Su ciclo de vida se caracteriza por:

  • Está dirigido por Casos de Usos: Los casos de uso reflejan lo que los usuarios futuros necesitan y desean, lo cual se capta cuando se modela el negocio y se representa a través de los requerimientos. 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, por lo que describe los elementos del modelo que son más importantes para su construcción, los cimientos del sistema que son necesarios como base para comprenderlo, desarrollarlo y producirlo económicamente.
  • Iterativo e Incremental: Es el modelo utilizado por RUP para el desarrollo de un proyecto de software. Este modelo plantea la implementación del proyecto a realizar en Iteraciones, con lo cual se pueden definir objetivos por cumplir en cada iteración y así poder ir completando todo el proyecto iteración por iteración, con lo cual se tienen varias ventajas, entre ellas se puede mencionar la de 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.

Filosofía RUP

La metodología RUP tiene 6 principios clave:

  • Adaptación del proceso: El proceso debe adaptarse a las características de la organización para la que se esta desarrollando el software.
  • Balancear prioridades: Debe encontrarse un balance que satisfaga a todos los inversores del proyecto.
  • Colaboración entre equipos: Debe haber una comunicación fluida para coordinar requerimientos, desarrollo, evaluaciones, planes,resultados, etc.,...
  • Demostrar valor iterativamente: Los proyectos se entregan, aunque sea de una forma interna, en etapas iteradas. En cada iteración se evaluará la calidad y estabilidad del producto y analizará la opinión y sugerencias de los inversores.
  • Elevar el nivel de abstracción: Motivar el uso de de conceptos reutilizables.
  • Enfocarse en la calidad: La calidad del producto debe verificarse en cada aspecto de la producción.

Disciplina de desarrollo de RUP

Rup clip002.jpg


Determina las etapas a realizar durante el proyecto de creación del Software.

  • Ingeniería o modelado del negocio: Analizar y entender las necesidades del negocio para el cual se está desarrollando el software.
  • Requisitos: proveer una base para estimar los costos y tiempo de desarrollo del sistema.
  • Análisis y diseño: trasladar los requisitos analizados anteriormente a un sistema automatizado y desarrollar una arquitectura para el sistema.
  • Implementación: crear software que se ajuste a la arquitectura diseñada y que tenga el comportamiento deseado.
  • Pruebas: asegurarse de que el comportamiento requerido es correcto y que todo lo solicitado está presente.
  • Despliegue: producir distribuciones del producto y distribuirlo a los usuarios.

Disciplina de soporte RUP

Determina la documentación que es necesaria realizar durante el proyecto.

  • Configuración y administración del cambio: guardar todas las versiones del proyecto.
  • Administración del proyecto: administrar los horarios y recursos que se deben de emplear.
  • Ambiente: administrar el ambiente de desarrollo del software.
  • Distribución: hacer todo lo necesario para la salida del proyecto.

Elementos del RUP

  • Actividades: Procesos que se han de realizar en cada etapa/iteración.
  • Trabajadores: Personas involucradas en cada actividad del proyecto.
  • Artefactos:Herramientas empleadas para el desarrollo del proyecto.


Puede ser un documento, un modelo, un elemento del modelo, etc.

Introducción a las Metodologías Ágiles

Esta metodología nace en febrero del 2001 en una reunión celebrada en UtahEEUU. Principales ideas de la metodología ágil:

  • Se encarga de valorar al individuo y las iteraciones del equipo más que a las herramientas o los procesos utilizados.
  • Se hace mucho más importante crear un producto software que funcione que escribir mucha documentación.
  • El cliente está en todo momento colaborando en el proyecto.
  • Es más importante la capacidad de respuesta ante un cambio

realizado que el seguimiento estricto de un plan.

Programación Extrema o XP (EXTREME PROGRAMMING)

Es una metodología agil para el desarrollo de software

Metodoligía XP

y consiste básicamente en ajustarse estrictamente a una serie de reglas que se centran en las necesidades del cliente para lograr un producto de buena calidad en poco tiempo. La Programación Extrema es una metodología ágil centrada en potenciar las relaciones interpesonales como clave para el éxito en el desarrollo de software. Promueve el trabajo en equipo, preocupándose en todo momento del aprendizaje de los desarrolladores y estableciendo un buen clima de trabajo. Este tipo de método se basa en una realimentación continuada entre el cliente y el equipo de desarrollo con una comunicación fluida entre todos los participantes, también busca simplificar las soluciones implementadas y coraje para los múltiples cambios. Este tipo de programación es la adecuada para los proyectos con requisitos imprecisos, muy cambiantes y con un riesgo técnico excesivo.


La metodología de XP se basa en:

  • Pruebas Unitarias: se basa en las pruebas realizadas a los principales procesos, de tal manera que se adelanta en algo hacia el futuro, se puede hacer pruebas de las fallas que pudieran ocurrir. Es como si se adelantara a obtener los posibles errores.
  • Re fabricación: se desarrolla en la reutilización de código, para lo cual se crean patrones o modelos estándares, siendo más flexible al cambio.
  • Programación en pares: una particularidad de esta metodología es que propone la programación en pares, la cual consiste en que dos desarrolladores participen en un proyecto en una misma estación de trabajo. Cada miembro lleva a cabo la acción que el otro no está haciendo en ese momento.

Roles de la Programación Extrema (XP)

Según la propuesta de Beck los roles que nos podemos encontrar son los siguientes:

  • Programador: El programador escribe las pruebas unitarias y produce el código del sistema.
  • Cliente: Escribe las historias de los usuarios y las pruebas funcionales para validar su implementación. El cliente da una gran prioridad a las historias de usuarios y decide cual implementar en cada iteración centrandose en aportar mayor valor al negocio.
  • Encargado de Pruebas(Tester): Ayuda al cliente a escribir las pruebas funcionales. Se encarga de ejecutar las pruebas con regularidad, difunde los resultados obtenidos al equipo y es el responsable de las herramientas que dan soporte a las pruebas.
  • Encargado de Seguimiento(Tracker): Es el que proporciona la realimentación al equipo. Realiza el seguimiento del proceso de cada iteración y verifica el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado en ello para la mejora de futuras estimaciones.
  • Entrenador(Coach): Es el responsable del proceso global. Se encarga de proveer guias al equipo de forma que se apliquen las practicas XP y se vaya siguiendo el proceso correctamente.
  • Consultor:Es un miembro externo del equipo con un conocimiento especifico en algún tema que es necesario para el proyecto, en el que surgan problemas.
  • Gestor(Big boss): Es el vinculo entre clientes y programadores,ayuda a que el equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es la de coordinación.encias

Scrum

Scrum es un proceso en el que se aplican de manera regular un conjunto de mejores prácticas para trabajar en equipo y obtener 

Metodología Scrum

el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos. Scrum, más que una metodología de desarrollo software, es una forma de auto-gestión de los equipos de programadores. Un grupo de programadores deciden cómo hacer sus tareas y cuánto van a tardar en ello. Scrum ayuda a que trabajen todos juntos, en la misma dirección, con un objetivo claro. Scrum permite además seguir de forma clara el avance de las tareas a realizar, de forma que los "jefes" puedan ver día a día cómo progresa el trabajo. “En Scrum se realizan entregas parciales y regulares del resultado final del proyecto, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad y la productividad son fundamentales. Scrum también se utiliza para resolver situaciones en que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar ineficiencias sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.” Esta metodología tiene algunas desventajas, como el hecho de que genera muy poca documentación en comparación con otras metodologías, no es apto para todos los proyectos y en muchas ocasiones es necesario completarlo con otros procesos de XP.

Fuente