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