You are on page 1of 56

Ingeniería del Software

Ing. Ronald Pérez

ronperez@ucab.edu.ve
ronaldrr@cantv.net
ronaldperezr@hotmail.com
Objetivos

•Introducir la Ingeniería de Software y explicar


su importancia.

•Responder a preguntas claves sobre


Ingeniería de software.

•Introducir aspectos éticos y profesionales y


explicar por qué nos concierne a los
ingenieros de software.
Ingeniería del Software
• La Economía de toda nación desarrollada depende
de un software.

• Más y más sistemas son controlados por software

• Ingeniería de Software tiene que ver con teorías,


métodos y herramientas para el desarrollo de
software profesional

• Los gastos en Ingeniería de Software representan


una fracción significativa del PGB en todos los
países desarrollados
Costos de Software

•Los costos de Software dominan los costos de


Sistemas. Los costos de Software para PCs a
menudo superan los costos de Hardware.

•El Software cuesta más en su mantención que en


su desarrollo. Para sistemas de larga duración, los
costos de mantención pueden llegar a ser varias
veces los costos de desarrollo.

•La Ingeniería de Software se preocupa del


desarrollo de software efectivo en costos.
Preguntas Frecuentes sobre Ingeniería
del Software
¿Qué es Software?

¿Qué es Ingeniería de Software?

¿Cuál es la diferencia entre Ingeniería de Software y


Ciencia de la Computación?

¿Cuál es la diferencia entre Ingeniería de Software e


Ingeniería de Sistemas?

¿Qué es un Proceso de Software?

¿Qué es un Modelo de Proceso de Software?


¿Qué es Software?

•Programas computacionales y documentación


asociada

•Productos de software pueden desarrollarse para un


cliente en particular o pueden ser desarrollados para
un mercado general

•Productos de software pueden ser:


•Genéricos - desarrollados para ser vendidos a un
tipo de clientes
•Específicos - desarrollado para un cliente de
acuerdo a sus necesidades específicas
¿Cuál es la diferencia entre IS y
Ciencias de la Computación?
• Ciencias de la computación se enfoca en la
teoría y fundamentos; la Ingeniería de Software
se preocupa de los aspectos prácticos del
desarrollo y entrega de software útil.

•Las teorías de la Ciencias de la Computación


son actualmente insuficientes para actuar como
una base metodológica completa para el
ingeniero de software
¿Cuál es la diferencia entre IS e
Ingeniería en Sistema?

•Ingeniería de Sistemas se concentra en todos


los aspectos de desarrollo de sistemas basados
en computadora, incluyendo hardware, software
y procesos de ingeniería. Ingeniería de Software
es parte de este proceso

•Los Ingenieros de Sistema participan en


Especificaciones de Sistemas, Diseño de
Arquitectura, Integración y Desarrollo
¿Qué es un Proceso de Software?

Un conjunto de actividades cuya meta es el


desarrollo o evolución de software
Actividades genéricas en todos los Procesos de
Software:
•Especificación - qué debería hacer el sistema y
sus limitaciones en el desarrollo
•Desarrollo - producción del sistema de software
•Validación - verificación de que el software es lo
que el cliente quiere
•Evolución - cambios en el software como
respuesta a solicitudes de cambio
¿Qué es un modelo de proceso de
Software?
Una representación simplificada de los procesos de
software desde una perspectiva específica
Ejemplos de perspectivas de proceso son:
Perspectiva de WorkFlow - secuencia de
actividades
Perspectiva de Data-flow - flujos de información
Perspectiva de Rol / Acción - quién hace qué
Modelos de Proceso Genéricos:
Cascada
Desarrollo Evolutivo
Transformación Formal
Integración a partir de componentes reutilizables
¿Cuáles son los costos de la Ingeniería del
Software?
•Aproximadamente el 60% de los costos corresponde a
costos de desarrollo, 40% a costos de prueba

•Para software específico, los costos de evolución a


menudo exceden los costos de desarrollo

•Costos varían dependiendo del tipo de sistema que se


desarrolla y de los requerimientos de los atributos del
sistema tales como desempeño y confiabilidad del
sistema

•Costos de distribución dependen del modelo de


desarrollo que se utilice
¿Cuáles son los métodos de la Ingeniería
del Software?
Enfoques estructurados para desarrollar software que
incluyen modelos de sistema, notaciones, reglas,
sugerencias de diseño y guías de procesos
Descripciones de Modelos
Descripciones de modelos gráficos que se debería
utilizar
Reglas
Restricciones aplicadas a los Modelos de Sistemas
Recomendaciones
Sugerencias de buenas prácticas de diseño
Guía durante el Proceso
Cuáles actividades prosiguen
Evolución del Software

•Decada de los 50
Orientación por lotes, distribución limitada, software
a medida.
•Desde 1960 hasta mediados de los años 70
Multiusuario; tiempo real; bases de datos;
producción software.
•Desde mediados de los años 70 hasta mediados de
los años 80
Sistemas distribuidos; inteligencia empotrada;
hardware de bajo coste; impacto en el consumidor.
•Mediado de los años hasta nuestros días
Sistemas expertos; maquinas de I.A; Arquitecturas
paralelas.
Componentes del Software

Software=

Programas + Datos + Documentación

•Manual de Usuario
Líneas de Estructuras de
•Documentación de
Código Datos
construcción…

Desarrollo + Mantenimiento
Componentes del Software

• Programas: son los que se ejecutan dentro de


una computadora de cualquier tamaño y
arquitectura.

• Datos: que incluye números y texto y también


incluyen representaciones de información de
audio, video e imágenes.

• Documentos: que comprenden formularios


virtuales e impresos.
Características del Software

El software es un elemento del sistema que es lógico, en lugar


de físico. Por lo tanto el Software tiene unas
características considerablemente distintas a las del
Hardware:

 El Software se desarrolla no se fabrica en un sentido


clásico. Aparición de problemas de calidad difíciles de
corregir.

 El Software no se estropea. El Software no es susceptible


a los males del entorno.

 Aunque la industria tiende a ensamblar componentes, la


mayoría del software se construye a medida.
Atributos de un buen Software

•El software debería entregar la funcionalidad y


desempeño requeridos por el usuario y debería ser
mantenible, confiable, eficiente y usable

•Mantenibilidad: Software debe evolucionar para cubrir


necesidades cambiantes.

•Confiabilidad: Software debe producir los resultados


esperados.

•Eficiencia: Software no debe malgastar los recursos del


sistema

•Usabilidad: Software debe ser de fácil uso para los


usuarios finales
Crisis del Software

 Historia
 Causas
 Síntomas
 Consecuencias
 Solución
Historia
El término “crisis del software” se acuñó en 1968,
en la primera conferencia organizada por la
OTAN sobre desarrollo de software y con él se
etiquetaron los problemas que surgían en el
desarrollo de sistemas de software.

En la misma conferencia se utilizó por primera vez


el término "ingeniería del software" para
describir el conjunto de conocimientos que
existían en aquel estado inicial.
Historia
Algunas referencias útiles para comprender cuáles eran
los conocimientos estables para el desarrollo de
software en 1968 son:
 En 1962 se publicó el primer algoritmo para búsquedas
binarias.
 C.Böhm y G. Jacopini publicaron en 1966 el documento
que creaba una fundación para la eliminación de "GoTo"
y la creación de la programación estructurada.
 En 1968 los programadores se debatían entre el uso de
la sentencia GoTo, y la nueva idea de programación
estructurada; ese era el caldo de cultivo en el que
Edsger Dijkstra escribió su famosa carta "GoTo
Statement Considered Harmful" en 1968.
Historia
 La primera publicación sobre programación
estructurada no vio la luz hasta 1974, publicada por
Larry Constantine, Glenford Myers y Wayne Stevens.
 El primer libro sobre métrica de software fue
publicado en 1977 por Tom Gilb.
 El primer libro sobre análisis de requisitos apareció en
1979.
 El término fue usado para referirse a los rápidos
incrementos de la tecnología en la computación y la
complejidad de los problemas a los cuales pudieran
enfrentarse. En efecto, se refiere a la dificultad de
escribir correcta, entendible y verificablemente los
lenguajes de programación. Las raíces de la crisis del
software son complejas y variables.
Crisis del Software
La crisis del software es una serie de problemas que
hacen que el software no alcance las expectativas u
objetivos esperados por los desarrolladores,
gestores, clientes, etc.

Problemas fundamentales.
 La sofisticación del hardware no esta acompañada
de la del software.
 Demanda creciente.
 Mantenimiento fácil.
 Uso inadecuado de recursos
 Sistemas Complejos
 Poco información de los desarrolladores
Crisis del Software

Síntomas:
• Productividad de los desarrolladores: baja en relación a
la demanda.
• Expectativas: los sistemas responden a las expectativas
de los usuarios.
• Fiabilidad: los programas fallan a menudo.
• Calidad: No es adecuada
• Costes: Difíciles de predecir, a menudo sobrepasan lo
esperado.
• Mantenimiento: Modificación costosa y compleja.
• Plazos: No se cumplen.
• Portabilidad: Difícil de cambiar de plataforma
• Eficiencia: No hay aprovechamiento optimo de recursos
Crisis del Software

Consecuencias:

 Baja Productividad

 Baja Calidad
Crisis del Software

SOLUCIÓN

INGENIERÍA DEL SOFTWARE


Crisis del Software

Problema de los expertos.


• Planificación y precios imprecisos.
• La productividad de la gente del software no se
corresponde a la demanda.
• La calidad muchas veces no es la adecuada.

Motivo de los problemas


• No hay tiempo para recoger los datos para el
proceso de desarrollo.
• Falta de comunicación con el cliente.
• Calidad cuestionable.
• Dificultad de mantenimiento.
Aplicaciones del Software

Software de Sistema: es un conjunto de programas que han


sido escritos para servir a otros programas.(ejemplo:
compiladores, editores y utilidades de gestión de archivos).

Software de tiempo real: el software que coordina, analiza,


controla sucesos del mundo real conformen ocurren, se
denomina de tiempo real.

Software de Gestión: el proceso de la información comercial


constituye la mayor de las áreas de aplicación del
software. Sistemas como: nóminas, cuentas de haberes –
débitos, inventarios, etc. Han evolucionado hacia el
software de sistemas de información de gestión (SIG).
Aplicaciones del Software
Software de Ingeniería y Científico: esta caracterizado por
los algoritmos de manejo de números. Las aplicaciones van
desde la astronomía hasta la vulcanología, desde el análisis
de la presión de los automotores a la dinámica orbital de las
lanzaderas espaciales y desde la biología molecular a la
fabricación automática.

Software empotrado: es el que reside en memoria de solo


lectura y se utiliza para controlar productos y sistemas de
los mercados industriales y de consumo.

Software de Computadoras personales: el procesamiento de


textos, las hojas de cálculo, los gráficos de computadora,
multimedia, entretenimiento, gestión de bases de datos,
aplicaciones financieras, etc.
Aplicaciones del Software

Software basado en Web: las páginas Web buscadas por


un explorador son software que incorpora instrucciones
ejecutables (CGI, HTML, Perl o Java), y datos
(hipertexto, y una variedad de formatos de audios y
visuales).

Software Inteligencia Artificial: hace uso de algoritmos no


numéricos para resolver problemas complejos para los
que no son adecuados el cálculo o el análisis directo.
Sistemas expertos, también llamados sistemas basados
en el conocimiento, reconocimiento de patrones
(imágenes y voz), redes neuronales artificiales, etc.
Mitos del Software

Los mitos del software son frases


hechas que propagan información
errónea y confusa, en lugar de
sabiduría y buen hacer
Mitos del Software
. Mitos de Gestión
Gestores con responsabilidad sobre el software, esta
normalmente bajo la presión de cumplir con los
presupuesto, hacer que no se retrase el proyecto y mejore
la calidad.

1.-Mito: Tenemos un libro que está lleno de estándares y


procedimientos para construir software. ¿No le proporciona
ya a mi gente todo lo que tiene que sabe?

Realidad: Esta bien que exista. ¿Pero se usa?. ¿Conocen


los trabajadores de su existencia?.¿refleja las prácticas
modernas del desarrollo del software?. ¿Es completo?
Mitos del Software
(Mitos de Gestión)
.
2.-Mito: mi gente dispone de las herramientas de
desarrollo de software más avanzadas, después de
todo, les compramos las computadoras más
modernas.

Realidad: Se necesita mucho más que el ultimo


modelo de computadora grande o de PC para hacer
desarrollo de software de gran calidad. Las
herramientas de IS asistida por computadoras (CASE)
son más importantes que el hardware para conseguir
buena calidad y productividad.
Mitos del Software
(Mitos de Gestión)
.
3.-Mito: Si fallamos en la planificación, podemos añadir
más programadores y adelantar el tiempo perdido. (El
llamado algunas veces <<concepto de la horda
Mongoliana >>)

Realidad: El desarrollo del software no es proceso


mecánico como la fabricación. Cuando se añaden
nuevas personas, la necesidad de aprender y de
comunicarse con el equipo puede y hace que se
reduzca la cantidad de tiempo gastándose en el
desarrollo productivo. Puede añadirse gente, pero
solo de una manera planificada y bien coordinada.
Mitos del Software
. Mitos de los Clientes: en muchos casos el cliente cree en
los mitos que existe sobre el software, debido que los
gestores y desarrolladores del software hace muy poco
para corregir la mala información.

1.-Mito: una declaración general de los objetivos es


suficiente para comenzar a escribir los programas.

Realidad: una mala definición inicial es la causa del


trabajo baldío en software. Es esencial una descripción
formal y detallada del ámbito de la información,
funciones, comportamientos, rendimiento, interfaces,
ligaduras de diseño y criterios de validación.
Mitos del Software
(Mitos de los Clientes)
. 2.-Mito: los requisitos del proyecto cambian continuamente,
pero los cambios pueden acomodarse fácilmente, ya
que el software es flexible.

Realidad: es verdad que los requisitos del software


cambian, pero el impacto del cambio varía según el
momento en que se introduzca. Los cambios pueden
producir trastornos que requieran recursos adicionales e
importantes modificaciones del diseño; es decir costes
adicionales. Los cambios en la función, rendimiento,
interfaces u otras características, durante la
implementación (codificación y pruebas) pueden tener
un impacto sobre el coste.
Mitos del Software
.
Mito de los desarrolladores: los mitos en los que aun
creen los desarrolladores, se han ido fomentando
durante 50 años de cultura informática. Durante los
primeros días del desarrollo del software, la
programación se veía como un arte.

1.-Mito: una vez que escribimos el programa y hacemos


que funcione , nuestro trabajo ha terminado.

Realidad: los datos industriales indican que entre el


60 y el 80 por ciento de todo el esfuerzo dedicado a
un programa se realiza después que se le haya
entregado al cliente por primera vez.
Mitos del Software
(Mitos de los desarrolladores)
.
2.-Mito: hasta que no tengo el programa
<<ejecutándose >>, realmente no tengo forma de
comprobar su calidad.

Realidad: desde el principio del proyecto se puede


aplicar uno de los mecanismos más efectivos para
garantizar la calidad del software: la revisión técnica
formal. Es un filtro de calidad que se ha
comprobado de que es más efectivo que la prueba,
para encontrar ciertas clases de defectos en el
software.
Mitos del Software
(Mitos de los desarrolladores)
.
3.-Mito: lo único que se entrega al terminar el proyecto
es el programa funcionando.

Realidad: un programa funcionando es sólo parte


de una configuración del software que incluye
muchos elementos. La documentación proporciona
el fundamento de un buen desarrollo y, lo que es
más importante, proporciona guías para la tarea de
mantenimiento del software.
Reflexión sobre los mitos
.
Muchos profesionales del software reconocen la
falacia de los mitos descritos anteriormente.
Lamentablemente, las actitudes y métodos
habituales fomentan una pobre gestión y una
mala aplicación de las técnicas, incluso
cuando la realidad dicta un método mejor.

El reconocimiento de las realidades del software


es el primer paso hacia la formulación de
soluciones prácticas para su desarrollo.
Responsabilidad Profesional y Ética
•Ingeniería de Software conlleva
responsabilidades más amplias que sólo la
aplicación de habilidades técnicas

•Ingenieros de Software deben comportarse en


una manera honesta y éticamente responsable si
van a ser respetados como profesionales

•Comportamiento ético es más que simplemente


cumplir con las Leyes
Aspectos de la responsabilidad Profesional

Confidencialidad
Ingenieros deberían normalmente respetar la
confidencialidad de sus empleadores o clientes,
aún cuando no se haya firmado un acuerdo de
responsabilidad formal

Competencia
Ingenieros no deberían atribuirse niveles de
competencia que no les corresponde. No
deberían aceptar conscientemente trabajo que
exceda sus competencias
Aspectos de la responsabilidad Profesional

Derechos de Propiedad Intelectual


Los Ingenieros deberían estar al tanto de leyes
locales que gobiernan el uso de propiedad intelectual
tal como patentes, copyrights, etc. Deberían
asegurarse que la propiedad intelectual de
empleadores y clientes sea protegida
Mal uso de Computadores
Los Ingenieros de Software no deberían usar sus
habilidades técnicas para mal utilizar los equipos de la
gente. El mal uso de equipos varía desde uno
relativamente inofensivo (por ejemplo, jugar en
equipos de la empresa), hasta otros extremadamente
serios (diseminación de virus)
Ingeniería de software

“El establecimiento de recursos y uso de


principios de ingeniería robustos,
orientados a obtener económicamente
software que sea fiable y funcione
eficientemente sobre máquinas reales”
Ingeniería de software

“La aproximación sistemática al


desarrollo, operación y mantenimiento
del software”

“Software: programas de ordenador,


procedimientos, reglas, documentación
y datos asociados a un sistema de
ordenador”
Fallas en Sistemas de Software
Fracaso del Mariner 1 (1962).
La primera misión del programa Mariner (con costo
total de la misión Mariner 1 hasta Mariner 10 de
554 millones de dólares) fracasó por culpa de un
caracter incorrecto ('? ') en la especificación del
programa de control para el cohete de
propulsión Atlas lo cual causó finalmente que el
vehículo se saliera de curso. Ambos, el cohete y
el vehículo espacial tuvieron que ser destruidos
poco después del lanzamiento.
Fallas en Sistemas de Software
Accidente de un F-18 (1986). En Abril 1986
un avión de combate F-18 se estrelló por
culpa de un giro descontrolado
("unrecoverable spin") atribuido a una
expresión "IF-THEN" para la cual no había
una instrucción "ELSE" porque se pensó que
era innecesaria, resultando en una
transferencia fuera de control del programa.
Fallas en Sistemas de Software
Error del sistema de cobranza en MCI (1996). En
la edición del 29 de marzo de 1996 del
Washington Post, MCI reportó que devolverían
aproximadamente 40 millones de dólares a sus
clientes por causa de un error de cómputo. El
error de cobranza fue descubierto por un
reportero investigador de una estación local de
televisión en Richmond, VA. Los reporteros
encontraron que fueron facturados por 4 minutos
después de hacer una llamada de tan solo 2.5
minutos, dando lugar a una profunda
investigación.
Sobrecostos, retrasos y Cancelaciones

 Sobrecosto y retraso en sistema de


Allstate Insurance (1982). En 1982,
Allstate Insurance comenzó a
construir un sistema para automatizar su
negocio por $8 millones. El supuesto
esfuerzo de 5 años continuó hasta al
menos 1993 cuando terminó costando
cerca de $100 millones
Sobrecostos, retrasos y Cancelaciones
 Sobrecosto, retraso y cancelación en
sistema de London Stock Exchange
(1983-1988).
El proyecto Taurus de la Bolsa de Valores de
Londres estaba originalmente cotizado en 6
millones de libras. Varios años más tarde y
más de 100 veces (13,200%) sobre
presupuesto el proyecto fue cancelado,
costando a la ciudad de Londres al
momento de ser abandonado, 800 millones
de libras.
Sobrecostos, retrasos y Cancelaciones
 Sobrecosto y retraso en sistema del
bombardero B-1 (1985).
El bombardero B-1 en servicio desde 1985
requirió US $1 billón adicional para mejorar
su software de defensa aérea que era
inefectivo, aunque problemas de software
imposibilitaron alcanzar los objetivos
originales.
Sobrecostos, retrasos y Cancelaciones
 Sobrecosto, retraso y cancelación en sistema
de Bank of America (1988).
En 1988, Bank of America gastó US $23 millones
en una plan inicial de 5 años para desarrollar
MasterNet, un sistema computarizado para
contabilidad y reportes de "trust". Luego de
abandonar el sistema viejo, gastaron $60
millones adicionales para lograr que el nuevo
sistema funcionara y finalmente terminaron
desistiendo. Las cuentas de los clientes perdidos
pudieron haber excedido los billones de dólares.
Razones de los problemas
Complejidad del Software
Según una “ley” de desarrollo de software
(Lehman, 1985), “todo programa que se
use se modificará”; y cuando un programa
se modifica, su complejidad aumenta,
siempre y cuando uno no trabaje
activamente contra esto.
Razones de los problemas
 Robustez del Software
Tomemos el caso de los sistemas de control
de tráfico aéreo de Estados Unidos. El
gobierno requiere que sus nuevos
sistemas no dejen de funcionar por más de
3 segundos al año.
Razones de los problemas
Se calculó que cuando Microsoft Windows 3.1 se
envió al mercado en 1992 contaba con 5,000
errores (“bugs”) conocidos. Considerando que
Windows 95 consistía aproximadamente de
80,000 puntos de función, esto sugiere que
Windows 95 tenía aproximadamente 765,000
errores latentes (o sea, errores que en el
proceso de desarrollo debían componerse
durante las etapas de pruebas).
Razones de los problemas
Si todas estas pruebas removieran el 99% de los
errores, aun quedarían 7,650 para ser
encontrados después de haberse enviado el
software al mercado.
 La primera versión de Word tuvo 27,000 líneas
mientras que Word 6.0 tenía 2 millones.
 Word 6.0 tenía 10 veces más funcionalidad que
Word 5.1, y 3 veces la cantidad de código,
significando obviamente una gran lentitud en el
sistema.
 ¡Los números para Office 2000 y Windows 2000
aterrarían a cualquiera!
Problemas asociados al desarrollo de los SI

Muchos de los sistemas de información


tienen un gran éxito y los fallos son
excepciones más que la regla. Pero las
consecuencias de un fallo pueden ser muy
graves.

You might also like