Arquitectura y Diseño Orientado A Objetos
Arquitectura y Diseño Orientado A Objetos
Arquitectura y Diseño Orientado A Objetos
DE SOFTWARE
Arquitectura de Software
AGENDA
Arquitecturas de software
Evolución de arquitecturas
Diseño de software
Paradigmas de diseño
Calidades sistémicas
Patrón
Framework
¿Han oído hablar de la
Mansión Winchester?
En 1884, la viuda del inventor de los rifles Winchester
compró un terreno e hizo levantar una mansión sin la
participación de ningún arquitecto
Pero…
…un arquitecto de
edificaciones y un arquitecto
de Software enfrentarán los
mismos retos.
ANTES DE INICIAR UN DESARROLLO, DEBEMOS
CONTESTAR ALGUNAS PREGUNTAS
¿Como debo diseñar mi sistema para que sea fácil de
mantener?
¿Qué es la Arquitectura de
Software?
ARQUITECTURA DE SOFTWARE
Es la estructura o estructuras de un sistema de información.
Los requisitos de atributos de calidad son las principales guías para el diseño de
la arquitectura.
La Arquitectura de Software tiene que ver con la estructuración de alto nivel de
un sistema en la etapa de diseño.
ARQUITECTURA DE SOFTWARE
Todo sistema de software tiene una arquitectura; el arquitecto de software es el
responsable de su creación.
Es la estructura de componentes, conectores, relaciones, principios y pautas que
definen su diseño y evolución en el tiempo.
Pero antes…
Divide y Vencerás
Permite la reutilización de partes.
Cliente-servidor.
Peer-to-peer.
Multi-tier
APLICACIÓN MONOLÍTICA
Protocolos pesados
Alta administración
Bajo rendimiento
Baja accesibilidad
PEER-TO-PEER (P2P)
No existe la noción de
Clientes o Servidores,
todos los nodos son
iguales y actúan tanto
como clientes y servidores
EVOLUCIÓN DE LAS ARQUITECTURAS
Aplicaciones 3 niveles
Mejora la flexibilidad.
Alta escalabilidad.
Independencia de DB
ARQUITECTURA MULTI-TIER O MULTICAPAS
es una arquitectura
cliente-servidor donde la
presentación, el
procesamiento de la
aplicación y la gestión de
datos son procesos
lógicamente separados
EVOLUCIÓN DE LAS ARQUITECTURAS
Multicapas
Aislamiento de la lógica de aplicaciones en
componentes independientes susceptibles de
reutilizarse después en otros sistemas.
Distribución de las capas en varios nodos físicos de
cómputo y en varios procesos. Esto puede mejorar el
desempeño, la coordinación y el compartir la
información en un sistema de cliente-servidor.
Asignación de los diseñadores para que construyan
determinadas capas; por ejemplo, un equipo que trabaje
exclusivamente en la capa de presentación. Y así se
brinda soporte a los conocimientos especializados en
las habilidades de desarrollo y también a la capacidad
de realizar actividades simultáneas en equipo.
EVOLUCIÓN DE LAS ARQUITECTURAS
Sistemas Empresariales
Las empresas necesitan agilidad en su negocio:
Los requerimientos cambian continuamente.
Implementación de nuevos programas o servicios para atraer o
retener clientes.
Requieren unificar, refina y medir sus procesos de negocio
Problema
Describe cuando aplicar el patrón
Conjunto de fuerzas: objetivos y restricciones
Prerrequisitos
Solución
Elementosque constituyen el diseño (template)
Forma canónica para resolver fuerzas
Consecuencias
Resultados, extensiones
FRAMEWORK
Definición de Framework
Es un subsistema de software parcialmente construido, de propósito general
para un tipo específico de problema, el cual debe ser instanciado para resolver
un problema en particular.
Son elementos reutilizables de software que proveen funcionalidades
genéricas enfocadas a resolver cuestiones recurrentes. Existen frameworks
para resolver distintos aspectos de una aplicación; por ejemplo, Java Server
Faces (JSF) es un framework para crear interfaces de usuario en aplicaciones
web.
Típicamente un framework se construye a partir de patrones de diseño. Los
frameworks imponen patrones de diseño para su uso
FRAMEWORK
Ejemplos de Frameworks:
Tecnológicos: Conceptuales:
Struts y Java Server Faces (JSF) Definición de arquitecturas.
para Interfaces Web.
eTom (enhanced
Mapeos objeto-relacionales. Telecomunication Operations
Enterprise Java Beans para Map), es un marco referencial
construcción de servicios de de procesos para la industria de
negocios. las telecomunicaciones.
Framework de patrones de RUP como metodología para
diseño para J2EE de Sun definición de procesos de
Microsystems. desarrollo.
Framework para testing de
performance.
VISTA DE ARQUITECTURA
VISTAS DE ARQUITECTURA
DIAGRAMAS DE UML
Los diagramas expresan gráficamente partes de un
modelo
Use Case State
Diagrama de
Diagrams State
Use Case Diagrams
Use Case
Diagrams
Casos de Uso Diagrams de
Diagrama
Diagrama de
Diagrams Clases
Estados State
State
Diagrams
Diagrams de
Diagrama
Objeto
Estática
Scenario Actividad
Scenario
Diagrams
Diagrama de
Diagrams Component
Actividad Component
Diagrams
Diagramas Diagrama
de
Diagrams
Componentes
Implementación
Interacción
Scenario
Scenario
Diagrams
Diagrama de
Diagrams
Component
Component
Diagrama de Diagrams
Secuencia Diagrama
Diagrams de
Colaboración Despliegue
DIAGRAMAS DE UML
Modelado estático
Diagrama de casos de uso:
Para comprender el sistema
Diagrama de clases
Para comprender qué hay en el sistema (ejemplo Modelo de Dominio)
Modelado dinámico
Diagrama de interacción
Para comprender el comportamiento del sistema (interacción entre clases)
Conceptouuobjeto
Concepto objeto
deldominio
del dominio
Atributos
Atributos
Asociación
Asociación
MODELO DEL DOMINIO
Los modelos del dominio no son modelos de componentes de software
Un modelo del dominio , es un representación de las cosas del mundo real del
dominio de interés, no de componentes del software. Por lo tanto, los
siguientes elementos no son adecuados en un modelo de dominio:
Artefactos de software, como una ventana o base de datos, a menos que el
dominio que se este modelando sea de conceptos de software, como un
modelo de interfaces de usuario grafica.
Responsabilidades o métodos
MODELO DEL DOMINIO
“Una clase conceptual es una idea, cosa u objeto”. Más formalmente, una
clase conceptual podría considerarse en términos de un símbolo, intención, y
extensión.
Venta
Fecha Símbolo del Concepto
hora
“Unaventa
“Una ventarepresenta
representaelelhecho
hechode
de
unatransición
una transiciónde
decompra.
compra.Sucede
Sucede
undía
díayyaauna
unahora”
hora” Intención del concepto
un
Venta-1
Extensión del concepto
Venta-n Venta-2
IDENTIFICACIÓN DE CLASES
CONCEPTUALES
Estrategias para identificar clases conceptuales
1. Utilizar una lista de categorías clases conceptuales.
2. Identificación de frases nominales.
3. Otra excelente técnica para el modelado del dominio es
el uso de patrones de análisis, que son modelos de
dominios parciales existentes creados por expertos.
IDENTIFICACIÓN DE CLASES – LISTA DE
CATEGORÍAS
Categoría de clases conceptuales Ejemplos (dominio tiendas y Categoría de clases conceptuales Ejemplos (dominio tiendas y
reservas de vuelo) reservas de vuelo)
Organizaciones DepartamentodeVenta,
Objetos tangibles o físicos Registro, Avión CompañiaArea
Especificaciones, diseños, o EspecificaciondelProducto, Hechos Venta, Pago,
descripciones de las cosas DescripciondelVuelo Runión,Vuelo,Colision,Aterrizaje
Procesos (normalmente no se VentadeUnProducto,
Lugares Tienda presentan como conceptos) ReservaUnAsiento
Reglas y políticas PoliticadeReintegro,
Transacciones Venta, Pago, Reserva PoliticadeCancelación
ClaveAJENA
Clave AJENA
EJEMPLO
ARTEFACTO: CLASE DEL ANÁLISIS
Una clase de análisis representa la abstracción de una o varias clases
y/o subsistemas del diseño del sistema. Esta abstracción posee las
siguientes características:
Una clase de análisis se centra en el tratamiento de los requisitos
funcionales.
Una clase de análisis también define atributos, aunque esos
atributos son de alto nivel, pero normalmente estos pasan hacer
una clase en el diseño.
Las clases del análisis siempre encaja en uno de tres estereotipos
básicos: Interfaz, Control, Entidad.
CLASES ANÁLISIS DEL MODELO DE
ANÁLISIS
CLASE DE INTERFAZ
Las clases de interfaz se utilizan para modelar la interacción entre
el sistema y los actores.
Las clases de interfaz modelan las partes del sistema que dependen
de sus actores, lo cual implica que clasifican y reúnen los
requisitos en los límites del sistema.
Las clases de interfaz representan a menudo abstracciones de
ventanas, formularios, paneles, interfaces de comunicaciones.
CLASE DE INTERFAZ, EJEMPLO:
CLASE DE ENTIDAD
Las clases de entidad modelan información y el comportamiento
asociado de algún fenómeno o concepto, como persona o un
objeto.
Las clases de entidad reflejan la información de un modo que
beneficia a los desarrolladores al diseñar e implementar el sistema,
incluyendo su soporte de persistencia.
Las clases de entidad suelen mostrar una estructura de datos lógica
y contribuyen a comprender de qué información depende el
sistema.
ENTIDADES: CAPTURANDO
ATRIBUTOS
Permiten capturar aquellos datos que
nos interesa mantener de la entidad
Representan la estructura interna de los
objetos de la entidad
Se vinculan con la información de
negocio.
Determinan el estado interno del objeto
Sirven de base para el desarrollo de las
responsabilidades adquiridas por los
objetos de la entidad
CLASE DE ENTIDAD, EJEMPLO:
CLASE DE GESTOR
Las clases de control representan coordinación, secuencia,
transacciones y control de otros objetos y se usan con frecuencia
para encapsular el control de un caso de uso en concreto.
Los aspectos dinámicos del sistema se modelan con clases de
control, debido a que ellas manejan y coordinan las acciones y los
flujos de control principales, y delegan trabajo a otros objetos.
CLASE DE CONTROL, EJEMPLO:
MODELADO DINÁMICO. PROPÓSITO
Captar el comportamiento de los objetos identificados en el
modelo de clase.
Identificar los elementos básicos del comportamiento:
Eventos.
Estados.
Transiciones de estados.
Funciones (acciones, actividades, servicios).
Mensaje u operación
Actor
DIAGRAMA DE SECUENCIA
C1 C2
Operación
iniciada por el
actor Operación de
C2 invocada
por C1
DIAGRAMA DE SECUENCIA
prestar(video, socio)
verificar situación socio
registrar préstamo
entregar recibo
PROCESO DE ELABORACIÓN
Identificación • Situaciones en la que
queremos ver cómo
de los funciona el sistema
escenarios para resolver algo
Identificación • Es decir,
identificación de
de los eventos quien demanda que
externos empiece un escenario
• Diagramas de
Modelado de secuencia o
interacciones colaboración
EJEMPLO: UNA HISTORIA
EJEMPLO: UNA HISTORIA
Escenario:
El reloj del sistema le indica al sol que debe brillar
El sol le dice al reloj que suene
El reloj despierta a la persona
La persona apaga el reloj
La persona se vuelve a dormir
Diagrama de secuencia
DIAGRAMA DE SECUENCIA:
Diagrama de secuencia
DIAGRAMA DE DISEÑO – DIAGRAMA
DE SECUENCIA
Un diagrama de secuencia es un diagrama que nos
representa el curso o flujos que se desarrollan dentro de
cada caso de uso, contiene:
• Objetos con sus “líneas de vida”
• Mensajes intercambiados entre objetos en una secuencia
ordenada
DIAGRAMA DE SECUENCIA
Eldiagrama de secuencias consta de objetos, representados del modo usual:
rectángulos con nombres subrayados, estímulos (también conocidos como
mensajes) representados por líneas continuas con una punta de flecha y el
tiempo representado por una progresión vertical.
ELABORACIÓN
1. Los objetos se colocan cerca de la parte superior del diagrama de izquierda
a derecha y se acomodan de manera que simplifiquen el diagrama.
2. La extensión que está debajo (y en forma descendente) de cada objeto será
una línea discontinua conocida como la línea de vida de un objeto.
3. Junto con la línea de vida de un objeto se encuentra un pequeño rectángulo
conocido como activación, el cual representa la ejecución de una operación
que realiza el objeto. La longitud del rectángulo se interpreta como la
duración de la activación.
ELABORACIÓN
4. Los envíos de mensajes se representan mediante flechas horizontales que
unen la línea de vida del objeto emisor con la línea de vida del objeto
destinatario. En cada flecha se pone el nombre del acontecimiento que
provoca el envío del mensaje, y se puede acompañar de datos entre
paréntesis.
5. Los tipos de mensajes que pueden existir son:
a) Simple: es la transferencia del control de un objeto a otro
b) Síncronos: son los más utilizados. El emisor del mensaje debe esperar a que el
destinatario finalice el método mencionado antes de continuar su actividad.
c) Asíncrono: el emisor no espera al destinatario para poder realizar otras acciones
6. El tiempo se representa y controla en la línea vertical.
DIAGRAMA DE SECUENCIA
La creación y destrucción de objetos se La recursividad ocurre cuando un objeto se
representa mediante: envía a si mismo un mensaje y se representa
por:
EJEMPLO
DIAGRAMA DE CLASES
Este diagrama es una estructura estática que describe la estructura
de un sistema mostrando las clases del sistema, sus atributos,
operaciones (o métodos), y las relaciones entre los objetos
Sus elementos son:
Clases
Relación entre clases
EJEMPLO
DIAGRAMAS DE ARQUITECTURA –
DIAGRAMA DE PAQUETES
• Representa las dependencias entre los paquetes que componen un
modelo. Es decir, muestra cómo un sistema está dividido en
agrupaciones lógicas y las dependencias entre esas agrupaciones.
• Los paquetes están normalmente organizados para maximizar la
coherencia dentro de cada paquete y minimizar el acoplamiento
externo entre los paquetes, los paquetes pueden asignarse a un
individuo o a un equipo, y las dependencias entre ellos pueden
indicar el orden de desarrollo requerido
ELEMENTOS
Estos diagramas contienen dos tipos de elementos:
• Paquetes: Un paquete es una agrupación de elementos, bien sea
casos de uso, clases o componentes. Los paquetes pueden
contener a su vez otros paquetes anidados que en ultima instancia
contendrán alguno de los elementos anteriores.
• Dependencias entre paquetes: Existe una dependencia cuando un
elemento de un paquete requiere de otro que pertenece a un
paquete distinto. Es importante resaltar que las dependencias no
son transitivas.
EJEMPLO
RESUMEN
En esta sesión hemos aprendido:
Diseño de software
Arquitecturas de software
Evolución de arquitecturas
Patrón
Framework
Diagramas de Interacción
Diagramas de Secuencia
Ejercicio prácticos.