analisis y diseño orientado objetos

53
Análisis y diseño de sistemas orientado a objetos Johana carolina camargo buelvas Lady johana tristancho paez UPC

Upload: eliecer-suarez

Post on 13-Jun-2015

23.015 views

Category:

Documents


15 download

DESCRIPTION

Exposicion hecha en clases

TRANSCRIPT

Page 1: Analisis Y DiseñO Orientado Objetos

Análisis y diseño de sistemas orientado a objetos

Johana carolina camargo buelvas

Lady johana tristancho paez

UPC

Page 2: Analisis Y DiseñO Orientado Objetos

Introducción

Hoy en día la tecnología orientada a objetos ya no se aplica solamente a los lenguajes de programación, además se viene aplicando en el análisis y diseño con mucho éxito, al igual que en las bases de datos. para hacer una buena programación orientada a objetos hay que desarrollar todo el sistema aplicando esta tecnología, de ahí la importancia del análisis y el diseño orientado a objetos.

La programación orientada a objetos es una de las formas más populares de programar y viene teniendo gran acogida en el desarrollo de proyectos de software desde los últimos años.

Page 3: Analisis Y DiseñO Orientado Objetos

Perspectiva histórica

la programación fue hecha en una manera secuencial o lineal, es decir una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.

Los lenguajes basados en esta forma de

programación ofrecían ventajas al principio, pero el problema ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo “espaguetti” no ofrecen flexibilidad y el mantener una gran cantidad de líneas de código en sólo bloque se vuelve una tarea complicada.

Frente a esta dificultad aparecieron los lenguajes basados en la programación estructurada. La idea principal de esta forma de programación es separar las partes complejas del programa en módulos o segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseño modular, compuesto por módulos independientes que puedan comunicarse entre sí. Poco a poco este estilo de programación fue reemplazando al estilo “espaguetti” impuesto por la programación lineal.

Page 4: Analisis Y DiseñO Orientado Objetos

Fomenta la reutilización y extensión del código. Permite crear sistemas más complejos. Relacionar el sistema al mundo real. Facilita la creación de programas visuales. Construcción de prototipos Agiliza el desarrollo de software Facilita el trabajo en equipo Facilita el mantenimiento del software

Ventajas del lenguaje orientado a objetos

Page 5: Analisis Y DiseñO Orientado Objetos

El modelo orientado a objetos

Para entender este modelo debemos tratar con los siguientes conceptos básicos:

Objeto

Clase

Herencia

Page 6: Analisis Y DiseñO Orientado Objetos

¿ Qué es un objeto ?

Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor, donde poseen las siguientes cualidades : identidad , estado y comportamiento.

Page 7: Analisis Y DiseñO Orientado Objetos

¿ Que es una clase ?

Conjunto de objetos que poseen características similares , es decir objetos del mismo tipo.

Page 8: Analisis Y DiseñO Orientado Objetos

Diferencia entre clase y objeto

Clase: Es un conjunto de objetos relacionados. Ejemplo: La clase Zapato.

Objeto: Es una instancia de una clase. Ejemplo: Zapato mocasín.

Page 9: Analisis Y DiseñO Orientado Objetos

¿ Que es la herencia ?

La herencia es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia.

Page 10: Analisis Y DiseñO Orientado Objetos

En general, podemos tener una gran jerarquía de Clases tal y como vemos en el siguiente gráfico:

Page 11: Analisis Y DiseñO Orientado Objetos

Envío de mensajes

Un objeto es inútil si está aislado. El medio empleado para que un objeto interactúe con otro son los mensajes. Hablando en términos un poco más técnicos, los mensajes son invocaciones a los métodos de los objetos.

Page 12: Analisis Y DiseñO Orientado Objetos

Características asociadas al poo

Abstracción: La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento.

Encapsulamiento: El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. Es tener todo esto es una sola entidad.

Ocultamiento: Es la capacidad de ocultar los detalles internos del comportamiento de una Clase y exponer sólo los detalles que sean necesarios para el resto del sistema.

Polimorfismo: capacidad que tienen objetos de diferentes clases de responder al mismo mensaje. Comportamientos alternos entre clases derivadas relacionadas.

Servicio: Es el comportamiento de los objetos. Son métodos o procedimientos, que llegan a ser parte de los objetos, en forma muy similar a los atributos.

Page 13: Analisis Y DiseñO Orientado Objetos

Para el desarrollo de software orientado a objetos no basta usar un lenguaje orientado a objetos. También se necesitará realizar un análisis y diseño orientado a objetos.

El modelamiento visual es la clave para realizar el análisis OO. Desde los inicios del desarrollo de software OO han existido diferentes metodologías para hacer esto del modelamiento, pero sin lugar a duda, el Lenguaje de Modelamiento Unificado (UML) puso fin a la guerra de metodologías.

Según los mismos diseñadores del lenguaje UML, éste tiene como fin modelar cualquier tipo de sistemas (no solamente de software) usando los conceptos de la orientación a objetos. Y además, este lenguaje debe ser entendible para los humanos y máquinas.

Análisis y diseño orientado a objetos

Page 14: Analisis Y DiseñO Orientado Objetos

OOD es...

• Modular• Efectos laterales mínimos (encapsulamiento)• Programación por extensión• Orientado a datos• Explota la herencia (jerárquico)• Reutilización de clases• Fácil de modificar

Page 15: Analisis Y DiseñO Orientado Objetos

Ventajas de OOD

• Módulos con fuerte cohesión interna y escaso acoplamiento externo (sin variables globales, …)

• Facilita el funcionamiento en entorno multiprocesador (objetos distribuidos)

• Correspondencia directa con el mundo real• Prototipos rápidos• Herramientas y bibliotecas muy amplias• Aplicaciones construidas enganchando objetos• Mejor comprensión y mantenimiento

Page 16: Analisis Y DiseñO Orientado Objetos

Inconvenientes de OOD

• Impactos desfavorables sobre espacio y tiempo de ejecución

• Forma de pensar diferente: curva de aprendizaje lenta

• Peligro de atomización, con dificultad de comprensión global

• Herencia y ligadura dinámica dificulta las pruebas

Page 17: Analisis Y DiseñO Orientado Objetos

Metodologías de Análisis y Diseño (OOA/OOD)

• Booch (OOAD)• Rumbaugh (OMT)• Jacobson (OOSE)• UML (Unified Modelling Language)

– Lenguaje visual– Unión de los tres anteriores– Estándar internacional (OMG)– Versión actual: 2.0

• UP (Unified Process)– Metodología de diseño iterativo– Basada en casos de uso– Incorpora UML de forma natural

Page 18: Analisis Y DiseñO Orientado Objetos

- Diseñar es un proceso iterativo e incremental- Ni top-down, ni bottom-up: "ida y vuelta"- Modelo en espiral- dirigido según los riesgos (risk driven)

Pasos de la Metodología de Booch

1- Identificar las clases y los objetos a un cierto nivel de abstracción2- Identificar la semántica de esas clases y objetos3- Identificar las relaciones entre esas clases y objetos4- Implementar esas clases y objetos

Metodología de Booch

Page 19: Analisis Y DiseñO Orientado Objetos

Metodología de Rumbaugh (OMT)

Modelos

Page 20: Analisis Y DiseñO Orientado Objetos

Metodología de Diseño

Page 21: Analisis Y DiseñO Orientado Objetos

Metodología de Jacobson (OOSE)

Page 22: Analisis Y DiseñO Orientado Objetos

¿ Que es UML ?

• El Lenguaje de Modelamiento Unificado (UML) es un lenguaje para especificar, construir, visualizar y documentar los elementos que componen un sistema de software intensivo.

• El UML es una notación para escribir modelos de objetos

• Define los diagramas, sus gráficos y su semántica

Page 23: Analisis Y DiseñO Orientado Objetos

principales beneficios de UML

Mejores tiempos totales de desarrollo (de 50 % o más). Modelar sistemas (y no sólo de software) utilizando

conceptos orientados a objetos. Establecer conceptos y artefactos ejecutables. Encaminar el desarrollo del escalamiento en sistemas

complejos de misión crítica. Crear un lenguaje de modelado utilizado tanto por

humanos como por máquinas. Mejor soporte a la planeación y al control de proyectos. Alta reutilización y minimización de costos.

Page 24: Analisis Y DiseñO Orientado Objetos

Autores de UML

- Autores * Grady Booch: Booch-91, 93

* James Rumbaugh y otros : OMT-1, OMT-2* Ivar Jacobson y otros: OOSE

- Aportes importantes * Rebeca Wirfs-Brock * Shlaer y Mellor - Aportes importantes No-OO * Harrel: Diagramas de estados

* Work flow: Diagramas de Actividades

Page 25: Analisis Y DiseñO Orientado Objetos

UML, ¿Método o Lenguaje de Modelado?

Un modelo es expresado en un lenguaje de modelado. Un lenguaje de modelado consiste de vistas, diagramas, elementos de modelo y los símbolos utilizados en los modelos y un conjunto de mecanismos generales o reglas que indican cómo utilizar los elementos. Las reglas son sintácticas, semánticas y pragmáticas.

Page 26: Analisis Y DiseñO Orientado Objetos

Proceso de Unificación

Page 27: Analisis Y DiseñO Orientado Objetos

Partes de UML

• Vistas– Conjunto de diagramas

• Diagramas– 9 tipos de grafos– Combinan los elementos del modelo

• Elementos del modelo– Clases, objetos, mensajes, relaciones

• Mecanismos generales– Comentarios, información, semántica, extensiones y

adaptaciones

Page 28: Analisis Y DiseñO Orientado Objetos

VISTAS

• Vista de Casos de Uso– Funcionalidad externa del sistema

• Vista Lógica– Estructura estática y conducta dinámica del sistema

• Vista de Componentes (software)– Organización de las componentes

• Vista de Concurrencia– Comunicaciones y sincronización

• Vista de Despliegue (deployment)– Arquitectura física

Page 29: Analisis Y DiseñO Orientado Objetos

Las Vistas en UML

Casosuso

lógica

compconc

despliegue

Page 30: Analisis Y DiseñO Orientado Objetos

Casos de uso

Los casos de uso requieren tener al menos un conocimiento parcial

de los requerimientos del sistema. Un caso de uso es un documento

narrativo que describe la secuencia de eventos de un actor (agente

externo) que utiliza un sistema para completar un proceso.

Vista de Casos de usoVista de Casos de uso

Page 31: Analisis Y DiseñO Orientado Objetos

El formato para la descripción de los casos de uso es el siguiente:

Caso de uso: Nombre

Actores: Lista de actores (agentes externos)

Propósito: Intención del caso de uso

Resumen: Repetición del caso de uso de alto nivel o alguna síntesis.

Tipo: Primario, secundario u opcional. Esencial o real.

Referencias

cruzadas: Casos de uso relacionados y funciones relacionadas del sistema.

Descripción: Descripción del caso de uso.

Vista de Casos de usoVista de Casos de uso

Page 32: Analisis Y DiseñO Orientado Objetos

Ejemplo: el siguiente caso de uso describe el proceso de comprar artículos en una tienda, a través de un terminal de punto de venta.

Caso de uso: Comprar productosActores: Cliente, cajeroTipo: PrimarioDescripción: Un Cliente llega a la caja registradora con los artículos que va a comprar. El Cajero registra los artículos y cobra el importe. Al terminar la operación, el Cliente se marcha con los productos.Es conveniente comenzar con los casos de uso de más alto nivel paralograr comprender mejor los principales procesos globales.

Vista de Casos de usoVista de Casos de uso

Page 33: Analisis Y DiseñO Orientado Objetos

Diagrama UML de casos de uso para el sistema de punto de venta:

Este esquema tiene por objeto ofrecer un diagrama contextual que nos permita conocer rápidamente los actores externos de un sistema y las formas básicas en que éstos lo utilizan.

Vista de Casos de usoVista de Casos de uso

Page 34: Analisis Y DiseñO Orientado Objetos

Un diagrama de casos de uso más refinado seria el siguiente:

Vista de Casos de usoVista de Casos de uso

Page 35: Analisis Y DiseñO Orientado Objetos

Casos de Uso

• Dirigida al Análisis de Requisitos (lo que quiere hacer el usuario)• Describe la funcionalidad del sistema, como la perciben los actores

externos• Dirige el desarrollo de las otras vistas• Define los objetivos finales del sistema• Permite validar el sistema• Actor externo:

– Usuario– Otro sistema

• Se plasma en diagramas– de Casos de Uso– de Actividad

Page 36: Analisis Y DiseñO Orientado Objetos

Vista Lógica

• Describe la funcionalidad interna• Dirigida a diseñadores y desarrolladores• Define la estructura estática

– Clases, objetos y relaciones

• Define las colaboraciones dinámicas– Mensajes y funciones

• Propiedades adicionales– Persistencia y concurrencia– Interfaces y estructura interna de las clases

Page 37: Analisis Y DiseñO Orientado Objetos

• Se plasma en diagramas– Estáticos

• de Clases• de Objetos

– Dinámicos• de Estado• de Secuencia• de Colaboración• de Actividad

Vista Lógica

Page 38: Analisis Y DiseñO Orientado Objetos

Vista de Componentes

• Describe los módulos del sistema y sus dependencias

• Dirigida a desarrolladores

• Se plasma en diagramas– de Componentes

Page 39: Analisis Y DiseñO Orientado Objetos

Vista de Concurrencia

• Describe la división del sistema en procesos y procesadores

• Dirigida a desarrolladores e integradores• Resuelve problemas de

– uso eficiente de los recursos– ejecución en paralelo (hilos)– comunicación y sincronización de hilos

• Se plasma en diagramas– dinámicos– de Componentes– de Despliegue

Page 40: Analisis Y DiseñO Orientado Objetos

Vista de Despliegue

• Muestra la distribución física del sistema (ordenadores, dispositivos) y sus conexiones

• Dirigida a desarrolladores, integradores y probadores

• Se plasma en– el diagrama de Despliegue

– el mapa de asignación de componentes a la arquitectura física

Page 41: Analisis Y DiseñO Orientado Objetos

Tipos de Diagramas

• De Casos de Uso• Estáticos

– de Clases– de Objetos

• Dinámicos– de Estado– de Secuencia– de Colaboración– de Actividad

• De Componentes• De Despliegue (deployment)

Page 42: Analisis Y DiseñO Orientado Objetos

Diagramas de secuenciaDiagramas de secuencia

El diagrama de secuencia de un sistema muestra gráficamente los eventos que originan los actores y que impactan al sistema.

La creación de los diagramas de secuencia depende de la formulación de los casos de uso.

Durante la operación del sistema, los actores generan eventos, solicitando alguna operación a cambio. Ejemplo: cuando un cajero ingresa un código de barras de un artículo, está pidiendo al sistema de TPV que registre esa compra. Con este evento se inicia una operación en el sistema.

Page 43: Analisis Y DiseñO Orientado Objetos

Antes de hacer el diseño lógico de la aplicación de software,

es conveniente investigar y definir su comportamiento como

una "caja negra".

Se estudia el comportamiento del sistema, desde la

perspectiva de qué es lo que hace, y no de cómo lo hace.

Diagramas de secuenciaDiagramas de secuencia

Definición: El diagrama de secuencia de un sistema es una representación que muestra, en determinado escenario de un caso de uso, los eventos generados por actores externos, su orden y los eventos internos del sistema. En esta fase del proyecto, el sistema mismo es una caja negra.

Page 44: Analisis Y DiseñO Orientado Objetos

Recordemos el caso de uso Comprar productos:

Caso de uso: Comprar productos Actores: Cliente, cajero Tipo: Primario Descripción: Un Cliente llega a la caja registradora con los artículos que va a comprar. El Cajero registra los artículos y cobra el importe. Al terminar la operación, el Cliente se marcha con los productos.

Diagramas de secuenciaDiagramas de secuencia

Page 45: Analisis Y DiseñO Orientado Objetos

El diagrama de secuencia del caso de uso ComprarProductospodría ser el siguiente:

Diagramas de secuenciaDiagramas de secuencia

Page 46: Analisis Y DiseñO Orientado Objetos

Diagramas de colaboraciónDiagramas de colaboración

Diagramas de colaboración

Los diagramas de interacción (diagramas de secuencia y diagramas

de colaboración) explican gráficamente cómo los objetos interactúan

a través de mensajes para realizar las tareas.

Antes de definir estos diagramas, hay que generar el modelo

conceptual y los casos de uso reales (estos últimos se generan a

partir de los casos de uso definidos en el análisis).

Page 47: Analisis Y DiseñO Orientado Objetos

Diagramas de colaboraciónDiagramas de colaboración

Los diagramas de colaboración explican gráficamente las interacciones entre las instancias del modelo (objetos). Por ejemplo:

Page 48: Analisis Y DiseñO Orientado Objetos

Diseño de la solución

Para cada evento del sistema se debe construir un diagramade colaboración cuyo mensaje inicial sea el de sus eventos.En el caso del punto de venta, tendremos tres diagramas,uno para cada evento: pasarProducto, terminarVenta, yefectuarPago.

Diagramas de colaboraciónDiagramas de colaboración

Page 49: Analisis Y DiseñO Orientado Objetos

El diagrama de colaboración del caso de uso pasarProducto seríael siguiente:

Diagramas de colaboraciónDiagramas de colaboración

Page 50: Analisis Y DiseñO Orientado Objetos

Diagramas de clasesDiagramas de clases

Page 51: Analisis Y DiseñO Orientado Objetos

Análisis y Diseño OOAnálisis y Diseño OO

Las herramientas usadas en la etapa de análisis (investigacióndel problema) se pueden resumir en la siguiente tabla.

Herramienta de análisis Preguntas que contesta

Casos de uso ¿Cuáles son los procesos del dominio?

Modelo conceptual ¿Cuáles son los conceptos, los términos?

Diagramas de secuencia ¿Cuáles son los eventos y las operac. del sistema?

Page 52: Analisis Y DiseñO Orientado Objetos

Análisis y Diseño OOAnálisis y Diseño OO

Page 53: Analisis Y DiseñO Orientado Objetos