viernes, 1 de abril de 2016

Metodologias Ágiles

Desarrollo basado en competencia

Proceso que enfatiza el diseño y construcción de equipo basado en sistemas, usando software de "componentes" re-utilizable.
El desarrollo basado en componentes está cambiando el camino largo de software.
"Compra, no construyas".

¿Para que es?

Rama de ingeniería de software la cual enfatiza la separación de preocupaciones respecto a las amplias disponibilidades validas a lo largo de sus sistema de software dado.

Objetivo

Producir una amplia calidad de software de acuerdo a los beneficios de corto y largo plazo para el sistema.
Los componentes pueden producir eventos o consumirlos y pueden ser usados por eventos dirigidos a arquitecturas.

Caracteristicas

  • Reducción de costos y tiempo de construcción a largo plazo y sistemas complejos.
  • Mejora de software.
  • Detección de defectos dentro del sistema.

Proceso unificado
El proceso unificado  (UP, o Unified Development Process) es un tipo de metodología tradicional empleada en el desarrollo de software. Es una versión libre y abierta (no propietaria) del proceso iterativo e incremental de ingeniería de software propuesto por Jacobson, Booch y Rumbaugh  en su libro El proceso unificado de desarrollo de software, publicado por Addisson-Wesley en 1999. El lenguaje para especificar y diagramar en el UP es UML, por lo cual puede apoyarse en cualquier herramienta que soporte UML.


Cada fase representa un ciclo de desarrollo en la vida de un producto de software.
  1. Inicio: Tiene por finalidad definir la visión, los objetivos y el alcance del proyecto, tanto desde el punto de vista funcional como del técnico, obteniéndose como uno de los principales resultados una lista de los casos de uso y una lista de los factores de riesgo del proyecto. 
  2. Elaboración: Tiene como principal finalidad completar el análisis de los casos de uso y definir la arquitectura del sistema, además se obtiene una aplicación ejecutable que responde a los casos de uso que la comprometen. A pesar de que se desarrolla a profundidad una parte del sistema, las decisiones sobre la arquitectura se hacen sobre la base de la comprensión del sistema completo y los requerimientos (funcionales y no funcionales) identificados de acuerdo al alcance definido. 
  3. Construcción: Está compuesta por un ciclo de varias iteraciones, en las cuales se van incorporando sucesivamente los casos de uso, de acuerdo a los factores de riesgo del proyecto.Los cambios en los requerimientos no se incorporan hasta el inicio de la próxima iteración.
  4. Transición: Inicia con una versión “beta” del sistema y culmina con el sistema en fase de producción.

Características:

  • Está dirigido por casos de uso.
  • Está centrado en la arquitectura (es decir, en una solución de conjunto.
  • Tiene un ciclo de vida iterativo incremental.


Ventaja: 

Su uso es libre (sin condiciones).Hay excelentes textos, que explican la aplicación de este proceso paso a paso.

Desventaja:

Es necesario “aterrizar” los conceptos, lo cual puede resultar un poco difícil para quien no tenga experiencia en el uso de procesos de ingeniería de software.


Ingeniería Web
La ingeniería web es la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la www.

La ingeniería web se debe al crecimiento desenfrenado que está teniendo la Web está ocasionando un impacto en la sociedad y el nuevo manejo que se le está dando a la información en las diferentes áreas en que se presenta ha hecho que las personas tiendan a realizar todas sus actividades por esta vía.

Internet se volvió más que una diversión y empezó a ser tomado más en serio, ya que el aumento de publicaciones y de informaciones hizo que la Web se volviera como un desafío para los (Ingeniería del software) ingenieros del software, a raíz de esto se crearon enfoques disciplinados, sistemáticos y metodologías donde tuvieron en cuenta aspectos específicos de este nuevo medio.

Uno de los aspectos más tenidos en cuenta, en el desarrollo de sitios web es sin duda alguna el diseño gráfico y la organización estructural del contenido. En la actualidad la web está sufriendo grandes cambios, que han obligado a expertos en el tema a utilizar herramientas y técnicas basadas en la ingeniería del software, para poder garantizar el buen funcionamiento y administración de los sitios web. ´


Caracteristicas:

  • Diseño de procesos de negocio para aplicaciones web.
  • Herramientas CASE para aplicaciones web.
  • Generación de código para aplicaciones web.
  • Desarrollo web colaborativo.
  • Pruebas de rendimiento de aplicaciones basadas en web.
  • Control de calidad y pruebas de sistemas.
  • Ingeniería de requisitos para aplicaciones web.
  • Accesibilidad para la web.
  • Metodologías de diseño web.
  • Diseño de interfaces de usuario.

Ventajas:

  •  Es de fácil uso.
  • Permite la comunicación rápida y directa con una o varias personas que se encuentre en cualquier parte del mundo, ayudando de esta manera en las TICs
  • Desarrollo de diferentes proyectos y propuestas para dar a conocer dichos proyectos a traves de la red.
  • Ayuda en el proceso de globalizacion de las empresas, ya que permite contactar diferentes entidades y personas en el mundo sin altos costos.
  • Crear publicidad para que los clientes puedan acceder a productos y servicios y tengan información actualizada de ellos.
  • Creación de ventaja competitiva, ya que la empresa o entidad se encontraría a la vanguardia de la tecnología.

  

Desventajas

  •  No posee muchas funcionalidades para la empresa. solo suple necesidades de comunicación.
  • No ofrece diversidad de opciones


Fases:

  • Análisis de Requisitos: Fija los requisitos funcionales de la aplicación Web para reflejarlos en un modelo de casos de uso.
  • Diseño Conceptual: Materializado en un modelo de dominio, considerando los requisitos reflejados en los casos de uso.
  • Diseño Navegacional: Muestra la forma de navegar ante el espacio de navegación.
  • Diseño de Presentación: Representa las vistas del interfaz del usuario mediante modelos estándares de interacción UML.



Desarrollo ágil

¿Que es?

Es la combinación filosófica con lineamientos de desarrollo.
La filosofía pone énfasis en la satisfacción del cliente y en la entrega rápida de software.
Los procesos ágiles de desarrollo de software, conocidos anteriormente como metodologías livianas, intentan evitar los tortuosos y burocráticos caminos de las metodologías tradicionales enfocándose en la gente y los resultados. 

El proceso ágil usa un enfoque basado en el Valor para construir software, colaborando con el cliente e incoporando los cambios continuamente.


¿Quien lo hace?

Ingeniería de software (Gerentes, clientes, usuario final, etc.).


¿Porque es importante?

Contiene un ambiente moderno que genera sistemas basados en computadora y productos de software que evolucionan de forma rápida y sencilla.

Fases

  • Comunicación
  • Planeación
  • Modelado
  • Construcción
  • Despliegue

El trabajo estará bien hecho si el equipo ágil concuerda que el proceso funciona y en que produce incrementos de software utilizables que satisfagan al cliente.


Características:

  • Proceso iterativo e incremental.
  • Mitigación del riesgo mediante iteraciones fijas.
  • Mejora continua.
  • Calidad desde el primer día.
  • Priorización de requerimientos de acuerdo a su valor.
  • Equipos dedicados y auto-gestionados.
  • Colaboración continua con el cliente.
  • Incorporar al cambio.
  • Prácticas de desarrollo modernas.


SCRUM

Proceso en el que se aplican de manera regular un conjunto de mejores prácticas para trabajar colaborativamente, en equipo, y obtener 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.

En Scrum se realizan entregas parciales y regulares del producto final, 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, la flexibilidad y la productividad son fundamentales.

Características:

  • Equipos autodirigidos.
  • Utiliza reglas para crear un entorno ágil de administración de proyectos.
  • No prescribe prácticas específicas de ingeniería.
  • Los requerimientos se capturan como ítems de la lista Product Backlog.
  • El producto se construye en una serie de Sprints de un mes de duración.



Roles y responsabilidades


Scrum clasifica a todas las personas que intervienen o tienen interés en el desarrollo del proyecto en: propietario del producto, equipo.
Los tres primeros grupos (propietario, equipo y gestor) son los responsables del proyecto, los que según la comparación siguiente (y sin connotaciones peyorativas) serían los “cerdos”; mientras que el resto de interesados serían las gallinas.

Cerdos y gallinas.
Esta metáfora ilustra de forma muy gráfica la diferencia de implicación en el proyecto entre ambos grupos:
Una gallina y un cerdo paseaban por la carretera.
La gallina dijo al cerdo: “Quieres abrir un restaurante conmigo”.
El cerdo consideró la propuesta y respondió: “Sí, me gustaría. ¿Y cómo lo llamaríamos?”.
La gallina respondió: “Huevos con jamón”.
El cerdo se detuvo, hizo una pausa y contestó:
“Pensándolo mejor, creo que no voy a abrir un restaurante contigo. Yo estaría realmente comprometido, mientras que tú estarías sólo implicada”.

Roles Cerdo
Los Cerdos son los que están comprometidos con el proyecto y el proceso Scrum; ellos son los que "ponen el jamón en el plato".

Product Owner
El Product Owner representa la voz del cliente. Se asegura de que el equipo Scrum trabaja de forma adecuada desde la perspectiva del negocio. El Product Owner escribe historias de usuario, las prioriza, y las coloca en el Product Backlog.

ScrumMaster (o Facilitador)
El Scrum es facilitado por un ScrumMaster, cuyo trabajo primario es eliminar los obstáculos que impiden que el equipo alcance el objetivo del sprint. El ScrumMaster no es el líder del equipo (porque ellos se auto-organizan), sino que actúa como una protección entre el equipo y cualquier influencia que le distraiga. El ScrumMaster se asegura de que el proceso Scrum se utiliza como es debido. El ScrumMaster es el que hace que las reglas se cumplan.

Equipo
El equipo tiene la responsabilidad de entregar el producto. Un pequeño equipo de 5 a 9 personas con las habilidades transversales necesarias para realizar el trabajo (diseñador, desarrollador, etc).
Roles "Gallina"
Los roles gallina en realidad no son parte del proceso Scrum, pero deben tenerse en cuenta. Un aspecto importante de una aproximación ágil es la práctica de involucrar en el proceso a los usuarios, expertos del negocio y otros interesados (stakeholders). Es importante que esa gente participe y entregue retroalimentación con respecto a la salida del proceso a fin de revisar y planear cada sprint.

Usuarios
Es el destinatario final del producto. Como bien lo dice la paradoja, El árbol cae en el bosque cuando no hay nadie ¿Hace ruido? Aqui la definicion sería Si el software no es usado ¿fue alguna vez escrito?.

Stakeholders (Clientes, Proveedores).
Se refiere a la gente que hace posible el proyecto y para quienes el proyecto producirá el beneficio acordado que lo justifica. Sólo participan directamente durante las revisiones del sprint.

Managers
Es la gente que establece el ambiente para el desarrollo del producto.




Extreme programing
Metodología de desarrollo ágil, una de las más exitosas en tiempo reciente. Su autor principal es Kent Beck, quien eligió algunas características de otras metodologías y las relacionó de forma que cada una complementara a la otra.
Así, la XP se puede definir como un conjunto de pasos de diversas metodologías, acopladas de manera que sean pasos flexibles a seguir utilizadas con el uso común, para realizar un desarrollo más agradable y sencillo.

Esta metodología tiene como base la simplicidad y como objetivo principal la satisfacción del cliente; para lograrlo se deben tomar en cuenta cuatro valores fundamentales:

Comunicación
Es muy importante que haya una comunicación constante con el cliente y dentro de todo el equipo de trabajo, de esto dependerá que el desarrollo se lleve a cabo de una manera sencilla, entendible y que se entregue al cliente lo que necesita.

Simplicidad
En la XP se refiere que ante todo y sin importar qué funcionalidad requiera el usuario en su sistema, éste debe ser fácil. El diseño debe ser sencillo y amigable al usuario, el código debe ser simple y entendible, programando sólo lo necesario y lo que se utilizará.

Retroalimentación
Es la comunicación constante entre el desarrollador y el usuario.

Coraje
Se refiere a la valentía que se debe tener al modificar o eliminar el código que se realizó con tanto esfuerzo; el desarrollador debe saber cuando el código que desarrolló no es útil en el sistema y, por lo mismo, debe ser eliminado. También se refiere a tener la persistencia para resolver los errores en la programación.


Dentro de la programación extrema se tiene 12 principios que llevan o guían el desarrollo con esta metodología:
  1. El principio de pruebas
  2. Proceso de planificación
  3. El cliente en el lugar
  4. Programación en parejas
  5. Integración continua
  6. Refactorización
  7. Entregas pequeñas
  8. Diseño simple
  9. Metáfora
  10. Propiedad colectiva del código
  11. Estándar de codificación
  12. La semana de 40 horas


Caracteristicas:

  • Metodología basada en prueba y error
  • Fundamentada en Valores y Prácticas
  • Expresada en forma de 12 Prácticas–Conjunto completo–Se soportan unas a otras–Son conocidas desde hace tiempo. La novedad es juntarlas

Ventajas: 

  • Programación organizada.
  • Menor taza de errores.
  • Satisfacción del programador.


Desventajas: 
  • Es recomendable emplearlo solo en proyectos a corto plazo.
  • Altas comisiones en caso de fallar.



______________________________________________________

Bibliografia:

http://fundamentosoftware.blogspot.mx/p/proceso-unificado-de-desarrollo.html
https://mdjesus.wordpress.com/2010/05/19/84/
http://ingenieriaweb2584.blogspot.mx/2013/04/metodologia-ingenieria-web.html
http://www.dosideas.com/wiki/Desarrollo_Agil_De_Software
https://procesosdesoftware.wikispaces.com/METODOLOGIA+SCRUM
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Rational+Team+Concert+for+Scrum+Projects/page/SCRUM+como+metodolog%C3%ADa
http://ingenieriadesoftware.mex.tl/52753_XP---Extreme-Programing.html
http://www.uv.mx/universo/486/infgral/infgral_15.html

_________________________________________________________________________

No hay comentarios:

Publicar un comentario