Você está na página 1de 73

Para disear la arquitectura de un sistema se debe tener en cuenta

los intereses de los usuarios del sistema, el sistema y los objetivos


del negocio, ya que ellos imponen requisitos y restricciones que se
deben tener en cuenta.

En el diseo de la arquitectura, se debe decidir primero el tipo de
sistema o aplicacin que se va a construir, los que pueden ser:
aplicaciones mviles, de escritorio, aplicaciones de servicios,
aplicaciones web, etc.

El tipo de arquitectura depende del tipo de aplicacin, adems un
tipo de aplicacin suele responder a ms de un estilo de
arquitectura.
ARQUITECTURA CLIENTE/SERVIDOR
El estilo Cliente/Servidor, define una relacin entre dos aplicaciones,
en las cuales una de ellas enva peticiones (cliente), a la otra
(servidor).

Principios

El cliente realiza una o ms peticiones, espera por las respuestas y las
procesa a su llegada.
El cliente normalmente se conecta solo a uno o a un nmero reducido
de servidores al mismo tiempo.
El cliente interacta directamente con el usuario a travs de una
interfaz grfica.
El servidor no realiza ninguna peticin al cliente.
El servidor enva los datos en respuesta a las peticiones realizadas por
los clientes conectados.
El servidor normalmente autentifica y verifica primero al usuario y
despus procesa la peticin y enva los resultados.

Beneficios
Ms seguridad ya que los datos se almacenan en el servidor, que
generalmente ofrece ms control sobre la seguridad.
Acceso centralizado en los datos que estn almacenados en el
servidor, lo que facilita su acceso y actualizacin.
Facilidad de mantenimiento, ya que los roles y las responsabilidades
se distribuyen entre los distintos servidores a travs de la red, lo que
permite que un cliente no se vea afectado por un error en un
servidor particular.

ARQUITECTURA BASADA EN
COMPONENTES:

describe un acercamiento al diseo de sistemas como un conjunto de
componentes que exponen interfaces bien definidas y que colaboran
entre s para resolver el problema.

Principios

Los componentes son diseados de forma que puedan ser reutilizados en
distintos escenarios en diferentes aplicaciones aunque algunos componentes
son diseados para una tarea especfica.
Los componentes son diseados para operar en diferentes entornos y
contextos. Toda la informacin debe ser pasada al componente en lugar de
incluirla en l o que ste acceda a ella.
Los componentes pueden ser extendidos a partir de otros componentes para
ofrecer nuevos comportamientos.
Los componentes exponen interfaces que permiten al cdigo usar su
funcionalidad y no revelan detalles internos de los procesos que realizan o de
su estado.
Los componentes estn diseados para ser lo ms independientes posibles de
otros componentes, por lo que pueden ser desplegados sin afectar a otros
componentes o sistemas.


Beneficios

Fcil despliegue ya que se puede sustituir un componente por su
nueva versin sin afectar a otros componentes o al sistema.
Reduccin de costes ya que se pueden usar componentes de terceros
para abaratar los costes de desarrollo y mantenimiento.
Reusables, ya que son independientes del contexto se pueden
emplear en otras aplicaciones y sistemas.
Reduccin de la complejidad gracias al uso de contenedores de
componentes que realizan la activacin, gestin del ciclo de vida, etc.

ARQUITECTURA EN CAPAS:

Se basa en capas en una distribucin jerrquica de los roles y las
responsabilidades para proporcionar una divisin efectiva de los
problemas a resolver. Los roles indican el tipo y la forma de la
interaccin con otras capas y las responsabilidades la funcionalidad
que implementan.

Principios
Cada capa contiene la funcionalidad relacionada slo con las tareas
de esa capa.
Las capas inferiores no tienen dependencias de las capas superiores.
La comunicacin entre capas est basada en una abstraccin que
proporciona un bajo acoplamiento entre capas.

ARQUITECTURA PRESENTACIN
DESACOPLADA:

Indica cmo debe realizarse el manejo de las acciones del usuario, la
manipulacin de la interfaz y los datos de la aplicacin.

Caractersticas

Es un estilo para disear aplicaciones, basado en patrones de diseo
conocidos.
Separa la lgica para el manejo de la interaccin de la presentacin
de los datos con que trabaja el usuario.
Permite a los diseadores crear una interfaz grfica mientras los
desarrolladores escriben el cdigo para su funcionamiento.

ARQUITECTURA N-NIVELES:

La arquitectura de N-Niveles, define la separacin de la funcionalidad
en segmentos/niveles fsicos separados, similar que el estilo N-Capas
pero sita cada segmento en una mquina distinta, niveles fsicos.

Principios
Es un estilo para definir el despliegue de las capas de la aplicacin.
Se caracteriza por la descomposicin funcional de las aplicaciones,
componentes del servicio y su despliegue distribuido, que ofrece
mejor escalabilidad, disponibilidad, rendimiento, manejabilidad y uso
de recursos.
Cada nivel es completamente independiente de los otros niveles,
excepto del inmediatamente inferior.
Este estilo tiene al menos 3 niveles lgicos o capas separados. Cada
capa implementa funcionalidad especfica y est fsicamente
separada en distintos servidores.

ARQUITECTURA ORIENTADA AL
DOMINIO (DDD):

se basa en la importancia del dominio del negocio, sus elementos y
comportamiento y las relaciones entre ellos. Est indicado para
disear e implementar aplicaciones empresariales complejas donde
es fundamental definir un modelo de dominio.
DDD identifica una serie de patrones de arquitectura importantes a
tener en cuenta en el diseo de una aplicacin, como son:
Arquitectura N-Capas (capas especficas tendencias arquitectura
DDD).
Patrones de diseo.
En DDD es fundamental el desacoplamiento entre componentes.

ARQUITECTURA ORIENTADA A
OBJETOS:

Define el sistema como un conjunto de objetos que cooperan entre
s.
Caractersticas

Es un estilo para disear aplicaciones basado en un nmero de
unidades lgicas y cdigo reusable.
Describe el uso de objetos que contienen los datos y el
comportamiento para trabajar con esos datos y adems tiene un rol y
responsabilidad distinta.
Hace hincapi en la reutilizacin a travs de la encapsulacin, la
modularidad, el polimorfismo y la herencia.

ARQUITECTURA ORIENTADA A
SERVICIOS (SOA):

La Arquitectura orientada a servicios permite a una aplicacin ofrecer
su funcionalidad como un conjunto de servicios para que sean
consumidos. Los servicios usan interfaces estndares que pueden ser
invocadas, publicadas y descubiertas. Se centran en proporcionar un
esquema basado en mensajes con operaciones de nivel de aplicacin
y no de componente o de objeto.

Principios

Los servicios son autnomos, es decir cada servicio se mantiene, se
desarrolla, se despliega y se versiona independientemente.
Los servicios pueden estar situados en cualquier nodo de una red
local o remota mientras sta soporte los protocolos de comunicacin
necesarios.
Cada servicio es independiente del resto de servicios y puede ser
reemplazado y actualizado sin afectar a las aplicaciones que lo usan
mientras la interfaz sea compatible.
Los servicios comparten esquemas y contratos para comunicarse, no
clases.
La compatibilidad se basa en polticas que definen funcionalidades
como el mecanismo de transporte, el protocolo y la seguridad.

ARQUITECTURA BUS DE SERVICIOS
(Mensajes):

Define un sistema software que puede enviar y recibir mensajes
usando uno o ms canales de forma que las aplicaciones pueden
interactuar sin conocer detalles especficos la una de la otra.

Principios

Toda la comunicacin entre aplicaciones se basa en mensajes que
usan esquemas comunes.
Como la interaccin con el bus se basa en esquemas comunes y
mensajes se pueden aadir o eliminar aplicaciones del bus para
cambiar la lgica usada para procesar los mensajes.
Al usar un modelo de comunicacin con mensajes basados en
estndares se puede interactuar con aplicaciones desarrolladas para
distintas plataformas.

FRAMEWORKS
.Net Framework
es un framework de Microsoft que hace un nfasis en la
transparencia de redes, con independencia de plataforma
de hardwarey que permita un rpido desarrollo de aplicaciones
.Net Compact Framework (.NET CF)

Microsoft. NET Compact Framework (.NET CF) es una versin
del .NET Framework basado en mviles/dispositivos embebidos tales
como PDAs, telfonos mviles
ARQUITECTURA
Java EE 7
(Java Enterprise Edition) Plataforma Java para el desarrollo de
aplicaciones empresariales.
Es una coleccin de especificaciones que definen una infraestructura
para desarrollar aplicaciones distribuidas multicapa.

Objetivo
Facilita el desarrollo de aplicaciones distribuidas en java.
El objetivo ms importante de la plataforma Java EE 7 es
simplificar el desarrollo proporcionando una base comn para los
diversos tipos de componentes en la plataforma Java EE.
Los desarrolladores se benefician con las mejoras de
productividad con ms anotaciones y menos configuracin XML.


Caractersticas
Java Platform, Enterprise Edition 7 (Java EE 7) ofrece nuevas
caractersticas que mejoran el apoyo HTML5, aumentar la
productividad de los desarrolladores, y mejora an ms cmo se
pueden satisfacer las demandas empresariales. Java EE 7
desarrolladores escribir menos cdigo repetitivo, tiene mejor soporte
para las ltimas aplicaciones Web y los marcos, y tener acceso a la
escalabilidad mejorada y ms rica, la funcionalidad ms simple. Las
empresas se beneficiarn de las nuevas caractersticas que permiten
el procesamiento por lotes porttiles y una mejor escalabilidad
Modelo de la aplicacin
El modelo de la aplicacin Java EE define una arquitectura para
implementar servicios como lo hacen las aplicaciones multicapa, las
cuales son escalables, accesibles y tienen la capacidad de gestin
para aplicaciones de nivel empresarial.
La lgica de negocio y presentacin a ser implementado por el
desarrollador.
Los servicios estndar del sistema de la plataforma Java EE
Aplicaciones Multicapa Distribuidas
Java EE multicapa aplicaciones son
generalmente consideradas aplicaciones tres
niveles porque se distribuyen en tres
localizaciones: equipos cliente, la mquina
del servidor Java EE y la base de datos.
Nivel de cliente: componentes que corren en
la mquina cliente.
Nivel Web: componentes que corren en el
servidor Java EE.
Nivel de Negocios: componentes que corren
en el servidor Java EE.
Nivel EIS (Sistema de informacin empresarial):
software que se ejecuta en el servidor EIS.
Componentes Java EE
Una aplicacin Java EE esta creada de componentes. Un componente es
una unidad autnoma de software funcional que se ensambla en una
aplicacin Java EE con sus clases y archivos relacionados y que se
comunica con otros componentes.
Las aplicaciones cliente y los applets son componentes que se ejecutan
en el cliente.
Java Servlet, JavaServerFaces y JavaServerPages son componentes Web
que se ejecutan en el servidor.
Enterprise JavaBeans (EJB) son componentes de negocio que se ejecutan
en el servidor.

Clientes Java EE
Un cliente Java EE puede ser un cliente Web o una aplicacin cliente.
1) Cliente Web.
El cliente web consta de dos partes:
Pginas web dinmicas que contienen varios tipos de lenguaje de
marcado (HTML, XML y as en), que son generados por los
componentes web que se ejecutan en la capa web.
Un navegador web, son las pginas recibidas del servidor.

Clientes Java EE
2) Applets.
Una pgina web recibido desde la web pueden incluir
un applet incrustado. Escrito en un lenguaje de
programacin Java applet es una aplicacin cliente
pequeo que se ejecuta en el Mquina virtual de Java
instalada en el navegador web.
3) Clientes de aplicacin.
Un cliente de aplicacin se ejecuta en un equipo
cliente y proporciona una manera para que los
usuarios puedan manejar tareas que requieren una
interfaz de usuario ms rica que puede ser
proporcionado por un lenguaje de marcado.


Arquitectura de los componentes
JavaBeans
El servidor y el cliente pueden incluir componentes JavaBeans para
administrar el flujo de datos entre una aplicacin cliente o un applet
y componentes que se ejecutan en el servidor JEE o entre
componentes de servidor y BD.


Componentes Web
Son componentes de Java EE web servlets o pginas web creadas utilizando
Java Server, la tecnologa JSP (las pginas JSP).
Servlets. Es lenguaje de programacin Java clases que procesan
dinmicamente solicitudes y construccin respuestas.
Pginas JSP. Estn basados en texto documentos que ejecutan como
servlets, pero permiten un enfoque ms natural para crear contenido
esttico.
Tecnologa JavaServer Faces se basa en la tecnologa JSP y servlets y
proporciona un usuario marco de componente de interfaz de aplicaciones
web.


Componentes empresariales
Resuelven o satisfacen las necesidades de un dominio particular de
negocio como la banca, venta al por menor o la financiacin est a
cargo de un enterprise bean que se ejecutan en la capa de negocio.



Sistema de informacin
empresarial
El sistema de informacin empresarial (EIS) incluye software y sistemas
de infraestructura de la empresa tales como la planificacin de recursos
empresariales (ERP), procesamiento de transacciones mainframe,
sistemas de bases de datos y otros sistemas heredados.
Un contenedor es un componente
especial que permite contener en su
interior a otros componentes, incluidos
otros contenedores
Los contenedores descienden de la clase padre Container, la cual, a su vez,
es descendiente directa de la clase ComponenT.

java.lang.Object
java.awt.Component
java.awt.Container

Para agregar componentes a un contenedor existe un mtodo llamado add(aadir,
agregar), que posee diversas sintaxis:

public Component add (Component comp) // Aade el componente al final
del contenedor

public Component add (Component comp) // Aade el componente al final del
contenedor

public Component add (String name) // Aade el componente al final del contenedor y
Component comp) // le asigna un nombre

public Component add (Component comp,// Aade el componente en la posicin
indicada

int index) // por ndex. Con 1 lo aade al final

public void add (Component comp) // dem al anterior pero indicando que agregue

int index) // la lista de componentes del contenedor

Para eliminar componentes del contenedor se utiliza el mtodo remove, cuya
sintaxis es la siguiente:

public remove (int index) // Elimina el componente que hay en la posicin-
index.
public remove (Component comp) // Elimina el componente especificado.

Si se desea vaciar el contenedor, el mtodo removeAll es el mtodo indicado:

public void removeAll ( )

Para conocer el nmero de componentes que hay actualmente insertados en el
contenedor, se puede utilizar el mtodo siguiente:

public int getComponentCount ( )

Los contenedores poseen tambin la habilidad de validar o no su
contenido. Esto se consigue gracias a algunos mtodos especiales:

public void invalidate ( ) // Invalida el contenedor

public void validate ( ) // Valida el contenedor y sus subcomponentes

Tipos de contenedores
Java posee varios tipos de
contenedores, dispuestos
en la siguiente jerarqua:
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.applet
java.awt.ScrollPane
java.awt.Window
java.awt.Dialog
java.awt.FileDialog
java.awt.Frame

Panel
Un panel es la clase de contenedor ms simple, ya que
nicamente proporciona el espacio para contener
otros componentes y contenedores.
Applet
Un applet es un contenedor que deriva de la clase Panel.
Adems de proporcionar espacio para contener otros
componentes.
ScrollPane
Este tipo de contenedor puede implementar
desplazamientos horizontales y/o verticales para poder
acceder a posiciones de sus componentes hijos.
Window
Representa el nivel ms bsico de una ventana, sin bordes ni
mens. Una instancia de una ventana no puede estar
contenida dentro de otro contenedor.
Dialog
Es una especializacin de una ventana, y muestra
bordes y ttulo, y es utilizada comnmente como
formularios de entrada por los usuarios.
FileDialog
Es una especializacin de un dilogo (Dialog), permitiendo al
usuario seleccionar navegar por los discos para seleccionar
ficheros o archivos.
Frame
Un frame (marco) es una especializacin de ventana y
muestra bordes y ttulo, y adems pueden tener mens
FRAMEWORKS EN JAVA
Apache Cocoon, usualmente llamado simplemente Cocoon, es un framework para
aplicaciones web ,encapsulacin y desarrollo de aplicaciones web basado en
componentes.

El framework se enfoca en la publicacin pasada en XML y XSLT, habiendo sido
construido en el lenguaje de programacin Java. La flexibilidad lograda basndose
fundamentalmente en XML permite la rpida publicacin de contenidos en una
variedad de formatos, entre los que se incluyen HTML, PDF y WML.

Cocoon tambin se usa con frecuencia como herramienta ETL de almacn de datos
o como middleware para el transporte de datos entre diferentes sistemas.
APACHE COCOON
APACHE STRUTS
Struts es una herramienta de soporte para el desarrollo de
aplicaciones Web bajo el patrn MVC bajo la plataforma
Java EE (Java Enterprise Edition).

Struts permite reducir el tiempo de desarrollo.
Su carcter de "software libre" y su compatibilidad con
todas las plataformas en las que Java Entreprise est
disponible lo convierten en una herramienta altamente
disponible.
JUNIT
JUnit es un conjunto de bibliotecas creadas por Erich Gamma y Kent Beck que son
utilizadas en programacin para hacer pruebas unitarias de aplicaciones Java.

JUnit es un conjunto de clases (framework) que permite realizar la ejecucin de clases
Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los
mtodos de la clase se comporta como se espera.

En la actualidad las herramientas de desarrollo como NetBeans y Eclipse cuentan con
plug-ins que permiten que la generacin de las plantillas necesarias para la creacin de
las pruebas de una clase Java se realice de manera automtica, facilitando al
programador enfocarse en la prueba y el resultado esperado, y dejando a la herramienta
la creacin de las clases que permiten coordinar las pruebas.


JBoss Seam

JBoss Seam es un framework desarrollado por JBoss, una
divisin de Red Hat.

framework para mapeo objeto relacional Hibernate.

Combina a los 2 frameworks Enterprise JavaBeans EJB3 y
JavaServerFaces JSF.

Se puede acceder a cualquier componente EJB desde la
capa de presentacin refirindote a l mediante su nombre
de componente seam(introduce el concepto de contextos).


Spring Framework


Spring es un framework para el desarrollo de aplicaciones

Si bien las caractersticas fundamentales de Spring Framework pueden ser
usadas en cualquier aplicacin desarrollada en Java.

A pesar de que no impone ningn modelo de programacin en particular,
este framework se ha vuelto popular en la comunidad al ser considerado
una alternativa, sustituto, e incluso un complemento al modelo EJB
(Enterprise JavaBean).
LA ARQUITECTURA MVC
inicializacin y configuracin global
lgica de negocio relacionada con la
pgina solicitada
obtencin de registros de la base de
datos y por ltimo
el cdigo PHP que se emplea para
generar la pgina
LA ARQUITECTURA MVC
El patrn de diseo MVC organiza el cdigo en
base a su funcin. De hecho, este patrn separa
el cdigo en tres capas:

oLa capa del modelo define la lgica de
negocio (la base de datos pertenece a esta
capa).


LA ARQUITECTURA MVC
El patrn de diseo MVC organiza el cdigo en
base a su funcin. De hecho, este patrn separa
el cdigo en tres capas:

o La vista es lo que utilizan los usuarios
para interactuar con la aplicacin (los
gestores de plantillas pertenecen a esta
capa).


LA ARQUITECTURA MVC
El patrn de diseo MVC organiza el cdigo en
base a su funcin. De hecho, este patrn separa
el cdigo en tres capas:

o El controlador es un bloque de cdigo
que realiza llamadas al modelo para
obtener los datos y se los pasa a la vista
para que los muestre al usuario.

LA ARQUITECTURA MVC
Symfony

La capa del modelo: Symfony
guarda todas las clases y
archivos relacionados con el
modelo en el
directorio lib/model/.

LA ARQUITECTURA MVC
Symfony

La vista: En Symfony la capa de la
vista est formada principalmente
por plantillas en PHP. Estas
plantillas se guardan en varios
directorios
llamados templates/ repartidos por
todo el proyecto
LA ARQUITECTURA MVC
Symfony

El controlador: En Symfony, todas las
peticiones se canalizan a travs de
los controladores frontales
(index.php y frontend_dev.php). Estos
controladores frontales realmente
delegan todo el trabajo en
las acciones.
FRAMEWORK PARA PHP
CakePHP

Es un framework que facilita el desarrollo de
aplicaciones web, utilizando el patrn de
diseo MVC (Modelo-Vista-Controlador). Es
un framework de cdigo abierto. Est
desarrollado en PHP con programacin
orientada a objetos.

FRAMEWORK PARA PHP
CakePHP : CARACTERISTICAS

Compatible con PHP4 y PHP5
CRUD de la base de datos integrado
Creacin de url amigables.
Sistema de plantillas rpido y flexible.
Ayuda para Ajax, Jacascript, html....
Proporciona componentes de seguridad y sesin.

FRAMEWORK PARA PHP
CakePHP : VENTAJAS

Desarrollo rpido - Construye aplicaciones ms rpido que
antes.
Buenas prcticas - Cake es muy fcil de entender y cumple
los estndares en seguridad y autentificacin, manejo de
sesiones y muchas otras caractersticas.
Orientado a Objetos - Si te gusta la programacin orientada
a objetos que bien y si eres principiante te sentirs cmodo.
Cero Configuracin - Solamente pon la informacin de la
base de datos y la magia comenzar.
FRAMEWORK PARA PHP
CakePHP : DESVENTAJAS

Ninguna oferta de formacin est disponible para este
framework.
No ofrecen ms apoyo que foros, listas de correo y Google
Grupos.
FRAMEWORK PARA PHP
CodeIgniter

Es un framework para desarrollo de aplicaciones
en PHP. Es Open Source y muy pequeo, con una
estructura de sus libreras muy bien estructurado.

Destaca por lo liviano que es y por su facilidad
para ponerlo en marcha. Solo hay que
descomprimirlo y ponerlo en una carpeta.


FRAMEWORK PARA PHP
CodeIgniter : CARACTERISTICAS

Compatible para PHP4 y PHP5
Gran documentacin con una gran comunida de
desarrolladores.
Gran facilidad de aprendizaje. En poco tiempo se
puede hacer grandes cosas.
Utiliza el patrn de diseo Modelo-Vista-
Controlador
FRAMEWORK PARA PHP
CodeIgniter : VENTAJAS

Amplia documentacin disponible.
Ligero, y sin instalacin (para comenzar a desarrollar una
aplicacin basta con copiar los archivos, y ponerse a
trabajar).
Compatibilidad con una amplia variedad de servidores y
configuraciones
Flexibilidad, ya que no obliga a tener una determinada
estructura de tablas, nombres de campos, ni adherirse a una
forma de programar concreta
FRAMEWORK PARA PHP
CodeIgniter : DESVENTAJAS

Curva de aprendizaje: necesidad de aprender
nuevas funciones, estructuras y mtodos de
programacin.
Dificultad para adaptar el cdigo escrito en PHP
tradicional
FRAMEWORK PARA PHP
Zend Framework

Zend Framework es un framework de cdigo
abierto para desarrollar aplicaciones web y
servicios web con PHP 5.
ZF es una implementacin que usa cdigo
100% orientado a objetos


FRAMEWORK PARA PHP
Zend Framework: VENTAJAS

Trabaja con MVC.
Cuenta con mdulos para
manejar archivos PDF,Web Services (Amazon, Flickr, Yahoo),
etc.
Robustas clases para autenticacin y filtrado de entrada.
Certificaciones
FRAMEWORK PARA PHP
Zend Framework : DESVENTAJAS

Requiere de una larga curva de aprendizaje.
Documentacin muy pobre.
Necesita de una gran configuracin antes de poder
comenzar a trabajar
Dificultad para adaptar el cdigo escrito en PHP
tradicional
FRAMEWORK PARA PHP
Yii : CARACTERISTICAS

Patrn de diseo Modelo Vista
Controlador (MVC).
Integracin con jQuery.
Entradas de Formulario y validacin.
Widgets de Ajax, como autocompletado de
campos de texto y dems.
Soporte de Autenticacin incorporado.
Personalizacin de aspectos y temas.

GRACIAS
POR SU
ATENCI
N

Você também pode gostar