Logo Studenta

01_Introduccion_Ingenieria_Software

¡Este material tiene más páginas!

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?

Continuar navegando

Materiales relacionados

113 pag.
13 pag.
Tarea 1 conceptos - Mauricio axel 20

User badge image

Desafío México Veintitrés