Está en la página 1de 10

ELICITACIÓN DE

REQUERIMIENTOS
Universidad Católica de Santa
María

Artefacto: Cliente:​ Región Moquegua


SIGESMED_DOC_ARQ_V2.0 SIGESMED Fecha: 0​ 4/04/2016
Ciclo de Negocio: Sistema de
Gestión y Monitoreo Educativa

SIGESMED
SISTEMA DE GESTIÓN Y MONITOREO EDUCATIVO

ARQUITECTURA CANDIDATA SIGESMED


SIGESMED_DOC_ARQ_V2.0

Historial de Revisiones

Fecha Versión Descripción Autor


04/04/2016 2.0 Adicion de segunda propuesta de Equipo SIGESMED
arquitectura
SIGESMED_DOC_ARQ_V2.0
22/06/2016 2.0 Actualización diagrama de Equipo SIGESMED
arquitectura
Tabla de contenido

1. INTRODUCCIÓN
2. ARQUITECTURA CANDIDATA 1
2.1. Presentación
2.2. Servicios
2.2.1. Cliente-servidor
2.2.2. Sin estado
2.2.3. Cache
2.2.4. Servicios uniformes
2.2.5. Arquitecturas en capas
2.3. Lógica de negocio
2.3.1. Java clases
2.4. Persistencia
2.4.1. Hibernate
2.5. Conexión con otros Sistema
2.5.1. Comunicación Directa
2.5.2. Importación de Datos
2.6. Vista de Arquitectura Propuesta 1
3. ARQUITECTURA CANDIDATA 2
3.1 Capa de presentación
3.1.1. Java Server Faces
3.1.2. Framework Primefaces
3.1.3. Facelet
3.2. Capa de Lógica
3.2.1. ManagedBean
3.2.2. EJB
3.3 Capa de Persistencia
3.3.1. JPA
3.3 Vista de Arquitectura Propuesta 2
4. GESTIÓN DE BASE DE DATOS
4.1. PostgreSQL
5. Justificación de Arquitectura Seleccionada
6. REFERENCIAS
1. INTRODUCCIÓN

El presente documento nos muestra la arquitectura de solución del sistema haciendo uso de
diferentes vistas arquitectónicas para así poder ilustrar las características más importantes del
sistema. Se pretende capturar y transmitir las decisiones arquitectónicas más apropiadas
realizadas en el sistema SIGESMED.

2. ARQUITECTURA CANDIDATA 1

El sistema propuesto consta de los siguientes niveles:


● Presentación
● Servicios
● Lógica de Negocio
● Persistencia

2.1. Presentación

En este nivel se usarán las siguientes tecnologías:

● HTML5 : Esta tecnología es compatible con cualquier tipo de dispositivos que tienen
browser ,para representar un sitio web y todo independiente del dispositivo que lo consuma
(PC , móviles o tablet).
● Bootstrap: Es un framework, creado por twitter y uno de los más usados para la uso
de la capa de presentación, y de uso libre.
● AngularJS : Es un framework estructural para páginas web dinámicas, que permite la
implementación del patrón de arquitectura MVC ,además que se integra a la perfección con
HTML y JavaScript.

La principal funcionalidad de este framework es por sus principales componentes:

● Directivas
● Controladores
● Ámbitos
● Servicios
● Inyección de dependencias
● Javascript : El uso de javascript será del lado del lado del cliente (client-side) porque
también existe JS del lado del servidor.

2.2. Servicios

En este nivel se usará REST, ya que este define principios arquitectónicos, los cuales
diseñan servicios web teniendo su foco principal los recursos del sistema, los servicios web
que siguen en este estilo cumplirán estas características:

2.2.1. Cliente-servidor
Definen una comunicación entre cliente y servidor separando las funciones entre ambas
partes

2.2.2. Sin estado


Es importante porque cada petición que realiza el cliente es independiente del cliente
2.2.3. Cache
El contenido de los servicios web REST pueda apoyar en la caché después de la primer
llamada.

2.2.4. Servicios uniformes

Todos los servicios REST compartirán una forma de invocación y métodos uniforme utilizando
los métodos GET,POST , PUT ,DELETE.

2.2.5. Arquitecturas en capas

Los servicios REST están orientados a la escalabilidad por ende trabaja en capas.

2.3. Lógica de negocio

En esta parte se encarga de codificar el sistema para que la información pueda ser creada,
mostrada y cambiada por lo tanto aquí estará la funcionalidad del sistema

2.3.1. Java clases

Es para abstraer que define un tipo de objeto especificando las propiedades y operación que
va a tener .

2.4. Persistencia

En esta parte se tratará la información (datos), para tener la capacidad de guardar información
y recuperarla en cualquier momento

2.4.1. Hibernate

Este marco de trabajo nos proporciona mecanismos de mapeo para definir el almacenamiento,
eliminación, actualización y recuperación de los objetos, además hibernate nos ofrece servicio
de consulta y recuperación de entorno en SQL y reduce esfuerzos en los resultados de la base
de datos de los objetos de Java.

2.5. Conexión con otros Sistema

El sistema tendrá la facultad de comunicarse con otros sistemas, para el intercambio e


importación de datos.

2.5.1. Comunicación Directa


La comunicación se realizará mediante un servicio web (REST/SOAP). Los siguientes
involucrados con esta tipo de comunicación son:
● SIAGIE
● SINABIP
● NEXUS

2.5.2. Importación de Datos


Solo se realizará un importacion de los datos para los siguientes sistemas:
● SIGA
● SUP
● LEGIX
2.6. Vista de Arquitectura Propuesta 1

Gráfico​: Vista de la Arquitectura Propuesta 1


Fuente​: Desarrollado para el Proyecto
3. ARQUITECTURA CANDIDATA 2

La arquitectura propuesta consta de 3 capas principales.


● Capa de Presentación
● Capa de Lógica
● Capa de Persistencia

La elección de las tecnologías que forman parte de cada una de las capas de la arquitectura,
están basadas en estándares, así como en la experiencia de hacer uso de estas y muchas
otras tecnologías en proyectos reales, con la experiencia que supone haber experimentado las
ventajas e inconvenientes de cada una de ellas. La elección de la arquitectura va depender
mucho de las necesidades e infraestructura del cliente​.

3.1 Capa de presentación

3.1.1. Java Server Faces

Java Server Faces es un estándar dentro del standar de JEE (Java Enterprise Edition) que
permite el desarrollo de la capa de presentación y control para aplicaciones Web, basado en el
patrón MVC.

JSF permite el desarrollo de aplicaciones Web en base a componentes y eventos.


Aproximación típica para el desarrollo de aplicaciones interactivas en entornos de escritorio.
De esta manera abandona la aproximación tradicional y más limitada de “petición/respuesta”,
en la que se trabaja básicamente con documentos y apuesta por el trabajo con pantallas de
interacción.

3.1.2. Framework Primefaces

Primefaces es una framework de componentes para JSF. Estos componentes aportan, frente
a los componentes estándar de JSF, una abstracción para el uso de la tecnología AJAX ya
soportada en JSF 2. Es decir, el desarrollador puede centrarse en la funcionalidad ofrecida sin
tener que preocuparse del JavaScript que se ejecutará en el cliente o de que partes de la
pantalla serán necesarias refrescar en respuesta de un evento en la interfaz de usuario.

No siendo Primefaces parte del estándar JEE, ahora es la única librería de componentes
visuales que podemos decir que soporta de manera estable la versión 2 de JSF.

3.1.3. Facelet

Es un lenguaje ligero de declaración de páginas para la construcción de vistas JavaServer


Faces usando plantillas de estilo HTML y la creación de árboles de componentes. Con las
siguientes características:

● Usa XHTML para la creación de páginas web


● Soporta la librería de etiquetas de facelets, además de JSF y JSTL
● Soporta expresiones EL
● Plantillas para páginas y componentes
● Reutilización de código, por el uso de plantillas y la composición de componentes
● Muy rápido de compilar y renderizar, con validaciones en tiempo de compilación

3.2. Capa de Lógica

3.2.1. ManagedBean

Managed Bean es una clase Java Bean gestionado por el marco JSF. El bean gestionado
contiene los métodos getter y setter, la lógica de negocio o incluso un bean de respaldo (un
grano contiene todo el valor formulario HTML). beans gestionados funciona como modelo
para el componente de interfaz de usuario.

3.2.2. EJB

Un Enterprise Java Bean (EJB) es un componente de negocio Java Enterprise, y para su


ejecución necesita un contenedor EJB/J2EE.
El hecho de usar EJB’s te da acceso a los servicios del Contenedor EJB (manejo de
transacciones, seguridad ,persistencia, etc) que simplifican bastante la construcción de
soluciones empresariales.

3.3 Capa de Persistencia

3.3.1. JPA

JPA (Java Persisence API) es un estándar de Java (JSR-220) que permite a los
desarrolladores trabajar de forma sencilla con bases de datos relacionales. JPA permite la
abstracción de la fuente de datos, permitiendo que el código sea portable entre distintos
sistemas gestores de bases de datos: Oracle, DB2, MySQL, PostgresSQL, …

Gracias a JPA el desarrollador se puede centrar en la lógica de negocio, olvidando los detalles
de implementación la capa de acceso a datos. Esto permite realizar desarrollos más rápidos y
más seguros.
3.3 Vista de Arquitectura Propuesta 2

Gráfico​: Vista de la Arquitectura Propuesta 2


Fuente​: Desarrollado para el Proyecto
4. GESTIÓN DE BASE DE DATOS

4.1. PostgreSQL

Es un sistema de gestión de bases de datos relacional orientado a objetos y libre, se le atribuyen


las siguientes características1 :

● La velocidad de respuesta se mantiene al aumentar el tamaño de la base de datos, lo cual


favorece la rapidez de la consulta.
● No hay costo asociado a la licencia de software, ya que es libre (Open Source).
● Posee todas las características, estabilidad y rendimiento que ofrecen los productos de
proveedores comerciales.
● Hasta el momento se tiene un registro de buen desempeño, no se han presentado caídas de
la base de datos.
● PostgreSQL utiliza una estrategia de almacenamiento de filas llamada MVCC, la cual
consigue mejor respuesta en grandes volúmenes de datos.
● Soporta los tipos de datos, cláusulas, funciones y comandos de tipo estándar SQL92/SQL99
y extendidos propios de PostgreSQL.
● Puede operar sobre distintas plataformas, incluyendo Linux, Windows, Unix, Solaris y
MacOS X.

5. Justificación de Arquitectura Seleccionada

La arquitectura elegida para el desarrollo de SIGESMED, es la que se detalla en


ARQUITECTURA CANDIDATA 1 ​debido a que existen muchos puntos a favor los cuales se van
discutir en los siguientes puntos:
● Para el desarrollo del front end o presentación se opta por angular ya que este se maneja
con mucha más simplicidad y la velocidad de desarrollo es más óptima frente a los JSF,
y de una forma u otra ya de todas maneras se necesita interactuar con javascript junto
con HTML y CSS.
● JSF siempre ha gestionado su ciclo de vida a través del servidor construyendo los
distintos tipos de controles que necesitamos usar. Dejando al cliente unas
responsabilidades bastante reducidas, hoy en día existen nuevos Frameworks MVC
JavaScript que se ejecutan en cliente se apoyan en una filosofía similar a las
aplicaciones móviles a la hora de asumir responsabilidades de cliente . Con la ventaja
además de que están orientados a desarrollar aplicaciones de gran tamaño.
● Hibernate es mucho más grande que la especificación de JPA y añade más
funcionalidad.
● JPA representa una curva de aprendizaje mucho más grande que hibernate.
● Se pueden manejar la lógica del servidor y del cliente como proyectos diferentes (solo se
comunican con un lenguaje de intercambio como JSON).
● Si se necesita evolucionar/refactorizar uno de los dos, back o front, se puede hacer de
manera separada, siempre que se mantenga la interfaz del API ya que esto otorga mayor
interoperatividad.
● Permite la creación de un proyecto escalable debido a que este puede crecer todo que
se necesite en cada momento. El API puede responder a otros tipos de operaciones o
puede versionar tanto como deseemos.

1
​http://phppgadmin.sourceforge.net/doku.php
http://www.postgresql.org/
6. REFERENCIAS

Tutorial de conceptos REST:


https://www.w3.org/2001/sw/wiki/REST

Diferencias entre JSF y angular


http://blog.jhades.org/the-java-origins-of-angular-js-angular-vs-jsf-vs-gwt/

Tutorial de Java Server Faces


http://www.tutorialspoint.com/jsf/

Primefaces Ultimate UI Framework for Java EE


http://www.primefaces.org/

Java Platform, Enterprise Edition (JEE): The Java EE Tutorial


https://docs.oracle.com/javaee/7/tutorial/

IEEE Std. 1012 – 1986 Standard for Software Verification and Validation Plans
https://standards.ieee.org/findstds/standard/1012-1986.html

También podría gustarte