UNIDAD DESARROLLO AGIL DE SOFTWARE (METODOLOGÍAS LIVIANAS) OBJETIVO: Conocer las diferentes metodologías modernas que se trabajan en la ingeniería de software. Identificar las metodologías mas utilizadas en los diferentes proyectos realizados en el programa de ingeniería de sistemas. METODOLOGÍAS: Las metodologías imponen un proceso disciplinado sobre el desarrollo de software con el fin de hacerlo más predecible y eficiente. Lo hacen desarrollando un proceso detallado con un fuerte énfasis en planificar inspirado por otras disciplinas de la ingeniería. Las metodologías ingenieriles han estado presentes durante mucho tiempo. No se han distinguido precisamente por ser muy exitosas. Aún menos por su popularidad. La crítica más frecuente a estas metodologías es que son burocráticas. Hay tanto que hacer para seguir la metodología que el ritmo entero del desarrollo se retarda. PROGRAMACIÓN EXTREMA XP: Es un enfoque de la ingeniería de software formulado por Kent Beck,es el más destacado de los procesos ágiles de desarrollo de software. Al igual que éstos, la programación extrema se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad. Los defensores de 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. Se puede considerar la programación extrema como la adopción de las mejores metodologías de desarrollo de acuerdo a lo que se pretende llevar a cabo con el proyecto, y aplicarlo de manera dinámica durante el ciclo de vida del software. OBJETIVOS PRINCIPALES DE XP: Los objetivos de XP son muy simples: la satisfacción del cliente. Esta metodología trata de dar al cliente el software que él necesita y cuando lo necesita. Por tanto, debemos Responder muy rápido a las necesidades del cliente, incluso cuando los cambios sean al final de ciclo de la programación. El segundo objetivo es potenciar al máximo el trabajo en grupo. Tanto los jefes de proyecto, los clientes y desarrolladores, son parte del equipo y están involucrados en el desarrollo del software. MÉTODO DE DESARROLLO DE SISTEMAS DINÁMICOS (MDSD): Permite la construcción de sistemas con restricción de tiempo,realizando prototipos incrementales en un ambiente de proyecto controlado. Se compone de dos actividades que se realizan primero y consecuente con ellas se realizan tres ciclos de vida adicionales, las dos actividades primarias son el estudio de factibilidad en donde se establecen los requisitos básicos del negocio y las restricciones asociadas a la metodología de manera de evaluar si la misma puede ser realizada bajo el esquema MDSD, y la segunda es el estudio del negocio donde se establecen los requerimientos funcionales y la arquitectura básica de la aplicación. MELÉ: Es un modelo agil de proceso desarrollado por Jefff Suterland y su equipo a los comienzos de la década de los 90, mele proviene de una jugada de rugby. También conocido con el nombre de Scrum. MODELO ÁGIL (AM): Modelado Ágil (AM) es una metodología basada en la práctica para modelado efectivo de sistemas de software. La metodología AM es una colección de prácticas, guiadas por principios y valores que pueden ser aplicados por profesionales de software en el día a día. AM no es un proceso prescriptivo, ni define procedimientos detallados de como crear un tipo de modelo dado. OBJETIVOS: 1. Definir y mostrar como poner en práctica una colección de valores, principios y prácticas que conlleven a un modelado ligero efectivo. 2. Explorar la aplicación de técnicas de modelado en proyectos de software a través de un enfoque ágil, tal como XP, DSDM o SCRUM. 3. Explorar el como mejorar el modelado bajo procesos prescriptivos, tales como el Proceso Rational Unificado (RUP) DESARROLLO ADAPTATIVO DE SOFTWARE (DAS): fue propuesto por Jim Highsmith como una metodología para desarrollar software y sistemas muy complejos. El se centra en la colaboración humana y la organización del equipo. El ciclo de vida del DAS se conforma de tres fases: Especulación, colaboración, incremento del software aprendizaje colaboración. METODOLOGIA METRICA: ofrece a las Organizaciones un instrumento útil para la sistematización de las actividades que dan soporte al ciclo de vida del software dentro del marco que permite alcanzar los siguientes objetivos: Proporcionar o definir Sistemas de Información que ayuden a conseguir los fines de la Organización mediante la definición de un marco estratégico para el desarrollo de los mismos. Dotar a la Organización de productos software que satisfagan las necesidades de los usuarios dando una mayor importancia al análisis de requisitos. Mejorar la productividad de los departamentos de Sistemas y Tecnologías de la Información y las Comunicaciones, permitiendo una mayor capacidad de adaptación a los cambios y teniendo en cuenta la reutilización en la medida de lo posible. Facilitar la comunicación y entendimiento entre los distintos participantes en la producción de software a lo largo del ciclo de vida del proyecto, teniendo en cuenta su papel y responsabilidad, así como las necesidades de todos y cada uno de ellos. Facilitar la operación, mantenimiento y uso de los productos software obtenidos. La nueva versión de MÉTRICA contempla el desarrollo de Sistemas de Información para las distintas tecnologías que actualmente están conviviendo y los aspectos de gestión que aseguran que un Proyecto cumple sus objetivos en términos de calidad, coste y plazos. RATIONAL UNIFIED PROCESS RUP: El proceso unificado de desarrollo (RUP) es una metodología para la ingeniería de software que va más allá del mero análisis y diseño orientado a objetos para proporcionar una familia de técnicas que soportan el ciclo completo de desarrollo de software. El resultado es un proceso basado en componentes, dirigido por los casos de uso, centrado en la arquitectura, iterativo e incremental. TABLA COMPARATIVA: METODOLOGIA PROGRAMACION EXTREMA (XP) CARACTERISTICAS Coste Tiempo Calidad Ámbito Comunicación Sencillez Retroalimentación Valentía DESVENTAJAS En principio escribir pruebas nos lleva mucho tiempo. falta de comunicación, por no comentar un cambio crítico en el diseño, por no preguntar lo que pensamos al cliente. VENTAJAS XP es más liviana y ágil no se retrasa en la planificación: llegada la fecha de entregar el software éste no esta disponible. Sistemas deteriorados: el software se ha creado pero después de un par de año el coste de su mantenimiento es tan complicado que definitivamente se abandona su Producción. Tasa de defectos: el software se pone en producción pero los defectos son tantos que nadie lo usa. Requisitos mal comprendidos: el software no resuelve los requisitos planificados inicialmente. Cambios de negocio: el problema que resolvía nuestro software ha cambiado y nuestro Software no se FASES ha adaptado. Falsa riqueza: el software hace muchas cosas técnicamente muy interesantes y divertidas, pero no resuelven el problema de nuestro cliente, ni hace que éste gane más dinero. Cambios de personal: después de unos años de trabajo los programadores comienzan a odiar el proyecto y lo abandonan. Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras. Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión. Se aconseja escribir el código de la prueba antes de la codificación. Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto. Se supone que la mayor calidad del código escrito de esta manera -el código es revisado y discutido mientras se escribe- es más importante que la posible pérdida de productividad inmediata. Frecuente integración del equipo de programación con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al equipo de desarrollo. Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes. Refactorización del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento. Las pruebas han de garantizar que en la refactorización no se ha introducido ningún fallo. EJEMPLO Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto. Las frecuentes pruebas de regresión garantizan que los posibles errores serán detectados. Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuando todo funcione se podrá añadir funcionalidad si es necesario. La programación extrema apuesta que es más sencillo hacer algo simple y tener un poco de trabajo extra para cambiarlo si se requiere, que realizar algo complicado y quizás nunca utilizarlo. El diseño crea una estructura que organiza la lógica del sistema, un buen diseño Permite que el sistema crezca con cambios en un solo lugar. Los diseños deben de ser Sencillos, si alguna parte del sistema es de desarrollo complejo, dividirla en varias. Si hay fallos en el diseño o malos diseños, estos deben de ser corregidos cuanto antes. METODOLOGIA RATIONAL UNIFIED PROCESS RUP CARACTERISTICAS Los autores de RUP destacan que el proceso de software propuesto por RUP tiene tres características esenciales: está dirigido por los Casos de Uso, está centrado en la arquitectura, y es iterativo e incremental. "Centrado en los modelos: Los diagramas son un vehículo de comunicación más expresivo que las descripciones en lenguaje natural. Se trata de minimizar el uso de descripciones y especificaciones textuales del sistema. "Guiado por los Casos de Uso: Los Casos de Uso son el instrumento para validar la arquitectura del software y extraer los casos de prueba. "Centrado en la arquitectura: Los modelos DESVENTAJAS VENTAJAS FASES son proyecciones del análisis y el diseño constituye la arquitectura del producto a desarrollar. "Iterativo e incremental: Durante todo el proceso de desarrollo se producen versiones incrementales (que se acercan al producto terminado) del producto en desarrollo. Pesado Dividido en cuatro fases, que se dividen en iteraciones Los artefactos son el objetivo de cada actividad Se basa en roles Muy organizativo Mucha documentación Permite desarrollar aplicaciones sacando el máximo provecho de las nuevas tecnologías, mejorando la calidad, le rendimiento, la reutilización, la seguridad y el mantenimiento del software mediante una gestión sistemática de los riesgos. Permite la producción de software que cumpla con las necesidades de los usuarios, a través de la especificación de los requisitos, con una agenda y costo. Enriquece la productividad en equipo y proporciona prácticas óptimas de software a todos sus miembros.. Permite llevar a cabo el proceso de desarrollo práctico, brindando amplias guías, plantillas y ejemplos para todas las actividades críticas. Proporciona guías explicitas para áreas tales como modelado de negocios, arquitectura Web, pruebas y calidad. También se proporciona guías para desarrollar en plataformas IBM . Inicio: Durante la fase de inicio se define el modelo del negocio y el alcance del proyecto. Se identifican todos los actores y Casos de Uso, y se diseñan los Casos de Uso más esenciales (aproximadamente el 20% del modelo completo). Se desarrolla, un plan de negocio para determinar que recursos deben ser asignados al proyecto. Elaboración: El propósito de la fase de elaboración es analizar el dominio del problema, establecer los cimientos de la arquitectura, desarrollar el plan del proyecto y eliminar los mayores riesgos. METODOLOGIA CARACTERISTICAS Construcción: La finalidad principal de esta fase es alcanzar la capacidad operacional del producto de forma incremental a través de las sucesivas iteraciones. Durante esta fase todos los componentes, características y requisitos deben ser implementados, integrados y probados en su totalidad, obteniendo una versión aceptable del producto. Transición: La finalidad de la fase de transición es poner el producto en manos de los usuarios finales, para lo que se requiere desarrollar nuevas versiones actualizadas del producto, completar la documentación, entrenar al usuario en el manejo del producto, y en general tareas relacionadas con el ajuste, configuración, instalación y facilidad de uso del producto. MÉTODO DE DESARROLLO DE SISTEMAS DINÁMICOS (MDSD) Involucrar al usuario es la clave para llevar un proyecto eficiente y efectivo donde ambos usuarios y desarrolladores comparten un entorno de trabajo para que las decisiones puedan ser tomadas con precisión. El equipo del proyecto debe tener el poder para tomar decisiones que son importantes para el progreso del proyecto, sin esperar aprobación de niveles superiores. DSDM se centra en la entrega frecuente de productos, asumiendo que entregar algo temprano es siempre mejor que entregar todo al final. Al entregar el producto frecuentemente desde una etapa VENTAJAS FASES temprana del proyecto, el producto puede ser verificado y revisado allí donde la documentación de registro y revisión puede ser tenida en cuenta en la siguiente fase o iteración. El principal criterio de aceptación de entregables en DSDM reside en entregar un sistema que satisface las actuales necesidades de negocio. No está dirigida tanto a proporcionar un sistema perfecto que resuelva todas las necesidades posibles del negocio, sino que centras sus esfuerzos en aquellas funcionalidades críticas para alcanzar las metas establecidas en el proyecto/negocio. El desarrollo es iterativo e incremental, guiado por la realimentación de los usuarios para converger en una solución de negocio precisa. Todos los cambios durante el desarrollo son reversibles. La entrega del proyecto debería ser a tiempo, respetando presupuestos y con buena calidad. DSDM solo requiere que cada paso del desarrollo se complete lo suficiente como para que empiece el siguiente paso. De este modo una nueva iteración del proyecto puede comenzar sin tener que esperar a que la previa se complete enteramente. Y con cada nueva iteración el sistema se mejora incrementalmente. Recuérdese que las necesidades del negocio cambian constantemente y a cualquier ritmo con el tiempo. Ambas técnicas de Desarrollo y Gestión de los proyectos están incluidas en DSDM. La Evaluación de riesgos debiera centrarse en entregar función de negocio, no en el proceso de construcción. Fase del pre-proyecto: fase del ciclo de vida del proyecto, y fase del post-proyecto. La fase del ciclo de vida del proyecto se subdivide en 5 etapas: 1. 2. 3. 4. 5. METODOLOGIA CARACTERISTICAS VENTAJAS DESVENTAJAS estudio de viabilidad, estudio de la empresa, iteración del modelo funcional, diseño e iteración de la estructura implementación. MODELO ÁGIL 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 autogestionados Colaboración continua con el cliente Incorporar al cambio Prácticas de desarrollo modernas Entregar con frecuencia software que funcione, en periodos de un par de semanas hasta un par de meses, con preferencia en los periodos breves. Las personas del negocio y los desarrolladores deben trabajar juntos de forma cotidiana a través del proyecto. Construcción de proyectos en torno a individuos motivados, dándoles la oportunidad y el respaldo que necesitan y procurándoles confianza para que realicen la tarea. La forma más eficiente y efectiva de comunicar información de ida y vuelta dentro de un equipo de desarrollo es mediante la conversación cara a cara. El software que funciona es la principal medida del progreso. Dificultad para los requerimientos que persistirán y cuales cambiaran El diseño y la construcción están intercalados y deben realizarse de manera conjunta de modo que pueda ser aprobados conforme se crean METODOLOGIA CARACTERISTICAS VENTAJAS MELÉ (SCRUM) Scrum es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto. Los roles principales en Scrum son el ScrumMaster, que mantiene los procesos y trabaja de forma similar al director de proyecto, el ProductOwner, que representa a los stakeholders (clientes externos o internos), y el Team que incluye a los desarrolladores. Un principio clave de Scrum es el reconocimiento de que durante un proyecto los clientes pueden cambiar de idea sobre lo que quieren y necesitan FASES El análisis el diseño y la construcción no son predecibles. Equipos auto- dirigidos y autoorganizados. Una vez eligida una tarea, no se agrega trabajo extra. En caso de que se agregue algo se recomiendo quitar alguna otra cosa. Demostraciones a participantes externos una vez culminada cada iteración Al principio de cada iteración, planeamiento adaptivo guiado por el cliente. Planeamiento: el propósito es establecer la visión, definir expectativas y asegurarse la financiación. Las actividades son la escritura de la visión, el presupuesto, el registro de acumulación o retraso del producto final y los ítems estimados, así como a arquitectura de alto nivel, el diseño explorativo y los propósitos. MONTAJE: El propósito es identificar mas requerimientos y priorizar las tareas para la primera iteración. DESARROLLO: El propósito es implementar un sistema listo para entregar en una serie de iteraciones de treinta llamadas “corridas”. Las actividades son un encuentro de planeamiento de corridas en cada interacción, la definición del registro de acumulación de corridas y los estimados y encuentros diarios. Liberación: El propósito es el pliegue operacional. Tipos de metodologías utilizados en los diferentes proyectos de grado de la facultad de ingeniería de sistemas: 1.- DESARROLLO E IMPLEMENTACIÓN DEL MODULO DE INVENTARIOS PARA LA INTRANET DEL DEPARTAMENTO ADMINISTRATIVO DE CATASTRO DISTRITAL (DACD) Metodología UML Diana Paola Montenegro Cruz (2007) 2.- SISTEMA DE INFORMACION PARA LA CARACTERIZACION DE NUEVAS TECNOLOGIAS DE INFORMACION DE LA REGION DEL SUMAPAZ EN EL SECTOR COMERCIAL Metodología Ingenieril. Avon Andrea Ramírez (2007). 3.- ANALISIS, DISEÑO E IMPLEMENTACION DE UNA BASE DE DATOS Y EL MODULO ETADISTICO PARA EL OBSERVATORIO INMOVILIARIO CATASTRAL DEL DEPARTAMENTO ADMINISTRATIVO CATASTRO DISTRITAL. Metodología Métrica - Metodología Desarrollo Pablo Rolando Garzón (2007) 4.-SISTEMA DE INFORMACION PARA LA GESTION DE CONVENIOS Y SERVICIOS EN EL FONDO DE EXTENCION Y PROYECTOS ESPECIALES DE LA UNIVERSIDAD DE CUNDINAMARCA. Metodología Ingenieril - XP(Extreming Programming). Lady Mariana Molano Edilson Martínez (2007) 5.-SISTEMA DE INFORMACION DE INVENTARIO FORMULACION Y FACTURACION DE MEDICAMENTOS A LAS EPS ASOCIADOS AL HOSPITAL SAN JOSE DE LA PALMA (CUNDINAMARCA). Metodología Orientada a Objetos. John Alexander Silva (2005). 6.-DISEÑO Y DESARROLLO DEL SOFTWARE PARA EL SEGUIMIENTO DE LA GESTION PÚBLICA DEL DEPARTAMENTO DE PLANEACION MUNICIPAL DE LA ALCALDIA MUNICIPAL FUSAGASUGA Metodología Ingenieril Descriptiva Integrantes: Javier Antonio Melo Adriana Rodríguez Mahecha