Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Clase 1: Introducción a la Ing. de Software Ingeniería de Software Clase 1 Objetivos 2 Entender el significado de la Ingeniería de Software Conocer las metas de la Ingeniería de Software Conocer los atributos de un buen Software Conocer el código de ética del Ingeniero de Software Temas 3 Antecedentes ¿Qué es la Ingeniería de Software? Metas de la Ingeniería de Software Ciclo de vida del software Los atributos de un buen software Los retos de la Ingeniería de Software El código de ética del Ing. de Software Antecedentes 4 Concepto de Software IEEE std. 610 define el software como “programas, procedimientos y documentación y datos asociados, relacionados con la operación de un sistema informático” Según el Webster’s New Collegiate Dictionary (1975), “software es un conjunto de programas, procedimientos y documentación relacionada asociados con un sistema, especialmente un sistema informático” Antecedentes 5 El producto Software El software se desarrolla, no se fabrica en el sentido clásico. Pueden ser genéricos como procesadores de texto, bases de datos, etc. o a medida porque son específicos para un cliente particular El software atraviesa las etapas propias de la fabricación de productos: es diseñado, luego es replicado, es eventualmente distribuido y finalmente vendido. El software no se estropea, pero se deteriora. En el software, el recurso principal son las personas. Antecedentes 6 Historia de la Ingeniería de Software Primera Fase. Los albores (1945-1955) Programar no es una tarea diferenciada del diseño de una máquina Uso de lenguaje máquina y ensamblador. Segunda Fase. El florecimiento (1955-1965) Aparecen multitud de lenguajes, entre ellos Fortran y Cobol. Se pensaba que era posible hacer casi todo. Tercera Fase. La crisis (1965-1970) Desarrollo inacabable de grandes programas Ineficiencia, errores, coste impredecible Antecedentes 7 Historia de la Ingeniería de Software Cuarta Fase. Innovación conceptual (1970-1980) Fundamentos de programación Se introdujo el concepto de la modularidad y encapsulación. Verificación de programas También apareció un sistema para gestionar el hardware: SO Quinta Fase. El diseño es el problema (1980-1990) Aparecen los lenguajes orientados a objetos Entornos de programación Especificación formal Antecedentes 8 Historia de la Ingeniería de Software Sexta Fase. Prominencia de Internet (1990-1999) Auge de la Web y el correo electrónico Aparición de los sistemas distribuidos Surge el software libre Séptima Fase. Metodologías ligeras (2000-?) Metodologías más simples y rápidas Aplicaciones móviles Antecedentes 9 Crisis del Software Se desarrollo durante la tercera fase Se debió a que el entorno de desarrollo de sistemas software adolecía de: Retrasos considerables en la planificación Poca productividad Demandas cada vez más desfasadas frente a las ofertas Elevadas cargas de mantenimiento Baja calidad y fiabilidad del producto Dependencia de los realizadores Antecedentes 10 Algunos Mitos Sobre la gestión “Por qué hacer una planificación exhaustiva, si cometemos algún error, siempre podemos añadir gente” “El equipo de trabajo dispone de las más modernas herramientas de desarrollo y trabaja con las máquinas más potentes” Sobre el cliente “Una declaración general de los objetivos es suficiente para comenzar a escribir los programas, podemos dar los detalles más adelante” Antecedentes 11 Algunos Mitos Sobre el cliente “Los requisitos del proyecto cambian continuamente, pero los cambios pueden acomodarse fácilmente ya que el software es flexible” Sobre los desarrolladores “No es necesaria ninguna metodología, cuanto antes empecemos a programar, antes acabaremos” “Lo único que realmente importa, cuando se termina un proyecto, es que la aplicación funcione. La documentación nadie la utiliza” Definiciones 12 Metodología Colección de métodos de solución de problemas organizados bajo una filosofía común y gobernados por un conjunto de principios Método Forma de hacer las cosas. Los métodos de la ingeniería del software indican “cómo” construir técnicamente el software”. Técnica Un conjunto de procedimientos precisamente descritos para lograr una tarea estándar Herramienta Instrumentos o ayudas tangibles en la realización de una tarea. Definiciones 13 Actividad Es un proceso que tiene un lugar en el tiempo y en el espacio, y en el cual un agente actúa con unos objetivos determinados Artefacto Es algo tangible creado por un propósito práctico Especificación Es un descripción detallada y precisa de algo existente (o que existirá) o de una cierta situación, presente o futura Ciclo de vida De un producto o proyecto software es la evolución del mismo desde su momento de concepción hasta el momento en que deja de usarse, y puede describirse en función de las actividades que realizan dentro de él ¿Qué es la Ingeniería de Software? 14 Se utilizó el término por primera vez por Fritz Bauer en la conferencia sobre desarrollo de software patrocinada por el Comité de Ciencia de la OTAN celebrada en Garmisch (Alemania), en octubre de 1968, previamente había sido utilizado por el holandés Edsger Dijkstra en su obra The Humble Programmer. ¿Qué es la Ingeniería de Software? 15 Fritz Bauer, 1968: “La Ingeniería del Software es el establecimiento y uso de principios robustos de la ingeniería a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre maquinas reales.” ¿Qué es la Ingeniería de Software? 16 Bohem, 1976: ”Ingeniería del Software es la aplicación practica del conocimiento científico en el diseño y construcción de programas de computadora y la documentación necesaria requerida para desarrollar, operar (funcionar) y mantenerlos.” ¿Qué es la Ingeniería de Software? 17 Mills, 1980: ”La Ingeniería de Software tiene como uno de sus principales objetivos la producción de programas que cumplan las especificaciones, y que se demuestren correctos, producidos en el plazo y costo adecuado.” ¿Qué es la Ingeniería de Software? 18 IEEE 1993: ”La Ingeniería de Software es la aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software; es decir, la aplicación de Ingeniería de Software.” ¿Qué es la Ingeniería de Software? 19 Ian Sommerville “La Ingeniería del Software es la disciplina de ingeniería encargada de todos los aspectos relacionados con la producción de software desde sus etapas más tempranas de la especificación del sistema hasta el mantenimiento del sistema tras su puesta en marcha.” ¿Qué es la Ingeniería de Software? 20 Disciplina de ingeniería Los ingenieros de software usan las herramientas, métodos y teorías para solucionar los problemas que aparecen Incluso teniendo en cuenta restricciones económicas y de organización Producción de software Planificación de proyectos Administración de proyectos de software Procesos técnicos de desarrollo de software Dirección de proyectos Capas de la Ingeniería de Software 21 Procesos: un marco de trabajo que ayuda al jefe de proyecto a controlar la gestión del proyecto y las actividades de ingeniería. Métodos: las actividades técnicas requeridas para la creación de productos de trabajo. Herramientas: la ayuda automatizada para los procesos y métodos. Ingeniería de Software en nuestros días 22 Económicamente En los EEUU, el software contribuyó a 1/4 de todo el incremento del PIB durante los 90's(alrededor de 90,000 millones de dólares por año), y 1/6 de todo el crecimiento de productividad durante los últimos años de la década (alrededor de 33,000 millones de dólares por año). La Ingeniería de Software contribuyó a $1 billón de crecimiento económico y productividad en esa década. Alrededor del globo, el software contribuye al crecimiento económico en formas similares, aunque es difícil de encontrar estadísticas fiables. Ingeniería de Software en nuestros días 23 Socialmente La Ingeniería del Software cambia la cultura del país debido al arraigo de la computadora entre la sociedad. Las personas ahora tienen nuevas formas de comunicarse entre ellas: correo electrónico, la web, SMS, dispositivos móviles, redes sociales, etc. El software mejora servicios en la comunidad: Bomberos, Salud, Municipalidades...Transportes, Tiendas, cajeros automáticos, almacenes y muchos mas que dependen del Software hoy en día. Metas de la Ingeniería de Software 24 Reducir los costos de desarrollo del software y de su mantenimiento El mantenimiento del software suele ser mucho mas caro de mantener que de desarrollar. En sistemas con una vida muy larga el coste de manutención multiplica varias veces el coste de desarrollo. Normalmente se gasta 60% de presupuesto invertido en desarrollo y un 40% en pruebas. En el software hecho a medida los gastos de evolución suelen ser mucho mayores que los del desarrollo. En el software genérico, cada nueva actualización grande la suelen sacar como una versión nueva, por razones de marketing. Metas de la Ingeniería de Software 25 Costos de los cambios El Software se deteriora Metas de la Ingeniería de Software 26 Otras metas son: Mejorar la calidad del software Acortar los tiempos de desarrollo Aumentar la productividad Incrementar la reutilización del software Ciclo de vida del Software 27 1. Análisis y especificación de requerimientos 2. Diseño de la solución 3. Programación del software 4. Pruebas del software 5. Implementación o puesta en productivo 6. Mantenimiento 7. Documentación (*) Ciclo de vida del Software 28 Actividades de la Ingeniería de Software 29 Actividades de la Ingeniería de Software 30 Los atributos de un buen Software 31 Mantenibilidad El software debe escribirse de tal forma que pueda evolucionar para cumplir las necesidades de cambio de los clientes. Este es un atributo crítico debido a que el cambio en el software es una consecuencia inevitable de un cambio en el entorno de negocios. Confiabilidad La confiabilidad del software tiene un gran número de características, incluyendo la fiabilidad, protección y seguridad. El software confiable no debe causar daños físicos o económicos en el caso de una falla en el sistema Los atributos de un buen Software 32 Eficiencia El software no debe hacer que se malgasten los recursos del sistema, como la memoria y los ciclos de procesamiento. Por lo tanto la eficiencia incluye tiempos de respuesta y de procesamiento, utilización de la memoria, etc. Usabilidad El software debe ser fácil de utilizar, sin esfuerzo adicional, por el usuario para quien está diseñado. Esto significa que debe tener una interfaz de usuario apropiada y una documentación adecuada. Los retos de la Ingeniería de Software 33 El reto de la heterogeneidad Desarrollar técnicas para construir software confiable que sea lo suficientemente flexible para adecuarse a esta heterogeneidad. El reto de la entrega Reducir los tiempos de entrega para sistemas grandes y complejos sin comprometer la calidad del sistema. Los retos de la Ingeniería de Software 34 El reto de la confianza Desarrollar técnicas que demuestren que los usuarios pueden confiar en el software. Los retos no son independientes Es necesario desarrollar nuevas herramientas y técnicas, así como formas innovadoras de combinación y uso de métodos de ingeniería del software existentes. El Ingeniero de Software 35 Pasar de ser artesano a Ingeniero Adoptar un enfoque sistemático y organizado en su trabajo Para ello se debe: Aplicar métodos, técnicas y herramientas de desarrollo Adoptar estándares de desarrollo Utilizar la experiencia acumulada Documentación El Ingeniero de Software 36 Adoptar estándares de desarrollo para mejorar el proceso: Reducción de costes Reducción del tiempo de desarrollo Reducción de riesgos Utilizar las herramientas y técnicas más apropiadas dependiendo: del problema a resolver, las restricciones del desarrollo y los recursos disponibles. El código de ética 37 Son los principios que deben guiar las decisiones y comportamiento de los profesionales de Ingeniería de Software aunque sean estudiantes, profesores o gestores. Código ético de ACM / IEEE : Actuar en bien del interés público. Actuar en el mejor interés del cliente y el empleador, siendo consistente con el interés publico. Asegurar que los productos reúnen los mejores estándares profesionales posibles. El código de ética 38 Mantener la integridad e independencia en el juicio profesional. Suscribir y promocionar un comportamiento ético en la gestión y mantenimiento del desarrollo de software. Colaborar en el avance de la integridad y la reputación de la profesión siendo consistente con el interés público. Ser justo y ayudar a los colegas. A lo largo de la vida, reciclarse en la práctica de la profesión y promocionar un comportamiento ético en la práctica de la profesión La Ingeniería de Software y la Ciencias de la Computación 39 La ciencia de la computación se refiere a las teorías y los fundamentos subyacentes en los sistemas de computación: Buenos ladrillos. La ingeniería de software trata los problemas prácticos del desarrollo de software: Buenos edificios. Con las teorías de la Ciencia de la Computación no es suficiente para desarrollar software. Por lo menos cuando el software a desarrollar es suficientemente grande. La Ingeniería de Software y la Ingeniería de Sistemas 40 La Ingeniería de Sistemas se refiere a todos los aspectos del desarrollo de sistemas basados en la computadora, tanto del Hardware como del Software y los procesos de diseño y distribución de sistemas. La Ingeniería de Software es parte de este proceso. Al ser el Software la parte más importante del sistema, las técnicas de Ingeniería del Software se aplican en el proceso de la Ingeniería de Sistemas. Ingeniería de Software como disciplina profesional 41 (SE2004) Desarrollo de un conjunto de resultados del plan de estudios deseados y una declaración de lo que cada graduado debe saber. Determinación y especificación de los conocimientos necesarios para ser incluidos en un programa de ingeniería de software de pregrado Construcción de un conjunto de recomendaciones del plan de estudios de un programa de ingeniería de software, el cual podría estructurarse en varios contextos. Disciplinas integradas en la Ingeniería del Software 42 Software Engineering Body of Knowledge (SWEBOK) Requisitos del software Diseño del software Construcción del software Prueba del Software Mantenimiento del software Gestión de la configuración del software Gestión de la Ingeniería del Software Proceso de Ingeniería del Software Herramientas y métodos de la Ingeniería del Software Calidad del software Disciplinas integradas en la Ingeniería del Software 43 Software Engineering Body of Knowledge (SWEBOK) Practicas del profesional de Ingeniería de Software Economía de la Ingeniería de Software Fundamentos de la computación Fundamentos de la matemática Fundamentos de la ingenieríaResumen 44 Durante los 60s se vivió la crisis del software, originada por Desarrollo inacabable de grandes programas, ineficiencia, errores, coste impredecible. La Ingeniería del Software es la disciplina de ingeniería encargada de todos los aspectos relacionados con la producción de software desde sus etapas más tempranas de la especificación del sistema hasta el mantenimiento del sistema tras su puesta en marcha. Entre las metas de la Ingeniería de Software están la reducción de costos y acortar los tiempos de desarrollo. Los principales atributos de un buen software son mantenibilidad, confiabilidad, eficiencia y usabilidad ¿Preguntas? 45 ¿Cuál campo de estudio de la Ingeniería de Software lo atrae más?
Compartir