21 febrero 2016

Presentación: Métodos ágiles de programación (Sesión 3)

Mapa conceptual: Métodos ágiles de programación (Sesión 3)


Métodos ágiles de programación (Sesión 3)

MÉTODOS ÁGILES DE PROGRAMACIÓN

SESIÓN 3

6IM7

GONZALEZ GARCIA GONZALO
PARRA GARCILAZO CINTHYA DOLORES

TAREA

¿Qué son las metodologías ágiles de desarrollo de software?

Son una serie de procesos que se encargan de facilitar las actividades realizadas en el desarrollo de software para que puedan realizarse con mayor rapidez y adaptabilidad a los cambios en el transcurso de todo el proyecto, esto en comparación con los procesos tradicionales.
Se usan generalmente para proyectos un tanto cortos pero sin descuidar la calidad.
El desarrollo que se realiza es iterativo e incremental.

¿Cuáles son las características en las que se basan las metodologías ágiles?
Rapidez, flexibilidad, trabajo en equipo y disponibilidad.

El trabajo en equipo es importante para el desarrollo, se valora más que el entorno.
Es más importante el desarrollo del software que la documentación de este.
Su propuesta es una mayor participación del cliente en el proceso del análisis y en el trayecto de todo el proceso de desarrollo del proyecto.
Tienen una gran adaptabilidad al cambio y trabajar sobre la marcha.

Dentro de las características que componen a los métodos descritos anteriormente se incluyen el desarrollo iterativo, este tiene una gran ventaja pues al desarrollarse mediante iteraciones permite al equipo de desarrollo adaptarse a los cambios de de los requisitos.

¿Cuáles son las ventajas y desventajas del empleo de las metodologías ágiles respecto a  las tradicionales?

Una de las ventajas más importantes de los métodos ágiles de programación es que el cliente es el que se encarga de los procesos de negocios y ahorra a los analistas la investigación de dichos proceso.
Otra ventaja principal es que al utilizar las metodologías ágiles al presentarse algún error de cualquier tipo, el desarrollador no tiene que empezar desde el inicio sino que es fácilmente adaptable.

Una desventaja es que no se puede implementar en todo tipo de proyectos, únicamente a los que sean de tiempos relativamente cortos, proyectos no muy extensos


¿Cuándo es recomendable utilizar metodologías ágiles  en el desarrollo de software?

Cuando los proyectos no sean muy extensos, los integrantes del mismo deben estar en un mismo entorno de trabajo.

Es recomendable usar metodologías ágiles generalmente cuando se cuenta con un lapso corto para el desarrollo del proyecto.

¿Cuáles son algunos tipos de metodologías ágiles?

  1. eXtreme Programming,
  2. Scrum,
  3. Iconix,
  4. Cristal Methods,
  5. AUP.
  6. Adaptive Software Development y
  7. Feature Driven Development.


Referencias:
Canós, J. H., Letelier, P., & Penadés, M. C. (2003). Metodologías ágiles en el desarrollo de software. Universidad Politécnica de Valencia, Valencia.

Robles, G., & ferrer, J. (10 de cotubre de 2002). Programación Extrema y Software Libre. Recuperado el 26 de marzo de 2012, de TLDP: http://es.tldp.org/Presentaciones/200211hispalinux/ferrer/robles-ferrer-ponencia-hispalinux-2002.html

Cadavid A., Fernández J., Morales J., “Revisión de metodologías ágiles para el desarrollo del software”, Prospect. Vol 11, No 2, Julio-Diciembre de 2013

Jorge F., “Introducción a las metodologías ágiles, otras formas de analizar y desarrollar”, Universitat Oberta de Catalunya

14 febrero 2016

Modelos de Procesos de Software

Introducción:
Analizaremos los principales modelos de procesos del software, describiendo cada una de sus características esenciales, esto con la finalidad de que se logre apreciar las diferencias que radican unas con otras.
Se explicará brevemente en qué consiste la serie de pasos que lleva cada uno, se espera también que con esto se pueda visualizar en qué tipo de proyectos se adaptan cada uno de estos procesos ya que, a pesar de que hay algunos más antiguos que otros y por teoría más completos, no hay alguno que convenga por completo en todo tipo de proyectos.

Desarrollo:
Podemos entender proceso de software como un marco de trabajo de las tareas que se requieren para construir software de alta calidad. Éstos surgieron como la respuesta a la necesidad de establecer una estrategia de desarrollo para cada paso que se requiere al momento de desarrollar software; como los procesos, métodos y herramientas implementadas.
Es importante que durante el proceso no se abandone el modelo, esto quiere decir, se debe seguir desde el inicio del proyecto hasta el final.  Sin embargo, ninguno impone un modelo de procesos concreto (modelo de ciclo de vida) ni cómo realizar las diferentes actividades incluidas en cada proceso, por lo que cada empresa deberá utilizar los métodos, técnicas y herramientas que considere oportuno.
Cada uno de los modelos es una representación de un proceso real, esto quiere decir, cada uno de estos se adapta a cada una de las necesidades que requieran los desarrolladores. No hay un modelo absoluto.
Estos son algunos ejemplos con sus respectivas características:

Modelo lineal (o en cascada)

-El más antiguo de los modelos de Ingeniería del Software.
-Presenta una estructura secuencial formada por seis etapas:
          Análisis de Sistema: Establece requisitos de todos los elementos del sistema
          Análisis de requisitos de Software: Se analizan las necesidades de los usuarios finales para         delimitar un objetivo
Diseño: Traduce los requisitos en una representación del software con la calidad requerida antes de que comience la codificación
                    Estructura de datos
                    Arquitectura del software
                    Detalle procedimental
                    Caracterización de la interfaz
          Codificación: Fase de programación.
Prueba: Se centra en la lógica interna del software, y en las funciones externas realizando pruebas que aseguren que la entrada definida produce los resultados que realmente se requieren.
Mantenimiento: Es muy probable que se deban realizar modificaciones al software después de haber hecho la entrega al cliente. Dichos cambios son con la finalidad de corregir errores, se deba adaptar a cambios o existan nuevos requerimientos.
-No permite retroceder, al final de cada fase es necesario que el analista verifique y valide todo el trabajo realizado.
-Desventajas
          No siempre se sigue este flujo de secuencia en la realidad, siempre hay iteraciones.
Puede ser complicado que el cliente especifique bien los requerimientos al inicio del proyecto.
Hasta llegar a las etapas finales, no estará disponible una versión operativa del programa.
-Ventajas
          Es sencillo seguir los pasos intuitivos necesarios para su desarrollo.

Modelo en espiral.

-Se desarrolla en una serie de versiones incrementales.
-Se integra de los siguientes pasos:
Planificación: Se definen los objetivos, las alternativas y las restricciones, se analiza e identifican los riegos.
Análisis de Riesgos: Se analiza el proyecto y se toma la decisión de si se debe continuar con el ciclo.
Ingeniería (Construcción del prototipo): Se desarrolla y se valida.
Evaluación del cliente: El cliente evalúa y sugiere modificaciones.
- Utiliza un enfoque evolutivo, permitiendo al desarrollador y al cliente entender y reaccionar a los riesgos en cada nivel.

Modelo incremental:

-Evolución del modelo de casada
-Es un modelo no secuencial
-Comienza con el análisis de los requerimientos
-Realiza iteraciones para bifurcar diseños, es decir, comienza el diseño arquitectura, estructura, etc. del software, puede comenzar con una segunda iteración sin necesidad de modificar los requerimientos.
-Puede realizar tantas iteraciones como sean necesarias.
-El primer incremento a menudo es un producto esencial.
- El modelo de proceso incremental, como la construcción de prototipos y otros enfoques evolutivos, es iterativo por naturaleza
-Se centra en la entrega de un producto operacional con cada incremento. Los primeros incrementos se pueden implementar con menos personas


Proceso Unificado de Desarrollo

-Guía para administrar el desarrollo iterativo de un modo controlado
          Requerimientos de negocio
          Tiempo al mercado
          Riesgos del proyecto
-Está basado en componentes.
-Utiliza UML para expresar gráficamente todos los esquemas de un sistema de software.
-Iterativo e incremental.
-Dirigido por casos de uso
-Centrado en la arquitectura.

Conclusión:
Podemos analizar con esto que cada uno de estos procesos tiene características específicas que se adaptan a los diferentes proyectos que se puedan realizar. Conforme han pasado los años se van visualizando nuevas necesidades y se forman procesos más dinámicos para la resolución de problemas.

Referencias:
  •    Baetjer, H. (2009). dsc.itmorelia.edu.mx. Obtenido de https://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&sqi=2&ved=0ahUKEwj56LD5n_fKAhUCOiYKHfKdB-oQFgggMAE&url=http%3A%2F%2Fdsc.itmorelia.edu.mx%2F~jcolivares%2Fcourses%2Fsdf11b%2Fsdf_p4.doc&usg=AFQjCNEcbMnY2x6Cq--wB1rozMn0FHeaEg
  •    de Desarrollo, P. U. Modelos de Proceso del Software.
  •   Adaptada de la presentación original “Ingeniería de Software”  de Gloria Lucia Giraldo Gómez. Universidad Nacional de Colombia. Sede Medellín.