Ingeniería de Software I

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Tipos de software y su desarrollo
Ingeniería de Software II
Fundamentos de Diseño de Software INFT.1
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
METRICAS DE PROCESO Y PROYECTO
Guia Diseño Robert Echeverria
CALIDAD EN EL DESARROLLO DE SOFTWARE
Administración de Procesos de Pruebas
Objetivo: Conocer los componentes hardware y software que constituyen un computador.
M.S.C. Ivette Hernández Dávila
HERRAMIENTAS CASE.
SEMANA Introducción.
Historia Síntomas Factores de Influencia Posibles Causas
DISEÑO DE SOFTWARE 1ª. Parte
 Docentes ◦ Jonathan Erlich  ◦ Ariel Glikman   Organización de la materia ◦ Idesmaimonides.wikidot.com.
Ingenieria de software
Ciclo de Vida del Software Paradigmas de Desarrollo
Ciclo de Vida del Software
Ingeniería de Software
Ingeniería de Requerimiento
VII Congreso de Expotecnología UVM 2007 Jonás A. Montilva C.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Armillas Mendieta Brenda Angélica De León Campos Arturo Delgado Sosa Luis Alberto Rodríguez Ortega Sandra Vergara Carranza Carlos.
EL APORTE DE LA INGENIERIA DE SOFTWARE A LAS ORGANIZACIONES
Tema 1: Introducción a la Ingeniería de Software
Construcción de Software
EVOLUCIÓN DEL SOFTWARE
PROYECTO INFORMÁTICO.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
(GESTIÓN DE PROCESOS DE NEGOCIO)
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
INTRODUCCIÓN INGENIERIA DE SISTEMAS
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
Desarrollo de Software II Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto - Diciembre 2008 Ing. Oswaldo Solarte Pabón.
INGENIERIA DE SOFTWARE
Docente: Lic. M. Alina Vargas García Horario: Lunes 20:05 – 21:25 Miércoles 20:05 – 21:25 Gestión: 2011.
Diseño de Sistemas.
Capitulo 1 Roger S. Presman
 Sara Isabel Osorio Alcaraz Ana Isabel Vallejo Grisales 10 Informática 1.
Ingeniería de Software I Universidad CAECE Marzo de 2004 El desarrollo de Software como proceso industrial.
Fundamentos y Conceptos Claves del Software ISF5501 Ingeniería de Software Semana 1/1.
Introducción al proceso de verificación y validación.
Actividades en el Proceso de desarrollo de Software
Simón Esneider Herrera Álvarez Media Técnica Casd 10-2
Ingeniería del Software I
Estructurar tus ideas para hacerlas realidad
El producto de software y su ciclo de vida
Ciclo de Vida del Software
Mejores Prácticas para el Desarrollo de Software Omar de Jesús Rosales Hernández.
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
INGENIERIA DE SOFTWARE
 es el conjunto de conocimientos y técnicas científicas aplicadas al desarrollo, implementación, mantenimiento y perfeccionamiento de estructuras (tanto.
DESARROLLO DE SOFTWARE Cuando se va desarrollar un software intervienen muchas personas como lo es el cliente quien es el que tiene el problema en su.
Elementos Conceptuales de proyectos: ¿Qué es un proyecto
Proceso de desarrollo de Software
Ing del Software Libre1 Ingeniería del Software Libre y Modelos de Calidad Instructora: Ing. Erika Veliz Correo Electrónico:
¿Qué es la Ingeniería De Software? Ingeniería de Software.
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
NZ/EA/abril Introducción Julio NZ/EA/abril ¿ Que es la IS ? Disciplina que trata los aspectos concernientes al desarrollo de sistemas.
Ingeniería de Software Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Software de Comunicaciones
Modelo de procesos de software
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
Verificación y Validación del Software
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Transcripción de la presentación:

Ingeniería de Software I Conceptos Básicos de la Ingeniería de Software

Objetivos Introducir los conceptos fundamentales de la disciplina Conocer las características del Software Fundamentar el desarrollo de software a partir de la Ingeniería de Software

Contenido Generalidades de la Ingeniería de Software Grandes proyectos de Software Características del producto de software Principios, métodos, herramientas y metodologías

Generalidades de la IS Qué es la Ingeniería de Software ?? Es el área de las ciencias de la computación que trata con la construcción de sistemas de software, los cuales son tan grandes y complejos que se construyen con equipos de ingenieros [Ghezzi 91]. El establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales (Fritz Bauer)[NAU69]. Es un conjunto de tres elementos claves – métodos, herramientas y procedimientos – que facilitan el control del proceso de desarrollo del software para obtener un producto de calidad de una forma productiva (Pressman) [PRE25].

Generalidades de la IS Porqué la Ingeniería de Software ?? En los inicios, el desarrollo de sistemas basados en computador ponía énfasis en el Hardware más que en el Software. El desarrollo de software se veía más bien como un “arte” Hoy, el mayor costo y riesgo del desarrollo de sistemas basados en computador no están en el Hardware, sino que en el Software. El desarrollo de Software ya no implica sólo el desarrollo de algunos programas, si no que sistemas cada vez más complejos de millones de líneas de código, interfaces e interacción con sistemas de Bases de Datos. El componente SOFTWARE es cada día más crítico para el negocio

Generalidades de la IS Historias de terror El Bank of America gastó US$23 M en un proyecto a 5 años. Se terminó gastando mas de US$60 M para finalmente abandonar el proyecto. Pérdidas totales estimadas en mas de US$1000 M. El bombardero B1 requirió US$ 1000 M más de lo proyectado para mejorar sus sistema de defensa AllState (seguros) comenzó en 1982 un proyecto de automatización integral de sus operaciones de 5 años de duración y US$8 M de presupuesto. Fue abandonado en 1993 después de gastar US$100 M. Blue Cross (isapre norteamericana) perdió más de US$60 M en pagos incorrectos debido a un error en el software por el que habían pagado mas de US$200 M.

Generalidades de la IS Porqué la Ingeniería de Software ?? Porqué lleva tanto tiempo terminar los Sistemas ? Porqué tiene un costo tan elevado ? Porqué no podemos encontrar todos los errores antes de liberar el Software ? Porqué no cumplimos los plazos de entrega ? Porqué no entregamos un software de buena calidad ? Son algunas de las preguntas que motivan el desarrollo de la Ingeniería de Software, como la disciplina que permite desarrollar un producto de software en un tiempo prudente, con costos razonables, que sea fiable y de buena calidad.

Grandes proyectos de software Qué es un proyecto grande de software ? Cuántas líneas de código tiene Windows NT ? Entre 6 y 10 Millones El software del Bombardero B2 tiene 3.5 Millones Un switch telefónico típico tiene 2 Millones Como referencia, 1 Millón de líneas de código (1MLOC) equivale a: 13.000 páginas (75 líneas por página) 26 tomos de 500 páginas cada uno 22 horas para imprimir (10 pp/min) Medio día para recompilar

Grandes proyectos de software Particularidades de estos sistemas ESCALA: Una sola persona no puede entenderlo todo COMPLEJIDAD: Requiere trabajo en equipo  problemas humanos, coordinación, motivación, etc. CAMBIO: Durante y después del desarrollo VIDA: Años, décadas IMPRECISIÓN: Requerimientos, Diseños, programas, resultados

Grandes proyectos de software Cuál es el problema ? Problemas de mantenimiento Altísimas probabilidades de errores sólo en ESCRIBIR el código Enorme cantidad de tiempo para incorporar modificaciones o nuevos requerimientos Atrasos (Eje: Windows95 liberado recién en 1996) Excesivo gasto en mantenimiento (En promedio, se gasta el 60% de los recursos en mantenimiento) Altos costos Recurso Humano: Difícil cuantificación; A veces muy escaso o simplemente no existe Metodologías: Variadas y difíciles de comparar entre si; El avance en el desarrollo o generación de nuevas metodologías es tremendamente lento respecto al avance tecnológico Herramientas de productividad: No existe gran variedad, aunque si gran cantidad; productos propietarios; son caras; no siempre son útiles. Planificación: Siempre se hace  Nunca se cumple; Se sacrifica rápidamente las actividades planificadas debido a las urgencias del negocio.

Características del Software Qué es Software ? 1) Instrucciones, o programas de computador, que cuando se ejecutan proporcionan la función y el comportamiento deseado 2) Estructuras de datos que facilitan a los programas manipular adecuadamente la información 3) Documentos que describen la operación y el uso de los programas Software es 1) , 2) y 3)

Características del Software El Software se desarrolla, no se fabrica, no se manufactura El Software no se desgasta, pero sufre de envejecimiento El Software no se desgasta, pero se estropea Durante la vida del software, se incorporan cambios que provocan nuevos errores No hay piezas de repuestos para el SW, como en el HW  el mantenimiento del SW tiene una complejidad mayor que el mantenimiento del HW

Características del Software Los diferentes tipos de SW contemplan: SW de Sistemas: SW que sirve para otros SW SW de Tiempo Real: SW orientado a medir, analizar y controlar sucesos del mundo real, conforme suceden en la realidad SW de Gestión: SW orientado al procesamiento de información comercial y administrativo. (SW transaccional – SW de Gestión) SW Científico y de Ingeniería: SW para la astronomía, vulcanología, biología molecular, CAD, CASE, simuladores, fabricación automática, etc. SW Empotrado: SW residente en ROM que se utiliza para controlar productos y sistemas de los mercados industriales y de consumo: Microondas, automóvil, etc. SW de PC : Procesadores de texto, planillas electrónicas, etc. SW de IA (Inteligencia Artificial): Sistemas expertos, Sistemas basados en el conocimiento, etc.

Características del Software Cualquier producto de Software debe contar con las siguientes características Correctitud: Grado en que el producto de SW satisface los requerimientos para lo cual fue concebido. Es el mínimo nivel de calidad exigible Confiabilidad: Grado en que se puede esperar que el producto de SW realice las funciones esperadas, con la precisión requerida Robustez: Capacidad del SW para comportarse de manera “razonable” ante situaciones inesperadas. Portabilidad: Capacidad (Esfuerzo que se debe hacer para...) del SW para operar en diferentes ambientes (HW y SO) Reusabilidad:Grado en que el SW, o partes del SW, se pueden utilizar en otras aplicaciones, distintas al propósito original por el que fueron concebidos Eficiencia: La cantidad de recursos de computadora y de código requerido por el SW para llevar a cabo sus funciones (HW más poderoso v/s Algoritmos de Orden n2, n o constante)

Principios, métodos, herramientas y metodología QUÉ NECESITAMOS PARA CONSTRUIR PRODUCTOS DE SW PROFESIONALES ????? La clave está en dar un enfoque de ingeniería al desarrollo del SW y, al mismo tiempo, mejorar las técnicas y las herramientas en un proceso continuo Qué significa “dar un enfoque de ingeniería” ??? Significa construir productos de SW.... Basándonos en los principios de la Ingeniería de Software Aplicando los métodos adecuados a cada una de las etapas del proceso de desarrollo Utilizando las herramientas adecuadas, que nos permitirán aplicar los métodos de manera correcta

Principios, métodos, herramientas y metodología QUÉ NECESITAMOS PARA CONSTRUIR PRODUCTOS DE SW PROFESIONALES ????? La clave está en dar un enfoque de ingeniería al desarrollo del SW y, al mismo tiempo, mejorar las técnicas y las herramientas en un proceso continuo Manejo formal del proceso de desarrollo Documentación formal Trazabilidad Manejo de configuración y control de versiones Análisis cuidadoso del problema Diseño cuidadoso usando los principios del diseño (Abstracción, ocultamiento, etc.) Implementación cuidadosa Pruebas rigurosas Planificación y control del proyecto

Principios, métodos, herramientas y metodología QUÉ NECESITAMOS PARA CONSTRUIR PRODUCTOS DE SW PROFESIONALES ????? La clave está en dar un enfoque de ingeniería al desarrollo del SW y, al mismo tiempo, mejorar las técnicas y las herramientas en un proceso continuo En un proyecto de SW se genera, además del código, muchos otros documentos.... Requerimientos formales Diseño de alto nivel y diseño detallado Plan y casos de pruebas Documentación de usuarios Informes de errores y correcciones Plan de mantenimiento

Principios, métodos, herramientas y metodología La Ingeniería en general ataca problemas prácticos REALES Genera soluciones razonables en términos de costos, uso de recursos, etc. Tiene su base en la ciencia: Resultados repetibles, usa modelos matemáticos (es formal)

Principios, métodos, herramientas y metodología La IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas Principios Proposiciones o verdades que rigen el desarrollo Ej: Principios del análisis de requisitos, principios del diseño Rigor y formalidad Grados de rigurosidad Sistematicidad Fundamentos matemáticos (métricas, medición de objetivos, estimaciones, etc.) Separación de intereses División del problema en partes Generación de las partes que conforman el todo

Principios, métodos, herramientas y metodología La IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas Principios Proposiciones o verdades que rigen el desarrollo Ej: Principios del análisis de requisitos, principios del diseño Modularidad Tratar cada parte del todo como una entidad independiente de las otras partes Posibilidad cierta de integrar las partes para formar el todo Cohesión y acoplamiento Abstracción Formulación de modelos que representen la realidad Identificación entre lo relevante y lo desechable

Principios, métodos, herramientas y metodología La IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas Principios Proposiciones o verdades que rigen el desarrollo Ej: Principios del análisis de requisitos, principios del diseño Anticipación al cambio Proyección de futuro Incorporación de cambios Mantención y Evolución Generalidad Descubrir los detalles que pueden ser generalizables Potencial de reutilización

Principios, métodos, herramientas y metodología La IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas Principios Proposiciones o verdades que rigen el desarrollo Ej: Principios del análisis de requisitos, principios del diseño Incrementalidad Desarrollo step by step Desarrollo de versiones incrementales

Principios, métodos, herramientas y metodología La IS se sustenta en Principios, métodos y técnicas, metodologías y herramientas Métodos Indican el COMO construir técnicamente el SW. Los métodos abarcan la planificación, estimación de proyectos, análisis, diseño, arquitectura, codificación, prueba y mantenimiento. Ej:Análisis orientado a objetos, Análisis estructurado moderno Herramientas Las herramientas soportan la aplicación de la metodología Ej: Herramientas CASE

Conclusiones Ingeniería de Software Software POR LO TANTO.... Disciplina que relaciona métodos, metodologías y herramientas necesarias para la construcción de grandes y complejos productos de Software, pero de alta calidad Software Producto del proceso de desarrollo (aplicaciones ejecutables) y TODA la información necesaria para su implementación y utilización

Conclusiones En general el proceso de construcción de un producto de SW comprende las etapas de... Análisis y especificación de requisitos Queremos SW que se use. Queremos usuarios contentos (Correctitud) Diseño del SW Queremos diseños de acuerdo a los requisitos. Queremos diseños realistas Construcción Programación eficiente y de acuerdo a las especificaciones de diseño Verificación y Validación Queremos productos confiables, que satisfagan las especificaciones de diseño Apoyo en el computador Queremos hacer todo esto de la manera más eficiente posible

FIN