tema 1. introducción a la ingeniería del software y la tecnología de objetos departamento de...

52
Tema 1. Introducción a la Tema 1. Introducción a la Ingeniería del Software y Ingeniería del Software y la Tecnología de Objetos la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros en Informática Universidad de Málaga

Upload: luisa-serrano

Post on 19-Feb-2015

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Introducción a la Tema 1. Introducción a la Ingeniería del Software y la Ingeniería del Software y la

Tecnología de ObjetosTecnología de Objetos

Departamento de Lenguajes y Ciencias de la Computación

E.T.S. de Ingenieros en Informática

Universidad de Málaga

Page 2: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

22

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

ProgramaPrograma

1. Introducción a la Ingeniería del Software– Sistemas Software complejos.– Ciclo de vida del software.– Evolución de la Ingeniería del Software.

• Análisis clásico.• Análisis estructurado.• Introducción al AOO.

2. Introducción a la Tecnología de Objetos

Page 3: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

33

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Definición y características del SWDefinición y características del SW

Software: (1) instrucciones de ordenador que cuando se ejecutan cumplen una función y tienen un comportamiento deseados, (2) estructuras de datos que facilitan a los programadores la adecuada manipulación de la información, y (3) documentos que describen la operación y el uso de los programas.

Características del software:  El software se desarrolla, no se fabrica en sentido estricto.  El software no se estropea.  La mayoría del software se construye a medida.

Page 4: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

44

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Influencia de los costes de ingenieríaInfluencia de los costes de ingeniería

Ingeniería

Producción o Desarrollo

Coste unitario / 100 unidades

Coste unitario / 100.000 unidades

Hardware 1000 50 c.u. 60 50.01

Software 1000 2000 30 0.03

20 300200100

2000

10000

20000

8000

4000

18000

16000

14000

12000

6000

Costes totales Costes U nitarios

500

1000

100

20 300200100

Hardware Software

Page 5: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

55

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Curvas de fallosCurvas de fallos

índice de fallo

tiempo

índice de fallo

tiempo

índice de fallo

tiempo

HW SW

Page 6: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

66

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Aplicaciones del softwareAplicaciones del software

Software de sistemas.Software de tiempo real.Software de gestión.Software científico y de ingeniería.Software de ordenadores

personales.Software empotrado.Software de inteligencia artificial.

Page 7: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

77

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

La Ingeniería del SoftwareLa Ingeniería del Software

Problemas del software.–  La planificación y la estimación de costes son muy imprecisas.–  La productividad es baja.–  La calidad es mala.–  El cliente queda insatisfecho.

Ingeniería del software: Establecimiento y uso de principios de ingeniería robustos, orientados a garantizar la obtención de software económico, fiable y eficiente sobre máquinas reales.

Métodos Herramientas Procedimientos

Page 8: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

88

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ciclos de vida: clásico (en cascada)Ciclos de vida: clásico (en cascada)

Ingeniería del

Sistema

Análisis

Diseño

Codificación

Prueba

Utilización

Mantenimiento

Sustitución

Page 9: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

99

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ciclos de vida: contractualCiclos de vida: contractual

Cliente Proveedor

Análisis Usuario Analista

Diseño Analista Diseñador

Codificación Diseñador Programador

Page 10: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1010

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ciclos de vida: tecn. de 4ª generaciónCiclos de vida: tecn. de 4ª generación

Recolección derequisitos

Utilización

Mantenimiento

Sustitución

Generación de

código

Prueba

Diseño

Estrategia de

Page 11: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1111

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ciclos de vida: construcción de Ciclos de vida: construcción de prototiposprototipos

Recolección yrefinamientode requisitos

Diseñorápido

Construcción de prototipos

Evaluación

Desarrollo delproducto final

Page 12: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1212

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ciclos de vida: en espiralCiclos de vida: en espiral

Planificación/Recogida Análisis de riesgos yde requisitos viabilidad

Evaluación Ingeniería/Desarrollo

ObjetivoPlanificación

inicial

Page 13: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1313

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Visión genérica de la Ingeniería del Visión genérica de la Ingeniería del Software.Software.

Definición. ¿Qué?– Análisis del sistema.

• Establecer el ámbito del software.

– Análisis de requisitos del sistema software.

• Definición detallada de la función del software.

– Planificación.• Análisis de riesgos.• Asignación de recursos.• Definición de tareas.• Estimación de costes.

Desarrollo. ¿Cómo?– Diseño.

• Arquitectura de la aplicación.• Estructura de los datos.• Estructura interna de los

programas.• Diseño de las interfaces.

– Codificación.– Pruebas.

Mantenimiento. El cambio.– Corrección de errores.– Cambios en el entorno.– Cambios en los requisitos.

Page 14: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1414

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Análisis Clásico vs. Análisis Análisis Clásico vs. Análisis EstructuradoEstructurado

Especificaciones utilizando análisis clásico.– Monolíticas.

– Redundantes.

– Ambiguas.

– Imposibles de mantener o modificar.

Especificaciones utilizando análisis estructurado.– Gráficas.

– Particionadas.

– Mínimamente redundantes.

– Transparentes.

Page 15: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1515

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Análisis Estructurado: ModelosAnálisis Estructurado: Modelos

Punto de vista del proceso:

Diagramas de Flujo de Datos.

Especificaciones de Proceso.

Punto de vista de los datos:

Diagramas de Entidad/Relación.

Punto de vista del comportamiento:

Diagramas de Flujo de Control.

Especificaciones de Control.

Diagramas de Estados.

Page 16: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1616

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Diagramas de Flujo de DatosDiagramas de Flujo de Datos

leertemp

leerpresion

calcularflujo

leerconcentracion

sistemacontrol

controlusuario

abrirvalvula

alarma

Datos Flujo

Page 17: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1717

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Análisis Estructurado: Elementos Análisis Estructurado: Elementos básicosbásicos

Page 18: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1818

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Metodología del análisis estructuradoMetodología del análisis estructurado

Fases.

Creación del modelo de procesos.

DFDs y PSPECs

Creación del modelo de control.

DFCs CSPECs y DEs

Creación del modelo de datos.

DERs El problema de la consistencia entre los modelos.

Page 19: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

1919

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Modelos del sistemaModelos del sistema

Modelo esencial (o lógico) del sistema: representa lo que el sistema debe hacer con objeto de satisfacer los requisitos del usuario. Tiene que estar (al menos idealmente) completamente libre de detalles de implementación. Errores comunes incluyen:

– Secuenciar de forma arbitraria las funciones de los DFDs. – Utilizar ficheros temporales o de backup.– Utilizar información redundante o derivada.   

Modelo de implementación: versión revisada y anotada del modelo esencial, donde se especifican detalles como:

– Elección de dispositivos de entrada y salida.– Elección de los dispositivos de almacenamiento.– Formato de las entradas y salidas. – Secuencia de operaciones de entrada y salida. – Volumen de datos.– Tiempo de respuesta. – Copias de seguridad y descarga de datos del sistema.– Seguridad.

Page 20: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2020

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Deficiencias del análisis estructuradoDeficiencias del análisis estructurado

Descomposición funcional. – Requiere traducir el dominio del problema en una serie de funciones y

subfunciones.– El analista debe comprender primero el dominio del problema y a continuación

documentar las funciones y subfunciones que debe proporcionar el sistema.– No existe un mecanismo para comprobar si la especificación del sistema

expresa con exactitud los requisitos del sistema.

Flujo de datos. – Este enfoque se adapta bien al uso de sistemas informáticos para implementar

el sistema, pero no es nuestra forma habitual de pensar.

Modelo de datos. – La relación entre los modelos es muy débil, y hay muy poca influencia de un

modelo en otro.– En la práctica, los modelos de procesos y de datos de un mismo sistema se

parecen muy poco. En muchos casos son visiones irreconciliables, no del mismo sistema, sino de dos puntos de vista totalmente diferentes de organizar la solución.

Page 21: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2121

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ventajas del AOO (1)Ventajas del AOO (1)

Dominio del problema.– El paradigma OO es más que una forma de programar. Es una forma

de pensar acerca de un problema en términos del mundo real en vez de en términos de un ordenador. El AOO permite analizar mejor el dominio del problema, sin pensar en términos de implementar el sistema en un ordenador. El AOO permite pasar directamente el dominio del problema al modelo del sistema.

Comunicación. – El concepto OO es más simple y está menos relacionado con la

informática que el concepto de flujo de datos. Esto permite una mejor comunicación entre el analista y el experto en el dominio del problema (es decir, el cliente).

Consistencia. – Los objetos encapsulan tanto atributos como operaciones. Debido a

esto, el AOO reduce la distancia entre el punto de vista de los datos y el punto de vista del proceso, dejando menos lugar a inconsistencias o disparidades entre ambos modelos.

El término dominio del problema o dominio de aplicación es uno de los más usados en el paradigma orientado a objetos. Se refiere al campo de aplicación del sistema, es decir, a qué es el sistema, entendido desde su propio campo de aplicación, más que a su descripción en términos de una implementación en ordenador.

Page 22: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2222

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Ventajas del AOO (2)Ventajas del AOO (2)

Expresión de características comunes.– La herencia expresa explícitamente las características comunes de una

serie de objetos que en otros enfoques quedan escondidas y llevan a duplicar entidades en el análisis y código en los programas. El paradigma OO proporciona mecanismos que permiten reutilizar aquello que es común, sin impedir por ello describir las diferencias.

Resistencia al cambio.– Los cambios en los requisitos afectan notablemente a la funcionalidad

de un sistema y por tanto al software desarrollado con métodos estructurados. Los objetos que componen o maneja el sistema son mucho más estables. Las modificaciones necesarias para adaptar una aplicación basada en objetos a un cambio de requisitos suelen estar mucho más localizadas.

Reutilización.– Aparte de la reutilización interna, el paradigma OO desarrolla modelos

mucho más próximos al mundo real, con lo que aumentan las posibilidades de reutilización. Es probable que en futuras aplicaciones nos encontremos con objetos iguales o similares a los de la actual.

Page 23: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2323

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Introducción al AOOIntroducción al AOO

Aparición: Comienzos de la década de los 80

Evolución: Lenguajes-Diseño-Análisis

Análisis: Coad/Yourdon, Jacobson, Booch, OMT (Rumbaugh) y finalmente UML (los tres amigos) .

El Análisis Orientado a Objetos (AOO) se basa en conceptos sencillos: objetos y atributos, el todo y las partes, clases y miembros.

Este enfoque pretende conseguir modelos que se ajusten mejor al problema real, a partir del conocimiento del llamado dominio del problema, evitando que influyan en el análisis consideraciones de que estamos analizando un sistema para implementarlo en un ordenador.

Page 24: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2424

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

En resumen...En resumen...

Cada vez es más evidente la necesidad de aplicar métodos de ingeniería al proceso de desarrollo de software.

Los métodos aplicados en otras industrias no son adecuados debido a las especiales características de los productos sw.

La Ingeniería del Software ha tenido una evolución paralela a la de los lenguajes y técnicas de programación (aunque con retraso).

El enfoque orientado a objetos aporta una serie de ventajas importantes como– la familiaridad con los conceptos (que facilita la comunicación con

el cliente),

– la facilidad para representar sistemas sin la influencia de las características de implementación en el ordenador,

– la integración con los métodos de diseño e implementación y

– la consistencia entre las diferentes vistas de un sistema.

Page 25: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2525

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

ProgramaPrograma

1.2. Introducción a la Tecnología de Objetos– Historia e introducción.– Conceptos básicos.

– Aplicación de los conceptos en lenguajes de

programación y métodos de análisis.

Page 26: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2626

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Evolución HistóricaEvolución HistóricaABSTRACCIÓN

OPERACIONAL

ABSTRACCIÓN

DE

DATOS

LenguajesMáquina /

Ensamblador

Cód.Inst.Simb.Macros

Id = Dir Mem.Manip.Total de

Datos

FORTRANSubrutinasFunciones

Id. Simb.Tipos

Oper. restring.

PASCALAnidamientoSubprogramas

RegistrosTipos definidosGest. Din. Mem

MODULA-2ADA

Encapsulam.Octult. Inform.

Espec - Impl

TipoAbstracto de

Datos

LenguajesOrientados a

Objetos

ObjetosMétodosMensajes

Page 27: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2727

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Evolución HistóricaEvolución Histórica

COMPONENTES

ABSTRACCIÓN

OPERACIONAL

ABSTRACCIÓN

DE

DATOS

LenguajesMáquina /

Ensamblador

Cód.Inst.Simb.Macros

Id = Dir Mem.Manip.Total de

Datos

FORTRANSubrutinasFunciones

Id. Simb.Tipos

Oper. restring.

PASCALAnidamientoSubprogramas

RegistrosTipos definidosGest. Din. Mem

MODULA-2ADA

Encapsulam.Octult. Inform.

Espec - Impl

TipoAbstracto de

Datos

LenguajesOrientados a

Objetos

MétodosMensajes Objetos

EventosInvocación remota

Componentes

Page 28: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2828

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

IntroducciónIntroducción

Razones para la crisis del software– ¿Hacer un lápiz es difícil?

– ¿La industria del software se parece más a ...• la fabricación de armas?• la fontanería?

Tecnología / objetivo.

Page 29: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

2929

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

ProgramaPrograma

El Paradigma Orientado a Objetos– Historia e introducción.

– Conceptos básicos.

– Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

Page 30: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3030

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

¿Qué es la Orientación a Objetos?¿Qué es la Orientación a Objetos?

El concepto surge en los lenguajes de programación– Se organiza el software como una colección de objetos

discretos que encapsulan• Estructuras de Datos y• Comportamiento.

– Un sistema OO funciona mediante la colaboración entre los objetos que se comunican entre sí.

El concepto se extiende a los métodos de análisis y diseño– Se utilizan los objetos del mundo real como base para

construir modelos– Los elementos que forman los sistemas del mundo real se

corresponden con objetos software

Page 31: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3131

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Vehículo

Punto

Figura

Animal

(1,3)

(2,2)

(2,1)

(5,2.5)

Las clases y los objetos están en todas Las clases y los objetos están en todas partespartes

Platero:Animal

Page 32: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3232

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Conceptos básicos: CLASES y OBJETOSConceptos básicos: CLASES y OBJETOS

CLASE– Atributos– Operaciones– Comportamiento

Lavadora

marcamodelocapacidad: integer...

ProgramarPonerRopaCerrarPuertaLavar OBJETO

– Valores de los atributos– Estado– Identidad

ID:Lavadora

marca=“Lapava”capacidad=5estado=centrifugando

Page 33: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3333

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Conceptos básicos: PASO DE MENSAJESConceptos básicos: PASO DE MENSAJES

:MandoADistancia :Televisor

Conectar()

Canal(4)

Invocación de métodos Medio de colaboración

entre objetos

Page 34: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3434

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Conceptos básicos: ENCAPSULACIÓNConceptos básicos: ENCAPSULACIÓN

Ocultación de detalles Concepto de Interfaz Independencia

Vol+

Sens3 => Vol++=> DAC31.out=2.1=> Amp27.gain=1.3=> OSD, Pref, ...

Sens3 => Vol++=> DAC31.out=2.1=> Amp27.gain=1.3=> OSD, Pref, ...

Sens => VolUp =>=> Settings.vol++=> DAC23.out=0.7=> Amp02.gain=1.7=> OSD, Pref, ...

Sens => VolUp =>=> Settings.vol++=> DAC23.out=0.7=> Amp02.gain=1.7=> OSD, Pref, ...

Page 35: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3535

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Conceptos básicos: HERENCIAConceptos básicos: HERENCIA

Generalización / Especialización Los objetos “heredan” las características de la clase. Las clases pueden heredar de otras clases.

– Extensión.– Restricción.– Modificación.

Utilidad:– Abstracción.– Reutilización.

Hormiga PlanchaTelevisor

ElectrodomésticotensiónconsumoConectarDesconectar

Lavadoracapacidad numCanales vapor

Page 36: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3636

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Conceptos básicos: POLIMORFISMOConceptos básicos: POLIMORFISMO

Ej: Operación “Abrir”

Permite al modelador hablar el lenguaje del cliente. Evita asignar identificadores artificiosos para

distinguir las operaciones. Contribuye a la reutilización de código. Ej: Operación “Enchufar”

Puerta PlazoPuertoCuenta

Abrir()Abrir() Abrir()Abrir()

TomaDeCorrientetensión

Enchufar(e:Electrodoméstico)

Page 37: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3737

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Conceptos básicos: ASOCIACIONConceptos básicos: ASOCIACION

Modela la relación entre objetos (necesaria para que se comuniquen y colaboren)

Asociación-Clase / Enlace-Objeto Tipos básicos:

– Asociación– Herencia– Agregación / Composición (agregación fuerte)

Coche Motor Árbol Hoja

Page 38: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3838

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Hasta aquí deberíamos tener claro ...Hasta aquí deberíamos tener claro ...

Cómo surge el enfoque OO. Cómo funciona un sistema OO. El concepto y la representación de:

Asociación– Agregación– Herencia

Polimorfismo Paso de mensajes Encapsulación

Clase y Objeto– Atributos– Operaciones– Comportamiento– Identidad

Interfaz

Page 39: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

3939

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

ProgramaPrograma

El Paradigma Orientado a Objetos– Historia e introducción.

– Conceptos básicos.

– Aplicación de los conceptos en lenguajes de programación y métodos de análisis.

Page 40: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4040

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Clases y ObjetosClases y Objetos

CLASE = MODULO + TIPO

• Criterio de Modularización• Estado + Comportamiento• Entidad estática (en general)

OBJETO = Instancia de una CLASE• Objeto (Clase) Valor (Tipo)

• Identidad• Entidad dinámica• Cada objeto tiene su propio estado• Objetos de una clase comparten su comportamiento

Page 41: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4141

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Métodos: definen el comportamiento de una clase

Invocación de métodos: Paso de Mensajesobj.mens(args) mens(obj,args)

Métodos y MensajesMétodos y Mensajes

Punto

x,y: float

trasladar(a,b)distancia(pto)

Estado e identidad

Comportamiento

trasladar(1,-1)P1:Punto

X=2Y=2

Page 42: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4242

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

ClasesClases

Estructuras que encapsulan datos y funciones

class Punto{ public:

Punto();float x,y;void trasladar(float, float);void cambiar_x(float a)

{x=a;};void cambiar_y(float b)

{y=b;};float distancia(Punto);

};

“Pun

to.h

pp”

VARIABLES DE ESTADO(DATOS MIEMBRO)

MÉTODOS(FUNCIONES MIEMBRO)

CONSTRUCTOR

Page 43: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4343

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Colaboración entre objetosColaboración entre objetos

Los objetos (clases) colaboran para resolver problemas.

La forma en que los objetos (clases) colaboran puede ser muy variada:– Asociación simple– Herencia– Agregación– Composición– ...

Page 44: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4444

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

class Segmento { private Punto inicio,final;

public Segmento(Punto p){inicio = Punto();

final = p;}

public float longitud(){return inicio.distancia(final);}

public void trasladar(float a,float b){inicio.trasladar(a,b); final.trasladar(a,b);}

}

Agregación de objetosAgregación de objetos

Page 45: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4545

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

public class Habitacion {private int numHabitacion;private int numCamas;

// declaración de métodos...}

public class Hotel1 {Habitacion h1;Habitacion h2;

// resto declaraciones...h1 = new Habitacion( 222 );}

Composición de objetosComposición de objetos

Page 46: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

4646

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Construcción y DestrucciónConstrucción y Destrucción

Diferentes mecanismos para la creación y la eliminación de objetos, dependiendo del lenguaje.

Construcción de objetos (reservar memoria):– Constructores (C++, Eiffel, Java)– Métodos de clase (Smalltalk)

Eliminación de objetos (liberar memoria):– Destructores (C++)– Recolección automática de memoria –garbage

collection- (Smalltalk, Eiffel, Java)

Detalles

Page 47: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

5050

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

HerenciaHerencia

Posibilidad de reutilizar código Algo más que incluir ficheros o importar

módulos Distintos tipos de herencia:

– simple / múltiple– de implementación/de interfaz

Limitaciones Problemas

Figura

Polígono Elipse

CírculoIrregularRegular

Detalles

Page 48: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

5252

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

HerenciaHerencia

Extensión y Reutilización de códigoUna clase derivada hereda el

comportamiento de su clase padreRedefinición de métodosClases abstractasHerencia múltiple / Herencia repetida

Page 49: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

5353

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

PolimorfismoPolimorfismo

Una variable puede referirse a objetos de una clase distinta de la que se ha declarado

Tipo Dinámico vs. Tipo Estático Polimorfismo de objetos / de mensajes Restricción en base a la herencia

puntero a objeto en C++

Page 50: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

5454

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

EncapsulaciónEncapsulación

Las clases ocultan los detalles de realización de los métodos.

Los “usuarios” (los objetos que invocan esos métodos) conocen el interfaz y la semántica. No tienen que preocuparse de los detalles.

El concepto de interfaz puede ampliarse. Contribuye a la reusabilidad del código.

Page 51: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

5555

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

Al fin del tema debemos tener claro ...Al fin del tema debemos tener claro ...

Cómo surge y evoluciona el concepto OO. Cuáles son los elementos y características

básicas de este enfoque. Cómo se plasma el enfoque OO en los

lenguajes de programación. Las particularidades que se introducen

sobre los conceptos básicos al aplicarlos en sistemas reales

Page 52: Tema 1. Introducción a la Ingeniería del Software y la Tecnología de Objetos Departamento de Lenguajes y Ciencias de la Computación E.T.S. de Ingenieros

Tema 1. Sistemas Software complejosTema 1. Sistemas Software complejos

5656

Ingeniería del Software. Especificación

Departamento de Lenguajes y Ciencias de la Computación.Universidad de Málaga

A continuación ...A continuación ...

El Lenguaje de Modelado Unificado.– Introduciremos UML, y– veremos cómo realizar

• Modelado estructural

• Modelado del comportamiento

• Modelado arquitectónico Preparación:

– Tema 3. El Lenguaje de Modelado Unificado.

http://polaris.lcc.uma.es/~amg/ISE/Tema3.zip– Caps. 1,3,4,5. Schmuller. Teach yourself UML in 24 hours.– Cap, 1. “Los 3 amigos”, The Unified Modeling Language. – Probar/Jugar con Rational Rose y MagicDraw UML.