CAPITULO CUATRO METODOLOGIAS PARA EL DISEÑO DE SISTEMAS James Rumbaugh: Una metodología de ingeniería del software es un proceso para producir software de forma organizada, emplea una colección de técnicas y convenciones de notación predefinidas. Mario Piattini: Define una metodología como un conjunto de procedimientos, técnicas, herramientas y un soporte documental que ayuda a los desarrolladores a realizar nuevo software. Metodologías: Diseño estructurado Prototipos Orientada a objetos (OO) Desarrollo rápido de aplicaciones (RAD) PROCESO UNIFICADO DE DESARROLLO (PUD) ¿Qué es un proceso? Un proceso define quien esta haciendo que, cuando lo esta haciendo y como se puede hacer para alcanzar un determinado objetivo. Es necesario un proceso bien definido para desarrollar sistemas de software de manera repetible y predecible. Esto permite mejorar en cada nuevo proyecto e incrementar la eficiencia y productividad de la organización. ¿Qué es un proceso unificado de desarrollo? RUP por sus siglas en inglés (Racional Unified Process) El PUD es un proceso de desarrollo de sistemas, es un proceso marco, debido a que no existe un proceso universal que resuelva los problemas de todo tipo de organización. Por lo tanto, es flexible y extensible ya que permite varias estrategias de desarrollo. El proceso unificado guía a los equipos de proyecto en como administrar el desarrollo iterativo de un modo controlado mientras se equilibran los requerimientos del negocio, el tiempo al mercado y los riesgos del proyecto. El proceso describe que productos crear, como desarrollarlos y también provee patrones. El proceso unificado es soportado por herramientas que automatizan, entre otras cosas, el modelado visual, la administración de cambios y las pruebas. Elemento Pregunta a responder Fase e iteraciones ¿Cuándo se hace? Flujos de trabajo de procesos (actividades ¿Qué se esta haciendo? y pasos) Artefactos (modelos, reportes, ¿Qué se produjo? documentos) Trabajador: un arquitecto ¿Quién lo hace? EL CICLO DE VIDA DEL SOFTWARE EN EL PROCESO UNIFICADO 1. CONCEPCION 2. ELABORACIÓN 3. CONSTRUCCIÓN 4. TRANSICION La concepción es la definición del alcance del proyecto y definir el caso de uso. La elaboración es la acción de proyectar un plan, definir las características y cimentar la arquitectura. La construcción es crear el producto y la transición es transferir el producto a sus usuarios. Diseño Conceptual: Se considera como un análisis de actividades y consiste en la solución de negocios para el usuario y se expresa con los casos de uso. Diseño Lógico: Traduce los escenarios de uso creados en el diseño conceptual en un conjunto de objetos de negocio y sus servicios. Diseño Físico: Traduce el diseño lógico en una solución implementable y costo efectivo o económico. El componente es la unidad de construcción elemental del diseño físico. CARACTERISTICAS DEL PUD Dirigido por casos de uso: Especifica un comportamiento deseado del sistema. Es decir, representa los requisitos funcionales del sistema. Describen que hace el sistema no como lo hace. Un diagrama de casos de uso es un documento narrativo que establece una secuencia de eventos para completar un proceso entre un actor y el sistema. Un caso de uso especifica una secuencia de acciones, incluye variantes que el sistema puede ejecutar y que produce un resultado observable útil para un particular actor. Las instancias de los actores son los usuarios del sistema, ellos llevan a cabo un número de operaciones con el sistema y desarrollan una secuencia de transacciones en comunicación con el sistema. A esta secuencia de acciones se llama Caso de uso. Centrado en la Arquitectura (Limites) La arquitectura es prioritaria desde el principio hasta el final. La arquitectura es una vista del diseño completo con las características más importantes resaltadas, dejando los detalles a un lado. Iterativo e incremental: Esta característica se fundamenta en que el usuario no sabe exactamente lo que quiere del sistema. ITERACION: Es el esfuerzo de trabajo en un proyecto que recorre varias etapas de desarrollo (no necesariamente todas) y al final del mismo se ha incrementado el material disponible sobre el sistema. INCREMENTO: Un avance significativo en el grado de especificación, diseño, implementación o prueba del sistema que tenga lugar durante una iteración. El PUD puede verse como una serie de desarrollos cortos (mini proyectos de 2 a 6 semanas). Cada iteración reproduce el ciclo de vida a menor escala. Cada mini proyecto es una iteración (flujo de trabajo) que resulta en un incremento ya que crece el producto. Cada iteración tiene a su vez una serie de flujos de trabajo: Requisitos, análisis, diseño, implementación y prueba. En esta iteración no solo se mejoran los productos sino que el sistema también crece, por ello se refiere al PUD como un proceso incremental. El resultado de cada iteración es un sistema ejecutable. Puede ser que el sistema este incompleto y no este listo para su instalación definitiva. Para lograr un sistema instalable se requiere de varias iteraciones. Podemos imaginarlo como una evolución de prototipos ejecutables. Cada iteración comprende: Planificación de la iteración (estudio de riesgos) Análisis de Casos de uso y escenarios Diseño de opciones arquitectónicas Codificación y pruebas. Evaluación de la entrega ejecutable Preparación de la entrega Vida de un sistema: La vida de un sistema consiste en una serie de ciclos que incluyen desde su nacimiento, los ciclos intermedios, hasta su muerto. Cada ciclo tiene varias fases. Al resultado de las actividades de los flujos de trabajo se le denomina artefactos. Un artefacto es cualquier tipo de información producida por los desarrolladores de un sistema, ya sean diagramas UML. Etapas y fases del ciclo de vida: Inicio, elaboración, construcción, transición. Inicio: En esta etapa se definen el ámbito y los objetivos del proyecto. Al inicio de un proyecto hay que contestar algunas preguntas como: ¿Cuál es la visión del sistema? ¿Es viable? ¿Se puede comprar o hay que fabricar el sistema? ¿Cuánto va a costar? Y finalmente ¿se sigue delante o se detiene el proceso?. Elaboración: Se define la funcionalidad y una arquitectura básica del sistema. Construcción: En esta etapa se desarrolla el producto a través de iteraciones. Cada iteración involucra análisis, diseño e implementación como se vio anteriormente. La arquitectura básica se refina de manera incremental conforme se construye. Transición: En esta etapa se libera el producto y se entrega al usuario para su uso real. Además, se incluyen tareas de instalación, configuración, entrenamiento, soporte, mantenimiento, etc. RELACION ENTRE PUD Y UML UML es el lenguaje de modelado seleccionado como estándar por la OMG (Object Management Group). El proceso unificado es un proceso que sirve de marco para el desarrollo de un proyecto de software, el cual es adaptable. UML es el lenguaje a utilizar para plasmar las diferentes vistas del sistema. Sirve para representar la información recabada y utilizada durante el proceso unificado de desarrollo. UML es una de las herramientas utilizadas durante el PUD. INTRODUCCIÒN A OBJETOS La programación orientada a objetos (OOP por sus siglas en inglés de Object Oriented Programming) Es un enfoque o manera de visualizar la realidad. Fundamentos: El paradigma OO se basa en el concepto de objeto. Un objeto es aquello que tiene estado (propiedades mas valores), comportamiento (acciones y reacciones a mensajes) e identidad (propiedad que lo distingue de los demás objetos). LENGUAJE UNIFICADO DE MODELADO (UML) ¿Que es modelo? Es una simplificación de la realidad. ¿Por qué se modela? Porque permite visualizar como es o se desea que sea el sistema. Características que debe llenar un buen modelo: Exacto, consistente, fácil de comunicar a otros, fácil de cambiar, entendible. ¿Qué es UML? Proviene de las siglas formadas por la primera letra de Unified Modeling Language, que traducido Lenguaje Unificado de modelado. UML provee a los analistas y arquitectos de sistemas que trabajan en el diseño y análisis de objetos de un lenguaje consistente para especificar, visualizar, construir y documentar los artefactos de un sistema de software, así también es útil para hacer modelos de negocios. UML NO ES Un lenguaje de programación visual, sino un lenguaje de modelado visual. Una herramienta o depósito de especificación, sino un lenguaje para modelado de especificación. Un proceso sino que habilita procesos. Utilidad de UML Se enfoca en el corazón de un conjunto de conceptos para adquirir, compartir y utilizar los conocimientos. Modelado ampliamente aplicable, puede ser empleado en diferentes tipos de sistemas (software y no-software) Modelado soportable por herramientas, las herramientas ya están disponibles para soportar la aplicación del lenguaje para especificar. Modelado industrialmente estandarizado, no es un lenguaje cerrado, propiedad de alguien, sino más bien, un lenguaje abierto y totalmente extensible reconocido por la industria. Objetivos en el diseño de UML Modelar sistemas, desde los requisitos hasta los artefactos ejecutables, al utilizar técnicas OO. Cubrir aspectos relacionados con el tamaño propio de los sistemas complejos y críticos. Lenguaje utilizable por las personas y las maquinas. Encontrar equilibrio entre expresividad y simplicidad. UML define nueve tipos de diagramas: 1. Clases 2. objetos 3. casos de usos 4. secuencia 5. colaboración 6. transición de estados 7. actividad 8. componentes 9. distribución. CUESTIONARIO 1. ¿Cuales son las diversas metodologías de diseño existentes? Diseño Estructurado, prototipos, orientada a objetos, desarrollo rápido de aplicaciones. 2. ¿Qué es un proceso? Describe un conjunto de actividades que deben realizarse en un determinado orden, qué hacer, como hacerlo, cuándo hacerlo y el motivo por el cual debe hacerse. 3. ¿Qué significa PUD? Proceso unificado de desarrollo 4. ¿Qué es el Proceso Unificado de Desarrollo? Es un proceso de desarrollo de sistemas, es un proceso “marco”, debido a que no existe un proceso universal que resuelva los problemas de todo tipo de organización. 5. ¿Cuáles son los ciclos de vida del software en el proceso unificado? Concepción, elaboración, contracción y transición. 6. ¿Qué es el diseño conceptual? Se considera como un análisis de actividades y consiste en la solución de negocios para el usuario y se expresa con los casos de uso. 7. ¿Qué es diseño lógico? Traduce los escenarios de uso creados en el diseño conceptual en un conjunto de objetos de negocio y sus servicios. El diseño lógico, se convierte, en parte, en la especificación funcional que se usa en el diseño físico. 8. ¿Qué es el diseño físico? El diseño físico traduce el diseño lógico en una solución implementadle y costo efectiva o económica. El componente es la unidad de construcción elemental del diseño físico. 9. ¿Cuáles son las características del PUD? Es dirigido por casos de uso. Es centrado en la arquitectura Iterativo e incremental. 10. ¿Qué es el caso de uso? Especifica un comportamiento deseado del sistema. Es decir, representa los requisitos funcionales del sistema. Describen que hace el sistema, no como lo hace. 11. ¿Qué es el centrado en la arquitectura? La arquitectura es prioritaria desde el principio hasta el final. La arquitectura es una vista del diseño completo con las características más importantes resaltadas dejando los detalles a un lado. 12. ¿Qué es el iterativo e incremental? Esta característica se fundamenta en que el usuario no sabe exactamente lo que quiere del sistema. Se facilita el proceso al repetir una serie de fases una y otra vez para ir afinando los requerimientos del sistema y obtener en cada fase un incremento en la definición. 13. ¿Cuáles son las etapas y fases del ciclo de vida? Inicio, elaboración, construcción y transición. 14. ¿Cuál es la relación entre PUD y UML? UML es el lenguaje de modelado seleccionado como estándar por la OMG. PUD es el lenguaje modelado es la notación que se usan los métodos para expresar un diseño. El proceso indica los pasos que se deben seguir para llegar a un diseño. 15. ¿Qué es un UML? Proviene de las siglas formadas por la primera letra de Unified Modeling Lenguaje, que traducido al español significa Lenguaje Unificado de Modelado. UML provee a los analistas y arquitectos de sistemas que trabajan en el diseño y análisis de objetos de un lenguaje consistente para especificar, visualizar, construir y documentar los artefactos de un sistema de software.