Está en la página 1de 18

Ingeniería de

Software I
Sesión 1

Ing. Jorge Díaz Castillo


jmdiaz@catedratico.udv.edu.gt
Ingeniería de Software
▸ El concepto “Ingeniería de software” se propuso originalmente en 1968,
en una conferencia realizada para discutir lo que entonces se llamaba
la “crisis del software” (Naur y Randell, 1969).
▸ A lo largo de las décadas de 1970 y 1980 se desarrolló una variedad de
nuevas técnicas y métodos de ingeniería de software, tales como la
programación estructurada, el encubrimiento de información y el
desarrollo orientado a objetos.
▸ Se perfeccionaron herramientas y notaciones estándar y ahora se
usan de manera extensa.
¿Por qué es importante
el Software en la
1 sociedad moderna?
Naturaleza del Software
Automatización Desarrollo económico
Eficiencia, productividad, Generación empleo,
aprovechamiento tiempo en contribución al PIB
otras actividades

Comunicaciones Salud y Ciencias


Comunicación y conexión Diagnóstico, tratamiento y
global. Tiempo real gestion de información
Importancia médica
Software
Innovación Entretenimiento y Cultura
Aplicaciones móviles, IA. Creación, edición, distribución

Mejora en calidad de vida contenido. Juegos, películas,


música, etc.

Acceso Información Gestión empresarial


Motores de búsqueda, Planificación, organización y
educación, democratización control de operaciones
del conocimiento
Naturaleza del software

▸ ¿En cuánto tiempo ocurrió esta transición?


▸ ¿Cambió la tecnología? ¿Los sistemas actuales son más complejos?
▸ ¿Cambiaron las problemáticas para producir el software?
Naturaleza del software
40 años después los programadores / ingenieros de software, siguen
haciéndose las mismas preguntas:
▸ ¿Por qué se requiere tanto tiempo para terminar el software?
▸ ¿Por qué son tan altos los costos de la producción del software?
▸ ¿Por qué no podemos detectar todos los errores antes de entregar el
software a nuestros clientes?
▸ ¿Por qué dedicamos tanto tiempo y esfuerzo a mantener los
programas existentes?
▸ ¿Por qué seguimos con dificultades para medir el avance mientras se
desarrolla y mantiene el software?
Definición
de
Software
“Software es un conjunto de programas, datos,
procedimientos, rutinas asociadas, y documentación y datos

“ de soporte operativo que forman parte de un sistema de


computadora.“ (IEEE)

“Software es un conjunto de programas y datos de


computadora asociados que realizan una tarea o conjunto de
tareas específicas” (Instituto Nacional Estadounidense de
Estándares - ANSI)

8
¿Qué lo hace tan dificil
1 de definir?
El Software es un Activo
Intangible (a diferencia
del hardware)
1
1. El Software se desarrolla o modifica con intelecto; no se
manufactura.
Fabricación de Hardware y desarrollo de Software tienen diferencias
fundamentales en el proceso
▸ La calidad en ambos depende de un buen diseño. Un error en calidad
es más complejo de corregir durante el proceso de manufactura
▸ Diferentes dinámicas entre las personas durante el proceso de
desarrollo / manufactura
▸ Ambas implican desarrollo de un producto. Proceso distinto en
software (incremental, iterativo, canales distribución, modelo negocio,
pricing, etc.)
▸ Costos del Software más orientados a la ingeniería.
2. El software no se desgasta

▸ Hardware presenta errores en etapas tempranas y etapas tardías


▸ Software más errores al inicio y se estabiliza en el tiempo
▸ Software no se desgasta pero se vuelve obsoleto
▸ Hardware o componentes se desgastan por su uso y pueden ser
reemplazados
▸ Las fallas en el software se deben a errores en el diseño o desarrollo.
▸ Mantenimiento de software es más complejo. Puede implicar un
proyecto.
2. El software no se desgasta

Curva desgaste de Curva fallas software


hardware
3. La mayor parte del software se construye para uso
individualizado.

▸ Las industrias de ingeniería buscan creación de componentes


estandarizados.
▸ Los componentes estandarizados permiten a los ingenieros enfocarse
en la innovación y diseño.
▸ La reutilización es un elemento relativamente nuevo en el software
▸ Librerías, componentes, servicios, APIs
Software de Sistemas Software de Aplicación Software Ingeniería y Ciencias
Dan servicio a otros programas. Mucha Resuelven una necesidad específica de Aplicaciones para astronomía, diseño
Interacción con Hardware. i.e. negocio. Procesan datos comerciales o automóviles, simulaciones. Diseño
compiladores, OS, SW redes técnicas. i.e. ERPs asistido por computadoras

Inteligencia Artificial
Dominios de Utiliza algoritmos no numéricos para
resolver problemas complejos. i.e.

Aplicación Software robótica, sistemas expertos,


reconocimiento patrones, etc.

Software Incrustado Software de Línea de productos Aplicaciones Web (webapps)


Reside dentro de un producto o Sistema. Capacidad específica para muchos No requieren descarga o instalación. Se
Implementa funciones para usuario final. consumidores o mercados masivos. i.e. ejecutan en un navegador. Fácil
i.e. domótica Entretenimiento, apps finanzas, hojas distribución y actualización.
electrónicas, procesadores texto, etc.
Software Heredado
(Legacy)
1

Un sistema legacy o sistema heredado es un sistema,
tecnología o aplicación de software antiguo o desactualizado
que sigue en uso dentro de una organización porque sigue
desempeñando las funciones para las que fue diseñado. Por lo
general, los sistemas legacy ya no cuentan con soporte y
mantenimiento y están limitados a nivel de crecimiento. Sin
embargo, no pueden reemplazarse fácilmente.

17
1 Limitaciones técnicas Aplicaciones escalables
1

2 Costos de mantenimiento 2
Alto costo de mantenimiento
bajos
Software
Software
Heredado o
Moderno
Legado
3 Riesgo de pérdida de datos Más eficiente
3

4 Rendimiento más bajo Mejor rendimiento


4

También podría gustarte