Está en la página 1de 28

Técnicas Fundamentales de Ingeniería de Software

Introducción y Definiciones
Contenido
• ¿Qué es Ingeniería?

• ¿Qué es el Software?

• Ingeniería de Software
¿Qué es Ingeniería?
Definición de Ingeniería

“Ciencia, habilidad y profesión de adquirir y


aplicar conocimiento científico, económico,
social y práctico, con el fin de diseñar y también
construir estructuras, máquinas, dispositivos,
sistemas, materiales y procesos.”
[Wikipedia]
Ingeniería

Civil

Industrial Eléctrica

Ingeniería

Electrónica Mecánica

Mecatrónica
La ingeniería en sus distintas vertientes ha
estado detrás de algunas de las más grandes
hazañas en la historia de la humanidad.
El Túnel del Canal de la Mancha
• El túnel con el
segmento submarino
más largo del mundo
(37.9 kms).

• El servicio de transporte
de vehículos terrestres
más grande del mundo.
El Túnel del Canal de la Mancha

• 6 años en construcción

• Costo pico: 3 millones de libras diarias (15,000


empleados)

• Presupuesto final: 180% > del inicial


El Transbordador Espacial

• Primer vehículo espacial


reutilizable (parcialmente).

• Presumiblemente, la obra
de ingeniería más compleja
intentada por la raza
humana.
El Transbordador Espacial

• Tasa de fallo: 1.48% (135 misiones totales, 2


fallidas).

• Costo por misión: ~US$ 1,500,000,000


– Se rumora que el Shuttle fue diseñado para ser
intencionalmente ineficiente en costos, por
razones políticas.
También es ….
Ingeniería???
¿Qué tal el Software?
El software ha estado detrás de algunos de los
más estrepitosos fracasos en la historia de la
humanidad.
Ariane 5
• Cohete desechable para
puesta en órbita de
cargas satelitales.

• El primer Ariane 5 se
perdió en su vuelo de
prueba (04/07/1996) a
los 37 segundos, debido
a un “bug” del
software
Mars Climate Orbiter

• Explorador marciano
lanzado en 1998.

• Se desintegró en la
atmósfera marciana
debido a un error de
conversión de unidades
de medida del software.
Therac-25

• Máquina canadiense
para radioterapia, de la
década de los 80.

• Un defecto de software
causó sobredosis que
causaron la muerte a
tres pacientes.
…pero en el software comercial,
el asunto es más sencillo… ¿no?
Microsoft

• Nacido como “Longhorn” en


2001, para salir en 2003.

• El desarrollo fue reiniciado


en 2004 y fue lanzado en
2006.
Apple

¡Ah, claro! Microsoft.


Eso no le pasa a Apple, ni a los
distribuidores de Linux…
¿O sí?
Apple Mac OS X, iOS

• Apple no anuncia los planes de


desarrollo de sus sistemas operativos y
otros productos de software.

• Por tanto, es difícil saber qué tan buena


(o mala) es su ingeniería de software.
Fedora, Ubuntu

• Las distribuciones de Linux


suelen fijar sus lanzamientos
a uno de dos puntos:
• (1) la disponibilidad de algún
componente básico.
• (2) una fecha específica en el
calendario.
Y sin duda,
estas son las mejores organizaciones de
software del mundo.
¿Qué les sucede
al resto de las compañías?
¿Qué es Ingeniería de Software?
Ingeniería de Software

• Es La aplicación de un enfoque sistemático,


disciplinado y cuantificable al desarrollo,
operación y mantenimiento de software; esto
es, la aplicación de ingeniería al software.

• Es el estudio de enfoques de acuerdo a


buenas prácticas”.
[IEEE Computer Society]
Ingeniería de Software - Historia

El término se utilizó por primera vez en 1968, en


la primera Conferencia de Ingeniería de
Software de la OTAN, a raíz de la crisis del
software:
– “La dificultad de escribir programas correctos,
comprensibles y verificables” [Wikipedia].
– Manifestada como problemas de Gestión de
Proyectos, ineficiencia, baja calidad, entre otros.
Ingeniería de Software - Evolución
1940 Computadoras digitales
1950 Lenguajes de programación
1967 Simula (1er lenguaje orientado a objetos)
1968 Se crea el término Ingeniería de Software
1969 Encapsulación y modularidad (D. Parnas)
1975 Se publica The Mythical Man Month
1990s Se masifica la POO
2000s La Web, sistemas distribuidos, Agile
Ingeniería de Software - Tendencias

• Balance entre teoría y práctica

• Automatización y repetibilidad

• Heterogeneidad de ambientes
Bibliografía

• Software Engineering: A Practitioner Approach –


Roger Pressman

• Sommerville, Ian. Ingeniería de Software, 7ma


Edición.

• Rational Unified Process


• IEEE
• SWEBOK 2004, 2014