Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
24 vistas5 páginas

Tema 1 - IS2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 5

Tema 1 Modelo de Objetos

En este tema se introduce el modelo de objetos desde la perspectiva de analistas / diseñadores,


independiente a lenguajes de modelado o programación concreto.
1.Complejidad del software:
Causas:
- Complejidad en el dominio del problema (altos requisitos/comunicación/modificación)
- Dificultad en la gestión del proceso de desarrollo (equipo/código)
- Flexibilidad del software
- Problemas para caracterizar sistemas discretos (control/automatización – estados vs pruebas)
Consecuencias:
- Retrasos en los proyectos
- Dificultad en el mantenimiento
Booch  La terea del equipo de desarrollo de software es ofrecer ilusión de complejidad.

2.Características de sistemas complejos: (5)


1. La complejidad toma forma de jerarquía (sistemas divididos en subsistemas)
2. Elección de componentes primitivos arbitraria
3. Enlaces internos entre componentes más fuertes que los enlaces entre sistemas
4. La descomposición jerárquica de los sistemas complejos tiende a ajustarse en una serie de patrones
5. Un sistema complejo que funciona ha evolucionado a partir de un sistema más simple que
funcionaba

3.Descomposición, abstracción y jerarquía: (claves para el diseño)


Descomposición: Descomponer el sistema en partes más pequeñas a las que se le aplica el mismo
criterio hasta llegar a los elementos primitivos.
Abstracción: Se utiliza para enfrentarse a la complejidad. Permite concentrarse en un nivel de
generalización independiente de los detalles de nivel inferior. También permite trabajar con conceptos
y términos que son familiares en el entorno del problema sin tener que transformarlos en una
estructura poco familiar.
La visión OO facilita la abstracción al ver los objetos como abstracciones del mundo real.
Jerarquía: Caracteriza las relaciones existentes entre subsistemas facilitando la comprensión de un
sistema complejo.
Estructuras fundamentales:
- Estructura de objetos: Ilustra como diferentes objetos colaboran entre sí a través de patrones
de interacción  Mecanismos.
- Estructura de clases: Resalta la estructuración y componentes comunes en el interior de un
sistema.
Arquitectura de un sistema: (Estructura de Clases + Estructura de Objetos)
Una arquitectura es el conjunto de decisiones significativas sobre la organización de un sistema de
software, la selección de los elementos estructurales y sus interfaces por los que el sistema está
compuesto junto con su comportamiento como se especifica en sus colaboraciones entre sus
elementos, la composición de estos elementos estructurales y del comportamiento en subsistemas
progresivamente más grandes y el estilo de arquitectura que guía la organización.
4.Sistema diseños complejos:
Diseño
Aproximación disciplinada que proporciona una solución para un problema determinado, suministrando
así un camino desde los requisitos hasta la implementación
Modelo
Un modelo es una abstracción semántica completa de un sistema. No se debe confundir con modelo de
objetos en la acepción de paradigma de objetos (POO).
La ventaja de disponer de un modelo es que se ataca el problema del desarrollo de software desde los
principios de descomposición, abstracción y jerarquía.
Utilidades:
- Capta y enumera exhaustivamente los requisitos y el dominio de conocimiento de forma que los
implicados puedan entenderlo y estar de acuerdo
- Ayuda a pensar el diseño de un sistema
- Permite capturar decisiones de diseño en una forma complementaria a partir de los requisitos
- Permite generar productos aprovechables para el trabajo
- Permite organizar, encontrar, filtrar, recuperar, examinar y corregir la información en grandes
sistemas
- Permite explorar económicamente múltiples soluciones
- Permite domesticar sistemas complejos
Usos:
- Guía al proceso de pensamiento
- Especificación abstracta de la estructura esencial de un sistema
- Especificación completa de un sistema final
- Ejemplo de sistema típico o posible
- Descripción completa o parcial de un sistema
Elementos Necesarios: Notación / Semántica / Contexto
Significado:
- Un modelo es un generador de potenciales configuraciones de sistemas
- Un modelo es una descripción de la estructura genérica y del significado de un sistema
- Un modelo es una abstracción de un sistema

En un sistema de software nosotros modelaremos: (sistema según el modelo de objetos)


1. La relación de los usuarios con el sistema
2. El comportamiento del sistema, con independencia de las clases y/u objetos implicados
3. La estructura de clases
4. La estructura e interacción de objetos
5. Los posibles estados de los objetos de una clase
6. Las relaciones que existen entre las declaraciones de comportamiento y sus implementaciones
físicas
7. La arquitectura física del sistema y su relación con los elementos de la arquitectura lógica
5.El modelo de Objetos:
Es una visión de la construcción de software que abarca principios de:
Abstracción / Encapsulación / Modularidad / Jerarquía / Tipos / Concurrencia / Persistencia
La POO  Encapsulación, herencia, polimorfismo
Un lenguaje OO soporta objetos (abstracciones) con un nombre y un estado local oculto. Dichos objetos
tienen un tipo asociado y los tipos pueden heredar atributos de los supertipos.

Diseño OO (DOO) Análisis OO (AOO)


Método de diseño que abarca el proceso de Es un método de análisis que examina los
descomposición OO y una notación para describir requisitos desde la perspectiva de clases y objetos
los modelos de los sistemas que se diseña que se encuentran en el vocabulario del dominio
del problema

6.Elementos del modelo de objetos:


Elementos fundamentales:
1.Abstracción: Denota las características principales de un objeto que lo distinguen de los demás y
proporciona así fronteras conceptualmente más nítidas. Existen distintos tipos de abstracción:
- De entidades: modelo de entidad de dominio.
- De acciones: conjunto de operaciones generalizado llevado a cabo por una entidad.
- De máquinas virtuales o interfaces
- Abstracción de coincidencia: almacena un conjunto de operaciones sin relación entre sí.
Lleva a un modelo contractual de la programación, donde el contrato declara las responsabilidades del
objeto. De esta forma se puede caracterizar los objetos en función de los servicios que presta a otros
objetos. El cliente es un objeto que usa los recursos de otro objeto llamado servidor
2.Encapsulación: Complementario a la abstracción. Se centra en el comportamiento observable de un
objeto y en la implementación que da lugar al comportamiento. Se logra mediante la ocultación de la
información (detalles no esenciales como implementación de sus operaciones).
En C++ existe separación entre interfaz e implementación:
- Interfaz: define qué métodos y atributos están disponibles para ser utilizados por otras clases o
objetos que interactúan con la clase
- Implementación: representación de la abstracción, así como mecanismos que consiguen el
comportamiento deseado.
En Java puede entenderse como la separación entre interfaces y clases:
- Interfaz: Conjunto de operaciones que posee un nombre y que caracteriza el comportamiento
de un elemento
- Clase: Descriptor de un conjunto de objetos que comparten los mismos atributos, operaciones,
métodos, relaciones y comportamiento
3.Modularidad: Modulo -> conjunto de clases relacionadas
- En C++ se incluyen las clases relacionadas en un mismo archivo de cabecera
- En Java se utilizan los packages
El acoplamiento es una medida de fuerza de interconexión entre módulos. Este es alto si se intercambian
datos e información de control.
Para obtener una alta cohesión se separará el sistema por capas y se separará las capas por paquetes
referidos a entidades.
Para obtener un bajo acoplamiento utilizaremos interfaces para exponer las clases que vayan a ser
empleadas fuera de sus paquetes
4.Jerarquía: Clasificación u ordenación de abstracciones.
Elementos secundarios
1.Tipos: Un tipo es una caracterización precisa de propiedades estructurales o de comportamiento que
comparten una serie de entidades. El polimorfismo es conveniente cuando un cliente tiene que hacer un
tratamiento similar con distintos objetos, pero dependiente de su tipo particular
2.Concurrencia: Ejecución de un programa en varios hilos de control (caminos de ejecución dentro de un
proceso). Cada proceso de ejecución tiene al menos un hilo.
De esta forma, concurrencia es la propiedad que distingue a un objeto activo de uno que no está activo
3.Persistencia: Definimos persistencia como la propiedad de un objeto por la que su existencia trasciende
el tiempo y/o el espacio (es decir, la posición del objeto varía con respecto al espacio de direcciones en el
que fue creado). Los tipos de persistencia que nos interesan son:
• Datos que existen entre ejecuciones de un programa
• Datos que existen entre varias versiones de un programa
• Datos que sobreviven al programa

7.Aplicación del modelo de objetos:


Beneficios
- Interrelacionado con los lenguajes OO
- Reutilización del software y de diseños
- Los sistemas OO son más pequeños que los no OO
- Sistemas OO más flexibles ante el cambio
- Modelo atractivo para la cognición humana
Problemas
- ¿Qué son exactamente las clases y los objetos?
- ¿Cómo se identifican correctamente las clases y objetos relevantes de una
- aplicación concreta?
- ¿Cómo sería una notación adecuada para expresar el diseño de un sistema OO?
- ¿Qué proceso puede conducir a un sistema OO bien estructurado?
- ¿Cuáles son las implicaciones en cuanto a gestión que se deriva del uso del modelo de objetos?
8.La naturaleza de los objetos:
Un objeto (o instancia) es una entidad que tiene estado, comportamiento e identidad.
Estado de un objeto abarca todas las propiedades de este, más los valores actuales de cada una de esas
propiedades. En consecuencia, el estado de un objeto está encapsulado. Representa los resultados
acumulados de su comportamiento
Comportamiento representa su actividad visible y comprobable exteriormente.
Un objeto activo es aquel que comprende su propio hilo de control, mientras que un objeto pasivo no tiene
su propio hilo de control
Identidad es aquella propiedad de un objeto que lo distingue de todos los demás objetos, en la práctica
está asociado con el concepto de asignación.

9.Tipos de Relaciones:
Enlaces -> Conexión física o conceptual entre objetos. Denota una asociación específica por la cual un
objeto utiliza los servicios de otro.
Agregación -> Es un tipo especializado de asociación que denota una relación todo/parte. Puede denotar
una vinculación entre la vida del objeto y sus componentes
10.La naturaleza de una clase:

Las clases y objetos (entidad concreta espacio/ tiempo) están relacionados, ya que todo objeto pertenece
a una clase (abstracción, esencia de un objeto).
Objeto -> Instancia de la clase
A veces es necesario un conjunto cooperativo de clases para dar soporte a una abstracción compleja,
también se conocen como frameworks o APIs

11.Tipos de relaciones:

Herencia: La herencia es una relación entre clases en la que una clase comparte estructura y/o
comportamientos definidos en una o más clases.
Polimorfismo -> es la capacidad de objetos de clases diferentes relacionados mediante herencia de
responder de forma distinta a una misma llamada de una función.
Asociación: La relación semántica entre dos o más clases que especifica conexiones entre sus instancias.
Agregación: La relación de agregación entre clases representan a mayor nivel de abstracción la relación
de agregación entre objetos
Dependencia: Denota una relación entre dos elementos en los cuales, un cambio en un elemento (el
proveedor) puede afectar al otro elemento (el cliente), pero no necesariamente a la inversa.
Instanciación: Concretar clases a partir de otras más genéricas, denominadas clases parametrizadas o
plantilla.
Metaclases: Una cuyas instancias son clases (en C++ o java se puede simular con static)

12.Papel de clases y objetos en análisis y diseño

Las clases son estáticas y los objetos dinámicos, todo objeto es instancia de una clase.
Durante el análisis y las primeras etapas del diseño el desarrollador debe:
- Identificar las clases y objetos que forman el vocabulario del problema
- Idear estructuras por la que los conjuntos de objetos trabajan juntos para lograr
comportamientos que satisfacen los requerimientos del sistema.

En las primeras etapas de diseño se centran en obtener una vista externa de clases y objetos.
En las últimas etapas de diseño se centran en obtener una representación física del sistema.

13.Construcción de clases y objetos de calidad

Hay 5 factores que determinan si una clase está bien diseñada:


- Acoplamiento y cohesión (Modularidad)
- Suficiencia: Captura suficientes características de la abstracción
- Compleción: Interfaz suficientemente general para ser utilizada de forma común por cualquier
cliente
- Necesidad de que las clases sean primitivas (tienen acceso a la representación subyacente de la
abstracción)

También podría gustarte