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.
Métodos orientados a objeto Describen e implementan los sistemas de información desde un punto de vista más real.
Modelos de desarrollo Orientación 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”).
Términos más importantes en la orientación 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.
Características principales del enfoque 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 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.
Polimorfismo 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.
Herencia 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.
Etapas del Desarrollo OO Fase Planificación y Especificación de Requerimientos Definir el Plan-Borrador. Crear el Informe de Investigación Preliminar. Definir los Requerimientos. Registrar Términos en el Glosario. Implementar un Prototipo. (opcional) Definir Casos de Uso (de alto nivel y esenciales). Definir el Modelo Conceptual-Borrador. Definir la Arquitectura del Sistema-Borrador. Refinar el Plan.
Etapas del Desarrollo OO Fase de Construcción: Análisis Definir Casos de Uso Esenciales en formato expandido. Refinar los Diagramas de Casos de Uso. Refinar el Modelo Conceptual. Refinar el Glosario. Definir los Diagramas de Secuencia del Sistema. Definir Diagramas de Estados. (opcional)
Etapas del Desarrollo OO Fase de Construcción: Diseño Definir los Casos de Uso Reales. Definir Informes e Interfaz de Usuario. Refinar la Arquitectura del Sistema. Definir los Diagramas de Interacción. Definir el Diagrama de Clases de Diseño. Definir el Esquema de Base de Datos. Fases de Implementación y Pruebas
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.
Diseño Orientado a Objeto El proceso general para el diseño orientado a objetos tiene varias etapas: Comprender y definir el contexto y los modos de utilización del sistema. Diseñar la arquitectura del sistema. Identificar los objetos principales en el sistema.
Diseño Orientado a Objetos Desarrollar los modelos de diseño. Especificar las interfaces de los objetos. No es un proceso sistematizado al 100%, por lo que necesita refinarse con varias iteraciones.
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.
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:
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.
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:
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.
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)
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.
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).
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.
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.
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.
MODELOS ORIENTADOS A OBJETOS Mundo real Análisis y diseño Modelo Código Programa
MODELOS ORIENTADOS A 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 Dimensiones que describen un sistema de 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
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)
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.
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.
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.
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.
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?
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
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
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