40
Sergio Sánchez Rios Metodologías de Análisis y Diseño Unidad I Introducción a la Orientación a Objetos y el Modelado Sergio Sánchez Rios. Ingeniero en Informática – Licenciado en Informática

Unidad 1 Mad IntroduccióN

Embed Size (px)

DESCRIPTION

Curso Metodologías de Análisis y Diseño - Usando UML - Capt. 1

Citation preview

Page 1: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Metodologías de Análisis y DiseñoUnidad I

Introducción a la Orientación a Objetos y el Modelado

Sergio Sánchez Rios.

Ingeniero en Informática – Licenciado en Informática

Page 2: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

¿Por qué la Orientación a Objetos?

Principalmente porque la mayoría de los sistemas que se están desarrollando hoy en día están adoptando algunas o todas las nociones que involucra la orientación a objetos.

Un poco de Historia.

ENFOQUE ESTRUCTURADOAÑOS 80: no se soluciona la “crisis del software”

- poca capacidad de estimación- baja calidad de los programas- elevados costes de mantenimiento- duplicación de esfuerzos (ausencia de reutilización)

AÑOS 80: no se soluciona la “crisis del software”

- poca capacidad de estimación- baja calidad de los programas- elevados costes de mantenimiento- duplicación de esfuerzos (ausencia de reutilización)

ENFOQUE DE OBJETOS COMO ALTERNATIVA

SIMULA (Noruega, 1967): lenguaje de simulación de sucesosSMALLTALK (PARC, años 70): combina el concepto de clase de SIMULA con la capacidad de abstracción funcional del LISP.Años 80: Interés por las IGU (interfaces gráficas de usuario): su elevada complejidad se compensa con un alto grado de reutilización.Finales 80 y principios 90: interés por los métodos O.O. (diseño, especificación,...)

ENFOQUE DE OBJETOS COMO ALTERNATIVA

SIMULA (Noruega, 1967): lenguaje de simulación de sucesosSMALLTALK (PARC, años 70): combina el concepto de clase de SIMULA con la capacidad de abstracción funcional del LISP.Años 80: Interés por las IGU (interfaces gráficas de usuario): su elevada complejidad se compensa con un alto grado de reutilización.Finales 80 y principios 90: interés por los métodos O.O. (diseño, especificación,...)

Page 3: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

¿Qué es la Orientación a Objetos?

Es un enfoque de desarrollo de software que organiza tanto el problema como su solución como una colección de objetos discretos, tanto la estructura de datos como el comportamiento están incluidos en la representación.

Una representación orientada a objetos (OO) puede reconocerse por sus siete características: Abstracción, Identidad, Clasificación, Encapsulamiento, Herencia, Polimorfismo y Persistencia.

Algunas representaciones solo se basan en un subconjunto de estas características. A estas les llamaremos basadas en objetos.

Page 4: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Identidad

Se refiere al hecho de que los datos son organizados en entidades discretas y distinguibles. Denominadas objetos.

¿Qué es un objeto?

Conceptualmente, un objeto es una cosa con la que se puede interactuar: se le pueden enviar varios mensajes y éste reacciona ante ellos.

De está forma , un objeto simple tiene estados y comportamientos asociados. (Grady Booch).

Page 5: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Identidad

¿Qué es un objeto?

Ejemplo: Sistema para el manejo del dique de un río

El Dique es un objetoEl Dique es un objeto

Cada Objeto posee un nombre, el que lo distingue de otros objetos.

¿Qué es el estado de un objeto?

El estado de un objeto lo constituyen todos los datos que encapsula en un momento determinado.

Un objeto normalmente tiene un número de lo que se conoce como atributos cada uno de los cuales tiene un valor. En la mayoría de los lenguajes orientados a objetos (LOO), hoy en día el conjunto de atributos de un objeto no puede cambiar durante su vida, pero si sus valores.

Page 6: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Identidad

¿Qué es el estado de un objeto?

Ejemplo:Estados del Dique

-Dique Completamente Cerrado

-Dique Completamente Abierto

Estados del Dique

-Dique Completamente Cerrado

-Dique Completamente Abierto

¿Qué es el comportamiento de un objeto?

Es la manera como actúa y reacciona un objeto, en función de sus cambios de estado y el paso de mensajes.

Un objeto comprende ciertos mensajes, lo que quiere decir que puede recibir mensajes y actuar sobre ellos. El conjunto de mensajes que entiende un objeto, al igual que el conjunto de atributos que tiene, normalmente está fijado.

Page 7: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Identidad

¿Qué es el comportamiento de un objeto?

Ejemplo:

Comportamientos del Dique

Alarma sonora: Avisa a los cercanos que un dique cambia de estado cerrado a abierto. (Para que se alejen)

Comportamientos del Dique

Alarma sonora: Avisa a los cercanos que un dique cambia de estado cerrado a abierto. (Para que se alejen)

¿Qué son los mensajes?

Los mensajes son el medio a través del cual los objetos interactúan

Un mensaje estimula la ocurrencia de cierto comportamiento en el objeto receptor.

El comportamiento se realiza cuando se ejecuta una operación. 

Page 8: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Abstracción

Está característica es importante para crear cualquier sistema sea orientado a objetos o no.

Ayuda a representar los diferentes puntos de vista incorporados en el sistema que se desarrolla.

Page 9: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Clasificación

Se permite agrupar objetos que tienen atributos y comportamientos en común (Concepto de clases).

GRUPO DE AVIONES

GRUPO DE AUTOS

Page 10: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Clasificación

¿Qué es una Clase?

Una clase describe un conjunto de objetos que tiene un rol o roles equivalentes en el sistema.

En los lenguajes O.O basados en clases, cada objeto pertenece a una clase, y la clase de un objeto es quien determina su interfaz.

Los atributos que tiene un objeto vienen determinados por su clase, aunque, por supuesto, los valores que toman dichos atributos no están determinados por la clase, pudiendo variar.

Los objetos de una misma clase tienen las mismas interfaces.

Page 11: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Clasificación

¿Qué es una Clase?

Una clase se puede representar usando una caja.

Mueble

CosteDimensionesPesoLocalizaciónColor

Comprar()Vender()Pesar()Mover()

Mesa SillaAparador

Es importante mencionar que la clasificación refleja la perspectiva de la persona o grupo de trabajo que la realizo.

Ej.: Se podrían a ver colocado bicicletas y aviones en la clase vehículos de transporte.

Page 12: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Clasificación

¿Qué es una Clase?

Se dice que un “objeto” es una instancia de una clase.

Cada instancia tiene sus propios atributos (es decir, tiene sus propio estado en cualquier instante de tiempo), pero comparte nombre y comportamiento con las otras instancias de la clase.

Por lo tanto una clase describe un conjunto de objetos que comparten una estructura común y tienen comportamientos comunes, pero los valores de los atributos nos ayudan a distinguir cada objeto particular.

Page 13: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Encapsulamiento

Las clases encapsulan los atributos y comportamientos de un objeto, ocultando los detalles de implementación. Es un complemento de la abstracción.

Empleado

Empleado

DNINombre

Categoría

ContratarPagar

Despedir

ABSTRACCIONABSTRACCION

ENCAPSULAMIENTOENCAPSULAMIENTO

Page 14: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Encapsulamiento

La encapsulación no es lo mismo que el ocultamiento de información. El encapsulamiento es una técnica para empaquetar la información de tal forma que se oculte lo que debe ser ocultado y se haga visible lo que está pensando que sea visible.

Page 15: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Herencia

Las clases pueden ser organizadas jerárquicamente de acuerdo con las semejanzas y diferencias entre ellas.

Para construir las jerarquías se comienza definiendo ampliamente una clase para refinarla luego en subclases más especializadas.

Una subclase puede heredar la estructura así como el comportamiento y atributos de su superclase.

Medio de transporte

Medio terrestre Medio aéreo Medio marítimo

Avión OvniHel icóptero

Clase Abstracta, es una clase que no tiene instancias solo subclases.

Page 16: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Polimorfismo

Cuando el comportamiento se manifiesta de maneras diferentes en diferentes clases o subclases, estamos hablando de polimorfismo.

Ej.:

Matriz

Suma()

Entero

Suma()

Real

Suma()

Una implementación especifica de una operación para una cierta clase se denomina “método”. En un sistema con polimorfismo, una operación puede tener más de un método que la implemente.

Page 17: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Características - Persistencia

La capacidad del nombre, estados y comportamientos de un objeto para trascender el espacio o el tiempo.

En otras palabras, el nombre, estado y comportamiento de un objeto se conservan cuando el objeto es transformado.

Page 18: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OO

Una ventaja del desarrollo OO es su consistencia de lenguaje, ya que tanto el problema como la solución pueden describirse en los mismos términos: clases, objetos, métodos, atributos y comportamientos.

La representación orientada a OO requiere tres perspectivas:

Vistas Estáticas: incluyen descripciones de los objetos, atributos, comportamientos, y relaciones.

Vistas Dinámicas: describen comunicación, control / temporización, estados y cambios de estado.

Restricciones: describen las limitaciones en la estructura (como valores de atributos o cardinalidad) y en el comportamiento dinámico.

Page 19: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OO

La consistencia a través del proceso es una diferencia clave entre los procedimientos de desarrollo más tradicionales y el proceso de desarrollo OO.

Un proceso OO utiliza el encapsulamiento de datos y el comportamiento para formar unidades independientes (objetos). Y estas mismas estructuras semánticas representan el sistema desde los requerimientos a la implementación y prueba de la aplicación.

Por lo tanto, la OO es una filosofía de representación de problema solución, y no una representación del ciclo de vida en sí. De está forma, la OO puede aplicarse en cualquiera de los ciclos de vida, desde el modelo en cascada al espiral.

Page 20: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OORequerimientos en OO

El análisis OO de requerimientos usualmente se realiza en el lenguaje del usuario y discute los conceptos y escenarios probablemente en el dominio de la aplicación. Los conceptos incluyen información, servicio y responsabilidades.

El conocimiento del dominio habilita a los desarrolladores para entender el contexto en el cual se usará el sistema y para describir requerimientos de una forma tal que los usuarios los entenderán.

Hay que tener claro ,por su puesto, que la definición de requerimientos puede ser independiente de sus representaciones como objetos.

Page 21: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OODiseño OO

Hay dos pautas que se aplican para representar el diseño de un sistema en una forma orientada a objetos.

1. Es importante identificar y definir clases y objetos. Se deben conocer no sólo los objetos del mundo real (el dominio del problema – similar a la especificación de requerimientos) sino también los detalles de cada objeto, sus atributos y comportamientos.

2. Se deben identificar las interacciones y relaciones entre objetos y clases; sus asociaciones , composiciones, agregaciones y relaciones de herencia.

Page 22: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OODiseño OO

Se considera que el diseño del sistema es una abstracción de alto nivel de lo que será en el futuro el diseño del programa.

Page 23: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OOCodificación y Prueba OO

Una vez hecho el diseño, se describe el sistema a un nivel muy bajo, usando modelos de objetos, atributos y comportamientos. La codificación procede traduciendo los modelos a un lenguaje de programación OO.

Este proceso no es trivial, por lo general a los implementadores les resulta necesario refinar las estructuras jerárquicas y efectuar ajustes a medida que los requerimientos crecen y maduran.

Las pruebas del sistema siguen el mismo curso (Prueba Unitaria, Integración y del sistema).

Page 24: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Proceso de Desarrollo OOCodificación y Prueba OO

Acá se muestran los diferentes niveles de abstracción, y su relación con las pruebas.

Sistema

Subsistema

Jerarquía de Clases

Clase

Niv

ele

s de

abs

trac

ción

Prueba

del Sistema

Prueba

Unitaria

Pru

eba

de

Inte

gra

ción

Pru

eba

de

S

iste

ma

Page 25: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

¿Por qué modelamos?

Actividad y productos complejos.

Modelo: simplificación de la realidad.

Se construyen modelos para comprender mejor el sistema que se está desarrollando.

Modelado del Sistema

Page 26: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Objetivos de la utilización de modelos

Ayudan a visualizar cómo es o queremos que sea un sistema.

Especificar la estructura y/o el comportamiento.

Proporcionar plantillas que guíen en la construcción.

Documentar las decisiones adoptadas.

Modelado del Sistema

Page 27: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Principios Modelado

La elección de qué modelos crear tiene gran influencia sobre cómo se acomete un problema y cómo se da forma a una solución.

Todo modelo puede ser expresado a diferentes niveles de precisión.

Los mejores modelos están ligados a la realidad.

Un único modelo no es suficiente. Cualquier sistema no trivial se aborda mejor a través de un pequeño conjunto de modelos casi independientes.

Modelado del Sistema

Page 28: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

Page 29: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: ¿ Qué es UML? UML = Unified Modeling Language

Un lenguaje de propósito general para el modelado orientado a objetos.

Documento “OMG Unified Modeling Language Specification”

UML combina notaciones provenientes desde: Modelado Orientado a Objetos Modelado de Datos Modelado de Componentes Modelado de Flujos de Trabajo (Workflows)

Page 30: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Situación de Partida Diversos métodos y técnicas OO, con muchos aspectos en común

pero utilizando distintas notaciones.

Inconvenientes para el aprendizaje, aplicación, construcción y uso de herramientas, etc.

Pugna entre distintos enfoques (y correspondientes gurús)

Establecer una notación estándar

Page 31: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Historia

Comenzó como el “Método Unificado”, con la participación de Grady Booch y Jim Rumbaugh.

El mismo año se unió Ivar Jacobson. Los “Tres Amigos” son socios en la compañía Rational Software. Herramienta CASE Rational Rose.

Page 32: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Historia

Nov ‘97 UML aprobado por el OMG

1998

1999

2000

UML 1.2

UML 1.3

UML 1.4

2001-2003 UML 2.0

Revisiones menores

Page 33: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Participantes en UML 1.0 Rational Software

(Grady Booch, Jim Rumbaugh y Ivar Jacobson)

Digital Equipment Hewlett-Packard i-Logix (David Harel) IBM ICON Computing

(Desmond D’Souza) Intellicorp and James Martin &

co. (James Odell)

MCI Systemhouse Microsoft ObjecTime Oracle Corp. Platinium Technology Sterling Software Taskon Texas Instruments Unisys

Page 34: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Aglutinamiento de enfoques

UML

Rumbaugh

Jacobson

Meyer

Harel

Wirfs-BrockFusion

Embly

Gamma et. al.

Shlaer-Mellor

Odell

Booch

Pre- and Post-conditions

State Charts

Responsabilities

Operation descriptions, message numbering

Singleton classes

Frameworks, patterns, notes

Object life cycles

Page 35: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Inconvenientes Definición del proceso de desarrollo usando UML. UML no es una

metodología.

Falta integración con respecto de otras técnicas tales como patrones de diseño, interfaces de usuario, documentación, etc.

Ejemplos aislados.

“Monopolio de conceptos, técnicas y métodos en torno a UML”.

Page 36: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Perspectivas UML será el lenguaje de modelado orientado a objetos estándar

predominante los próximos años.

Razones: Participación de metodólogos influyentes. Participación de importantes empresas. Aceptación del OMG como notación estándar.

Evidencias: Herramientas que proveen la notación UML. “Edición” de libros. Congresos, cursos, “camisetas”, etc.

Page 37: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Modelo Conceptual Bloques de construcción de UML:

Elementos Estructurales (clases, interfaces, colaboraciones, casos de

uso, clases activas, componentes y nodos) Comportamiento (interacción, máquina de estados) Agrupación (paquetes) Anotación (notas)

Relaciones Dependencia Asociación Generalización Realización

Diagramas

Page 38: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: Modelo Conceptual Modelo Estático

Construye y documenta los aspectos estáticos de un sistema.

Refleja la estructura básica y estable de un sistema software.

Crea una representación de los principales elementos del dominio del problema

Se compone de:

Diagramas de Casos de Uso

Diagramas de Clases Diagramas de Objetos Diagramas de componentes Diagramas de Despliegue

Modelo Dinámico

Crea los diagramas que muestran el comportamiento de un sistema

Se compone de los siguientes diagramas:

Diagramas de Secuencia Diagramas de Colaboración Diagramas de Transición de

Estados Diagramas de Actividad

Page 39: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

UML: ArquitecturaVista de diseño

Vista de procesos

Vista de despliegue

Vista de implementación

Vista de casos de uso

Comprende las clases, interfaces y colaboraciones que forman el vocabulario del problema y su solución.Aspectos estáticos: diagramas de clases y objetos.Aspectos dinámicos: diagramas de interacción, de estados y de actividades

Comprende los casos de uso que describen el comportamiento del sistema, tal y como es percibido por los usuarios finales, analistas y encargados de pruebas.Aspectos estáticos: diagramas de casos de uso.Aspectos dinámicos: diagramas de interacción, de estados y de actividades

Comprende los hilos (threads) y procesos que forman los mecanismos de sincronización y concurrencia del sistemaAspectos estáticos y dinámicos: los mismos que la vista de diseño, pero con énfasis en las clases activas

Comprende los componentes y archivos que se utilizan para ensamblar y hacer disponible el sistema físico.Aspectos estáticos: diagramas de componentes.Aspectos dinámicos: diagramas de interacción, de estados y de actividades

Contiene los nodos que forman la topología hardware.Aspectos estáticos: diagramas de despliegue.Aspectos dinámicos: diagramas de interacción, de estados y de actividades

Page 40: Unidad 1 Mad IntroduccióN

Sergio Sánchez Rios

BibliografíaGuía del Tópico:

Software Engineering 6a. ed.– Ian Sommerville – Pearson Education – 2000. (Cap. 6)

Ingeniería de Software Teoría y Práctica – Shari Lawrence Pfleeger – Pearson Education – 2002.

Utilización de UML en ingeniería del software con objetos y componentes – Perdita Stevens & Rob Pooley – Addison Wesley – 2002.

UML y Patrones una introducción al análisis y diseño orientados a objeto y al proceso unificado – Craig Larman – Prentice Hall - 2002.