Ing. Diana Patricia Bedoya Ruiz ANALISIS Y DISEÑO. Ing. Diana Patricia Bedoya Ruiz dianabedoya570@hotmail.com
BIBLIOGRAFIA BÁSICA Sahri Lawrence Pfleeger. 2002. “Ingeniería de Software. Teoría y Práctica”. Prentice Hall. Pressman. "Ingeniería del Software 5ª Edición". McGraw Hill. 2002. Bernd Bruegge, Allen h. Dutoit. “Ingeniería de Software Orientado a Objetos”. Prentice Hall. 2002 Sommerville, Ian. “Ingeniería de Software” Sexta edición. Addison Wesley. 2002.
BIBLIOGRAFIA BÁSICA Weitzenfeld Alfredo. “Ingeniería de Software Orientado a Objetos con UML, Java e Internet”.Thomson. 2004 Builes V. Carlos A. “Notas acerca de Ingeniería de Software” Ed. Artes y Letras Ltda. Marzo 2008.
CONTENIDO Unidad 1: Descripción del Proceso de Desarrollo de Software Introducción a UML Unidad 3: Metodologías de Desarrollo de Software Unidad 4: Construcción de Software
QUÉ ES SOFTWARE?
Qué es software (SW)? (1) Se refiere a los programas y datos almacenados en un computador. Los programas, dan instrucciones para realizar tareas al hardware o sirven de conexión con otro software. Los datos, solamente existen para su uso eventual por un programa. Hardware: Es la parte física en el cual existe el software. El hardware abarca todas las partes físicas de un computador. (CPU, monitor, Teclado, impresora, etc…)
Qué es software? (2) Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación. Extraído del estándar 729 del IEEE IEEE: Institute Electrical Electronics Engineers (Instituto de Ingenieros Eléctricos y Electrónicos)
Qué es Ingeniería de Software? La ingeniería de Software es una disciplina de ingeniería que comprende todos los aspectos de la producción de Software.
Qué es software? (3) SOFTWARE (SW) HARDWARE (HW)
CARACTERISTICAS DEL SW (Frente al Hw) Más difícil de medir, validar, verificar: - Elemento lógico, no físico. - Desarrollado, no ‘fabricado’. No se ‘estropea’, ¡pero se deteriora! - Deterioro por ‘cambios’ Mayoritariamente ‘cerrado’: - Tradicionalmente, usado todo o nada - Tradicionalmente, poco ensamblaje de componentes
Una comparación con la industria de la construcción… Motivación. Una comparación con la industria de la construcción…
INDUSTRIA de la CONSTRUCCION INDUSTRIA del SOFTWARE PEQUEÑOS PROYECTOS (pintar dormitorio de los niños) (pequeño programa) 1 día x 1 hombre (autodidacta) 1 día x 1 hombre (autodidacta) GRANDES PROYECTOS (El Nido, Pekín) Varios años x (Gran proyecto sw) Varios años x Contratistas, Contratistas, constructores, Empresas de desarrollo de software, arquitectos, ingenieros software, delineantes, obreros, analistas, albañiles, operadores, auditores, programadores, aficionados al arte … usuarios …
PROBLEMAS EN EL DESARROLLO DEL SW Con el avance del hardware, existe la necesidad de aplicaciones más complejas. ⇒Se produjo un cambio en la relación entre el costo hardware/software Son problemas “tradicionales”: Incapacidad para estimar tiempo, costo y esfuerzo para el desarrollo de un producto software. Asignar roles responsabilidades en el equipo de trabajo. Falta de calidad del producto software.
COMUNICACIÓN COMPLEJA EN EL DESARROLLO
CORRECCION DE ERRORES Objetivos Plan Medición y Seguim/. Anticipar y Corregir RETROALIMENTACIÓN
CONCEPTOS PARA RECORDAR Personas: Los que trabajan Producto: Lo que se obtiene Proyecto: La pauta a seguir para desarrollar un producto Proceso: La pauta a seguir para desarrollar un proyecto
EJEMPLOS EN UN TRAJE. Personas: El sastre Producto: El traje Proyecto: La secuencia de acciones para hacer un traje concreto Proceso: Lo que aprende un sastre cuando aprende a hacer trajes
EJEMPLOS EN UNA CENA. Personas: Empleados de una empresa de comidas Producto: La cena que se sirve Proyecto: La secuencia de acciones de servir una cena específica Proceso: Las instrucciones de la empresa sobre cómo se sirve una cena
EJEMPLOS EN EL SOFTWARE. Personas: Ustedes Producto: La aplicación que desarrollan en un proyecto particular Proyecto: Secuencia de acciones que les permite lograr un proyecto particular Proceso: ???
EL PROCESO DEL SW Se fundamenta en la ingeniería de software (IS) Puede observarse a través de diversas capas: Enfoque de calidad Procesos Métodos Herramientas
CAPAS DE LA IS Ingeniería de software . Herramientas Métodos Modelo de Proceso Enfoque de Calidad
CAPAS DE LA IS Capa de calidad Capa de proceso Base de cualquier proceso de ingeniería La IS se basa en calidad Mejores técnicas de construcción de software Capa de proceso Capa que une calidad y métodos Desarrollo racional de la IS Conjunto de actividades y resultados asociados que sirven para construir un producto software
CAPAS DE LA IS Capa de Métodos - Un método incluye: Análisis de requisitos Diseño Construcción de programas Prueba Mantenimiento - Suelen estar bastante ligados al proceso Capa de herramientas - Soporte automático o semiautomático para el proceso y los métodos - Herramientas CASE: Computer Aided Software Engineering
VISIÓN GENERAL DE LA IS En IS entidad = software. Soporte para la IS: modelo de proceso. Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada una de estas fases se descompone en un conjunto de tareas
FASE DE DEFINICIÓN Centrada en el QUÉ Se identifican los requisitos del sistema y software: Información a procesar Función y rendimiento deseados Comportamiento del sistema Interfaces establecidas Restricciones de diseño Tareas principales: Planificación del proyecto software Ingeniería de sistemas o de información Análisis de requisitos
FASE DE DESARROLLO Cómo han de diseñarse las estructuras de datos Centrada en el CÓMO Se definen: Cómo han de diseñarse las estructuras de datos Cómo han de implementarse las funciones Cómo han de caracterizarse las interfaces Cómo debe traducirse el diseño a un lenguaje de programación Cómo ha de validarse el producto (pruebas, verificación) Tareas principales: Diseño del software Generación del código Pruebas del software
FASE DE MANTENIMIENTO Corrección: Corregir los defectos Centrada en cambios que se pueda necesitar realizar sobre un producto. En esta fase se vuelven a aplicar las fases de definición y desarrollo, pero sobre software ya existente. Pueden producirse cuatro tipos de cambio: Corrección: Corregir los defectos Adaptación: Modificaciones por cambio en el entorno externo (CPU, SO, etc.) Mejora: Ampliar los requisitos funcionales originales, a petición del cliente. Prevención: Cambio para facilitar el cambio.
ACTIVIDADES DE SOPORTE Se aplican a lo largo de todo el proceso del software. Ejemplos de actividades de soporte: Documentación Gestión de configuración Seguimiento y control del proyecto de software Revisiones técnicas formales Garantía de la calidad del software Gestión de reutilización Mediciones Gestión de riesgos
PROCESO DEL SOFTWARE Conjunto estructurado de actividades y resultados asociados requeridos para desarrollar un sistema de software. Especificación: Establecer los requisitos y restricciones del sistema. Diseño: Producir un modelo en papel del sistema. Implementación: Construcción del sistema de software. Validación: Verificar (por ejemplo mediante pruebas) que el sistema cumple con las especificaciones requeridas. Instalación: Entregar el sistema al usuario y asegurar su operabilidad. Evolución y mantenimiento: cambiar/adaptar el software según las demandas; reparar fallos en el sistema cuando sean descubiertos
CARACTERISTICAS DEL PROCESO Entendible Visibilidad Grado en que las actividades del proceso proporcionan resultados Soportable por herramientas CASE Aceptabilidad Grado en que los desarrolladores aceptan y usan el proceso Fiabilidad Capacidad de evitar o detectar errores antes de que sean defectos Robustez Continuidad del proceso a pesar de los problemas Mantenible Capacidad de evolución para adaptarse Rapidez Velocidad en que el proceso puede proporcionar un sistema a partir de una especificación
CONSTRUCCION DE SOFTWARE Desarrollar software es como construir un edificio: hay mucho que hacer antes del “verdadero” trabajo... Planificar minuciosamente Elegir materiales Establecer y respetar una temporización Inspeccionar frecuentemente la obra Los errores son muy costosos de reparar La dificultad depende del tamaño Los problemas de organización y gestión son tan complicados como los problemas técnicos
FASES DE DESARROLLO DE UN PROYECTO Cliente Problema Especificación Diseño Implementación Producto
Los errores se propagan Cada fase puede producir errores y estos a su vez se propagan y los costos se elevan: Problema mal planteado Especificación incorrecta (del problema mal planteado) Diseño inadecuado (Especificaciones incorrectas del problema mal planteado) Implementación incorrecta (Diseño inadecuado de…) No empieces a codificar hasta que sepas lo que estás haciendo.
El costo del error depende del proyecto
Si el proyecto es importante, planifica…
Definir bien el problema antes de empezar
Asegúrate de saber cuál es el problema
Especificación de la solución Describe en detalle qué hace el sistema No describe cómo se hace Debe ser correcta Debe ser completa (contempla todos los casos) Emplea diagramas y notaciones formales Debe acomodar cambios (se producirán) “Las especificaciones son como el agua, es más fácil construir sobre ellas cuando se han congelado”
La especificación mejora la puntería
Diseño de la solución Describe cómo funciona el sistema Define la estructura del sistema: - qué componentes existen - qué papel juega cada componente - cómo se relacionan los componentes Justifica las decisiones de diseño Emplea diagramas y notaciones formales Debe acomodar cambios (se producirán) Independiente del lenguaje, el S.O. y la máquina Guía la implementación
El diseño templa tu fuerza
CALIDAD DEL SW Las metodologías mejoran la calidad del Software: - Internamente (desarrolladores) Externamente (usuarios) DESARROLLADOR USUARIO El software debe ser: Comprensible Legible Mantenible Flexible Portable Reutilizable Comprobable el software debe ser: Correcto Preciso Fácil de usar Eficiente Seguro Robusto
PRINCIPIOS DE DISEÑO Descomponer el sistema en módulos interconectados entre sí.
PROPIEDADES COMUNES DE LOS MÓDULOS Un módulo es siempre un contenedor de “recursos” con las siguientes propiedades: Ocultamiento de información Cohesión (Una Clase solo se dedique a una parte del negocio) Acoplamiento (Las clases no estén amarradas entre si) IDEA dado un módulo, distinguir entre: - qué hace y cómo lo hace - su uso y su funcionamiento MÉTODO descomponer los módulos en dos partes: - Interfaz - Implementación
Interfaz Vs. Implementación IMPLEMENTACION Parte pública, visible del módulo Determina qué servicios se ofrecen al usuario Indica el modo de uso (“instrucciones”) Orientado al usuario Parte privada, oculta del módulo Determina cómo funcionan los servicios ofrecidos Oculta detalles no relevantes para el usuario Sólo el implementador puede acceder a la implementación
Interfaz Vs. Implementación Interfaz Visible para el usuario Interfaz (visible, público) Implementación (Oculto, privado)
Nadie sabe que contiene la caja negra…
Tomado de Presentaciones para el modulo de Identificación del ciclo de Vida del software, Politécnico Jaime Isaza Cadavid, Docente Claudia Alejandra Rosero.