Ingeniera de Software (790464) Unidad 1 Introduccin a la Ingeniera de Software (Producto y Proceso) Profesor Vctor Valenzuela Ruz Prof. Vctor Valenzuela Ruz Proceso de Desarrollo de Software Proceso de desarrollo de software: Forma disciplinada de asignar tareas y responsabilidades en una empresa de desarrollo (quin hace qu, cundo y cmo). Objetivos: Asegurar la produccin de software de calidad dentro de plazos y presupuestos predecibles. Requisitos del usuario Sistema de software Proceso de desarrollo de software 2 Prof. Vctor Valenzuela Ruz Ingeniera de Software Los ingenieros de software necesitan: comprender el ambiente de funcionamiento del sistema: construyen modelos del dominio del problema (sistemas de ventas, control de inventario,...) comprender los distintos sistemas que podran construir para evaluar alternativas: construyen modelos del dominio de la solucin tcnicas y herramientas para construir los modelos (por ejemplo, diagramas de UML) Otras actividades del desarrollo para evaluar la adecuacin de los modelos: revisiones del anlisis: el modelo del dominio del problema se compara con la realidad del cliente revisiones del diseo: el modelo del dominio de la solucin se compara con los objetivos del proyecto pruebas: el sistema se valida contra el modelo del dominio de la solucin administracin del proyecto: se compara el modelo del proceso de desarrollo (calendario y presupuesto) con la realidad (trabajos entregados y recursos gastados). 3 Prof. Vctor Valenzuela Ruz Enfoque Desarrollo de Sistemas Una Metodologa de Desarrollo de Sistemas provee las lineamientos a seguir para completar cualquier actividad en el ciclo de vida del desarrollo de sistemas. Un modelo es una representacin de un aspecto importante del mundo. Estrategia y anlisis Diseo Construccin y documentacin Transicin Produccin 4 Prof. Vctor Valenzuela Ruz Objetivos y Requerimientos Objetivos principios de alto nivel que se utilizan para guiar el proyecto definen los atributos realmente importantes del sistema (seguridad, fiabilidad,...) a veces hay conflicto entre objetivos (por ejemplo, seguridad y bajo coste) que aumentan la complejidad del proyecto Requerimientos caractersticas que debe tener el sistema requerimiento funcional: rea de funcionalidad que debe soportar el sistema (por ejemplo, proporcionar billetes de tren). requerimiento no funcional: restriccin que se establece sobre el funcionamiento del sistema (por ejemplo, proporcionar billetes de tren en menos de un segundo). Otras restricciones: por ejemplo, utilizacin de un determinado lenguaje, de una determinada plataforma o de un sistema antiguo que el cliente no quiere retirar. 5 Prof. Vctor Valenzuela Ruz Metodologas y Mtodos Notacin: conjunto de reglas grficas o de texto para representar un modelo (por ejemplo, UML, Unified Modelling Language, es una notacin grfica orientada a objetos para representar modelos) Mtodo: tcnica repetible para resolver un problema especfico. Por ejemplo: Un algoritmo de ordenacin es un mtodo para ordenar elementos en una lista La administracin de la configuracin es un mtodo para el seguimiento de los cambios Metodologa: coleccin de mtodos para la resolucin de una clase de problemas (OMT, metodologa de Booch, Catalysis, Proceso Unificado de Desarrollo,...). 6 Prof. Vctor Valenzuela Ruz Metodologas Representativas Algunas de las metodologas ms representativas actuales para el desarrollo de software son: Architected Rapid Application Development (Architected RAD) Dynamic Systems Development Methodology (DSDM) J oint Application Development (J AD) Information Engineering (IE) Structured Analysis and Design (SAD) Object-Oriented Analysis and Design (OOAD) Rapid Application Development (RAD) Rational Unified Process (RUP) Agile Unified Process (AUP) eXtreme Programming (XP) 7 Prof. Vctor Valenzuela Ruz Anlisis y Diseo Estructurado El proceso de aplicar distintas tcnicas y principios con el propsito de definir un dispositivo, un proceso o un sistema con suficiente detalle como para permitir su realizacin fsica. Proceso iterativo a travs del cual se traducen los requisitos en una representacin del software. Metodologas Yourdon/DeMarco Gane & Sarson Ward & Mellor SSADM Mtrica v3.0 Diagramas Diagrama de Flujo de Datos (DFD) Diagrama de Entidad/Relacin (DER) Diagramas de Estructuras (Structure Chart) Diagramas Modulares 8 Prof. Vctor Valenzuela Ruz Anlisis y Diseo Orientado a Objetos Conceptos Modelo de Objetos Basado en abstracciones Clases y Objetos / Mtodos y Mensajes Herencia, Encapsulamiento (ocultamiento) y Polimorfismo Framework y Patrones de Diseo (MVC-Model View Controler) Zachmann Framework Reutilizacin Metodologas Booch (Booch), Rumbaugh (OMT), J acobson (OOSE), Coad-Yourdon (OOA/OOD), UML Diagramas Diagrama de Clases Diagrama de Colaboracin Fichas CRC Clase Responsabilidad y Colaboracin Diagramas de Secuencia Diagramas de Casos de Uso 9 Prof. Vctor Valenzuela Ruz Zachman Framework 10 Prof. Vctor Valenzuela Ruz El Proceso Diseo Estructurado 11 Prof. Vctor Valenzuela Ruz Herramientas CASE CASE: Computer Aided Software Engineering. Conjunto de herramientas y metodologas que soportan un enfoque de ingeniera para las distintas fases del desarrollo de software Soporte automtico o semiautomtico para el proceso y los mtodos. 12 Prof. Vctor Valenzuela Ruz Concepto de CASE El trmino CASE es un acrnimo ingls de Computer Aided Software Engineering, que traducido significa Ingeniera de Software Asistida por Computadora. Fuente: www.wikipedia.org Otras variaciones del concepto CASE: 13 Prof. Vctor Valenzuela Ruz Objetivos de las Herramientas CASE Permitir la aplicacin prctica de metodologas estructuradas, lo que resulta muy difcil sin emplear herramientas. Mejorar la calidad del software. Facilitar la realizacin de prototipos, y el desarrollo conjunto de aplicaciones. Simplificar el mantenimiento de los programas. Estandarizar la documentacin. Aumentar la portabilidad de las aplicaciones. Facilitar la reutilizacin de componentes software. Permitir un desarrollo visual de las aplicaciones, mediante la utilizacin de grficos. 14 Prof. Vctor Valenzuela Ruz Tecnologa CASE Automatizar: El desarrollo del software La documentacin La generacin del cdigo El chequeo de errores La gestin del proyecto Permitir: La reutilizacin del software La portabilidad del software La estandarizacin de la documentacin 15 Prof. Vctor Valenzuela Ruz Clasificacin de CASE La clasificacin nos ayuda a entender los diferentes tipos de herramientas CASE y su apoyo a las actividades de procesos. Perspectiva de Integracin Herramientas son clasificadas de acuerdo a su organizacin por unidades integradas. Perspectiva de Proceso Herramientas son clasificadas de acuerdo a las actividades de procesos que soportan. Perspectiva funcional Herramientas son clasificadas de acuerdo a su funcin especfica. 16 Prof. Vctor Valenzuela Ruz Perspectiva de Integracin Segn el grado de integracin: Toolkits (J uego de herramientas) Conjunto de herramientas software que automatizan alguna fase del ciclo de vida (anlisis, diseo, gestin, ...). Comparten la BD de soporte y la interfaz de usuario. Integracin baja. Workbenchs (Banco de trabajo) Conjunto de herramientas software que automatizan el ciclo de vida en ms de una fase, tpicamente en anlisis + diseo + implementacin (incluyendo documentacin asociada). Asisten en todo el proceso y proporcionan un producto documentado y operativo. Adems de compartir la BD de soporte y la interfaz de usuario, estn basadas en una misma metodologa. Integracin media. IPSE (Integrated Project Support Environment) Integracin alta. Cubren todo el ciclo de vida, la gestin de proyectos y de la configuracin. 17 Prof. Vctor Valenzuela Ruz Perspectiva de Proceso Segn las fases del ciclo de vida que abordan: CASE frontales (front-end) o Upper CASE Herramientas de apoyo a las primeras fases: Anlisis, diseo. CASE dorsales (back-end) o Lower CASE Herramientas de apoyo a las ltimas fases: Implementacin (generacin de cdigo). Pruebas (caja blanca y caja negra). Mantenimiento. I-CASE (Integrated-CASE) Contienen elementos de Upper y Lower CASE: contemplan todo el ciclo de desarrollo. 18 Prof. Vctor Valenzuela Ruz Ventajas y Desventajas 19 Prof. Vctor Valenzuela Ruz Clasificacin por Posicin (ciclo de vida) Upper CASE: Herramientas de apoyo a las primeras fases Mtricas del software. Estimacin de costes. Planificacin temporal. Middle CASE: Herramientas de apoyo a las fases centrales. Anlisis. Diseo. Lower CASE: Herramientas de apoyo a las ltimas fases. Implementacin (generacin de cdigo). Pruebas (caja blanca y caja negra). Mantenimiento. Documentacin de la implementacin y documentacin para el usuario final. 20 Prof. Vctor Valenzuela Ruz Categoras de Herramientas CASE Segn Fase del Ciclo de Vida que Soportan CASE frontales ("front-end") o superiores ("Upper CASE"), abarcan las primeras fases de anlisis y diseo CASE dorsales ("back-end") o inferiores ("Lower CASE"), cuyo objetivo suele ser el diseo detallado y la generacin de cdigo. Se denomina I -CASE (Integrated CASE) a las herramientas que engloban ambos aspectos, e IPSE (Integrated Programming Support Environment) a aquellas que, adems, incluyen componentes para la gestin de proyectos y la gestin de configuracin. 21 Prof. Vctor Valenzuela Ruz Categoras de Herramientas CASE Segn la funcionalidad brinde: 1. Herramientas de planificacin de sistemas de gestin 2. Herramientas de Anlisis y Diseo 3. Herramientas de programacin 4. Herramientas de integracin y prueba 5. Herramientas de gestin de prototipos 6. Herramientas de mantenimiento 7. Herramientas de gestin de proyectos 8. Herramientas de soporte 22 Prof. Vctor Valenzuela Ruz Componentes Herramientas CASE Repositorio Mdulos de diagramacin y modelizacin Herramienta de prototipado Generador de cdigo Mdulo generador de documentacin Mdulo de gestin de proyectos 23 Prof. Vctor Valenzuela Ruz Criterios de Eleccin de un CASE La eleccin del Case va a depender de sus estrategias de desarrollo: Si tiene un gran volumen de aplicativos desarrollados, es conveniente contrastar lo realizado versus las tcnicas de Anlisis y Diseo. Si tiene presin por resultados a corto plazo, el empleo de un Lower Case le ser de utilidad, si se basa en modelos de datos y procesos claros y definidos. Si desea realizar proyectos de gran envergadura es recomendable aplicar Upper y Lower Case. Si trabaja con archivos de grandes dimensiones, es recomendable que el Case soporte el Diseo de Bases de Datos. Si no tiene formacin y experiencia en el manejo de metodologas es recomendable contar con asesora especializada, que capacite al personal y supervise los avances de Anlisis y Diseo. Evale la eficiencia del producto, en las pruebas unitarias y de integracin, y fundamentalmente en las pruebas de sistemas. Considere los recursos apropiados para usar el Case, de Hardware (memoria, disco, concurrencia), de Software (versin de Sistema Operativo). 24 Prof. Vctor Valenzuela Ruz Tendencias Tecnolgicas CASE para sistemas bajo arquitectura cliente/servidor CASE multiplataforma CASE para ingeniera inversa y directa CASE para trabajo en grupo (groupware) CASE para desarrollo de sistemas orientados a objetos Otras posibles lneas de evolucin sern: La utilizacin de la tecnologa multimedia. La incorporacin de tcnicas de inteligencia artificial. Sistemas de realidad virtual. 25 Prof. Vctor Valenzuela Ruz Criterios de Seleccin Tipo de computador (Mainframe, Workstation, PC, ...) Lenguaje al que va orientada. Metodologa soportada. Posibilidades de integracin con otras plataformas (presentes y futuras). Otros Criterios habituales en la seleccin de software: formacin, precio, asistencia tcnica, mantenimiento, ... (la formacin en el uso de herramientas CASE se estima en 1/3 de la formacin necesaria para el uso de la metodologa subyacente) 26 Prof. Vctor Valenzuela Ruz Estrategia de Implantacin de un CASE Identificar la magnitud de problemas a resolver en la Organizacin. Identificar el nivel estratgico que deben tener los sistemas. Evaluar los recursos de hardware y software disponibles en la Institucin y el medio. Evaluar el nivel del personal. Efectuar un estudio de costo-beneficio definiendo metas a lograr. Elegir las herramientas apropiadas para la Institucin. Establecer un programa de capacitacin de personal de sistemas y usuarios. Elegir una aplicacin. 27 Prof. Vctor Valenzuela Ruz Etapas en un Proyecto de Introduccin del CASE Para llevar a cabo con xito el proyecto de introduccin del CASE en el rea de Desarrollo, en el CEDS recomendamos que como mnimo se tengan en cuenta cinco etapas: ETAPA-1 : Descripcin de Objetivos - Grupo de Trabajo - Planificacin previsional del proyecto. ETAPA-2 : Anlisis del rea de Desarrollo ETAPA-3 : Seleccin de Metodologa y Herramientas CASE ETAPA-4 : Aplicacin en Escenarios y Evaluacin Es muy importante que el proyecto de evaluacin NO sea crtico y su tamao pequeo. ETAPA-5 : Extensin de la Metodologa y CASE en la Organizacin 28 Prof. Vctor Valenzuela Ruz Causas por las que fracasan algunos proyectos CASE No siempre han tenido xito los proyectos de introduccin del CASE. Bien es cierto que debido a que los nuevos programas de formacin de Analistas ya tienen en cuenta tanto la Metodologa como el uso y prcticas con sistemas CASE, estn permitiendo reducir los riegos de fracaso. No obstante en muchas organizaciones actuales no se dispone de Analistas formados, ni de experiencias CASE. Son estas organizaciones las que deben poner especial atencin en las causas mas frecuentes por las que puede fracasar el proyecto: No se tienen en cuenta las tres primeras etapas, No se concreta ninguna Metodologa, El proyecto de evaluacin es demasiado ambicioso crtico, En la etapa quinta no se lleva a cabo la Formacin que se precisa, Los Usuarios (rea de Desarrollo), no estn motivados. Un proyecto de introduccin de CASE es siempre "un proyecto estratgico" para el rea de Desarrollo y como tal "No tiene vuelta atrs". Cuando la decisin ya ha sido tomada "siga con pasos firmes todas las etapas. 29 Prof. Vctor Valenzuela Ruz Conclusiones Sin lugar a dudas las herramientas CASE han venido a revolucionar la forma de automatizar los aspectos clave en el desarrollo de los sistemas de informacin, debido a la gran plataforma de seguridad que ofrecen a los sistemas que las usan y es que stas, brindan toda una gama de componentes que incluyen todas o la mayora de los requisitos necesarios para el desarrollo de los sistemas, han sido creadas con una gran exactitud en torno a las necesidades de los desarrolladores de sistemas para la automatizacin de procesos incluyendo el anlisis, diseo e implantacin. Desde que se crearon stas herramientas (1984) hasta la actualidad, las CASE cuentan con una credibilidad y exactitud que tienen un reconocimiento universal, siendo usadas por cualquier desarrollador y/o programador que busca un resultado ptimo y eficiente, pero sobre todo que busca esa minuciosidad necesaria de los procesos y entre los procesos. 30