You are on page 1of 38

Ingeniería de Software

Clase 1:
Introducción a la Ingeniería de
Software

Hugo R. Cordero S.
Clase 1
Objetivos
2

 Entender el contexto de la Ingeniería de Software


 Conocer las metas que persigue
 Conocer los atributos de un buen software
 Conocer las disciplinas integradas de la Ingeniería
de Software
Temas
3

1. Introducción a la Ingeniería de Software


 ¿Qué es la Ingeniería de Software?
 Metas de la Ingeniería de Software
 Ciclo de vida del software
 Los retos de la Ingeniería de Software
2. Los atributos de un buen software
3. Disciplinas integradas en la Ingeniería 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
 Tendencia hacia la Nube
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
Definiciones
10

 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
11

 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?
12

 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?
13

 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 máquinas reales.”
¿Qué es la Ingeniería de Software?
14

 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?
15

 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?
16

 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?
17

 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?
18

 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
Ingeniería de Software en nuestros
19
días
 Económicamente
 En los EEUU, el software contribuyó a 1/4 de todo el incremento
del PIB durante los 90's y 1/6 de todo el crecimiento de
productividad durante los últimos años de la década
 Socialmente
 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.
 La Ingeniería del Software cambia la cultura del país debido al
arraigo de la computadora entre la sociedad.
 De Ejemplos
Metas de la Ingeniería de Software
20

 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
21

Costos de los cambios El Software se deteriora


Metas de la Ingeniería de Software
22

Otras metas:
 Mejorar la calidad del software

 Acortar los tiempos de desarrollo

 Aumentar la productividad

 Incrementar la reutilización del software


Actividades de la Ingeniería de
23
Software
Actividades de la Ingeniería de
24
Software
Los atributos de un buen Software
25

 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
26

 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
27
Software
 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.
 El reto de la confianza
Desarrollar técnicas que demuestren que los usuarios pueden
confiar en el software.
El Ingeniero de Software
28

 El profesional de software pasa 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
29

 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
30

 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.
La Ingeniería de Software y la
31
Ciencias de la Computación
 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
32
Ingeniería de Sistemas
 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
33
disciplina profesional
 (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
34
Ingeniería del Software
 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
35
Ingeniería del Software
 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ía
Resumen
36

 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?
37

 ¿Cuál campo de estudio de la Ingeniería de


Software lo atrae más?
Referencias
38

 Ingeniería de Software: Un enfoque práctico (7ma edición)


Roger S. Pressman
 Capítulo 1: El software y la Ingeniería de Software
 Ingeniería del Software (9na edición) Ian Sommerville
 Capítulo 1: Introducción
 Links:
 http://anton.awardspace.com/Ingenieria-Software/index.php
 http://ocw.usal.es/ensenanzas-tecnicas/ingenieria-del-
software/contenidos/
 http://sites.computer.org/ccse/
 http://www.computer.org/portal/web/swebok

You might also like