jueves, 5 de mayo de 2011

CUESTIONARIO


1. ¿QUÉ SON LAS METODOLOGÍAS  ÁGILES?

Son un marco de trabajo conceptual de la ingeniería de software que promueve iteraciones en el desarrollo a lo largo de todo el ciclo de vida del proyecto. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en cortos lapsos de tiempo. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requerimientos, diseño, codificación, revisión y documentación. Una iteración no debe agregar demasiada funcionalidad para justificar el lanzamiento del producto al mercado, pero la meta es tener un demo (sin errores) al final de cada iteración. Al final de cada iteración el equipo vuelve a evaluar las prioridades del proyecto.
Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles están localizados en una simple oficina abierta, a veces llamadas "plataformas de lanzamiento" (bullpen en inglés). La oficina debe incluir revisores, escritores de documentación y ayuda, diseñadores de iteración y directores de proyecto. Los métodos ágiles también enfatizan que el software funcional es la primera medida del progreso. Combinado con la preferencia por las comunicaciones cara a cara, generalmente los métodos ágiles son criticados y tratados como "indisciplinados" por la falta de documentación técnica.

2.  MANIFIESTO ÁGIL

Valora:

-Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software. Es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades.

- Desarrollar software que funciona más que conseguir una buena documentación. La regla a seguir es .no producir documentos a menos que sean necesarios de forma inmediata para tomar un decisión importante.. Estos documentos deben ser cortos y centrarse en lo fundamental.

-La colaboración con el cliente más que la negociación de un contrato. Se propone que exista una interacción constante entre el cliente y el equipo de desarrollo. Esta colaboración entre ambos será la que marque la marcha del proyecto y asegure su éxito.

-Responder a los cambios más que seguir estrictamente un plan. La habilidad de responder a los cambios que puedan surgir a los largo del proyecto (cambios en los requisitos, en la tecnología, en el equipo) determina también el éxito o fracaso del mismo. Por lo tanto, la planificación no debe ser estricta sino flexible y abierta.


Principios:

I. La prioridad es satisfacer al cliente mediante tempranas y continuas entregas de software que le aporte un valor.

II. Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una ventaja competitiva.

III. Entregar frecuentemente software que funcione desde un par de semanas a un par de meses, con el menor intervalo de tiempo posible entre entregas.

IV. La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto.

V. Construir el proyecto en torno a individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo.

VI. El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo.
VII. El software que funciona es la medida principal de progreso.

VIII. Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante.

IX. La atención continua a la calidad técnica y al buen diseño mejora la agilidad.

X. La simplicidad es esencial.

XI. Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí
mismos.

XII. En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo, y
según esto ajusta su comportamiento.


3.  CICLO DE DESARROLLO, PROCESO, PRÁCTICAS Y CICLO DE VIDA XP

Ciclo de vida programación extrema
Planificación: Es la primera actividad en el proceso de desarrollo. Comienza creando una serie de historias de usuarios que describen la funcionalidad del software que se va a construir. El cliente les asigna una prioridad y el equipo de desarrollo evalúa cada una y le asigna un periodo de desarrollo. Si la historia supera más de tres semanas de desarrollo se divide la historia en historias menores.
Una vez establecido un acuerdo detallando la fecha de entrega, el equipo de desarrollo ordena las historias para implementar antes las que tengan mayor prioridad.
Conforme avanza el trabajo de desarrollo, el cliente puede agregar nuevas historias con nueva funcionalidad, de esta manera, la programación extrema es una metodología que acepta fácilmente requisitos cambiantes durante el desarrollo de software.

Diseño: El diseño en la programación extrema sigue el principio de hacerlo todo simple .El diseño se va modificando a lo largo de todo el proceso de desarrollo.

Codificación: La programación extrema recomiendo que después de diseñar las historias el equipo no deba comenzar la codificación sino que debe desarrollar una serie de pruebas de unidad que les ayuden a centrarse en lo que debe implementase para pasar esa prueba.

Pruebas: Las pruebas de unidad creadas deber ser automatizadas para que puedan ejecutarse de manera fácil y rápida. De esta forma podemos modificar el código y asegurarnos que funciona pese a los cambios producidos.
Ciclo de desarrollo

Planificación  incremental: Los requerimientos se registran en tarjetas de historias. Los desarrolladores dividen estas historias en Tareas de desarrollo.

Entregas pequeñas: Primero se desarrolla una versión con la funcionalidad más importante. Después se van añadiendo funcionalidades a las distintas entregas.

Diseño sencillo: Solo se lleva a cabo el diseño necesario para cumplir con los requerimientos actuales.

Desarrollo previamente probado: Se utilizan pruebas automatizadas antes de escribir código.

Programación en parejas: Las parejas de desarrolladores trabajan en todas las áreas del sistema.

Integración continua: Cuando acaba el trabajo de una historia se integra en el sistema entero. Después de la integración se deben pasar todas las pruebas de unidad. 

Cliente presente: El cliente debe estar disponible ya que es miembro del equipo de desarrollo y es responsable de formular los requerimientos del sistema para que se puedan implementar.

Principios de la programación extrema
Participación del cliente: Los clientes deben estar implicados en todo el proceso de desarrollo probando las diferentes versiones funcionales y definiendo nuevos requerimientos.

Entrega incremental: El software se desarrolla en incrementos donde el cliente especifica los requerimientos funcionales de cada incremento.

Personas, no procesos: Se valora más al equipo de desarrollo por encima de un proceso de desarrollo. Esto quiere decir que se les debe dejar trabajar siguiendo sus propias formas de trabajo.

Aceptar el cambio: Se debe contar con requerimientos cambiantes a lo largo de todo el proceso de desarrollo, por lo que el sistema debe diseñarse para adaptarse facilmente a nuevos requerimientos por parte de los clientes.

Mantener la simplicidad: Tanto el software como el proceso de desarrollo tiene que ser simple, eliminando donde sea posible la complejidad.

Prácticas
- Cuando los requisitos sean volátiles y cambien muy a menudo a lo largo de todo el proceso de desarrollo.
- Con grupos pequeños que se impliquen personalmente en el desarrollo.
- Cuando no existe un contrato fijado sino que se va adaptando. Normalmente el documento de especificación de requerimientos es parte del contrato entre el cliente y la empresa desarrolladora del software, pero redactar contratos de este estilo utilizando métodos ágiles puede ser muy difícil. Lo normal es depender de contratos donde se paga por el tiempo necesario de desarrollo en vez de por el desarrollo de un conjunto de requerimientos específicos.
- Cuando el cliente está dispuesto a estar activo durante todo el proceso de desarrollo, probando las nuevas versiones y especificando nuevos requerimientos.

4.  PROGRAMACIÓN EXTREMA
La programación extrema es uno de los métodos ágiles más conocidos y utilizados. La programación extrema utiliza un enfoque orientado a objetos como paradigma de programación preferido. Este enfoque apoya el desarrollo de aplicaciones con requisitos que cambian rápidamente durante el proceso de desarrollo pensados para entregar software funcional de forma rápida a los clientes. De esta forma, los clientes pueden probar el software que se está desarrollando y sugerir nuevas funcionalidades.

Es una metodología ágil centrada en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los desarrolladores, y propiciando un buen clima de trabajo. XP se basa en realimentación continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los cambios. XP se define como especialmente adecuada para proyectos con requisitos imprecisos y muy cambiantes, y donde existe un alto riesgo técnico.


5.  LAS HISTORIAS DE USUARIO EN LA XP 

Una historia de usuario es una representación de un requerimiento de software escrito en una o dos frases utilizando el lenguaje común del usuario. Las historias de usuario son utilizadas en las metodologías de desarrollo ágiles para la especificación de requerimientos (acompañadas de las discusiones con los usuarios y las pruebas de validación). Cada historia de usuario debe ser limitada, esta debería poderse escribir sobre una nota adhesiva pequeña. Dentro de la metodología XP las historias de usuario deben ser escritas por los clientes.
Las historias de usuario son una forma rápida de administrar los requerimientos de los usuarios sin tener que elaborar gran cantidad de documentos formales y sin requerir de mucho tiempo para administrarlos. Las historias de usuario permiten responder rápidamente a los requerimientos cambiantes.

6.  THE AGILE  ALLIANCE 

Con más de 4411 miembros de todo el mundo, Agile Alliance se basa en los valores y principios del Manifiesto Agile de desarrollo de software. Agile Alliance recomienda prácticos enfoques para el desarrollo de software, porque aportan valor a las organizaciones y a los clientes finales más rápido y con mayor calidad.

7. PRINCIPIO DEL MANIFIESTO ÁGIL 

Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.

Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo.

Los procesos  agiles aprovechan el cambio para proporcionar ventaja competitiva al cliente. 

Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con referencia al periodo de tiempo más corto posible. 

Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto. 

Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo. 

El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara. 

El software funcionando es la medida principal de progreso. 

Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida. 

La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad. 

La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial. 

Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados. 

A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia. 

8. QUÉ METODOLOGÍAS SON APLICABLES AL MUNDO DEL SOFTWARE LIBRE? 

Scrum
Adaptive Software Development  (ASD)
Agile Unified Process (AUP)
Crystal Clear
Essential Unified Proces (EssUP)
Feature Driven Development (FDD)
Lean Software Development (LSD)
Kanban
Open Unified Process (OpenUP)
Programación Extrema (XP)

9. HERRAMIENTAS DE DESARROLLO DISTRIBUIDO EN EL SOFTWARE LIBRE

LAMP (Linux, Apache, MySQL, PHP), o su versión Windows, WAMP.

Precisamente han sido PHP  y MySQL las herramientas más extendidas entre los sistemas libres para gestión de contenidos, ya que la mayoría de las soluciones se basan en ellos.

 10. MÉTRICAS Y MODELOS UTILIZADOS EN EL SOFTWRE LIBRE
De complejidad: Miden volumen, tamaño y configuración.

De calidad: Definen exactitud, estructuración o modularidad, pruebas y mantenimiento.

De competencia: Mide certeza, rapidez y eficiencia.

De desempeño: Mide conducta de módulos y sistemas de un software.

Estilizadas: Métricas de experimentación y de preferencia, estilo de código, convenciones y limitaciones.

Modelos utilizados:
GOM (Goal Question Metrics)
 PSM (Practical Software Measurement)
QSOS (Method for Qualification a Selection of Open Source)

11. MEDICIÓN Y ANÁLISIS DEL SOFTWARE LIBRE

La medición busca la calidad realizada, calidad programada y calidad necesaria. En el grado de cumplimiento de requisitos se busca la satisfacción del cliente y conformidad en  sus requisitos.


REFERENCIAS


No hay comentarios:

Publicar un comentario

Seguidores