lunes, 10 de agosto de 2015

modelos iterativos

Tomado de: http://testingbaires.com/modelos-iterativos/ Un poco de teoría nunca viene mal, al contrario, es necesario como para reforzar nuestras prácticas. Ahora que estoy tomando un curso para certificarme como Scrum Master, entre todos los temas que estoy viendo esta por supuesto el del Modelo Iterativo. Pues bien, vayamos al tema entonces. Como para introducirse en el tema, a continuación una definición que aclara de entrada el concepto : En el ciclo de vida iterativo, en cada Iteración se reproduce el ciclo de vida en cascada a menor escala. Los objetivos de una Iteración se establecen en función de la evaluación de las Iteraciones precedentes. Desde el principio, al final de cada Iteración se le entrega al Cliente una versión completa y mejorada del Producto. El Cliente es quien luego de cada Iteración evalúa el Producto y lo corrige o propone mejoras. Estas Iteraciones irán Refinando el sistema y se repetirán hasta obtener un Producto que satisfaga al Cliente. La Especificación de requisitos se realiza en forma creciente: a medida que los Usuarios logran un mejor entendimiento del problema, éste es reflejado en el sistema software. Es decir, el Producto de cada etapa de Especificación de requisitos es un agregado o mejora al Producto de la etapa de especificación anterior. Desarrollo de software iterativo. Primeros aspectos a tener presente. las actividades de definición de requisitos, diseño, desarrollo y pruebas, se segmentan en pasos reducidos y se ejecutan de manera continua. hay que lograr obtener el consentimiento por parte de nuestro cliente luego de cada iteración con el fin de poder modificar la dirección del proyecto en caso de que fuera necesario. Las tareas de desarrollo y prueba de software deben necesariamente estar vinculadas y trabajar organizados y coordinados. Aislar a quienes realizan el “Testing” no es para nada productivo. Por lo tanto, es necesario planificar las pruebas conforme los ciclos de vida que se definan. Solo para recordar, en un ciclo de vida del tipo modelo en V o secuencial, se busca relacionar cada nivel de desarrollo con sus correspondientes niveles de pruebas: de componentes, integración, sistema y aceptación. Imaginemos una cebolla y las diferentes capas que contiene. Si estuviéramos participando en un modelo de desarrollo del tipo iterativo (o incremental), como son los modelos de desarrollo ágil por ejemplo, aplicaremos al resultado de cada iteración diferentes niveles de pruebas (componentes, integración, sistema y aceptación) acordes por supuesto al tamaño y alcance del artefacto en cuestión. Por la naturaleza del enfoque incremental del proceso, aplicaremos regresión o automatización a todos los niveles de nuestras pruebas. Los siguientes, son ejemplos clásicos de modelos iterativos: Modelo Prototipado: se entiende por tal a un desarrollo rápido de una porción representativa del sistema que se pueda usar, seguido de sucesivas modificaciones hasta que el sistema sea terminado. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se debe utilizar muchos recursos. El diseño rápido se centra en una representación de aquellos aspectos del software que serán visibles para el cliente o el usuario final. Este diseño conduce a la construcción de un prototipo, el cual es evaluado por el cliente para una retroalimentación; gracias a ésta se refinan los requisitos del software que se desarrollará. La interacción ocurre cuando el prototipo se ajusta para satisfacer las necesidades del cliente. Esto permite que al mismo tiempo el desarrollador entienda mejor lo que se debe hacer y el cliente vea resultados a corto plazo. Desarrollo rápido de aplicaciones:[RAD: Rapid Application Development], aquí la interfaz de usuario se implementa usando una funcionalidad que esta previamente construida simulando la funcionalidad que posteriormente será desarrollada. Hoy en día se suele utilizar para referirnos al desarrollo rápido de interfaces gráficas de usuario tales como Glade, o entornos de desarrollo integrado completos. Algunas de las plataformas más conocidas son Visual Studio, Lazarus, Gambas, Delphi, Foxpro, Anjuta, Game Maker, Velneo, GeneXus Proceso Unificado: [RUP: Rational Unified Process], es un modelo que esta orientado a objetos y proviene de IBM. Aporta el lenguaje de modelado UML y soporte al Proceso unificado. El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational o simplemente RUP. Programación Extrema:[XP: Extreme Programming], en este caso tanto el desarrollo como las pruebas, se basan sin tener una especificación de requisitos formalizada. Los defensores de la XP consideran que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos. 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. Características cada iteración contribuye con una característica adicional del sistema a desarrollar. las pruebas de regresión y la automatización de pruebas son elementos / factores de gran relevancia. en cada iteración, la verificación (relación con el nivel precedente) y la validación (grado de corrección del producto dentro del nivel actual) se pueden efectuar por separado. Desarrollo guiado por pruebas (Test Driven Development) esta basado en juegos de casos de prueba se preparan ciclos de prueba (test cycle) se realizan pruebas automatizadas el desarrollo esta de acuerdo a casos de prueba se preparan de manera temprana versiones de componentes para probarlas se realizan ejecuciones automáticas de prueba se realizan correcciones de defectos para versiones futuras se realiza una repetición de juegos de prueba hasta que no se detecten defectos Scrum es un marco de trabajo (NO es una técnica, NO es una Metodología) para gestionar proyectos en forma ágil. El foco está en centrarse sobre aspectos como son: la flexibilidad en los cambios, nuevos requisitos durante el proyecto, la parte humana, el producto final, la interacción y colaboración con el cliente y el desarrollo incremental para asegurar buenos resultados en proyectos que pueden presentar requisitos muy cambiantes o con altas exigencias en cuanto a reducir los tiempos de desarrollo manteniendo una alta calidad. La diferencia con las iteraciones en cascada es que al final de cada Sprint obtenemos un producto entregable que se va incrementando en sucesivos Sprints, priorizándose aquellos aspectos que aportan mayor funcionalidad y valor al dueño del producto. Cada versión, por así llamarla para los que están acostumbrados al “cascada o predictivo” es una ampliación de la anterior, que puede usarse y que se la entrega para la evaluación del usuario final (cliente). Referencias:Referencias: # Modelo Iterativo – Wiki # Modelo Iterativo – Niveles # Desarrollo Tradicional vs Agil

No hay comentarios:

Publicar un comentario