Introducción Metodologías emergentes ADOO Conceptos históricos Análisis estructurado de sistemas Análisis orientado a objetos Ventajas Proceso Identificación y definición de objetos Definición y organización de clases Metodologías emergentes Análisis y Diseño Orientado a Objetos 1
Introducción Conceptos Históricos Importancia por comprender y comunicar los requisitos de un sistema antes de programarlo. Se destacaban métodos basados en descripciones textuales realizadas sobre el papel. Ambigüedad Dificultaban las modificaciones No servían para apoyar el diseño de sistemas grandes Surgen: El análisis estructurado El análisis de sistemas basado en objetos Análisis y Diseño Orientado a Objetos 2
El Análisis Estructurado Introducción El Análisis Estructurado Fue desarrollado en los años 60 e introdujo un método definitivo y más manejable para el análisis de sistemas Basado en descomponer componentes funcionales Los subprogramas podían servir como mecanismo de abstracción para construir grandes y complejos sistemas El proceso más conocido es la descomposición funcional, donde las áreas funcionales se dividen en Procesos y estos son descompuestos en pasos o procedimientos comprensibles por diseñadores y usuarios finales. Análisis y Diseño Orientado a Objetos 3
El Análisis Estructurado Introducción El Análisis Estructurado Procesos Subprocesos (piezas procedimentales) - Planificación Comercial - Validación - Financiación del cliente - Planificación - Comprobación del producto - Aceptación de disponibilidad - Producción de pedidos del producto - Investigación - Control - Completar - Procedimiento - Ventas de existencias pedidos de error - Distribución - Atención de - Facturación - Comprobación de - Contabilidad pedidos - Entrega de pedidos pendientes - Personal - Empaquetamiento de pedidos - Crear pedido del - Transporte cliente Areas funcionales Procesos Partes de un proceso Análisis y Diseño Orientado a Objetos 4
El Análisis Estructurado Introducción El Análisis Estructurado Gráfico estructural Módulos funcionales específicos Activación de estos módulos por otros módulos Especificaciones finales que se adaptan a estructuras de secuencia, selección y control repetitivo (Lenguajes procedimentales) La descomposición funcional, la identifican con el nombre de autores tales como: Yourdon, Constantine, DeMarco y Gane. Los programadores se concentran en operaciones Poca atención a los datos, más código Análisis y Diseño Orientado a Objetos 5
Análisis Orientado a Objetos Introducción Análisis Orientado a Objetos Popularizado por Chen en los 80’s (precursor del AOO) Diagrama Entidad-Relación Atributos Clasificarlos (Categorías) Agregando relaciones Jerarquía de subtipos y Objetos asociados Carece de: Encapsulación, Herencia, Paso de mensajes Análisis y Diseño Orientado a Objetos 6
Método Sistema-Proceso Introducción Método Sistema-Proceso Sally Shalaer y Stephen Mellor (1988) Objetos y Atributos Ciclo de vida de los objetos (modelos de estado) sucesos Definición de procesos Componentes : Lo que está haciendo Aquello sobre lo que el proceso se está ejecutando En que momento se realiza Análisis y Diseño Orientado a Objetos 7
Método Orientado a Objetos Introducción Método Orientado a Objetos El análisis de sistemas orientado a objetos es un nuevo método que realza la definición de las características y comportamiento dentro de un sistema de objetos. Características: Reduce el código derivado de los datos Permanece estable ante el cambio de requisitos No énfasis Entrada-Salida Enfasis en el contenido de las entidades No agrupa funciones, agrupa métodos Paso de mensajes determina la sequencia de funcionamiento Análisis y Diseño Orientado a Objetos 8
Tres Métodos de Análisis de Sistemas Introducción Tres Métodos de Análisis de Sistemas Descomposición Suceso-Respuesta Orientado a Objetos funcional 1. Proceso 1. Control 1. Datos 2. Control 2. Proceso 2. Control 3. Datos 3. Datos 3. Proceso Análisis y Diseño Orientado a Objetos 9
Análisis Estructurado Vs Orientado a Objetos Introducción Análisis Estructurado Vs Orientado a Objetos Análisis y Diseño Análisis y Diseño Estructurado Orientado a Objetos Descendente: Descomposición funcional Ascendente: Composición de basada en subprocesos de procesos de clases basada en abstracción de niveles superiores datos Análisis y Diseño Orientado a Objetos 10
Ventajas del análisis y diseño orientado a objetos Introducción Ventajas del análisis y diseño orientado a objetos Centrado en : La identificación de objetos y la definición de clases La organización jerarquizada de clases La reutilización de clases La construcción de marcos estructurales de aplicación a partir de librerías de clases Análisis y Diseño Orientado a Objetos 11
Proceso de análisis y diseño orientado a objetos Introducción Proceso de análisis y diseño orientado a objetos El resultado de un diseño orientado a objetos es una jerarquía de clases Estructuras de control propias Clase Módulo Datos Problema en forma natural Objetos y métodos asociados Objetos se agrupan en Clases se agrupan en Subclases Nivel superior es el marco estructural _________________________ DSOO - María Eugenia Valencia 12
Pasos fundamentales del análisis y diseño orientado a objetos Introducción Pasos fundamentales del análisis y diseño orientado a objetos Identificación y definición de objetos y clases Organización de relaciones entre clases Extracción de estructuras en una jerquía de clases Construcción de librerías de clases y marcos estructurales de aplicación reutilizables _________________________ DSOO - María Eugenia Valencia 13
Identificación y definición de objetos Introducción Identificación y definición de objetos El diseño de un sistema orientado a objetos comienza con los objetos. Identificación de objetos Inspección gramatical de documentos Derivación a partir de diagramas de flujo y de relación de entidades Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 14
Directrices para ayudar a identificar y definir Clases y Métodos Introducción Directrices para ayudar a identificar y definir Clases y Métodos Modelar con clases las entidades que ocurren de forma natural en el problema Diseñar métodos de finalidad única Diseñar un nuevo método al encontrar una oportunidad de ampliar uno existente Evitar métodos extensos Guardar como variables de instancia los datos necesitados por más de un método, o por una subclase Diseñar pensando en una librería de clases, no pensar solo en la aplicación actual. Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 15
Cúando crear un clase? Cúando añadir un método? Introducción Cúando crear un clase? Cúando añadir un método? Dicha nueva clase representa una abstracción significativa del problema Sea posible que los servicios que proporciona sean utilizados por varias clases más Su conducta sea inherente compleja La clase o método haga poco uso de las representaciones de sus valores matemáticos Si se presentara como un método de otra clase, pocos usuarios de ésta la invocarían Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 16
Introducción Definición y organización de clases Objetos Clases Biblioteca de clases Algunas metodologías para mejorar las jerarquías Mejorar los protocolos estándar Construcción de clases abstractas Identificación de marcos estructurales (frameworks) Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 17
Algunas metodologías para mejorar las jerarquías Introducción Algunas metodologías para mejorar las jerarquías Mejorar los protocolos estándar: nombres y comportamiento de mensajes y métodos Asignar a mensajes y métodos nombres similares Reelaborar cualquier código que compruebe de forma explícita la clase de un objeto. (Clases que puedan enviar un mensaje directamente a un objeto) Reducir el número de argumentos descomponiendo un mensaje en varios Reducir el tamaño de los métodos Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 18
Algunas metodologías para mejorar las jerarquías Introducción Algunas metodologías para mejorar las jerarquías Construcción de clases abstractas Identificar mensajes y métodos comunes y transladarlos a una superclase Eliminar de una superclase aquellos métodos que son ignorados frecuentemente, en su lugar que los hereden subclases Acceder a todas las variables solamente mediante el envío de mensajes Reelaborar las subclases para construir especializaciones Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 19
Algunas metodologías para mejorar las jerarquías Introducción Algunas metodologías para mejorar las jerarquías Identificación de marcos estructurales (frameworks) Objetivo último del diseño orientado a objetos, nivel más alto de abstracción. Identificar subclases que realicen el mismo método de formas diferentes Identificar y dividir clases en las que algunos métodos solo accedan a ciertas variables de instancia y otros métodos sólo accedan a otras Enviar mensajes a otras clases en lugar de hacerlo a la propia clase Identificar conjunto de métodos combinados en una clase sólo para acceder a variables de instancia comunes (translado de métodos) Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 20
Defectos comunes en el diseño Introducción Defectos comunes en el diseño Modificación directa. Clases que hacen modificaciones directas a los valores de datos en otras clases son una violación directa de la encapsulación. Tales uniones se hacen para diseños inflexibles. Demasiada responsabilidad. Clases con demasiada responsabilidad son dificiles de entender y de usar. La responsabilidad debe ser repartida entre pequeños paquetes y distribuida. No responsabilidad. Clases con no responsabilidad no tienen propósito. A menudo se presenta cuando los diseñadores igualan existencia física con existencia de diseño lógico. “El dinero no es un objeto”. Clases con responsabilidad no usada. Como resultado de componentes de software sin pensar en como ellos interactuan. Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 21
Modelos ó Metodologías Orientadas a Objetos Introducción Modelos ó Metodologías Orientadas a Objetos GOOD (General Object-Oriented Software Development) HOOD (Hierarchical Object-Oriented Design MOOD (Multiple-View Object-Oriented Methodology) OOA (Object Oriented Analysis) OMT (Object Modeling Technique) UML (Unified Modeling Language) Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 22
Introducción GOOD (General Object-Oriented Software Development), utiliza diagramas de flujo de datos en la fase de especificación para identificar entidades abstractas que se convierten en objetos en la fase de diseño. HOOD (Hierarchical Object-Oriented Design), es un derivado del método de Booch, desarrollado por la agencia europea del espacio. Comienza por descomponer el problema en objetos y métodos, a continuación se inicia la formalización y organización de objetos utilizando gráficos basados en los diagramas de Booch, la descripción formal se completa usando Leng.Descrpformal.Ada. No tiene clases ni herencia. MOOD (Multiple-View Object-Oriented Methodology), comienza con un modelo estructurado (Ward/Mellor). Permite el paradigma orientado a objetos pero exige que los procesos concurrentes se expresen como tareas convenio de Ada y no de objetos. Ejemplo usando el método de booch _________________________ DSOO - María Eugenia Valencia 23