Este documento presenta una introducción a la ingeniería de software. Explica los costos ocultos del software debido a fallas, incluyendo sobrecostos y retrasos. Luego describe la complejidad inherente del software debido a factores como la cantidad de requisitos, el tamaño de las aplicaciones y la dificultad de gestionar el proceso de desarrollo. Finalmente, introduce conceptos clave de la ingeniería de software como el desarrollo profesional de software, las categorías de software, y aspectos del software heredado y su evolución.
1. M.Sc. Javier David Chávez Centeno
DEPARTAMENTO ACADÉMICO DE INFORMÁTICA
jdchavez5@hotmail.com
CUSCO – PERÚ
2013
2. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 2Dpto Académico de Informática
Introducción a la
Ingeniería de Software
«La función de un buen software es hacer que lo
complejo aparente ser simple»
Grady Booch
3. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 3Dpto Académico de Informática
CONTENIDO
1. Costo del Software
1.1 Costos ocultos y consecuencias por fallas de software
- Fallas en sistemas de software
- Sobrecostos, retrasos y cancelaciones en los sistemas
de software
2. Costo del Software
2.1 La complejidad inherente al software
2.2 Complejidad del software
3. Desarrollo de Software Profesional
- Ingeniería de software
- Categorías del software
- Desarrollo de productos de software
4. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 4Dpto Académico de Informática
CONTENIDO
- Desarrollo de productos de software
- Atributos esenciales de un sistema de software profesional
- Software heredado
- Evolución en el software heredado
- Ética en la ingeniería de software
Bibliografía
Lecturas obligatorias
5. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 5Dpto Académico de Informática
¿Cuánto le cuesta a la sociedad utilizar
sistemas de software?
Costo directo (adquirir el software)
Software empacado y software a la
medida.
Costo indirecto (uso del software)
Capacitación, instalación, soporte
técnico, etc.
Costo oculto (fallas del software)
Afecta principalmente a los sistemas de
misión crítica.
6. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 6Dpto Académico de Informática
a) Consecuencias inmediatas y efectos
directos
Son los perjuicios ocasionados mientras
dura la caída de los sistemas, por
ejemplo, un sistema financiero de un
banco, una falla puede significar ingresos
que se dejan de percibir por
transacciones perdidas y egresos que
continúan a pesar de la interrupción en
la operación.
7. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 7Dpto Académico de Informática
b) Consecuencias a mediano y largo plazo y
efectos indirectos
Son los perjuicios posteriores a la caída
de los sistemas. Las consecuencias
varían, desde la restauración de
datos, propaganda negativa y pérdida de
clientes, hasta posibles accidentes y
juicios en contra. Estos costos
adicionales pueden volver insignificantes
los costos directos e indirectos del
software.
8. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 8Dpto Académico de Informática
Dejar de utilizar software no es una alternativa
aceptable, ya que los efectos negativos pueden ser
aún mayores.
Este es el caso de los sistemas de misión
crítica, por ejemplo, una empresa que opera
aviones y el software controla el
funcionamiento correcto de éstos.
«Cometer errores es humano, pero para estropear realmente
las cosas necesitas un ordenador»
Paul R. Ehrlich
9. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 9Dpto Académico de Informática
Explosión del cohete
Ariane 5 (1996).
Costo: 500 millones de
dólares.
Desastre: El cohete Ariane 5, se desvió de su trayectoria de
vuelo después de su lanzamiento (40s). Fue destruido por el
control remoto mediante una señal enviada por un computador
del Ariene desde Tierra.
Causa: Ocurrió cuando el sistema de guiado intentó convertir la
velocidad lateral de la nave (conversión de un número flotante de
64 bits a un número entero de 16 bits), produciéndose un error
de desbordamiento.
10. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 10Dpto Académico de Informática
Error del milenio Y2K (2000).
Costo: Un billón de dólares.
Desastre: Las compañías gastaron millones en programadores
para arreglar un problema en las aplicaciones antiguas tales
como tráfico aéreo, pagos de impuestos y seguridad
social, banca, etc.
Causa: Para ahorrar espacio de almacenamiento u otro
problema, los sistemas antiguos solían guardar los años de las
fechas como un número de dos dígitos, como «99» para
«1999», al llegar el año 2000, las aplicaciones iban a interpretar
«00» como 1900.
11. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 11Dpto Académico de Informática
Los costos ocultos no se restringen únicamente a fallas en el
software, también pueden ocurrir durante su desarrollo.
Estados en el Desarrollo de Sistemas de Software
(Evaluación de 175 000 proyectos – 1994 – Standish Consulting Group)
12. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 12Dpto Académico de Informática
De acuerdo con varias encuestas hechas a diferentes
compañías por Standish Consulting Group – 175 000
proyectos (1994), las tres razones más importantes para el
éxito de un proyecto son:
Clara
Especificación
De
requerimientos
Apoyo
de la
administración
Participación
Del
usuario
13. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 13Dpto Académico de Informática
El desarrollo de software de dimensión
industrial (controladores de tráfico aéreo o
ferroviario, etc.) es sumamente difícil, la
complejidad de tales sistemas excede la
capacidad intelectual humana. Esa
complejidad inherente puede
dominarse, pero no eliminarse.
Esta complejidad inherente, como dice Booch, se deriva de:
14. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 14Dpto Académico de Informática
• Gran cantidad de requisitos (se produce por una difícil interacción entre usuarios de un
sistema y sus desarrolladores).
• Los requisitos de un sistema software cambian durante su desarrollo.
La complejidad del dominio del problema
• El tamaño de una aplicación (Existen sistemas cuyo tamaño se mide en millones de
líneas de código). Esta cantidad de trabajo requiere un equipo de desarrollo.
La dificultad de gestionar el proceso de desarrollo
• Un desarrollador puede expresar casi cualquier clase de abstracción.
La flexibilidad que se puede alcanzar a través del software
• En sistemas discretos todos los eventos externos pueden afectar a cualquier parte del
estado interno del sistema.
Los problemas que plantea la caracterización del comportamiento de
sistemas discretos
15. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 15Dpto Académico de Informática
Weitzenfeld menciona, cuanto más grandes son los
sistemas, mayor es su complejidad. Estos factores que
causan esta complejidad son:
Complejidad
Del
Problema
•Cuanto mayor sea el número de requerimientos, mayor será el tamaño
del sistema. Por tanto, más difíciles de comprender y desarrollar.
•Para reducir la complejidad habría que reducir la funcionalidad que el
sistema deba tener.
Complejidad
De La
Solución
•Tiene que ver con el diseño del sistema, el cual debe satisfacer la
funcionalidad del problema.
•Es importante reducir la otra fuente de complejidad: el de la solución.
16. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 16Dpto Académico de Informática
Factor estático es la funcionalidad que un sistema de
software debe ofrecer al ser inicialmente desarrollado.
Factor dinámico es la funcionalidad que varia con el tiempo
(puede causar retrasos y cancelaciones de los proyectos). Es
muy común que los requisitos de un sistema se
modifiquen, incluso antes de completarlos y cuando un
programa se modifica su complejidad aumenta. El
incremento en la complejidad al momento de modificar o
extender un sistema de software significa mayor número de
fallas junto con retrasos y sobrecostos. (mantenimiento
continuo).
Otros factores:
17. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 17Dpto Académico de Informática
El desarrollo de software es una actividad
profesional, se realiza para propósitos de
negocios específicos.
El software profesional, se lleva a cabo en
general por equipos, en vez de individualmente.
Se mantiene y cambia a lo largo de su vida.
La Ingeniería de Software busca apoyar el
desarrollo de software profesional.
La Ingeniería de Software tiene que ver con las
teorías, métodos y herramientas para el
desarrollo profesional de software.
18. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 18Dpto Académico de Informática
«Es una
Disciplina de
Ingeniería…
• Los ingenieros hacen que las cosas funcionen.
• Aplican teorías y herramientas.
• Buscan soluciones a problemas.
• Trabajan con restricciones económicas y
organizacionales.
… que
comprende todos
los aspectos de
Producción de
Software»
• Procesos técnicos del desarrollo de software.
• Gestión del proyecto de software.
• Desarrollo de herramientas, métodos y teorías
para apoyar la producción de software.
19. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 19Dpto Académico de Informática
Software
De aplicación
(para los
negocios)
Embebido
(celular, horno
microondas
De sistemas
(compiladores,
editores, etc.)
De
Inteligencia
Artificial
De adquisición de
datos
(usan sensores)
Científico y de
Ingeniería
(manufactura, si
mulación, etc.)
Basado en
Web
(Comercio
electrónico)
20. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 20Dpto Académico de Informática
Los ingenieros de software están interesados por el desarrollo de
productos de software (es decir software que pueda venderse a un
cliente). Existen dos tipos de productos de software:
Productos genéricos
• Son sistemas independientes
que se vende a cualquier
cliente que desee comprarlo.
Por ejemplo
BD, procesadores de
texto, sistemas de
contabilidad, etc.
Productos
personalizados (o a la
medida)
• Son sistemas que están
destinados para un cliente en
particular. Por ejemplo
sistemas para apoyar cierto
proceso
empresarial, dispositivos
electrónicos, etc.
21. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 21Dpto Académico de Informática
•Facilidad de uso (interfaces
amigables, documentación)
•No malgastar los
recursos del
sistema
(memoria, ciclos
de
procesador, etc.)
•Fiabilidad, seguri
dad y protección
(no debe causar
daños físicos ni
económicos).
•El software debe
poder evolucionar
para cumplir
necesidades de
cambio de los
clientes.
Mantenibilidad Confiabilidad
Eficiencia Usabilidad
22. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 22Dpto Académico de Informática
«Los sistemas de software heredado… fueron desarrollados
hace décadas y han sido modificados en forma continua
para cumplir los requerimientos de los cambios en los
negocios y en las plataformas de cómputo. La
proliferación de dichos sistemas ha causado dolores de
cabeza a las grandes organizaciones, las cuales los
perciben como costosos en su mantenimiento y riesgosos
en su evolución».
Dayani-Fard.
«Muchos sistemas heredados persisten como el soporte de
las funciones centrales de negocios y son indispensables
para las empresas».
Liu y sus colegas.
23. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 23Dpto Académico de Informática
Evolución
Software
Heredado
Debe adaptarseDebe mejorarse
Debe extenderse
Implementar
nuevos
requerimientos
de los negocios.
Satisfacer
necesidades de
los nuevos
ambientes o
nueva tecnología
de cómputo.
Debe rediseñarse
Hacerlo viable
Dentro de un
Ambiente de
Red.
Hacerlo operable
Con sistemas y
bases de datos
mas modernas.
24. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 24Dpto Académico de Informática
ETICA
Respetar la
confidencialidad de
sus empleadores o
clientes
1.
Confidencialidad
No desvirtuar su
nivel de
competencia
2.
Competencia
Proteger la propie-
dad intelectual de
empleadores y
clientes
3.
Derechos de
propiedad
No usar
incorrectamente las
PCs de otros
individuos.
4.
Mal uso de
computadoras
25. UNIVERSIDAD DE SAN ANTONIO ABAD DEL CUSCO – PERÚ - 2013
JAVIER DAVID CHÁVEZ CENTENO 29/07/2013 25Dpto Académico de Informática
Bibliografía
1. Booch, G. (1996). Análisis y Diseño Orientado a Objetos.
E.U.A.: Addison-Wesley. 2da. ed. cap. 1.
2. Pressman, R. (2005). Ingeniería del Software. México:
McGraw-Hill. 6ta ed. cap. 1.
3. Sommerville, I. (2011). Ingeniería de Software. México:
Pearson. 9na ed. cap. 1.
4. Weitzenfeld, A. (2004). Ingeniería de Software Orientada
a Objetos con UML, Java e Internet, Cengage: Thomson.
cap. 1.
Lecturas obligatorias
Mitos del Software
[2]. pp. 14-16
Complejidad
[1]. pp. 3-27
Costo y Complejidad del Software
[4]. pp. 3-17