You are on page 1of 73

Para diseñar 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 diseño de la arquitectura, se debe decidir primero el tipo de
sistema o aplicación que se va a construir, los que pueden ser:
aplicaciones móviles, de escritorio, aplicaciones de servicios,
aplicaciones web, etc.

El tipo de arquitectura depende del tipo de aplicación, además un
tipo de aplicación suele responder a más de un estilo de
arquitectura.
ARQUITECTURA CLIENTE/SERVIDOR
• El estilo Cliente/Servidor, define una relación entre dos aplicaciones,
en las cuales una de ellas envía peticiones (cliente), a la otra
(servidor).

Principios

• El cliente realiza una o más peticiones, espera por las respuestas y las
procesa a su llegada.
• El cliente normalmente se conecta solo a uno o a un número reducido
de servidores al mismo tiempo.
• El cliente interactúa directamente con el usuario a través de una
interfaz gráfica.
• El servidor no realiza ninguna petición al cliente.
• El servidor envía los datos en respuesta a las peticiones realizadas por
los clientes conectados.
• El servidor normalmente autentifica y verifica primero al usuario y
después procesa la petición y envía los resultados.

Beneficios
• Más seguridad ya que los datos se almacenan en el servidor, que
generalmente ofrece más control sobre la seguridad.
• Acceso centralizado en los datos que están almacenados en el
servidor, lo que facilita su acceso y actualización.
• Facilidad de mantenimiento, ya que los roles y las responsabilidades
se distribuyen entre los distintos servidores a través 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 diseño 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 diseñados de forma que puedan ser reutilizados en
distintos escenarios en diferentes aplicaciones aunque algunos componentes
son diseñados para una tarea específica.
• Los componentes son diseñados para operar en diferentes entornos y
contextos. Toda la información 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 código usar su
funcionalidad y no revelan detalles internos de los procesos que realizan o de
su estado.
• Los componentes están diseñados para ser lo más independientes posibles de
otros componentes, por lo que pueden ser desplegados sin afectar a otros
componentes o sistemas.


Beneficios

• Fácil despliegue ya que se puede sustituir un componente por su
nueva versión sin afectar a otros componentes o al sistema.
• Reducción 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.
• Reducción de la complejidad gracias al uso de contenedores de
componentes que realizan la activación, gestión del ciclo de vida, etc.

ARQUITECTURA EN CAPAS:

• Se basa en capas en una distribución jerárquica de los roles y las
responsabilidades para proporcionar una división efectiva de los
problemas a resolver. Los roles indican el tipo y la forma de la
interacción con otras capas y las responsabilidades la funcionalidad
que implementan.

Principios
• Cada capa contiene la funcionalidad relacionada sólo con las tareas
de esa capa.
• Las capas inferiores no tienen dependencias de las capas superiores.
• La comunicación entre capas está basada en una abstracción que
proporciona un bajo acoplamiento entre capas.

ARQUITECTURA PRESENTACIÓN
DESACOPLADA:

• Indica cómo debe realizarse el manejo de las acciones del usuario, la
manipulación de la interfaz y los datos de la aplicación.

Características

• Es un estilo para diseñar aplicaciones, basado en patrones de diseño
conocidos.
• Separa la lógica para el manejo de la interacción de la presentación
de los datos con que trabaja el usuario.
• Permite a los diseñadores crear una interfaz gráfica mientras los
desarrolladores escriben el código para su funcionamiento.

ARQUITECTURA N-NIVELES:

• La arquitectura de N-Niveles, define la separación de la funcionalidad
en segmentos/niveles físicos separados, similar que el estilo N-Capas
pero sitúa cada segmento en una máquina distinta, niveles físicos.

Principios
• Es un estilo para definir el despliegue de las capas de la aplicación.
• Se caracteriza por la descomposición 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 lógicos o capas separados. Cada
capa implementa funcionalidad específica y está físicamente
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
diseñar 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 diseño de una aplicación, como son:
• Arquitectura N-Capas (capas específicas tendencias arquitectura
DDD).
• Patrones de diseño.
• En DDD es fundamental el desacoplamiento entre componentes.

ARQUITECTURA ORIENTADA A
OBJETOS:

• Define el sistema como un conjunto de objetos que cooperan entre
sí.
Características

• Es un estilo para diseñar aplicaciones basado en un número de
unidades lógicas y código reusable.
• Describe el uso de objetos que contienen los datos y el
comportamiento para trabajar con esos datos y además tiene un rol y
responsabilidad distinta.
• Hace hincapié en la reutilización a través de la encapsulación, la
modularidad, el polimorfismo y la herencia.

ARQUITECTURA ORIENTADA A
SERVICIOS (SOA):

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

Principios

• Los servicios son autónomos, 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 comunicación
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 políticas 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 más canales de forma que las aplicaciones pueden
interactuar sin conocer detalles específicos la una de la otra.

Principios

• Toda la comunicación entre aplicaciones se basa en mensajes que
usan esquemas comunes.
• Como la interacción con el bus se basa en esquemas comunes y
mensajes se pueden añadir o eliminar aplicaciones del bus para
cambiar la lógica usada para procesar los mensajes.
• Al usar un modelo de comunicación con mensajes basados en
estándares 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 rápido desarrollo de aplicaciones
.Net Compact Framework (.NET CF)

• Microsoft. NET Compact Framework (.NET CF) es una versión
del .NET Framework basado en móviles/dispositivos embebidos tales
como PDAs, teléfonos móviles
ARQUITECTURA
Java EE 7
(Java Enterprise Edition) Plataforma Java para el desarrollo de
aplicaciones empresariales.
Es una colección de especificaciones que definen una infraestructura
para desarrollar aplicaciones distribuidas multicapa.

Objetivo
Facilita el desarrollo de aplicaciones distribuidas en java.
El objetivo más importante de la plataforma Java EE 7 es
simplificar el desarrollo proporcionando una base común para los
diversos tipos de componentes en la plataforma Java EE.
Los desarrolladores se benefician con las mejoras de
productividad con más anotaciones y menos configuración XML.


Características
Java Platform, Enterprise Edition 7 (Java EE 7) ofrece nuevas
características que mejoran el apoyo HTML5, aumentar la
productividad de los desarrolladores, y mejora aún más cómo se
pueden satisfacer las demandas empresariales. Java EE 7
desarrolladores escribir menos código repetitivo, tiene mejor soporte
para las últimas aplicaciones Web y los marcos, y tener acceso a la
escalabilidad mejorada y más rica, la funcionalidad más simple. Las
empresas se beneficiarán de las nuevas características que permiten
el procesamiento por lotes portátiles y una mejor escalabilidad
Modelo de la aplicación
El modelo de la aplicación Java EE define una arquitectura para
implementar servicios como lo hacen las aplicaciones multicapa, las
cuales son escalables, accesibles y tienen la capacidad de gestión
para aplicaciones de nivel empresarial.
•La lógica de negocio y presentación a ser implementado por el
desarrollador.
•Los servicios estándar 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 máquina
del servidor Java EE y la base de datos.
Nivel de cliente: componentes que corren en
la máquina 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 información empresarial):
software que se ejecuta en el servidor EIS.
Componentes Java EE
Una aplicación Java EE esta creada de componentes. Un componente es
una unidad autónoma de software funcional que se ensambla en una
aplicación 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 aplicación cliente.
1) Cliente Web.
El cliente web consta de dos partes:
Páginas web dinámicas 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 páginas recibidas del servidor.

Clientes Java EE
2) Applets.
Una página web recibido desde la web pueden incluir
un applet incrustado. Escrito en un lenguaje de
programación Java applet es una aplicación cliente
pequeño que se ejecuta en el Máquina virtual de Java
instalada en el navegador web.
3) Clientes de aplicación.
Un cliente de aplicación se ejecuta en un equipo
cliente y proporciona una manera para que los
usuarios puedan manejar tareas que requieren una
interfaz de usuario más 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 aplicación 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 páginas web creadas utilizando
Java Server, la tecnología JSP (las páginas JSP).
Servlets. Es lenguaje de programación Java clases que procesan
dinámicamente solicitudes y construcción respuestas.
Páginas JSP. Están basados en texto documentos que ejecutan como
servlets, pero permiten un enfoque más natural para crear contenido
estático.
Tecnología JavaServer Faces se basa en la tecnología 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 financiación está a
cargo de un enterprise bean que se ejecutan en la capa de negocio.



Sistema de información
empresarial
El sistema de información empresarial (EIS) incluye software y sistemas
de infraestructura de la empresa tales como la planificación 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 método llamado add(añadir,
agregar), que posee diversas sintaxis:

public Component add (Component comp) // Añade el componente al final
del contenedor

public Component add (Component comp) // Añade el componente al final del
contenedor

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

public Component add (Component comp,// Añade el componente en la posición
indicada

int index) // por índex. Con –1 lo añade 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 método remove, cuya
sintaxis es la siguiente:

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

Si se desea vaciar el contenedor, el método removeAll es el método indicado:

public void removeAll ( )

Para conocer el número de componentes que hay actualmente insertados en el
contenedor, se puede utilizar el método siguiente:

public int getComponentCount ( )

Los contenedores poseen también la habilidad de validar o no su
contenido. Esto se consigue gracias a algunos métodos 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 jerarquía:
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 más 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.
Además 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 más básico de una ventana, sin bordes ni
menús. Una instancia de una ventana no puede estar
contenida dentro de otro contenedor.
Dialog
Es una especialización de una ventana, y muestra
bordes y título, y es utilizada comúnmente como
formularios de entrada por los usuarios.
FileDialog
Es una especialización de un diálogo (Dialog), permitiendo al
usuario seleccionar navegar por los discos para seleccionar
ficheros o archivos.
Frame
Un frame (marco) es una especialización de ventana y
muestra bordes y título, y además pueden tener menús
FRAMEWORKS EN JAVA
Apache Cocoon, usualmente llamado simplemente Cocoon, es un framework para
aplicaciones web ,encapsulación y desarrollo de aplicaciones web basado en
componentes.

El framework se enfoca en la publicación pasada en XML y XSLT, habiendo sido
construido en el lenguaje de programación Java. La flexibilidad lograda basándose
fundamentalmente en XML permite la rápida publicación de contenidos en una
variedad de formatos, entre los que se incluyen HTML, PDF y WML.

Cocoon también se usa con frecuencia como herramienta ETL de almacén 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 patrón MVC bajo la plataforma
Java EE (Java Enterprise Edition).

Struts permite reducir el tiempo de desarrollo.
Su carácter 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 programación para hacer pruebas unitarias de aplicaciones Java.

JUnit es un conjunto de clases (framework) que permite realizar la ejecución de clases
Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los
métodos 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 generación de las plantillas necesarias para la creación de
las pruebas de una clase Java se realice de manera automática, facilitando al
programador enfocarse en la prueba y el resultado esperado, y dejando a la herramienta
la creación de las clases que permiten coordinar las pruebas.


JBoss Seam

JBoss Seam es un framework desarrollado por JBoss, una
división 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 presentación refiriéndote 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 características fundamentales de Spring Framework pueden ser
usadas en cualquier aplicación desarrollada en Java.

A pesar de que no impone ningún modelo de programación 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
 inicialización y configuración global
 lógica de negocio relacionada con la
página solicitada
 obtención de registros de la base de
datos y por último
 el código PHP que se emplea para
generar la página
LA ARQUITECTURA MVC
− El patrón de diseño MVC organiza el código en
base a su función. De hecho, este patrón separa
el código en tres capas:

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


LA ARQUITECTURA MVC
− El patrón de diseño MVC organiza el código en
base a su función. De hecho, este patrón separa
el código en tres capas:

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


LA ARQUITECTURA MVC
− El patrón de diseño MVC organiza el código en
base a su función. De hecho, este patrón separa
el código en tres capas:

o El controlador es un bloque de código
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 través 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 patrón de
diseño MVC (Modelo-Vista-Controlador). Es
un framework de código abierto. Está
desarrollado en PHP con programación
orientada a objetos.

FRAMEWORK PARA PHP
CakePHP : CARACTERISTICAS

• Compatible con PHP4 y PHP5
• CRUD de la base de datos integrado
• Creación de url amigables.
• Sistema de plantillas rápido y flexible.
• Ayuda para Ajax, Jacascript, html....
• Proporciona componentes de seguridad y sesión.

FRAMEWORK PARA PHP
CakePHP : VENTAJAS

• Desarrollo rápido - Construye aplicaciones más rápido que
antes.
• Buenas prácticas - Cake es muy fácil de entender y cumple
los estándares en seguridad y autentificación, manejo de
sesiones y muchas otras características.
• Orientado a Objetos - Si te gusta la programación orientada
a objetos que bien y si eres principiante te sentirás cómodo.
• Cero Configuración - Solamente pon la información de la
base de datos y la magia comenzará.
FRAMEWORK PARA PHP
CakePHP : DESVENTAJAS

Ninguna oferta de formación está disponible para este
framework.
No ofrecen más 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 pequeño, con una
estructura de sus librerías 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 documentación con una gran comunida de
desarrolladores.
• Gran facilidad de aprendizaje. En poco tiempo se
puede hacer grandes cosas.
• Utiliza el patrón de diseño Modelo-Vista-
Controlador
FRAMEWORK PARA PHP
CodeIgniter : VENTAJAS

• Amplia documentación disponible.
• Ligero, y sin instalación (para comenzar a desarrollar una
aplicación 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 métodos de
programación.
• Dificultad para adaptar el código escrito en PHP
tradicional
FRAMEWORK PARA PHP
Zend Framework

− Zend Framework es un framework de código
abierto para desarrollar aplicaciones web y
servicios web con PHP 5.
− ZF es una implementación que usa código
100% orientado a objetos


FRAMEWORK PARA PHP
Zend Framework: VENTAJAS

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

• Requiere de una larga curva de aprendizaje.
• Documentación muy pobre.
• Necesita de una gran configuración antes de poder
comenzar a trabajar
• Dificultad para adaptar el código escrito en PHP
tradicional
FRAMEWORK PARA PHP
Yii : CARACTERISTICAS

• Patrón de diseño Modelo Vista
Controlador (MVC).
• Integración con jQuery.
• Entradas de Formulario y validación.
• Widgets de Ajax, como autocompletado de
campos de texto y demás.
• Soporte de Autenticación incorporado.
• Personalización de aspectos y temas.

GRACIAS
POR SU
ATENCI
ÓN