lunes, 30 de abril de 2012

METODOLOGIAS DE DESARROLLO DE SOFTWARE TRADICIONALES VERSUS METODOLOGIAS AGILES






1.    Introducción.-


Para desarrollar e implementar un  software necesitamos muchos pasos a seguir, desde la planificación elaboración y puesta en marcha se deben de seguir un gran número  de actividades. E         n  la actualidad existen diversas metodologías para seleccionar cual será la más adecuada para realizar el software, sin embargo es necesario definir primero la naturaleza del software antes de elegir un determinado ciclo de vida.
En esta investigación  se describe  dos tipos de metodologías de desarrollo de software como ser la metodología tradicionales y metodologías ágiles, las primeras están pensadas para el uso exhaustivo de documentación durante todo el ciclo del proyecto por lo tanto la metodología ágil  ponen vital importancia en la capacidad de respuesta a los cambios, la confianza recae en las habilidades y una buena comunicación con el equipo de desarrolladores y otro punto muy importante es mantener una buena comunicación  con el cliente, o de otro forma que el cliente también participe en el desarrollo del software  que es una de sus principales actividades de la metodología agiles.


2.     Metodologías Agiles.-

2.1.        Scrum.-
Scrum se basa en buenas prácticas aceptadas por la industria, usadas y probadas durante décadas. Se establece como una teoría empírica de proceso. Como Jim Coplien comentó una vez a Jeff, "A todo el mundo le gustará Scrum; es lo que ya hacemos cuando estamos entre la espada y la pared.
El marco de Scrum se compone de un conjunto de Equipos Scrum y sus roles asociados; así como de Bloques de Tiempo, Artefactos, y Reglas.
Los Equipos Scrum están diseñados para optimizar la flexibilidad y la productividad, para lo cual, son auto-gestionados, multifuncionales, y trabajan en iteraciones. Cada Equipo Scrum tiene tres roles: 1) el ScrumMaster, que es responsable de asegurar que el proceso es comprendido y seguido, 2) el Propietario del Producto, que es responsable de maximizar el valor del trabajo realizado por el Equipo Scrum, y 3) el Equipo, que hace el trabajo. El equipo está formado por desarrolladores con todos los conocimientos necesarios para convertir los requerimientos del Propietario del Producto en un incremento potencialmente utilizable del producto al final del Sprint



 



2.2.        Extreme Programming (XP)

Basada en la simplicidad, la comunicación y el reciclado continúo de código.
Ha sido probada por muchas compañías, de diferentes dimensiones, desde 1998.
La programación extrema es una metodología reciente en el desarrollo de software. La filosofía de X.P es satisfacer al completo las necesidades del cliente, por eso lo integra como una parte más del equipo de desarrollo.

Fue inicialmente creada para el desarrollo de aplicaciones dónde el cliente no sabe muy bien lo que quiere, lo que provoca un cambio constante en los requisitos que debe cumplir la aplicación. Por este motivo es necesaria una metodología ágil como X se adapta a las necesidades del cliente y dónde la aplicación se va reevaluando en periodos cortos de tiempo.

Los que trabajan con Extreme Programming XP, tienen a considerar  que los cambios de requisitos sobre la marcha son un aspecto natural, que es inevitable durante el desarrollo de proyectos. Estas personas 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.



3.    Metodologías tradicionales.-
Entre las metodologías tradicionales más conocidas tenemos RUP y MSF entre otros, esta metodología tradicional centran su atención en llevar una documentación precisa y exhaustiva de todo el proyecto y enfocan  su atención en realizar y cumplir un plan de proyecto.
Las metodologías tradicionales se enfocan en documentación, planificación y procesos. (Plantillas, técnicas de administración, revisiones continuas, y otras.), unas de las metodologías más usadas  dentro de las tradicionales tenemos las siguientes:

    3.1  Proceso Unificado Rational (RUP)
Es un proceso formal: Provee un acercamiento disciplinado para asignar tareas y responsabilidades dentro de una organización de desarrollo.

FasesLas 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.
·           Seguimiento detallado en cada una de las fases.
·         Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de desarrollar el software.

Desventajas

·          La evaluación de riesgos es compleja
·          Excesiva flexibilidad para algunos proyectos
·          El cliente deberá ser capaz de describir y entender a un gran nivel de detalle para poder acordar un alcance del proyecto con él.



Rational Unified Process (RUP)
Proceso Unificado Rational



3.2  Microsoft Solution Framework (MSF)

Este modelo se basa principalmente en los modelos espiral y cascada (hitos y fases). Como su nombre lo dice fue desarrollado por Microsoft con el objetivo de crear un modelo estructurado basado en una estructura de trabajo en desarrollo de software.
Tiene como principios fundamentales la comunicación (entre cliente/usuario y entre nosotros), una capacitación de las personas (disciplina de disponibilidad) es decir cumple con el proceso de formación de personal, compartir los roles entre todo el equipo de trabajo. MSF es un proceso versionado y se debe crear versiones para el negocio de cada cliente, debe ser ágil, ya que es menos abultado que RUP. Otro principio es la inversión de calidad (tiempo, trabajo, dinero); hay que tomar en cuenta que cada proyecto es una inversión, más no un gasto.
MSF se compone de 2 modelos y 3 disciplinas.
·         Modelo de Equipo
·         Modelo de  Proceso.
·         Disciplina de  Administración de Proyecto, Administración  de Riesgos y Administración de la Preparación.


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


3.3. Microsoft Operation Framework.-

MOF ofrece directrices sobre el modo de planear, implementar y mantener procesos operativos de TI que respalden las soluciones de servicio críticas. MOF es un modelo genérico y, por este motivo, debe adaptar muchas de las recomendaciones para usarlas en su empresa. Cuando encuentre referencias a "funciones" en el modelo MOF, tenga en cuenta que se puede asignar a una misma persona a varias funciones, sobre todo en las empresas pequeñas. No obstante, aunque represente a todo el departamento de TI, los procedimientos y recomendaciones de este modelo se pueden aplicar de forma general.
MOF es un modelo estructurado y flexible que está basado en lo siguiente:
  • Los equipos de consultoría y soporte técnico de Microsoft y su experiencia de trabajo con clientes empresariales y socios, además de grupos internos de operaciones de TI en Microsoft.
  • La Biblioteca de infraestructuras de TI (ITIL), que describe los procesos y las prácticas recomendadas necesarios para el suministro de soluciones de servicio críticas.
  • ISO/IEC 15504, de la Organización Internacional de Normalización (ISO), que proporciona un enfoque normalizado para evaluar la madurez del proceso de software.
·         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  se muestra el funcionamiento del ciclo de MOF.



4.    Conclusión.-


·    Una opinión importante es que para que un equipo  de desarrollo de software adquiera una metodología ágil debe tener mucha experiencia de trabajo con metodologías tradicionales, ya que la experiencia de realizar varios proyectos de software es la que se necesita  en los mementos difíciles del proyecto, también se debe tener la habilidad de ser equipos, motivar al equipo de trabajo, innovación e inspiración para realizar proyectos de software.
·     Las metodologías ágiles son más modernas se trabajó mucho en el equipo de desarrolladores y desde mi punto de vista mejores que cualquiera de las tradicionales.
·     Al  inicio en un equipo de desarrollo de software el uso de metodologías tradicionales es esencial.
·     Desde mi punto de vista las metodologías ágiles se deberían aplicar en proyectos donde exista mucha incertidumbre, por  lo cual los  requisitos no se conocen con exactitud, por lo tanto en las metodologías tradicionales obligan al cliente a tomar las decisiones al iniciar el proyecto.