ingenieria de software avanzadarossainz/ingsw_cuatrimestral/2_diapositivas... · ingeniería de...
TRANSCRIPT
INGENIERIA DE
SOFTWARE
Dr. Mario Rossainz López
Fac. de Cs. de la Computación
Benemérita Universidad Autónoma de Puebla
Primavera 2020
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
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.
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).
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).
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()
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
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:
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
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
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...
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
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:
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:
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:
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
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
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:
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
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
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
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
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:
Ingeniería de Software OO
Notaciones Gráficas de Metodologías OO:
TECNICAS DE DISEÑO Y NOTACIONES OO:
Ingeniería de Software OO
Notaciones Gráficas de Metodologías OO: BOOCH
TECNICAS DE DISEÑO Y NOTACIONES OO:
Ingeniería de Software OO
Notaciones Gráficas de Metodologías OO: JOURDON
TECNICAS DE DISEÑO Y NOTACIONES OO:
Ingeniería de Software OO
Notaciones Gráficas de Metodologías OO: RUMBAUGH (OMT)
TECNICAS DE DISEÑO Y NOTACIONES OO: