Anzeige
Anzeige

Más contenido relacionado

Anzeige

Más de Yaskelly Yedra(20)

Anzeige

Ingenieria de software (conceptos básicos)

  1. Prof. Yaskelly Yedra I-2012 Unidad I. Conceptos Básicos
  2. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  3. Ingeniería del SW: área de la Ciencia de la Computación, que ofrece Métodos y Técnicas para DS, estudia el conjunto de actividades relacionadas con el ciclo de desarrollo de SW, en particular se enfoca en SW de Calidad. ¿ Que es la IS ?
  4. ¿ Que es la IS ? La aplicación de un enfoque sistemático, disciplinado y cuantificable del desarrollo, la operación y el mantenimiento del software; esto es, la aplicación de la ingeniería al software. IEEE Std 610-1990
  5. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  6. • Requisitos • Diseño • Construcción • Pruebas • Mantenimiento • Gestión de la Configuración • Gestión de la Ingeniería Soft. • Procesos • Herramientas y Métodos • Calidad Áreas de conocimiento
  7. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  8. • Metodología orientado a objeto de desarrollo de software • Modelos, Métodos, Técnicas y Herramientas de desarrollo de software. • Sistemas de reescritura. • Interación Humano - Computador • Patrones de diseño • Programación orientada a aspectos Líneas de investigación
  9. • Componentes y reutilización de software • Construcción de compiladores • Métricas de IS • Desarrollo de aplicaciones basadas en Internet • Arquitectura de software • Calidad de software • Inteligencia artificial aplicada • Ingeniería orientada a modelos Otras Ingeniería orientada a aspectos Ingeniería orientada a componentes Líneas de investigación
  10. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  11. • Ingeniería de Computadores • Ciencia de la Computación • Gestión • Matemáticas • Gestión de Proyectos • Gestión de la Calidad • Ergonomía del Software • Ingeniería de Sistemas • Sistemas de Información Disciplinas relacionadas
  12. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  13.  Hardware: mainframes, cintas magnéticas. Costos altos  Lenguajes: ensambladores, Fortran  Primeros compiladores (segunda mitad)  Interfaces: Bach.
  14.  Desarrollo de software = desarrollo de programas  Actividad individual  Desarrollador = usuario  Aplicaciones con distribución reducida  Resolver problemas científicos y de ingeniería “...codificar y depurar...”
  15.  Hardware: mainframes comerciales, almacenamiento en discos magnéticos, minicomputadores. Costos altos  Programación orientada a función  Sistemas operativos multiprogramación  Lenguajes: Cobol, PL/I, Simula 67  Interfaces: Bach.
  16.  Actividad de grupo  Desarrollo de software para mercadeo  Resolver problemas complejos en diferentes dominios, además de científicos y de ingeniería  Programación orientada a función.
  17.  Hardware: mainframes, minicomputadores, microcomputadores, surgen los PC  Lenguajes: COBOL, PL/I, Pascal, Prolog  Métodos: programación estructurada,refinamiento paso a paso, semánticas formales  Computación distribuida, Interfaces basadas en Lenguajes de Comando.
  18.  Desarrollo de la tecnología  Actividad de grupo  Desarrollo de software para mercadeo  Diversidad del dominio de aplicaciones  Programación orientada a módulos  Modelo de cascada .
  19. 19  Hardware: computadores personales, primeras estaciones de trabajo, redes locales  Lenguajes: C, Ada  Paradigma de programación: programación estructurada, modular, tipos de datos abstractos  Herramientas interactivas, interfaces gráficas (GUI)  Hardware: Aumento considerable de la venta y uso de computadores personales, estaciones de trabajo, redes locales y globales, Internet, arquitecturas avanzadas  Lenguajes: C++, Standard ML  Paradigma de programación: irrumpe la programación OO  Computación cliente- servidor
  20.  El usuario se incorpora al proceso de desarrollo de software  Relevancia de las interfaces de usuario  Aumento exponencial del número y tipo de usuarios  Demanda creciente de aplicaciones  Resolver problemas en todos los dominios  Inicio de las aplicaciones basadas en la tecnología Internet .
  21.  Hardware: masificación del uso de los computadores personales, arquitecturas paralelas, multimedia  Redes de computadoras (LAN, WAN..)  Lenguajes: Orientados a objetos, paralelos, visuales, de scripting (Java, VisualC++, HTML,..)  Paradigma de programación: OO, patrones y framework  Crecimiento de Internet y el Web .
  22.  Los productos se insertan en la globalización  El ciberespacio introduce nuevos tipos de aplicaciones: comercio electrónico, educación a distancia,...  Ambientes colaborativos  El Web como infraestructura de las aplicaciones corporativas (Intranets) .
  23.  Hardware: dispositivos moviles, computación ubicua  Redes de computadoras (inalambricas..)  Paradigma de programación: modelos basados en componentes  Crecimiento de Internet y la Web .
  24.  Programación orientada a aspectos  Ingenieria orientada a modelos  Arquitecturas orientadas a modelos
  25.  un poco de historia ◦ primeras décadas:  desarrollar el hardware  reducir costes de procesamiento y almacenamiento ◦ década de los ochenta:  desarrollo de la microelectrónica  mayor potencia de cálculo y reducción de costes ◦ objetivo actual: mejorar la calidad de las soluciones software.  Orientación por lotes  Distribución limitada  Software a medida  Multiusuario  Tiempo real  Bases de datos  Software como producto  Mayores gastos de mantenimiento  Sistemas distribuidos  Inteligencia Artificial  Hardware de bajo coste  Impacto en el consumo  Redes area local y global  Gran demanda  Potentes sistemas de sobremesa  Tecnología de objetos  Sistemas expertos  Redes neuronales  Cliente/servidor  Tecnologías de Internet. 1959 - 1965 1965 - 1975 1975 - 1989 1989 - AUMENTAN los problemas del desarrollo de software:  Subexplotación del potencial del hardware  Incapacidad de atender a la demanda  Incapacidad de mantener el software existente Resumen
  26. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  27.  Crecimiento de la demanda de nuevos productos  Incumplimiento en los tiempos de entrega de los productos de software  Incumplimiento de los presupuestos asignados a los proyectos  Falta de métodos para la producción de software complejo Desde la década 70
  28.  Dificultad y altos costos para el mantenimiento del software existente  Carencia de buenas especificaciones de requisitos  Los requisitos no son estables  El mercado cambia - constantemente.  La tecnología cambia  Las metas de los usuarios cambian Desde la década 70
  29. Costos Tiempo de desarrollo Redes de ComputadoresTecnologías Emergentes Masificación y variedad de los microcomputadores y accesorios Interfaces de usuario. Software libre
  30. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  31.  Los principios forman la base de métodos, técnicas, metodologías y herramientas  Seis principios que pueden ser usados en todas las fases del desarrollo de software  Modularidad es el principio clave que soporta el diseño del software
  32. Principles Methodologies principios métodos y técnicas metodologías herramientas
  33. 1. Rigor y formalidad 2. Abstracción 3. Modularidad 4. Anticipación al cambio 5. Generalidad 6. Incrementalidad. Principios aplica al proceso y al producto GHEZZI, C., JAZAYERI, M., MANDRIOLI, D. "Fundamentals of Software Engineering". Prentice-Hall International Editions. 2da ed. Nov. 2002
  34.  Significa ... seguir procesos sistemáticos y verificables en el proceso de desarrollo de software IMPLICACIONES: • La formalidad es la base de automatización de procesos • Principio esencial para obtener productos reusables
  35. Producto  Analisis matemático de correctitud de programas  Test sistemático y riguroso Proceso  Rigurosa documentación ayuda a la gestión del proyecto y asegura los tiempos de respuesta
  36.  Significa... Aplicar un proceso mental o intelectual que permite identificar lo relevante e ignorar los detalles IMPLICACIONES: • percepción del qué/ cómo (la separación de intereses ) • percepción del todo/ partes (modularidad)
  37.  Cuando los requisitos son analizados se produce un modelo de la aplicacion propuesta  El modelo puede ser una descripción formal o informal  Es posible razonar acerca del sistema razonando acerca del modelo
  38. En procesos  Cuando realizamos estimación de costos solo tomamos en cuenta algunos factores En producto  Los tipos de datos abstractos
  39.  Un sistema complejo puede ser dividido en piezas más simples llamadas módulos  Un sistema que está conformado por módulos se dice que es modular
  40. permite:  descomponer en partes un sistema complejo (descomposición)  componer el sistema a partir de sus partes (composición) Comprender el sistema y las partes (comprensión)
  41. Problema Subprob. 4Subprob. 2Subprob. 1 Subprob. 3 solución. 4solución. 2Solución. 1 solución. 3 Solución
  42.  Significa: La capacidad de prever cómo y dónde pueden ocurrir los cambios • La aplicación de este principio es altamente apreciado en la etapa de mantenimiento • Es un principio relevante para el desarrollo de componentes reusables
  43.  Habilidad para soportar la evolución del software requiere anticipar posibles cambios  Es la base para el software evolutivo
  44. Significa: buscar la solución más amplia (que englobe los casos específicos) • Busca la solución más amplia para problemas específicos • La solución general puede ser menos eficiente o más costosa • Principio importante para desarrollar productos reusables.
  45. Significa: Construcción del producto por aproximaciones sucesivas y/o por componentes (partes) • Desarrollo de prototipos para los componentes críticos • Útil para desarrollo de aplicaciones no precisas, donde no están bien definidos los requisitos.
  46.  Ejemplos ◦ Liberar subconjuntos de un sistema muy tempranamente para encontar el feedback del usuario, y luego agregar incrementalmente nuevas características ◦ Liberar un primer prototipo e incrementalmente ir transformando el prototipo en el producto.
  47. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  48. Mediante un proceso ....  Soportado por un método riguroso, sistemático  basado en principios reconocidos  con actividades que se estructuren de acuerdo a un modelo  facilitado por el uso de herramientas.
  49.  El software es construido para cumplir ciertas funcionalidades y satisfacer ciertas cualidades  El proceso de construcción de software debe también cumplir ciertas cualidades.  Cualidades de software son a menudo referidas como requisitos no funcionales (en realidad es un subconjunto de este tipo de requisitos).
  50.  Internas vs. externas ◦ Externas visibles al usuario ◦ Internas concernientes a los desarrolladores  Producto vs. procesos ◦ Nuestro objetivo es desarrollar productos de software ◦ El proceso se refiere a como lo hacemos  Cualidades internas afectan las cualidades externas  La calidad del proceso afecta la calidad del producto.
  51. ¿Cuáles son las características que deseamos al elaborar un software?
  52. Centro ISYS. Esc. Computación. UCV/2005 53 Características de Calidad de software (Normas ISO 9126) :
  53. Características (ISO 9126) Subcaracterísticas Funcionalidad Adecuacidad (Suitability), exactitud/precisión ( Accurateness), Interoperabilidad, (Conformidad Compliance ) Seguridad Confiabilidad Madurez, Tolerancia a Falla, Recuperabilidad Usabilidad comprensibilidad (Understandability ), aprendizaje (Learnability ), Operabilidad Eficiencia Rendimiento en tiempo, rendimiento de Recurso. Mantenibilidad Analizabilidad, Modificabilidad, Estabilidad, Testability (Prueba) Portabilidad Adaptabilidad, Instalabilidad, Conformidad a estándares, Reemplazabilidad/Substituibilidad
  54.  Correcto Confiable Robusto Se comporta acorde a su especificación Se comporta de acuerdo a lo esperado por el usuario Se comporta razonablemente aún en cirscunstancias no contempladas (tolerante a fallas).
  55. • construcciones correctas si ellas satisfacen las especificaciones • en un movimiento sísmico unas colapsan (no son robustas) • otras construcciones sufren pequeños daños tolerables o previsibles (son confiables).
  56.  Software es correcto si satisface las especificaciones de requisitos funcionales ◦ (asumiendo que las especificaciones ...)  Si las especificaciones son formales la correctitud puede ser probada
  57. ◦ Informalmente, el usuario confía en el producto ◦ Si las especificaciones son correctas, todo software correcto es confiable. Pero no a la inversa (en la practica, pueden haber especificaciones incorrectas....) ◦ ISO 9127: Confiabilidad: se refiere a la capacidad de un SW de mantenerse operativo bajo las condiciones establecidas por un período de tiempo.
  58.  Productos (o componentes) son usados (probablemente, con pequeños cambios) para construir otros productos  Reuso de partes estandar miden la madurez de una ingeniería  Tambien aplica a procesos.
  59.  Reusable Componentes reusables: – Librerías científicas – Librerías para el desarrollo de interfaces (MFC de Windows) – Patrones – Especificaciones – Clases.
  60. factor clave para determinar la madurez de cualquier industria “....la IS debe aún evolucionar para alcanzar su madurez como una disciplina de ingeniería..” “....en el futuro las aplicaciones serán construídas ensamblando componentes..”
  61.  El software puede correr en diferentes plataformas de hardware o ambientes de software  se refiere a la habilidad del sw de ser transferido de un ambiente a otro.  Es una cualidad relevante cuando se introducen nuevas plataformas  Es tambien relevante, cuando el software se baja de ambientes de redes heterogéneos.
  62.  Interoperable – Puede coexistir y cooperar con otros sistemas de software – Las herramientas de ambientes integrados son interoperables
  63. – Se mide mediante técnicas clásicas:  complejidad de algoritmos  evaluación de la eficiencia (monitoreo, simulación,..). Software Eficiente: Usa los recursos computacionales económicamente (memoria, tiempo de . . procesamiento, comunicación..)
  64. Usabilidad es una cualidad del software que tiene múltiples componentes y tradicionalmente es asociado con:  Aprendizaje  Eficiencia  Memorización  Baja rata de errores  Satisfacción ¿ Qué es Usabilidad ? •ISO 9127 Usabilidad: se refiere al esfuerzo requerido por un conjunto de usuarios para el uso del sw
  65. Usabilidad  Usable – La usabilidad de un producto de software está determinada por la satisfacción del usuario al utilizar el producto – Fundamentalmente relacionada con las características de la interfaz de usuario – Diversas cualidades inciden en la usabilidad (eficiencia, confiablidad,...).
  66.  Mantenibilidad: facilidad de mantenimiento  Mantenimiento: cambios despues de la liberación del producto  Los costos de mantenimiento exceden el 69% del costo total del software
  67. Tipos de Mantenimiento Correctivo (remoción de errores) Adaptativo (cambios para adecuarlos a modificaciones de su ambiente) Perfectivo (cambios para mejorar la calidad -satisfacer nuevos requisitos, aumentar la eficiencia, modificar funcionalidades, etc)
  68.  Facilidad de comprender el software  Es una cualidad muy importante, para realizar modificaciones de programa.  Esta cualidad incide en la mantenibilidad
  69.  Al equipo de desarrollo le interesa que el software sea comprensible, portable, mantenible, verificable ...  Al usuario le interesa que el software sea fácil de usar, confiable, robusto...
  70. Contenido 1. Definición de la Ingeniería de Software 2. Áreas de conocimiento 3. Líneas de investigación en IS 4. Disciplinas relacionadas 5. Evolución de la Ingeniería de Software 6. Problemática del desarrollo de software 7. Principios en la IS 8. Software de calidad 9. Actividades en proceso de DS
  71. Actividades en el proceso de desarrollo de software  Para desarrollar un producto de software se realizan diversas actividades que se estructuran y relacionan de acuerdo a un modelo y se desarrollan siguiendo un método. Los modelos encadenan las diversas actividades
  72.  se relacionan conformando :  se desarrollan aplicando :  El método se fundamenta en:  El método puede ser soportado por: principio(s) - método(s) - herramienta(s) - modelo(s) un modelo un método principios herramientas Actividades en el proceso de desarrollo de software
  73. Acerca de las actividades  Utiliza y produce “artefactos”  Se relacionan e interactúan de diferentes maneras conformando distintos procesos de desarrollo de software (modelos)  De acuerdo al modelo una actividad puede jugar un rol preponderante o incluso pudiera no existir.
  74. Acerca de las actividades  La ingeniería de requisitos es el proceso que lleva a la especificación del software  Los procesos de diseño e implementación transforman la especificación en un programa ejecutable  La validación involucra chequear que el sistema cumple su especificación y las expectativas del usuario  La evolución concierne con la modificación del sistema después que está en uso swebok
  75. Actividades usuales
  76. Relaciones entre las actividades Actividades: Encadenamiento Rol Granularidad Modelo de desarrollo de software Análisis de requisitos Prototipaje Especificación Implementación Método 1 Método n Un ejemplo
  77. Actividades – Modelos -Procesos  El modelo de desarrollo de software indica como se relacionan las actividades  Los procesos de desarrollo de software indican como se realizan las actividades para producir y evolucionar un sistema del software
  78. Actividades – Modelos - Procesos  ¿Cómo encadenar las actividades del proceso de desarrollo de software? Modelos (ciclo de vida) Ej.: Modelo de la cascada, UP....  ¿Cómo realizar las actividades del proceso de desarrollo de software? Métodos Ej.: Orientado a objeto, …  ¿Cuáles principios se aplican en el proceso de desarrollo de software? Ej.: Incrementable, iterativo,...
  79. CONCEPTOS GENERALES CICLO DE VIDA: Conjunto de etapas que se han de llevar a cabo para crear, explotar y mantener un Sistema Informático. METODOS: Son las normativas que marcan las directrices que se han de seguir para llevar a cabo una tarea. Responde a la pregunta QUÉ. TECNICAS: Es un modo de representación para la solución de un problema concreto. Responde a la pregunta CÓMO. METODOLOGIA: Es un conjunto coherente de métodos y técnicas que cubren más de una etapa del ciclo de vida. HERRAMIENTAS: Proporcionan un soporte automático o semi- automático para el proceso y para los métodos.
Anzeige