Unidad 1 Mad IntroduccióN
-
Upload
sergio-sanchez -
Category
Documents
-
view
1.269 -
download
0
description
Transcript of 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
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,...)
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.
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).
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.
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.
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.
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.
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
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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
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
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
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
Sergio Sánchez Rios
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)
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
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.
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
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
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
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”.
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.
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
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
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
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.