arquitectura de aplicaciones
TRANSCRIPT
![Page 1: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/1.jpg)
Arquitectura de Aplicaciones
![Page 2: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/2.jpg)
Una Arquitectura requiere de Múltiples Vistas Para describir una arquitectura se
requiere de 4 vistas: La Vista Lógica: que proporciona una
figura estática de las clases principales y sus relaciones.
La Vista de Componentes: para mostrar como el código es organizado en paquetes, librerías,etc
![Page 3: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/3.jpg)
Una Arquitectura requiere de Múltiples Vistas
La Vista del Proceso: que muestra los procesos y tareas.
La Vista de la Distribución: que muestra los procesadores, dispositivos y enlaces en el ambiente operativo.
Y finalmente un escenario que explique como pueden funcionar juntas.
![Page 4: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/4.jpg)
La Vista “4+1” del Modelo Vista de
Componentes
Vista del Proceso Vista de la Distribución
Vista de Casos de Uso
Vista Lógica
Funcionalidad
Usuarios Finales
Admin. de Software, Reuso y Portabilidad
Ingenieros de Software
Rendimiento, Disponibilidad,
Tolerancia a Fallas
Integradores
=VP + Escalabilidad, Entrega e Instalación
Ingenierosde Sistemas
Comprensión y Uso
![Page 5: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/5.jpg)
Vista Lógica La Vista Lógica (logical view) de la arquitectura
dirige los requerimientos funcionales del sistema. Estos es, lo que el sistema debe proporcionar en
términos de servicios para sus usuarios. Proporciona una figura estática de las clases
principales y de sus relaciones. Se captura en un diagrama de clases que
contiene paquetes, clases y relaciones que representan las abstracciones clave del sistema.
![Page 6: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/6.jpg)
Uso de Paquetes Lógicos Globales
Algunos paquetes son usados por todos los demás: Clases de Seguridad Clases de soporte a errores (Error
handling classes)
![Page 7: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/7.jpg)
SecurityClasses
global
Uso de Paquetes Lógicos Globales Estos paquetes son señalados como
globales.
![Page 8: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/8.jpg)
ClientPackage SupplierPackage
Implicaciones de la Dependencia
Algunas de las implicancias de la dependencia entre paquetes son: Cada vez que se hace un cambio en el paquete del
proveedor, el paquete del cliente debe ser recompilado y vuelto a probar.
El paquete del cliente no puede ser reusado independientemente porque depende del paquete del proveedor.
![Page 9: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/9.jpg)
Evitando las Dependencias Circulares
Es deseable que la jerarquía de paquetes sea acíclica. Esto significa que la siguiente situación debe ser evitada (en
lo posible) El paquete A usa el B que a su vez usa al paquete A.
Tal dependencia circular implica que el paquete A y el B deben ser tratados como un paquete único.
Círculos mas amplios deben ser igualmente evitados. Estas dependencias se pueden romper dividiendo uno de los
paquetes en dos mas pequeños.
![Page 10: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/10.jpg)
Ejemplo de Dependencia Circular
Interfaces Business Rules
Cambiado por:IncomingInterfaces Business
Rules
Outgoing Interfaced
![Page 11: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/11.jpg)
<<subsystem>>
Ordering
InterfazUsuario
Procesamiento de Pedidos
Calculador de Precios Almacenami
entoExterno
AlmacenamientoAleatorio
Almacenamiento
AdministradorGU
Administracion de Almacenamiento
Deposito
AlmacenamientoEnArchivo
Dependencia
Generalizacion de paquete
Dependencia de un paquete Externo
Paquetes y sus Relaciones
![Page 12: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/12.jpg)
VisibilidadEs la capacidad de un elemento para hacer referencia a otro elemento que se encuentra en un contenedor diferente al primero.
El contenedor puede ser un paquete, clase, etc.
Existen tres tipos de visibilidad--Publica(+); todo elemento que vea el contenedor
--Protegida(#);puede ser visto por elementos del mismo contenedor o descendiente del contenedor
--Privada(-);solo por los elementos del mismo contenedor
Se aplica a nivel de Clases, Paquetes
![Page 13: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/13.jpg)
Modelado de Componentes
![Page 14: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/14.jpg)
¿Qué es un componente?
Un componente es una unidad de código fuente que sirve como un bloque de construcción para la estructura física del sistema.
Los estereotipos sirven para especificar a las diferentes clases de componentes. Ejemplos: exe, dll, main programs, headers,
modules, forms
![Page 15: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/15.jpg)
Component Diagram
![Page 16: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/16.jpg)
Nombre del
Componente
.....¿Qué es un componente? Hay que agrupar clases en componentes
si tienen una función cooperativa o si necesitan estar muy próximas para que la implementación sea eficiente.
Notación de un Componente:
![Page 17: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/17.jpg)
Diagrama de Componentes Los diagramas de componentes
describen los elementos físicos del sistema y sus relaciones
Muestran las opciones de realización incluyendo código fuente, binario y ejecutable
![Page 18: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/18.jpg)
Name 1
Name 3
Name 2
Name 1
Name 2
Diagrama de Componentes Un diagrama de componentes muestra la asignación de
clases y objetos a componentes de implementación y también sus dependencias de compilación.
![Page 19: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/19.jpg)
Diagrama de Componentes Se requiere un nombre para cada
componente; este nombre típicamente denota un nombre simple para el correspondiente archivo físico en el espacio de trabajo de desarrollo.
Muestran el mapeo de las clases con los componentes implementados
Son utilizados por el responsable de compilar el sistema
Describen en qué orden han de ser compilados los componentes.
![Page 20: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/20.jpg)
Diagrama de Componentes La única relación es de dependencia de
compilación, representada por una línea punteada que apunta al módulo sobre el cual existe la dependencia.
Muestran qué componentes run-time serán creados como resultado de la compilación
En C++, una dependencia de compilación se indica por las directivas #include
No debe existir ciclos dentro de dependencias de compilación.
![Page 21: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/21.jpg)
...Diagramas de Componentes Los componentes representan todos los tipos
de elementos software que entran en la fabricación de aplicaciones informáticas. Pueden ser simples archivos, paquetes de Ada, bibliotecas cargadas dinámicamente, etc.
Cada clase del modelo lógico se realiza en dos componentes: la especificación y el cuerpo
![Page 22: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/22.jpg)
La representación gráfica es la siguiente:GenéricoCuerpoEspecificación
Package specification
Package body
Generic package
… Diagramas de Componentes
![Page 23: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/23.jpg)
Curriculum
Course
Curriculum
Course
Diagrama de Componentes
![Page 24: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/24.jpg)
Dependencias entre Componentes
Las relaciones de dependencia se utilizan en los diagramas de componentes para indicar que un componente utiliza los servicios ofrecidos por otro componente
![Page 25: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/25.jpg)
Subsistemas Los distintos componentes pueden agruparse
en paquetes según un criterio lógico y con vistas a simplificar la implementación
Son paquetes estereotipados en <<subsistemas>>
NewPackage4<<subsistema>>
![Page 26: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/26.jpg)
Los subsistemas organizan la vista de realización de un sistema
Cada subsistema puede contener componentes y otros subsistemas
La descomposición en subsistemas no es necesariamente una descomposición funcional
Paquetes (Categorias) y clases en el nivel lógico. Paquetes (Subsistemas) y componentes en el nivel físico
… Subsistemas
![Page 27: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/27.jpg)
Vista de Componentes Los diagramas de componentes se
diseñan para mostrar los paquetes y componentes que conforman el sistema en desarrollo. Muestra la asignación de clases a
componentes. Muestra la asignación de componentes a
paquetes.
![Page 28: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/28.jpg)
Vista de Componentes
Los paquetes se organizan en capas jerárquicas donde cada capa tiene una interfaz bien definida.
![Page 29: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/29.jpg)
Physical application architecture
Relational Database Server(s)
Client CWWW Browser
WebServer
HTMLCGI
ASP Java
Business ObjectServices
Business ObjectEngine
Application
Business ObjectServices
Client A
Business ObjectEngine
Thinner client, thicker server
Client BApplication
Business ObjectServices
Business ObjectEngine
Business Object Server
DCOMADO/R
CORBA Beans
COMMTS
BeansETS
![Page 30: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/30.jpg)
Paquetes en la Vista de Componentes
En la vista de componente un paquete es una colección de componentes, donde algunos son visibles u ocultos a otros.
Un paquete agrupa componentes que están lógicamente relacionados.
![Page 31: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/31.jpg)
PackageName
Paquetes en la Vista de Componentes Cada componente del sistema debe
vivir en un paquete único o en el nivel mas alto del sistema.
Notación:
![Page 32: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/32.jpg)
MFCUsuario deMatrícula
Interfaz
Sistema deMatrícula
Diagrama de Componentes Principal
Un diagrama de componentes principal es una familia de paquetes conectados por enlaces directos que representan dependencias.
Ejemplo:
![Page 33: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/33.jpg)
Correspondencia entre Paquetes de diferentes Vistas
En general, un paquete de la vista lógica corresponde directamente con un paquete de la vista de componentes.
No obstante las estructuras lógica y física pueden variar de acuerdo a las siguientes razones: Los paquetes de la vista lógica se fusionan para conservar
a los objetos con una comunicación estrecha para la implementación.
Los paquetes de la vista de componentes son adicionados para implementar funcionalidad de bajo nivel (no representada en el análisis).
![Page 34: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/34.jpg)
Correspondencia entre Paquetes de diferentes Vistas
Logical View Top-Level Diagram Component View Top-Level Diagram
MFC RegistrationUserInterface
RegistrationSystem
GuiWidgets RegistrationUserInterface
RegistrationSystem
![Page 35: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/35.jpg)
Copyright © 1997 by Rational Software Corporation
Multiple Systems
Reuti l izacion de Componentes
ReusableComponents
![Page 36: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/36.jpg)
Modelado de Procesos
![Page 37: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/37.jpg)
Procesos Un proceso es la ejecución de un hilo de
control en un programa OO o sistema. Un sistema debe descomponerse en múltiples
procesos o hilos de control. Los objetos son asignados a procesos (esta
asignación puede ser dinámica).
![Page 38: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/38.jpg)
Hilos de Control El Diagrama de Secuencia refleja de
manera indirecta las opciones de control (sincronizacion del sistema)
m1m2
m3
m1
m2 m3
m4m5
![Page 39: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/39.jpg)
Vista del Proceso La Vista del proceso se concentra en la
descomposición del proceso. Muestra la asignación de componentes a
procesos. El Diagrama de componentes se actualiza
para mostrar la asignación de componentes a procesos.
La vista de procesos agrupa la disponibilidad, fiabilidad, rendimiento, administración y sincronización del sistema.
![Page 40: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/40.jpg)
Package specification (DLL) Task Specification (EXE)
Componentes del Proceso Los ejecutables y sus librerías asociadas
son representadas como componentes. Package specification (DLL) Task specification (EXE)
![Page 41: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/41.jpg)
Tipos de Iconos para componentes
De Especificacion
Componente Generico
Especificacion
SubPrograma
Es una especificacion de rutinas. No contienen informacion de clases
Main Program
Representa al programa principal
Package Specification
Package Body
Es el archivo cabecera que contiene informacion de las funciones.
En C++ : .h files
En Java : .java files
Contiene el codigo para las operaciones de una clase
En C++ : .cpp files
![Page 42: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/42.jpg)
Tipos de Iconos para componentes
De Ejecucion
Package specification
Package Body
Estos iconos representan paquetes que tienen hilos de control independientes
Ejem de Package specification :
.Exe files
Database
Representa a la BD que puede contener varios squemas
Interfase
![Page 43: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/43.jpg)
Name1 Name2
Name1 Name2
MyProcess.exe
Diagrama de componentes para representar un proceso Cada componente puede depender de
otros.
![Page 44: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/44.jpg)
Ejemplos de ProcesosVentas.exe Matricula.exe
Proceso para la creación ymantenimiento de la Venta de Articulos
Proceso para la selección decursos por estudiantes
![Page 45: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/45.jpg)
Diagrama del Proceso Matricula
Curso Oferta deCursos
Alumnos Profesores
Cursos.dll
Agentes.dll
Cursos
Usuarios
Vista de los componentes ejecutables
SistemaContabilidad
Conta.exe Matricula.exe
![Page 46: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/46.jpg)
Modelado de Despliegue
![Page 47: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/47.jpg)
Vista del Despliegue La vista del despliegue vincula
componentes a nodos de procesamiento. Requerimientos como rendimiento y
tolerancia a las fallas son tomados en cuenta.
Los diagramas de despliegue son creados para mostrar los diferentes nodos (procesadores y dispositivos) en el sistema.
![Page 48: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/48.jpg)
El diagrama de despliegue Un diagrama de despliegue muestra la
asignación de componentes a nodos. Procesadores y dispositivos son estereotipos
comunes para un nodo. Los nodos se conectan reflejando la
comunicación que existe entre ellos. Los elementos esenciales del diagrama de
despliegue son los nodos y sus conexiones.
![Page 49: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/49.jpg)
El diagrama de despliegue Muestra la distribución física de los
componentes en nodos locales y remotos de la red
Presenta los distintos componentes de una arquitectura en tres capas (3Tier) Servidor de datos Servidor de aplicaciones Cliente
![Page 50: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/50.jpg)
nodo conexión
nombreetiqueta
Notaciones del diagrama de despliegue
Un nodo es un objeto físico en tiempo de ejecución que representa recursos de computacionales.
Un conexión indica comunicación, usualmente significa enlaces de hardware.
![Page 51: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/51.jpg)
MatriculaSystem
Database
Dorm
Main Building
Library<<device>>
<<device>>
<<device>>
Diagrama de despliegue Este diagrama muestra dos nodos y
dispositivos que se comunican con el Sistema de Matricula.
![Page 52: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/52.jpg)
Ejemplo de conexión entre nodos:
Nodo<<Procesador>
nodo2<<dispositivo>>
dispositivo
conexión7
conexión1<<<<TCP/IP>>>>
<<RDSI>>En Rational Rose podemos distinguir entre el dispositivo por estereotipado y el dispositivo con su propio símbolo
… Diagramas de Despliegue
![Page 53: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/53.jpg)
proceso 1, proceso 2, ... proceso n
Nombredel
Procesador
Procesos Los procesos son asignados a procesadores (el
conjunto de procesos puede ser dinámico) Notación:
![Page 54: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/54.jpg)
Diagrama de despliegue
![Page 55: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/55.jpg)
Diagrama de desplieque
Vista de la arquitectura 3Tier
![Page 56: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/56.jpg)
Physical application architecture
Relational Database Server(s)
Client CWWW Browser
WebServer
HTMLCGI
ASP Java
Business ObjectServices
Business ObjectEngine
Application
Business ObjectServices
Client A
Business ObjectEngine
Thinner client, thicker server
Client BApplication
Business ObjectServices
Business ObjectEngine
Business Object Server
DCOMADO/R
CORBA Beans
COMMTS
BeansETS
![Page 57: Arquitectura de aplicaciones](https://reader033.vdocuments.pub/reader033/viewer/2022042511/559cc5501a28abc4368b459d/html5/thumbnails/57.jpg)
Vinculando Procesos Ejecutables al Hardware
Hay que tomar en cuenta aspectos como: Tiempo de respuesta y de puesta en marcha del
sistema. Ancho de banda de comunicación y sus capacidad. Medio ambiente del hardware requerido. Necesidades de procesamiento distribuido. Sobrecarga o balance del procesador en un sistema
distribuido. Tolerancia a fallas. . . .