38
Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Embed Size (px)

Citation preview

Page 1: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Fundamentos de Ingeniería de Software

Modelo de DiseñoDiseño Orientado a Objetos

Page 2: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Modelos de desarrollo Orientación a objetos

• Primero se empezaron a utilizar los lenguajes de programación estructurados, que permiten la descomposición modular de los programas; esto condujo a la adopción de técnicas de diseño estructuradas y de ahí se paso al análisis estructurado.

• El paradigma orientado a objetos ha seguido el mismo camino: el uso de la Programación Orientada a Objetos (POO) ha modificado las técnicas de diseño para adaptarlas a los nuevos lenguajes y ahora se están empezando a utilizar técnicas de análisis basadas en esta nueva forma de desarrollar software.

Page 3: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

• Describen e implementan los sistemas de información desde un punto de vista más real.

Métodos orientados a objeto

Page 4: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

La cultura implícita en los modelos usuales de ciclo de vida está basada en

el “proyecto” ( y “Beneficios”),

mientras que en el desarrollo orientado a objetos está basada en

el “producto” (e “inversión”).

Modelos de desarrollo Orientación a objetos

Page 5: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

• Reusabilidad: Los nuevos Sistemas OO pueden ser creados utilizando otros sistemas OO ya existentes.

• Extensibilidad: Los nuevos sistemas OO son fácilmente ampliables, sin tener que retocar los módulos empleados en su construcción.

Términos más importantes en la orientación a objetos

Page 6: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Las características principales del enfoque orientado a objetos son, en primer lugar:

Identidad:

• Los datos se organizan en entidades discretas y distinguibles llamadas objetos.

• Estos objetos pueden ser concretos o abstractos, pero cada objeto tiene su propia identidad.

Dicho de otra forma: dos objetos son distintos incluso aún en el caso de que los valores de todos sus atributos coincidan.

Dos manzanas pueden ser totalmente idénticas pero no por eso pierden su identidad: nos podemos comer una u otra.

Características principales del enfoque orientado a objetos

Page 7: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Clasificación:

Los objetos que tengan los mismos atributos y comportamiento se agrupan en clases.

Todas las manzanas tienen una serie de atributos comunes: tamaño, peso, grado de maduración, y un comportamiento común: podemos coger una manzana, moverla o comerla.

Los valores de los atributos podrán ser distintos para cada una de ellas, pero todas comparten los mismos atributos y comportamiento (las operaciones que se pueden realizar sobre ellas).

Una clase es una abstracción que describe propiedades (atributos y comportamiento) relevantes para una aplicación determinada, ignorando el resto.

Características principales del enfoque orientado a objetos

Page 8: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

El polimorfismo permite que una misma operación pueda llevarse a cabo de forma diferente en clases diferentes.

Por ejemplo, la operación mover, es distinta para una pieza de ajedrez que para una ficha de damas, pero ambos objetos pueden ser movidos.

Una operación es una acción o transformación que realiza o padece un objeto. La implementación específica de una operación determinada en una clase determinada se denomina método.

Polimorfismo

Page 9: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

El concepto de herencia se refiere al compartir atributos y operaciones basada en una relación jerárquica entre varias clases.

Una clase puede definirse de forma general y luego refinarse en sucesivas subclases. Cada clase hereda todas las propiedades (atributos y operaciones) de su superclase y añade sus propiedades particulares.

La posibilidad de agrupar las propiedades comunes de una serie de clases en una superclase y heredar estas propiedades en cada una de las subclases es lo que permite reducir la repetición de código en el paradigma OO y es una de sus principales ventajas.

Herencia

Page 10: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

• Fase Planificación y Especificación de Requerimientos

1. Definir el Plan-Borrador.2. Crear el Informe de Investigación Preliminar.3. Definir los Requerimientos.4. Registrar Términos en el Glosario. 5. Implementar un Prototipo. (opcional)6. Definir Casos de Uso (de alto nivel y esenciales).7. Definir el Modelo Conceptual-Borrador. 8. Definir la Arquitectura del Sistema-Borrador. 9. Refinar el Plan.

Etapas del Desarrollo OO

Page 11: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

• Fase de Construcción: Análisis

1. Definir Casos de Uso Esenciales en formato expandido. 2. Refinar los Diagramas de Casos de Uso.3. Refinar el Modelo Conceptual.4. Refinar el Glosario. 5. Definir los Diagramas de Secuencia del Sistema.6. Definir Diagramas de Estados. (opcional)

Etapas del Desarrollo OO

Page 12: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

• Fase de Construcción: Diseño

1. Definir los Casos de Uso Reales.2. Definir Informes e Interfaz de Usuario.3. Refinar la Arquitectura del Sistema.4. Definir los Diagramas de Interacción.5. Definir el Diagrama de Clases de Diseño. 6. Definir el Esquema de Base de Datos.

• Fases de Implementación y Pruebas

Etapas del Desarrollo OO

Page 13: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientados a Objetos

• Consiste en representar un modelo de datos que pueda ser fácilmente implantable con algún lenguaje de programación orientado a objetos.

• Los objetos son componentes potencialmente reutilizables, lo que hace que el software sea más fácil de mantener.

Page 14: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objeto• El proceso general para el diseño orientado a

objetos tiene varias etapas:

1.Comprender y definir el contexto y los modos de utilización del sistema.

2.Diseñar la arquitectura del sistema.

3.Identificar los objetos principales en el sistema.

Page 15: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objetos

4. Desarrollar los modelos de diseño.

5. Especificar las interfaces de los objetos.

• No es un proceso sistematizado al 100%, por lo que necesita refinarse con varias iteraciones.

Page 16: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objetos

• El primer paso consiste en identificar los tipos de relaciones definidos en el sistema, los cuales pueden ser internos y externos. Estas relaciones pueden ser dos:

• El contexto del sistema: es un modelo estático que describe a los otros sistemas en ese entorno.

Page 17: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objetos• El modelo que el sistema utiliza: es un modelo

dinámico que describe cómo interactúa el sistema con su entorno.

• Con el diseño de contexto se puede crear fácilmente el diseño arquitectónico de la aplicación.

• Existen diversas técnicas para identificar objetos:

Page 18: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objetos

• Utilizar un análisis gramatical de la descripción en lenguaje natural de un sistema.

• Utilizar entidades tangibles (cosas).

• Utilizar un enfoque de comportamiento.

• Utilizar un análisis basado en escenarios.

Page 19: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objetos

• Existen dos tipos de modelos de diseño para describir un diseño orientado a objetos:

• Modelos Estáticos.

• Modelos Dinámicos.

• Ejemplos de algunos modelos:

Page 20: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Diseño Orientado a Objetos

• Los modelos de subsistemas

• Los modelos de secuencia

• Los modelos de máquinas de estado

• La encapsulación de las clases hace que los sistemas evolucionen de forma rápida y sencilla.

Page 21: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Métodos Orientado a Objetos

• Existen diversas metodologías para la realización de análisis y diseño orientado a objetos como:

• Método de Booch: abarca un microproceso de desarrollo y un macroproceso de desarrollo.

• Método OMT (Rumbaugh)

Page 22: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Métodos Orientado a Obejtos

• Objectory (Jacobson)

• Método de Coad-Yourdon

• Método UML:

• Análisis: tiene 5 diferentes vistas con diferentes diagramas en cada una de ellas.

Page 23: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Métodos Orientado a Objetos

• Vista usuario: representa el sistema (producto) desde la perspectiva del usuario. Se suele utilizar diagramas de casos de uso.

• Vista estructural: modela los datos y la funcionalidad del sistema; es decir, la estructura estática (clases, objetos y relaciones).

Page 24: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Métodos Orientado a Objetos• Vista del comportamiento: representa los

aspectos dinámicos o de comportamiento del sistema. También muestra las interacciones o colaboraciones entre los diversos elementos estructurales descritos en vistas anteriores.

• Vista de implementación Los aspectos estructurales y de comportamiento se representan aquí tal y como van a ser implementados.

Page 25: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

Métodos Orientado a Objetos

• Vista del entorno: aspectos estructurales de comportamiento en el que el sistema a implementar se representa.

• En cuestión de diseño se tienen dos actividades principales:

• Diseño de sistema. • Diseño de objetos.

Page 26: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

Se emplean clases para definir las entidades

Clase -> Define estructura y compotamiento de objetos

Esquema OO -> Conjunto de clases.

Modelo -> Aspecto de la realidad y se construye de modo que nos ayude a comprender a esta.

Page 27: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

Mundo real

Modelo

ProgramaCódigo

Análisis y diseño

Page 28: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

Dimensiones que describen un sistema de objetos

Dimensión estructural de los objetos -> Propiedades estáticas

Dimensión dinámica del comportamiento -> Propiedades activas, comportamiento individual y colaboración entre objetos.

Dimensión funcional de los requerimientos -> Propiedades de transformación del sistema

Page 29: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

Las actividades que se deben seguir para llevar un MOO son:

Identificar clases, objetos y atributos

Asociar estáticamente los objetos

Describir el comportamiento de los objetos

Definir la colaboración del comportamiento de los objetos

Organizar las clases en jerarquías de herencia

Agregar y/o particionar las clases por niveles de abstracción

Page 30: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

ANÁLISIS ORIENTADO A OBJETOS

Se basa en conceptos sencillos (objetos y atributos , el todo y las partes).

El paradigma orientado a objetos ha evolucionado.

Lenguajes de programación estructurados

Análisis estructurado

Programación orientada a objetos (POO)

Page 31: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

ANÁLISIS ORIENTADO A OBJETOS

El AOO ofrece un enfoque nuevo para el análisis de requisitos de sistemas software .

AOO consigue una abstracción mayor que el Análisis estructurado.

Antes de empezar a diseñar un sistema es necesario realizar un estudio previo de este.

La ventaja del AOO es que se basa en la utilización de objetos como abstracciones del mundo real.

Page 32: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

ANÁLISIS ORIENTADO A OBJETOS

En AOO los objetos encapsulan tanto atributos como procedimientos e incorpora otros conceptos (herencia, polimorfismo, etc).-> Reutilización de código

El uso de AOO puede facilitar mucho la creación de prototipos, y las técnicas de desarrollo evolutivo de software

Objetos reutilizables -> catálogo de objetos.

Page 33: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

VENTAJAS DEL AOO

Dominio del problema -> Permite pasar del dominio del problema al modelo del sistema.

Comunicación: -> Cliente / Analista

Consistencia -> Reduce distancias entre datos y procesos.

Expresión de características comunes ->

Reutilización = Mecanismos efectivos

Resistencia al cambio -> Facilidad de realizar modificaciones.

Reutilización.

Page 34: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

TECNICA DE MODELADO DE OBJETOS (OMT)

Se basa en aplicar el enfoque orientado a objetos a todo el proceso de desarrollo de un sistema software, desde el análisis hasta la implementación.

La metodología consiste en construir un modelo del dominio de aplicación e ir añadiendo detalles a este modelo durante la fase de diseño.

Page 35: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

FASES DE OMT

Conceptualizacion

Inicia con análisis de empresa o negocio.

Se deben resolver las preguntas:

Cual es la aplicación?

Que problemas deben ser resueltos?

Donde será usado el sistema?

Cuando será requerido el sistema?

Para que es necesario el sistema?

Page 36: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

FASES DE OMT

Analisis

Especifica las necesidades que se deben satisfacer.

Se determina el modelo de objeto.

Se busca un nivel de abstracción para modelar subsistemas.

Se definen diccionarios de datos para los objetos modelados

Page 37: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

FASES DE OMT

Diseño

Se crean estrategias, arquitecturas para el sistema y sus políticas, teniendo en cuenta:

Elegir una implementación para control externo

Elegir el paradigma de administración de Base de datos.

Determinar oportunidades para el reuso

Seleccionar estrategias para interacción de datos

Detallar el diseño

Page 38: Fundamentos de Ingeniería de Software Modelo de Diseño Diseño Orientado a Objetos

MODELOS ORIENTADOS A OBJETOS

FASES DE OMT

Implementación

Se instala el nuevo sistema para su utilización.

El sistema debe ser flexible y extensible