INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de...

27
INGENIERIA DE SOFTWARE Dr. Mario Rossainz López Fac. de Cs. de la Computación Benemérita Universidad Autónoma de Puebla Primavera 2020

Transcript of INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de...

Page 1: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

INGENIERIA DE

SOFTWARE

Dr. Mario Rossainz López

Fac. de Cs. de la Computación

Benemérita Universidad Autónoma de Puebla

Primavera 2020

Page 2: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

CONCEPTOS:

En general, dentro de un Desarrollo OO se distinguen tres fases

tradicionales:

La fase del Análisis Orientado a Objetos denotada por AOO (que

se ocupa del que???, es decir, de entender el dominio del

problema).

La fase del Diseño Orientado a Objetos denotada por DOO (que

responde al como??? y se centra en el espacio de la solución)

La fase de Programación Orientada a Objetos denotada por POO

(y que es la fase en la que se implementa o se adapta la solución en

un entorno de programación).

AOO + DOO + POO = Producto Software

Page 3: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

CONCEPTOS:

El paso de la fase del análisis a la de diseño se distingue por dos

aproximaciones distintas:

La aproximación de la elaboración: en la cual el modelo de

análisis se va completando con información de diseño hasta que se

encuentre listo para ser codificado.

La aproximación de la transformación: consistente en aplicar unas

reglas para transformar un análisis en diseño.

Page 4: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

CONCEPTOS:En cuanto al enfoque que se emplea en el proceso de desarrollo, se

distinguen dos grandes corrientes:

1. Metodologías dirigidas por datos (data-driven) como FUSION

(Coleman 1994) o bien OMT (Rumbaugh 1991) las cuales se basan

en la parte estructural de los objetos y son una extensión del

modelado conceptual E-R.

2. Metodologías dirigidas por responsabilidades (responsability-

driven) como RDD (Wirfs-Brock 1990) u OBA, que representan el

enfoque más puro de la orientación a objetos y se centran en las

responsabilidades de éstos, es decir, las acciones que pueden

llevar a cabo dichos objetos.

3. Existen otro tipo de metodologías como Objectory (Jacobson 1992)

que están dirigidas a las formas de uso ( use-case-driven).

Page 5: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

CONCEPTOS:

Sin embargo, a pesar de estas diferencias el proceso de desarrollo de

un producto software orientado a objetos se puede generalizar (en

base a las ideas de Booch 1993) de la siguiente forma:

1. Se identifican las clases y objetos en un nivel dado de abstracción

(descripción)

2. Se identifica la semántica de cada una de estas clases y objetos

(atributos y servicios)

3. Se identifican las relaciones entre clases y objetos (herencia y

paso de mensajes)

4. Se especifica la interfaz y la implementación de estas clases y

objetos (ventanas, menús, mecanismos de control, etc).

Page 6: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

EL MODELO DE OBJETO:

Definición de Objeto:

Es un tipo de dato que encapsula con el mismo nombre,

estructuras de datos y las operaciones que manipulan esos datos.

Objeto FOCO:

Datos: filamento, bombilla, rosca

Operaciones: EncenderFoco();

ApagarFoco()

Page 7: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

EL MODELO DE OBJETO:

Definición de Objeto:

Los objetos son las entidades fundamentales de un programa

orientado a objetos y las clases son conjuntos de objetos

LA CLASE TRANSPORTES

Page 8: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Propiedades más importantes del modelo de Objeto:

La Abstracción

La Encapsulación

La Modularidad

La Jerarquía

El Polimorfismo

EL MODELO DE OBJETO:

Page 9: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Propiedades más importantes del modelo de Objeto:

La Abstracción

La Encapsulación

La Modularidad

La Jerarquía

El Polimorfismo

EL MODELO DE OBJETO:

El Objeto A no conoce lo que

hace el Objeto B y Viceversa

Page 10: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Propiedades más importantes del modelo de Objeto:

La Abstracción

La Encapsulación

La Modularidad

La Jerarquía

El Polimorfismo

EL MODELO DE OBJETO:

ANIMAL

MAMIFEROREPTIL

La

modularidad

en JAVA se

realiza a través

de clases

Page 11: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Propiedades más importantes del modelo de Objeto:

La Abstracción

La Encapsulación

La Modularidad

La Jerarquía

El Polimorfismo

EL MODELO DE OBJETO:

Animal

Mamífero Reptil...

Canino Felino...

Domestico Lobo...

Perdiguero Caniche...

Page 12: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Propiedades más importantes del modelo de Objeto:

La Abstracción

La Encapsulación

La Modularidad

La Jerarquía

El Polimorfismo

EL MODELO DE OBJETO:

A

R

E

A

Area= Lado X Lado

Area= PI x Radio2

Area= Base x Altura

2

POLIMORFISMO

POLIMORFISMO

Page 13: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Identificación de Clases y Objetos :

el mejor sistema de identificación es leer la definición o descripción de las

especificaciones del problema y localizar nombres o frases con nombre

y verbos o frases con verbos.

nombre = buen indicador de la existencia de objetos

Verbo = candidato a método o función miembro de un objeto

Sin embargo, no todos los nombres identificados son buenos candidatos a

clases.

EL MODELO DE OBJETO:

Page 14: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Identificación de Clases y Objetos :

Problemas potenciales que pueden existir en un sistema:

1. Encontrar demasiados objetos

2. Algunos nombres son variables y no objetos

Criterios a seguir para clasificar objetos:

Cosas tangibles (mesa, coche, base de daos, etc.)

Interacciones (matrimonio, ventas, compras)

Papeles-Roles (director, propietario, cliente)

Incidentes (viaje, transacción, llegada)

Unidades Organizacionales (departamentos, divisiones)

Lugares, posiciones geográficas o físicas (ciudad, camino)

Especificaciones (descripciones estándares)

EL MODELO DE OBJETO:

Page 15: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Asignación de Atributos y Comportamiento :

Una vez identificada una clase, lo siguiente es identificar las

responsabilidades que pudiera tener. Éstas caen dentro de dos

categorías:

1. La información que un objeto de una clase ha de mantener

(atributos)

2. Las operaciones que un objeto puede realizar o se pueden realizar

sobre el mismo (comportamiento).

Atributos = Estado = datos de una clase = Estructuras de datos

Métodos = Comportamiento = Algoritmo

EL MODELO DE OBJETO:

Page 16: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Relaciones entre clases y objetos :

Relación Es-Un: Se presenta cuando una clase es un subtipo de otra

clase. Por ejemplo, un oso es-un mamífero.

EL MODELO DE OBJETO:Mamífero

Hombre

Persona

Emplead

o

Secretari

o

es-un

es-un

es-un

es-un

Page 17: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Relaciones entre clases y objetos :

Relación Tiene-Un o Forma Parte de: Se presenta cuando una clase

contiene otras clases. A esto se le denomina clases compuestas o

agregadas. Por ejemplo, una Pila contiene una clase Array.

EL MODELO DE OBJETO:Avión

Alas

Tren de Aterrizaje

tiene-un

tiene-un

Page 18: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Relaciones entre clases y objetos :

Relación Es-Un: Se presenta cuando una clase es un subtipo de otra

clase. Por ejemplo, un oso es-un mamífero.

Relación Tiene-Un o Forma Parte de: Se presenta cuando una clase

contiene otras clases. A esto se le denomina clases compuestas o

agregadas. Por ejemplo, una Pila contiene una clase Array.

GENERALIZACIÓN

O

ESPECIALIZACIÓN

AGREGACIÓN

O

COMPOSICIÓN

EL MODELO DE OBJETO:

Page 19: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

TECNICAS DE DISEÑO Y NOTACIONES OO:

Tarjetas de Clase :

Es una técnica de DOO propuesta por Beck y Cunningham en 1989.

Consiste en elaborar por cada clase una tarjeta o ficha como la que

se muestra a continuación en donde se apuntan las principales

características de la clase:

Nombre

Lista de Superclases

Lista de Subclases

Responsabilidades

Colaboraciones

Page 20: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Tarjetas de Clase :

TECNICAS DE DISEÑO Y NOTACIONES OO:

Clase: Nombre de la clase

Lista de Superclases

Lista de Subclases

Responsabilidad Colaboración

Page 21: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Tarjetas de Clase (Un sistema de Biblioteca):

TECNICAS DE DISEÑO Y NOTACIONES OO:

Clase: Sistema de Biblioteca

Lista de Superclases

Lista de Subclases

Responsabilidad Colaboración

prestarMaterial Material, Socio

devolverMaterial Material, Socio

busquedaMaterial Biblioteca

visualizarInformacion

obtenerInformacion

Clase: Biblioteca

Lista de Superclases

Lista de Subclases

Responsabilidad Colaboración

conocerMateriales Material

Page 22: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Tarjetas de Clase (Un sistema de Biblioteca):

TECNICAS DE DISEÑO Y NOTACIONES OO:

Clase: Socio

Lista de Superclases

Lista de Subclases

Responsabilidad Colaboración

conocerDatos

conocerMaterialPrestado

conocerMultas

Clase: Material

Lista de Superclases

Lista de Subclases: Libro, Proyecto, Revista

Responsabilidad Colaboración

conocerDatos

prestarse

devolverse

calcularFechaDevolucion

calcularMulta

Page 23: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Clase: Libro

Lista de Superclases: Material

Lista de Subclases

Responsabilidad Colaboración

calcularFechaDevolucion

calcularMulta

Clase: Proyecto

Lista de Superclases: Material

Lista de Subclases

Responsabilidad Colaboración

calcularFechaDevolucion

calcularMulta

Clase: Revista

Lista de Superclases: Material

Lista de Subclases

Responsabilidad Colaboración

calcularFechaDevolucion

calcularMulta

Tarjetas de Clase (Un sistema de Biblioteca):

TECNICAS DE DISEÑO Y NOTACIONES OO:

Page 24: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Notaciones Gráficas de Metodologías OO:

TECNICAS DE DISEÑO Y NOTACIONES OO:

Page 25: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Notaciones Gráficas de Metodologías OO: BOOCH

TECNICAS DE DISEÑO Y NOTACIONES OO:

Page 26: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Notaciones Gráficas de Metodologías OO: JOURDON

TECNICAS DE DISEÑO Y NOTACIONES OO:

Page 27: INGENIERIA DE SOFTWARE AVANZADArossainz/ingSw_cuatrimestral/2_Diapositivas... · Ingeniería de Software OO CONCEPTOS: Sin embargo, a pesar de estas diferencias el proceso de desarrollo

Ingeniería de Software OO

Notaciones Gráficas de Metodologías OO: RUMBAUGH (OMT)

TECNICAS DE DISEÑO Y NOTACIONES OO: