Está en la página 1de 22

Ingeniería del Software

Tema 1
El software como
ingeniería
Índice

1. Perspectiva histórica
2. Principios de ingeniería del software
3. Concepto de proceso software

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Definición de Ingeniería del Software

z Ingeniería del software


– Término propuesto a finales de los 60
“La aplicación de los procesos de ingeniería a la
construcción de software, desde la especificación
hasta el mantenimiento una vez implantado
pasando por el desarrollo”
– La ingeniería del software es una disciplina de la
ingeniería que está relacionada con todos los
aspectos de la producción de software

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Explicación

z “Disciplina de la ingeniería”
Se aplican teorías, métodos y herramientas en
la forma adecuada para encontrar soluciones a
problemas incluso cuando no hay teorías que lo
soporten
z “Todos los aspectos de la producción de software”
No sólo están relacionados con los temas
tecnológicos sino que también interviene en la
planificación y gestión del proyecto, selección
de herramientas, etc.

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Evolución Histórica

Primeros años
z Dependencia HW-SW
z Trabajos batch (diferidos) Segunda periodo (55-65)
z Distribución limitada z 2ª generación HW=> multiusuario,
z SW a medida tiempo real, bases de datos
z Lenguaje máquina z Aparecen: Diseñadores vs.
Programadores: ARTESANIA
z Producto SW

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Evolución Histórica (II)

Tercer periodo (1965-75)


Cuarto periodo (1975-85)
z 3ª generación HW (c. integrados)=>
HW de bajo coste, sistemas z sistemas personales potentes
distribuidos, incorporación de (4ª gen.), orientación a objetos,
inteligencia sistemas expertos, redes
z Multiusuario, multitarea, trabajo en- neuronales artificiales,
línea computación en paralelo
z Importancia del usuario z Redes de computadoras
z Impacto en el consumo z Herramientas CASE
z Aplicaciones de gran tamaño z Reutilización
z CRISIS del SOFTWARE
z Depuración y validación
z Sistematizar e imponer disciplina de
desarrollo como en otras
ingenierías
z Programación estructurada
z Análisis, diseño

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Evolución Histórica (III)

Quinto periodo (1985-2000)


z Entornos integrados de desarrollo
z Importancia del proceso
z Mejoras de procesos
z Arquitectura

Sexto periodo (2000-


z Internet
z Arquitecturas p2p
z Métodos ágiles
z Servicios

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Resumen de pasos dados hacia la I.S.

z Comienzos:
programación = forma de generar secuencias de instrucciones
para hacer algo útil
Programador = usuario
z Aparecen los lenguajes de programación
Nace la “profesión” de programador (años 60)
Programador <> usuario ⇒ Necesidad de especificar
z Primeros grandes proyectos (mediados 60)
Software grande <> software pequeño
Problemas de escalabilidad

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Resumen de pasos dados hacia la I.S.

z Problemas
– comunicación entre los desarrolladores
– Enfoque artesano frente a sistemático
⇒ aparecen metodologías
z Conclusión final:
“El software es un producto complejo que
requiere un proceso de ingeniería”

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
El papel del Ingeniero de Software

z Un Ingeniero de Software debe


– Tener conocimiento de las técnicas de programación
Pequeños – Conocer a fondo las estructuras de datos disponibles
Proyectos – Conocer algún lenguaje de programación
– Conocer los fundamentos básicos de I.S. (Análisis, Diseño, Pruebas)

– Estar familiarizado con estrategias de diseño


– Tener amplia capacidad de abstracción
Grandes
– Tener capacidad de gestión
Proyectos
– Tener capacidad de comunicación
– Conocimiento profundo de los aspectos de I.S.

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
El papel del Ingeniero de Software

z Responsabilidad profesional y ética


– La ingeniería del software incluye responsabilidades
más amplias que la aplicación de habilidades
técnicas
– Los ingenieros de software deben comportarse de
una manera honesta y éticamente responsable
– El comportamiento ético va más allá que respetar la
ley

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
El papel del Ingeniero de Software

z Responsabilidad profesional
– Confidencialidad: los ingenieros deben respetar la
confidencialidad tanto de sus clientes como de sus patronos
independientemente de que exista o no un acuerdo de
confidencialidad
– Competencia: los ingenieros deben aceptar trabajos que
estén dentro de lo que consideran sus niveles de competencia
– Derechos de la propiedad intelectual: los ingenieros deben
tener conocimiento de las leyes locales que gobiernan el uso
de la propiedad intelectual y tener cuidado de que se protegen
tanto para sus clientes como sus patronos
– Mala utilización de los recursos: los ingenieros de software
no deben utilizar sus habilidades técnicas para hacer un mal
uso de los ordenadores de otras personas (leves, desde por
ejemplo jugar en una máquina no de su propiedad a, graves,
diseminación de virus)
Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007
Universidad Politécnica de Madrid
Entorno de la Ingeniería del Software

z Diferencia entre Ingeniería del Software y Ciencias de


la Computación
Ingeniería del Software relacionado con el desarrollo de
software para resolver problemas prácticos.
Ciencias de la computación relacionada con teorías y métodos
relacionado con el software
z Diferencia entre Ingeniería del Software e Ingeniería
de Sistemas
Ingeniería de sistemas relacionada con todos los aspectos del
desarrollo y evolución de sistemas complejos donde el
software es importante pero también es importante el resto de
los elementos (p.ej. Hardware)
z Los principios existen pero no son suficientes para
dirigir el desarrollo de software (suelen ser abstractos)
Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007
Universidad Politécnica de Madrid
Principios de Ingeniería del Software

z Rigor y formalismo
Precisión y exactitud en la descripción. El proceso
del software debe poder ser dirigido y evaluado por
métodos formales
z Separación de ámbitos
Identificar los diferentes ámbitos que intervienen en
un problema para poder afrontar soluciones para
cada uno de la manera más adecuada
z Modularidad
Descomposición de un sistema complejo en
subsistemas de menor complejidad. Da soporte al
principio de separación de ámbitos
Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007
Universidad Politécnica de Madrid
Principios de Ingeniería del Software

z Abstracción
Técnica fundamental para el entendimiento y
análisis de problemas complejos. Permite separar
los aspectos importantes de los superficiales.
z Predicción y anticipación de cambios
El software está evolucionando constantemente
debido a los cambios solicitados por los clientes ⇒
hay que buscar cómo diseñar de forma que los
cambios tengan el menor impacto.

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Principios de Ingeniería del Software

z Generalidad
No tiene porqué ser más difícil resolver un problema
general que un caso particular. Las soluciones
generales facilitan la reutilización del esfuerzo.
z Desarrollo incremental
La obtención de un producto software es un proceso
evolutivo que se ve influido por las sucesivas
realimentaciones durante el proceso de desarrollo
z Por todo ello hacen falta además Procesos
bien definidos y Metodologías

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Principios de Ingeniería del Software

z Desafíos del software (Brooks, 1987)


– Esenciales: dependen del problema a resolver y no
de las herramientas disponibles ⇒ Requieren
esfuerzo intelectual, creatividad y tiempo
– Accidentales: dependen de las limitaciones de las
herramientas disponibles y que se resolverían con
mejores herramientas

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Características del software

z Construcción a medida
La mayoría del sw se construye a medida, en vez de
ensamblar componentes existentes

CURVA IDEAL CURVA REAL DE FALLOS DEL SW

Índice de fallos
Índice de fallos

Continúa al mismo
nivel hasta estar
obsoleto

tiempo tiempo

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Características del software

z Impacto de los cambios en requisitos


Los requisitos del software cambian, pero el impacto del
cambio varía según el momento en que se introduzca
COSTE DEL CAMBIO

60 - 100 *

1’5 - 6 *
1*

DEFINICIÓN DESARROLLO DESPUES DE


LA ENTREGA
Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007
Universidad Politécnica de Madrid
Procesos Software

z Un proceso software es un conjunto de actividades y


sus resultados orientados a la producción de un
producto software.
z Son complejos
z No existen herramientas sobre todo el proceso sino
sobre actividades concretas.
z No existe el proceso ideal para el desarrollo de
software aunque existen múltiples aproximaciones
z Los procesos necesitan de la aplicación de diferentes
técnicas (relacionadas con las actividades)

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Terminología de los procesos SW

z Calidad: Adecuación a las necesidades de los usuarios


z Proceso: define un marco de trabajo para el conjunto
de áreas que forman la IS:
– análisis de requisitos, diseño, construcción de software,
verificación, validación, gestión de la configuración, gestión de
los proyectos…
z Métodos: indican cómo construir técnicamente el
software.
z Herramientas: proporcionan soporte automático o
semi-automático para el proceso y los métodos

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid
Bibliografía

z Fundamentals of Software Engineering 2nd Ed.


– C. Ghezzi, M. Jazayeri y D. Mandrioli. Ed. Pearson Education, 2003
z Ingeniería del Software 7ª Ed.
– Sommerville. Addison-Wesley, 2005
z Ingeniería del Software un enfoque práctico 5th Ed.
– R.S. Pressman. McGraw-Hill, 2002
z The mythical man-month : essays on software
engineering.
– Frederick P. Brooks. Addison-Wesley, 1982
z No silver bullet: essence and accidents of software
engineering.
– Brooks, Fredrick P. IEEE Computer 20 (4):10-19. 1987

Departamento de Organización y Estructura de la Información. Ingeniería del Software © 2007


Universidad Politécnica de Madrid

También podría gustarte