T8 - Diseño arquitectonico - Departamento de Lenguajes y Sistemas

Anuncio
escuela técnica superior
de ingeniería informática
Tema 8:
Diseño arquitectónico
Ingeniería del Software
de Gestión II
Objetivos
♦  Comprender el diseño arquitectónico (DA)
♦  Conocer diagramas comúnmente usados en DA
♦  Conocer estilos y patrones arquitectónicos
habituales en aplicaciones de gestión
♦  Conocer el concepto de framework
El Camino
♦  El diseño arquitectónico
♦  UML para diseño arquitectónico
♦  Estilo arquitectónico
♦  Patrones arquitectónicos
♦  Conclusiones
♦  Bibliografía
Arquitectura Software
♦  Programas= Algoritmos + Estructura de Datos
♦  ¿y la estructura del programa?
♦  Aumento en complejidad de un sistema software 
mayor importancia al diseño y especificación de la
estructura global del sistema que a la elección de
algoritmos y estructuras de datos (microarquitectura)
♦  Definición de arquitectura de un sistema
software según Bass et al (1998):
“Estructura o estructuras del sistema, incluyendo: sus
componentes software, las propiedades observables
de dichos componentes y las relaciones entre ellos.”
♦  Es el primer documento en el que se establece
una prioridad entre propiedades de calidad al
tiempo que se recogen todos los requisitos y
restricciones (funcionales, infraestructura, …)
Ejemplo de Arquitectura
♦  Diagrama de componentes (Proyecto Alcuza)
5
Diseño Arquitectónico
Diseño: (3) Concepción original
de un objeto u obra destinados a
la producción en serie. Diseño
gráfico, de modas, industrial
♦  Diseño Arquitectónico: Concepción original
(proceso) de la Arquitectura Software de un
sistema a fin de construirlo con la máxima
calidad y dentro de un plazo y tiempo
determinados.
♦  Se recomienda comenzar en un alto grado de
abstracción y refinar sucesivamente hasta
llegar al nivel de componente
♦  Se recomienda seguir ‘buenas prácticas’
Diseño Arquitectónico
Análisis y
requisitos
Infraestructura
Patrones
arquitectónicos
Documento de diseño
arquitectónico
(Arquitectura Software)
Arquitectura Software
♦  Aspectos que abarca el diseño de una AS (Shaw
and Garlan, 96):
♦  the organization of a system as a composition of components;
♦  global control structures;
♦  the protocols for communication, synchronization and data access;
♦  the assignement of functionality to design elements;
♦  the composition of design elements;
♦  physical distribution;
♦  scaling and performance;
♦  dimensions of evolution;
♦  selection among design alternatives
♦  ¿Cuántos aspectos sabrías describir?
Arquitectura Software
♦  Aspectos con técnicas comúnmente aceptadas:
♦  the organization of a system as a composition of components:
Diagrama de componentes (DC) de UML
♦  physical distribution: Diagrama de despliegue (DD) de UML
♦  global control structures: DC
♦  the protocols for communication, synchronization and data access; DD,
extensiones UML, lenguajes formales (Wright, LEDA, …)
♦  the assignement of functionality to design elements: DC, DD
♦  the composition of design elements; DC, DD
♦  scaling and performance: Técnicas textuales
♦  dimensions of evolution: Técnicas textuales
♦  selection among design alternatives: Técnicas textuales
♦  Existen lenguajes específicos de descripción de
arquitecturas, pero nosotros usaremos UML.
Arquitecturas Software: Beneficios
♦  Describir explícitamente la arquitectura de un
sistema software proporciona beneficios:
♦  Durante la gestión del sistema
♦  Documento sobre el que poder discutir
♦  Aumenta la precisión en la estimación del coste y tiempo
♦  El arquitecto proporciona información útil
♦  Durante el desarrollo del sistema
♦  Es una excelente vista general y consistente de múltiples
vistas del sistema
♦  Proporciona la relación de puntos de diseño a tratar
♦  Facilita el desarrollo simultáneo de componentes
♦  Facilita la reutilización a gran escala ( es la base para
construir líneas de productos)
El Camino
♦  El diseño arquitectónico
♦  UML para diseño arquitectónico
♦  Estilo arquitectónico
♦  Patrones arquitectónicos
♦  Conclusiones
♦  Bibliografía
UML para diseño arquitectónico
Modelo
estático
• Diagramas de paquetes
• Diagramas de componentes
Modelo
dinámico
• Diagramas de secuencia
• Diagramas de comunicación
• Diagramas de estado
Modelo de
distribución
• Diagramas de despliegue
Diagramas de componentes
♦  Los diagramas de componente muestran los
bloques de software que componen un sistema.
♦  Un componente se implementa con una o más
clases.
♦  Un componente
puede tener
interfaces de
salida e
interfaces de
entrada
Ejemplo de Diagrama de Componentes
♦  Diagrama de componentes (Proyecto Alcuza)
1
4
Ejemplo de Diagrama de Actividades
♦  Arquitectura Alcuza: dirigida por eventos
♦  EDA para maximizar desacoplamiento
♦  Ejemplo: el gestor de tareas no sabe de la existencia de un motor de tareas,
solo sabe que debe publicar los eventos de terminación de tarea.
P2:T1 OK
P2:T1 OK
P2:T1 OK
1
5
Diagramas de despliegue
♦  Muestra la estructura en tiempo de ejecución
del sistema, esto es, la configuración del
hardware y cómo el software se distribuye en él
♦  Dos conceptos:
Nodo
•  Elemento hardware
•  Entorno de ejecución
•  El tipo se especifica con
estereotipos
Artefacto
•  Cualquier producto del
proceso de desarrollo
•  Ejecutables, código fuente,
modelos, documentación…
Diagramas de despliegue
♦  Despliegue de dos ficheros JAR en un servidor
de aplicaciones:
Diagramas de despliegue
♦  Despliegue de varios ficheros JAR en un entorno
de ejecución J2EEServer que está en un
servidor de aplicaciones y que se conecta con
un servidor de base de datos.
Diagramas de despliegue
♦  Despliegue de elementos en una red
El Camino
♦  El diseño arquitectónico
♦  UML para diseño arquitectónico
♦  Estilo arquitectónico
♦  Patrones arquitectónicos
♦  Conclusiones
♦  Bibliografía
Estilos arquitectónicos
♦  Un diseño arquitectónico se refiere
arquitectura de un sistema concreto.
a
la
♦  Un estilo arquitectónico define componentes,
relaciones entre componentes y restricciones
sobre esas relaciones, esto es, establece las
restricciones sobre la arquitectura de una
familia de diseños arquitectónicos.
♦  Centrada en datos
♦  Flujo de datos
♦  Por capas
♦  Componentes independientes
♦  …
Centrada en datos (Blackboard)
Fuente de
Conocimiento
Fuente de
conocimiento
Pizarra (datos
compartidos)
Fuente de
conocimiento
Fuente de
conocimiento
♦  El centro de la
arquitectura es una
pizarra y otros
componentes tienen
acceso a él para
actualizar, agregar,
eliminar o consultar sus
datos.
♦  Facilita la integración pues los componentes son
independientes.
♦  Se puede pasar datos entre componentes a través del
almacén de datos.
♦  Ejercicio: Identifica el estilo: componentes, relaciones,
restricciones, …
♦  ¿se pueden comunicar directamente dos componentes?
Tuberias y Filtros
Filtro
Filtro
Filtro
Filtro
Filtro
Filtro
♦  Se aplica cuando los datos de entrada se han de
transformar en datos de salida mediante una serie de
operaciones.
♦  Los componentes (filtros) van transmitiendo datos al
siguiente por medio de tuberías.
♦  Los filtros no necesitan saber el funcionamiento de los
vecinos. Sólo se preocupan de su entrada y su salida.
♦  Si hay una sola línea de transformaciones se denomina
procesamiento por lotes secuencial (pipeline).
Componentes independientes
Componente
Componente
Componente
♦  Formada por distintos
componentes
independientes que se
comunican.
♦  Los componentes pueden
estar distribuidos.
Componente
♦  Un subestilo es que los componentes sigan una jerarquía
de control donde un programa principal invoca a varios
componentes de programa que pueden invocar a otros
componentes.
Múltiples Capas
Capa
Capa
♦  Se definen distintas capas en la
aplicación de manera que sólo se
comunican entre si las capas
adyacentes.
Capa
♦  Los estilos se suelen mezclar. Por ejemplo, una
arquitectura por capas puede usar un estilo
diferente en cada capa:
♦  Que las dos últimas capas sean una arquitectura
centrada en datos.
♦  Una capa se implemente como un flujo de datos o con
componentes independientes.
Estilo habitual de las
aplicaciones de gestión
Capa de presentación
Es la interfaz de usuario. Hace la información
accesible al usuario
Capa de lógica de aplicación
Coordina la aplicación, procesa los comandos,
toma decisiones, realiza los cálculos y mueve
los datos entre las dos capas.
Capa de datos / recursos
Es de donde se obtiene la información y los
datos. Suele ser una base de datos, ficheros
externos, recursos accesibles por la web…
3C en aplicaciones de gestión
Cliente
Lógica de
aplicación
Gestión de
Recursos
Sistema de Información
Presentación
Sólo son conceptuales: No
tienen por qué
corresponderse con la
estructura de la
implementación.
También conocida como vista
lógica de la arquitectura.
Capa (Layer), Nivel (Tier)
Capa de presentación
Cliente
SI
Presentación
Responsable de: (1) presentar
información e (2) interactuar con
entidades externas
Diferentes apariencias: GUI,
módulo de transformación de
ficheros, ….
A veces también se le llama CLIENTE … da lugar a confusiones
¿Cuál es el cliente y cuál la capa de presentación de una aplicación que ofrece
una página HTML con applets? ¿Y si no tuviera applets?
Todos los Sistemas de Información (SI) tienen un CLIENTE, pero no
todos los clientes pertenecen al SI, pueden ser externos
Capa de lógica de aplicación
Presentación
Lógica de
aplicación
Gestión de
Recursos
Responsable de: implementar las operaciones
solicitadas por los clientes a la capa de
presentación.
Ej: el componente responsable de ‘traspasar’
dinero de una cuenta es un componente
habitual
Dependiendo de la complejidad y de la técnica de implementación empleada,
también se le conoce como: proceso/lógica/reglas de negocio de negocio o
simplemente servidor
Capa de gestión de recursos
Presentación
Lógica de
aplicación
Gestión de
Recursos
Responsable de: gestionar todos los elementos
de información del SI; ficheros planos, XML,
SGBD,
También conocida como capa de acceso a datos
¿Qué otros elementos pueden proporcionar
información?
En algunas arquitecturas se considera como parte integrante de esta capa
aquellos sistemas externos que proporcionan información. Es el eslabón
necesario para componer SSII a partir de otros SSII
denominar a esta capa como ‘capa de datos’ es ignorar prácticas muy
habituales
El Camino
♦  El diseño arquitectónico
♦  UML para diseño arquitectónico
♦  Estilo arquitectónico
♦  Patrones arquitectónicos
♦  Conclusiones
♦  Bibliografía
Patrones arquitectónicos
♦  Abarcan aspectos específicos del comportamiento dentro
de la arquitectura
♦  Tienen un alcance menor que los estilos arquitectónicos
(se concentran en un solo aspecto)
♦  Interacción entre componentes
♦  Arquitecturas x-tier
♦  Interacción con el usuario
♦  MVC
♦  Interacción con la capa de datos
♦  ORM
♦  DAO
Arquitecturas x-tier
•  Durante el Diseño Arquitectónico la vista lógica
de una arquitectura en capas (layer)
conceptuales da lugar a una vista física que se
materializa en una arquitectura en uno o más
niveles (tier)
•  Existen 4 tipos básicos de arquitecturas: 1,2,3/
niveles, N-niveles
♦  En inglés existe la diferencia entre layer (las
capas de antes) y tier (nivel). Sin embargo, en
español, se suelen traducir ambas como capa,
lo que da lugar a confusión.
Arquitectura mononivel
•  Por razones de rendimiento el resultado de implementar las
tres capas se queda en un único aplicativo. Se despliega en
un único host.
•  No ofrecen acceso programático (API).
•  Es el ejemplo canónico de sistema legado. Se suele utilizar
‘screen scraping’ para su integración
•  Ventajas
•  Eficiencia
•  Coste casi nulo de despliegue y desarrollo en clientes.
•  Inconvenientes
•  Coste (€, t) de mantenimiento de la aplicación
•  Mainframes es una tendencia opuesta a la de clusters
Arquitectura en dos niveles
Cliente
Presentación
Lógica de
aplicación
Servidor
Gestión de
Recursos
SI
•  La popularización del PC hizo rentable
pasar la responabilidad de la capa de
presentación al cliente
•  Se conoce como Cliente/Servidor
•  Dependiendo de las responsabilidades del
cliente se habla de clientes ‘pesados’ o
‘ligeros’.
•  Clientes ligeros
•  + fáciles de mantener, instalar y portar
•  Requieren menos recursos
•  Se confunde cliente con capa de
presentación
•  Popularizó las ‘remote procedure
calls’ (RPC). Para conseguir buen
acoplamiento se comenzó a utilizar
interfaces ‘públicas’ y ‘estables’
Arquitectura en dos niveles
•  Ventajas:
•  Se pude aprovechar las capacidad de computo
del cliente
•  Permite personalizar la capa de presentación
para distintos fines y portarla a distintos entornos
(multiplataforma)
•  Eficiencia en el lado del servidor
•  Inconvenientes
•  Protocolos más complejos y gestión de sesiones
complican la escalabilidad
•  Arquitectura inadecuada cuando se necesita
integrar más de un servidor
Arquitectura en dos niveles
Cliente
Lógica de la aplicación
Presentación 1
Presentación 2
Servidor 2
Servidor 1
Lógica de
aplicación
Lógica de
aplicación
Gestión de
Recursos
Gestión de
Recursos
Arquitectura en tres niveles
• 
• 
• 
• 
Transacciones
Balanceo de carga
Replicación
….
•  Permiten desplegar lógica en otro host
•  La latencia aumenta ¿compensa?
•  Popularizó ODBC (interfaz pública y
estable)
Cliente
Presentación
Lógica de
aplicación
middleware
SID
•  Algunos la justifican como la
evolución natural de las dos capas
para resolver el problema de la
integración de varios servidores
•  La responsabilidad de integrar pasa al
middleware, que también se encarga
de (CORBA, X/OPEN, DCOM):
Gestión de
Gestión
de recursos
Recursos
Arquitecturas multinivel
Cliente
Navegador
Presentación
Filtro HTML
Lógica de
aplicación
Servidor WEB
middleware
SID
•  Es la arquitectura en n-niveles
escalada tantas veces como
sea necesario
•  La capa de recursos (datos)
puede tener a su vez otra
arquitectura n-nivel
•  Surge de manera natural
cuando i) se desea integrar
varios sistemas de
información y/o ii) se desea
utilizar Internet como canal de
comunicación
Gestión de
Gestión de recursos
Recursos
Arquitecturas multinivel
remote
clients
...
INTERNET
internal
clients
Web
server
cluster
LAN
LAN
middleware
application
logic
LAN,
gateways
LAN
middleware
application
resource
management
layer
logic
LAN
database
server
file
server
application
additional resource
management layers
Wrappers
and
gateways
LAN
Copyright Springer Verlag Berlin Heidelberg 2004
FIREWALL
Patrones arquitectónicos
♦  Interacción entre componentes
♦  Arquitecturas x-tier
♦  Interacción con el usuario
♦  MVC
♦  Interacción con la capa de datos
♦  ORM
♦  DAO
Interacción con el usuario
Capa de presentación
MVC
Capa de lógica de aplicación
Capa de datos / recursos
Interacción con el usuario
♦  MVC (Modelo – Vista – Controlador)
♦  Modelo es la representación específica de la
información con la que se opera. Incluye los datos y la
lógica para operar con ellos.
♦  Vista es la presentación del modelo de forma
adecuada para interactuar con ella, normalmente a
través de una interfaz de usuario.
♦  Controlador responde a eventos de la interfaz de
usuario e invoca cambios en el modelo y
probablemente en la vista.
Interacción con el usuario
♦  MVC (Modelo – Vista – Controlador)
Modelo
consulta
Envía datos
actualiza
Eventos del usuario
Vista
modifica
Controlador
Interacción con el usuario
Interacción con el usuario
♦  Front Controller
♦  Page Controller
Patrones arquitectónicos
♦  Interacción entre componentes
♦  Cliente / servidor
♦  Arquitecturas x-tier
♦  Interacción con el usuario
♦  MVC
♦  Interacción con la capa de datos
♦  ORM
♦  DAO
Interacción con la capa de datos
Capa de presentación
Capa de lógica de aplicación
DAO
y/o
ORM
Capa de datos / recursos
Interacción con la capa de datos
♦  Patrón Data Access Object
♦  Se suele combinar con
patrones factory para
la creación de objetos
DAO
Interacción con la capa de datos
♦  Uso de DAO
Interacción con la capa de datos
♦  Object Relational Mapping
Business Objetcs
- clases
- asociaciones
- agregaciones
- composiciones
- herencia
mapping
♦  Hibernate
♦  iBatis
♦  Toplink
♦  JPA
Relational Data
Base
- sql
- transaciones
- cacheo
-…
Frameworks
♦  Conjunto de clases parcialmente funcional (no es
una aplicación) para un dominio de aplicación
♦  Les falta aquello que es propio de la aplicación
♦  Ejemplos: AWT, Swing, Struts, Junit, Compact
Framework, James (genuinamente andaluz), …
♦  Gran influencia en el diseño de la aplicación cliente
El principio de Hollywood
El principio de Hollywood
Main() {
i1 = new I1();
i2 = new I2();
i1 = i2.m(i1.g());
}
Ventajas e inconvenientes
♦  Reutilización de diseño y
código
♦  Es difícil encontrar el
framework apropiado
♦  Experiencia del diseñador ♦  Es difícil usar más de un
framework al mismo
del framework
tiempo
♦  Costes de producción
♦  Son difíciles de construir y
reducidos
de aprender a usar
Patrones y frameworks
♦  Los frameworks nos implementan en ocasiones
distintos patrones y estilos arquitectónicos.
♦  Por ejemplo, Struts, JSF `y ASP .net
implementan el patrón MVC.
♦  J2EE nos da soporte para un estilo
arquitectónico con tres capas (presentación,
lógica de aplicación y datos)
♦  Por tanto, el uso de frameworks va a
determinar en gran medida la arquitectura del
sistema.
El Camino
♦  Introducción
♦  El diseño arquitectónico
♦  UML para diseño arquitectónico
♦  Estilo arquitectónico
♦  Patrones arquitectónicos
♦  Conclusiones
♦  Bibliografía
Conclusiones
♦  El diseño arquitectónico es fundamental para el
resultado final del desarrollo software.
♦  Podemos tener modelos estáticos (paquetes,
componentes), dinámicos (secuencia,
comunicación, estados) y de despliegue.
♦  Los estilos arquitectónicos definen la estructura
general del sistema.
♦  Los patrones arquitectónicos resuelven aspectos
específicos dentro de la arquitectura.
Conclusiones
♦  Para aplicaciones de gestión lo más habitual
actualmente es:
♦  Aplicaciones en tres capas: presentación, lógica de
negocio y datos.
♦  Arquitecturas N-tier.
♦  Uso del patrón arquitectónico MVC para la interfaz de
usuario.
♦  Uso de ORM
El Camino
♦  El diseño arquitectónico
♦  UML para diseño arquitectónico
♦  Estilo arquitectónico
♦  Patrones arquitectónicos
♦  Conclusiones
♦  Bibliografía
Bibliografía
♦  Básica (de referencia):
♦  “Ingeniería del Software. Un enfoque práctico”. Roger S. Pressman.
Mc Graw Hill (6ª ed.)
♦  De apoyo:
♦  “Ingeniería del Software”. Ian Sommerville. Pearson Addison Wesley
(7ª ed.)
♦  Sobre UML:
♦  http://sparxsystems.com.au/resources/uml2_tutorial/
♦  MVC:
♦  http://java.sun.com/blueprints/patterns/MVC-detailed.html
♦  http://java.sun.com/blueprints/patterns/FrontController.html
♦  http://msdn.microsoft.com/en-us/library/ms978764.aspx
♦  DAO:
♦  http://java.sun.com/blueprints/corej2eepatterns/Patterns/
DataAccessObject.html
Descargar