Arquitectura de Aplicaciones
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
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.
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
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.
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)
SecurityClasses
global
Uso de Paquetes Lógicos Globales Estos paquetes son señalados como
globales.
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.
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.
Ejemplo de Dependencia Circular
Interfaces Business Rules
Cambiado por:IncomingInterfaces Business
Rules
Outgoing Interfaced
<<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
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
Modelado de Componentes
¿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
Component Diagram
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:
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
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.
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.
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.
...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
La representación gráfica es la siguiente:GenéricoCuerpoEspecificación
Package specification
Package body
Generic package
… Diagramas de Componentes
Curriculum
Course
Curriculum
Course
Diagrama de Componentes
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
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>>
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
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.
Vista de Componentes
Los paquetes se organizan en capas jerárquicas donde cada capa tiene una interfaz bien definida.
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
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.
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:
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:
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).
Correspondencia entre Paquetes de diferentes Vistas
Logical View Top-Level Diagram Component View Top-Level Diagram
MFC RegistrationUserInterface
RegistrationSystem
GuiWidgets RegistrationUserInterface
RegistrationSystem
Copyright © 1997 by Rational Software Corporation
Multiple Systems
Reuti l izacion de Componentes
ReusableComponents
Modelado de Procesos
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).
Hilos de Control El Diagrama de Secuencia refleja de
manera indirecta las opciones de control (sincronizacion del sistema)
m1m2
m3
m1
m2 m3
m4m5
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.
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)
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
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
Name1 Name2
Name1 Name2
MyProcess.exe
Diagrama de componentes para representar un proceso Cada componente puede depender de
otros.
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
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
Modelado de Despliegue
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.
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.
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
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.
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.
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
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:
Diagrama de despliegue
Diagrama de desplieque
Vista de la arquitectura 3Tier
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
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. . . .