Arquitectura de aplicaciones

57
Arquitectura de Aplicaciones

Transcript of Arquitectura de aplicaciones

Page 1: Arquitectura de aplicaciones

Arquitectura de Aplicaciones

Page 2: 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

Page 3: Arquitectura de aplicaciones

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

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

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

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

SecurityClasses

global

Uso de Paquetes Lógicos Globales Estos paquetes son señalados como

globales.

Page 8: Arquitectura de aplicaciones

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

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

Ejemplo de Dependencia Circular

Interfaces Business Rules

Cambiado por:IncomingInterfaces Business

Rules

Outgoing Interfaced

Page 11: Arquitectura de aplicaciones

<<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

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

Modelado de Componentes

Page 14: Arquitectura de aplicaciones

¿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

Component Diagram

Page 16: Arquitectura de aplicaciones

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

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

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

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

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

...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

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

Curriculum

Course

Curriculum

Course

Diagrama de Componentes

Page 24: Arquitectura de aplicaciones

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

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

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

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

Vista de Componentes

Los paquetes se organizan en capas jerárquicas donde cada capa tiene una interfaz bien definida.

Page 29: Arquitectura de aplicaciones

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

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

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

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

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

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

Copyright © 1997 by Rational Software Corporation

Multiple Systems

Reuti l izacion de Componentes

ReusableComponents

Page 36: Arquitectura de aplicaciones

Modelado de Procesos

Page 37: Arquitectura de aplicaciones

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

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

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

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

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

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

Name1 Name2

Name1 Name2

MyProcess.exe

Diagrama de componentes para representar un proceso Cada componente puede depender de

otros.

Page 44: Arquitectura de aplicaciones

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

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

Modelado de Despliegue

Page 47: Arquitectura de aplicaciones

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

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

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

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

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

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

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

Diagrama de despliegue

Page 55: Arquitectura de aplicaciones

Diagrama de desplieque

Vista de la arquitectura 3Tier

Page 56: Arquitectura de aplicaciones

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

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. . . .