Arquitectura de Software Propuesta SIGEP
Ambiente de Desarrollo Plataforma Java (J2EE,JRE,JDK,JVM). Contenedor Web (Tomcat 5) Control de Versiones. (SubVersion) Base de Datos.(Oracle 10g) Herramientas de Modelado. (Erwin, Visual Paradigm)
Ambiente de Desarrollo Entorno Integrado de Desarrollo (Eclipse) WTP SpringIDE HibernateTools SubEclipse AJDT (AspectJ Development Tools)
Ambiente de Desarrollo Frameworks Spring Acegi Security System AspectJ Hibernate JUnit EHCache JCaptcha JasperReport JFreeChart
Ambiente de Desarrollo
Spring Framework Framework de código abierto. Provee servicios empresariales en POJOs. Es el más popular y el más ambicioso de todos los framework de peso ligero. Interviene en todas las capas arquitectónicas de una aplicación J2EE. Ofrece un rango de servicios.
Módulos de Spring Spring AOP Spring ORM Spring WEB Spring WEB MVC AOP infrastructure Spring ORM Hibernate support iBatis support JDO support Spring WEB WebApplicationContext MultipartResolver Web utilities Spring WEB MVC Web MVC Framework Web Views JSP / Velocity PDF / Excel Spring DAO Transaction infrastructure JDBC support DAO support Spring Context Application context UI support Validation JNDI, EJB support && Remoting Mail Spring Core Supporting utilities Bean container
Aspectos de Seguridad – Acegi Security System Aspecto de administración de Transacciones Aspecto de auditoría Aspecto de Cache
Persistencia de POJOS(Java beans) Capa de Acceso a Datos Persistencia de POJOS(Java beans) Ficheros de Mapeo flexibles e intuitivos. Modelos de objetos bien granulados. Lenguaje de consultas de alto rendimiento. Arquitectura de caché. (Objetos y Consultas) Soporte para objetos desmarcados. (OpenSessionInView) Herramientas para desarrollo. Soporte para diferentes tipos de pruebas. Abstracción a través del uso de DAOs y Genericidad. Configuración de un Pool de Conexiones.
Definición de las Transacciones Comportamiento de la propagación. (PROPAGATION_REQUIRED, PROPAGATION_SUPPORTS …) Aislamiento ( READ_COMMITTED, SERIALIZABLE , … ) Timeout Read-Only
Arquitectura de servicios Capa de servicio Arquitectura de servicios Desarrollo modular y encapsulado de funciones de negocio que colaboren entre sí como servicios. Diseño desacoplado. La interfaz del servicio es independiente de su implementación.
Ventajas Capa de servicio Sencillez en el proceso de desarrollo, mantenimiento, integración de aplicaciones. Incorporación de diversas tecnologías de interfaz de usuario.
Java No Java Interacción con otros sistemas Jax-RPC SOAP Capa de servicio Interacción con otros sistemas Jax-RPC Java No Java SOAP Jax-RPC. API de Java para invocación remota de procedimientos basados en xml.
Java Java Capa de servicio RMI. Infraestructura clásica de comunicación remota en Java. Hessian. Protocolo binario sobre HTTP. Burlap. Protocolo basado en xml sobre HTTP. HTTP Invoker. Solución de Spring para comunicación remota Java-Java sobre HTTP. Lingo. Framework de comunicación remota para Spring. Comunicación asíncrona.
Sistemas de mensajería Proporcionan servicios adicionales que los sistemas tradicionales síncronos no pueden ofrecer. Algunas de las características más interesantes de estos sistemas son: Funcionamiento síncrono o asíncrono Fiabilidad Escaso acoplamiento Múltiples destinos
Arquitectura JMS •Proveedor JMS: sistema de mensajería que implementa interfaces JMS y brinda facilidades administrativas y de control Ej: Active MQ, OpenJMS , Jonam. •Cliente JMS: son los programas escritos en Java que producen y consumen mensajes •Mensajes:objetos que comunican información entre los clientes
Point to Point Se usará el sistema de mensajes punto a punto cuando todos los mensajes enviados deben ser procesados correctamente por el consumidor.
Publish/subscriber
Apache ActiveMQ Es un canal de mensajería ,open-source y desarrollado bajo la Licencia 2.0 de Apache con soporte completo para JMS 1.1 y J2EE 1.4.
Aspectos de Seguridad – Acegi Security System Aspecto de administración de Transacciones Aspecto de auditoría Aspecto de Cache
Diagrama de clases del negocio
Estructura de paquetes Subsistema de Control Penal Módulo de Traslados Estructura de paquetes para soportar los CUs
Colaboración entre Subsistemas
Colaboración entre Módulos
Patrón MVC para Presentación Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
Spring MVC Handler Mapping Dispatcher Servlet Controller ModelAndView Request ModelAndView ViewResolver View
Controllers Manipuladores de peticiones simples sin un determinado flujo de trabajo. Manipuladores de Formularios que controlan el ciclo completo de vida de un formulario. Manipuladores de wizards que proveen un flujo de trabajo para múltiples páginas. Manipuladores flexibles para realizar acciones múltiples.
Validators Respaldan las acciones de los controladores. Verifican la integridad de los datos manejados en la petición. Devuelven reportes de errores existentes en caso de fallidas las validaciones.
Views JSP and JSTL. Tiles Documentos en formato PDF, Excel. Reportes en formatos multiples (PDF, EXCEL, DOC, XML, HTML). Imágenes dinámicas.
JasperReport
JFreeChart
IReport
HandlerExceptionResolvers Spring brinda implementaciones para mostrar vistas determinadas si desde controlador se lanza una excepción que no puede ser tratada por este. Se pueden crear mecanismos propios para determinar qué y cómo se mostrará ante una excepción.
Presentación en el Cliente 1 La alternativa AJAX. 2 Librerías y Frameworks Javascript.
Asynchronous JavaScript and XML(Ajax) La alternativa AJAX. Asynchronous JavaScript and XML(Ajax) Ajax consiste en HTML, tecnología Javascript, DHTML y DOM. Es un excelente método para transformar las pesadas interfaces Web en interactivas aplicaciones Ajax. Todas estas tecnologías trabajan juntas para hacer extremadamente eficiente el desarrollo web.
Aplicaciones Desktop Aplicaciones Web La alternativa AJAX. Usualmente más rápidas. No necesita esperar por respuestas del servidor. Increiblemente dinámicas con grandiosas interfaces de usuario. Aplicaciones Web Provee servicios que nunca podras obtener con aplicaciones desktop. Pero también siempre está a la espera de la respuesta del servidor, que se refresque la página, que la petición regrese para crear una nueva página.
La alternativa AJAX. Ajax pretende unir estas diferencias de funcionalidad e interactividad de las aplicaciones desktop y la siempre actualizada aplicacion web. Ahora se pueden usar interfaces de usuario dinamicas y elegantes controles como los tiene las aplicaciones desktop en las aplicaciones web.
Librerías Javascript Dojo Toolkit Prototype Library
Roles Seguridad ROL_USUARIO ROL_ADMIN ROL_INVITADO User1 User2 User3
Autenticación del usuario Aplicación Acceder Usuario Contraseña Direccion IP Verificación Humana
Seguridad en la aplicación La seguridad se define y maneja independiente a la aplicación. Desarrollo de la aplicación Definición de la seguridad Implementación de casos de uso
Peticiones Web (URL): Seguridad Interceptar las peticiones web. Aplicación
Https: Canal Seguro Filtro https Capa Presentación Resto de la aplicación
Asegurando un Servicio: Seguridad Servicios Asegurando un Servicio: Utilización de aspectos Seguridad Resto de la aplicación Web Service Servicio registrarPago(int); tomarDecision(String); getEstadistica(); ….
Interacción 1 Solo se muestra al usuario lo que puede hacer 2 No puede acceder a un recurso a la fuerza. 3 Número determinado de peticiones al sistema. 4 Tiempo limitado de inactividad en el sistema.
Disponibilidad de módulos Administrar la disponibilidad de los módulos Progresividad Registro e Identificación Permisos y salidas transitorias Control Penal Expediente legal Traslados ……
Auditoría 1 Mecanismo utilizado para desarrollar la auditoría. 2 Estructura de los logs y del fichero .log. 3 Herramienta para visualizar los Logs.
¿Qué se va a Auditar? Capa Web Capa Negocio Eventos de Sistema
Auditando Web Capa Web Filtros Interceptar Request y/o Response. Cliente Log ( URL ).
Auditando Capa Servicios Capa Servicio interceptor(AOP) Interceptar llamadas a los métodos de interfaces de servicio que se quieran auditar (nombre método, parámetros, retorno). Interceptor Capa Servicio Capa Web getMétodo() Log ( METHOD ).
Auditando Evento del Sistema Evento del sistema Listener Se encargan de escuchar eventos que el sistema puede lanzar, y se encargará de procesarlo una vez lanzado.
Estructura de Logs Url: Métodos: Evento: Fecha | Hora | (URL) Tipo | Usuario | Url | Parámetros | Ip. Métodos: Fecha | Hora | (METHOD) Tipo | Usuario | Clase | Método | (Tipo parámetros | Valores) | Ip. Evento: Fecha | Hora |(EVENTO) Tipo | Usuario | Tipo de Evento | Descripción | Ip.
Estructura Fichero Log Logs Capa Web (URLs) Fichero Log Logs Eventos Sistema (EVENTO) Logs Capa Servicio (Métodos)
Visor de Logs
Visor de Logs
Visor de Logs
Visor de Logs
Visor de Logs
Gestión de la Configuración Release 1 Línea Base de Desarrollo Estable Línea Base de Desarrollo
Preguntas ?