Sie sind auf Seite 1von 123

DESARROLLO DE PLATAFORMA WEB PARA LA PUBLICACIÓN DE SUCESOS

INTERNOS DE ENTIDADES PÚBLICAS BASADO EN TECNOLOGÍA JSF

HAROLL ALEXANDER MORA GARZÓN

OSCAR RICARDO LÓPEZ LÓPEZ

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS


FACULTAD TECNOLÓGICA
TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS
BOGOTÁ D. C.
2017

1
DESARROLLO DE PLATAFORMA WEB PARA LA PUBLICACIÓN DE SUCESOS
INTERNOS DE ENTIDADES PÚBLICAS BASADO EN TECNOLOGÍA JSF

HAROLL ALEXANDER MORA GARZÓN


OSCAR RICARDO LÓPEZ LÓPEZ

TRABAJO DE PASANTIA PARA OPTAR POR EL TÍTULO DE TECNÓLOGOS EN


SISTEMATIZACIÓN DE DATOS

TUTOR

ING. JOSÉ VICENTE REYES MOZO

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS


FACULTAD TECNOLÓGICA
TECNOLOGÍA EN SISTEMATIZACIÓN DE DATOS
BOGOTÁ D. C.
2017

2
NOTAS DE ACEPTACIÓN

______________________________________

______________________________________

______________________________________

______________________________________

TUTOR

______________________________________

JURADO

______________________________________

3
4
5
TABLA DE CONTENIDO

RESUMEN 14

ABSTRACT 15

INTRODUCCIÓN 16

1. PLANEACIÓN 17

1.1. TITULO 17

1.2. TEMA 17

1.3. PLATEAMIENTO DEL PROBLEMA 17

1.4. FORMULACIÓN DEL PROBLEMA 18

1.5. ALCANCES Y DELIMITACIONES 18

1.5.1. Alcances 18

1.5.2. Delimitaciones 18

2. OBJETIVOS 19

2.1. Objetivo General 19

2.2. Objetivo especifico 19

3. JUSTIFICACIÓN 20

4. MARCO HISTORICO 21

4.1. Blogger 21

4.2. Taringa! 21

5. MARCO TEORICO 22

5.1. SCRUM FRAMEWORK 22

5.1.1. El proceso 23

5.1.2. Planificación de la iteración 24

5.1.3. Ejecución de la iteración 24

6
5.1.4. Inspección y adaptación 25

5.2. JAVA EE 25

5.3. JAVASERVER FACES 26

5.4. PRIMEFACES 27

5.5. JPA 28

5.5.1. Unidad de persistencia 30

5.5.2. EntityManagerFactory 31

5.5.3. Contexto de persistencia 31

5.5.4. EntityManager 31

5.5.5. Objetos de entidad 31

5.6. JPQL 32

5.6.1. Estructura de consulta 32

5.6.2. Funciones escalares y agregadas 33

5.7. HIBERNATE 33

6. MARCO CONCEPTUAL 34

6.1. Plataforma web 34

6.2. Entidad 34

6.3. Información 34

6.4. Publicación 35

6.5. Sucesos 35

6.6. Obscenidades 35

6.7. Integración 35

7. FACTIBILIDAD 37

7.1. Factibilidad técnica 37

7
7.1.1. Recurso humano 37

7.2. Hardware y software 37

7.2.1. Hardware 37

7.2.2. Software 37

7.3. Factibilidad operativa 38

7.4. Factibilidad económica 38

7.5. Factibilidad Legal 38

8. FASE DE INICIO 39

8.1. Incertidumbre 39

8.2. Requerimientos informales 39

8.2.1. Descripción de las funcionalidades 39

8.3. HISTORIAS DE USUARIO 40

9. DEFINICIÓN Y PRIORIZACIÓN DE PRODUCT BACKLOG 44

9.2. CREACIÓN DEL PRODUCT BACKLOG 44

9.3. PRIORIZACIÓN DEL PRODUCT BACKLOG 44

9.3.1. PILA DEL PRODUCTO 44

10. SPRINT PLANNING 47

10.1. SPRINT 1 48

10.1.1. Objetivos 48

10.1.2. Reunión Revisión del Sprint 48

10.1.3. Cierre y entrega 49

10.2. SPRINT 2 54

10.2.1. Objetivos 54

10.2.2. Reunión Revisión del Sprint 54

8
10.2.3. Cierre y entrega 55

10.3. SPRINT 3 59

10.3.1. Objetivos 59

10.3.2. Reunión Revisión del Sprint 59

10.3.3. Cierre y entrega 60

10.4. SPRINT 4 62

10.4.1. Objetivos 62

10.4.2. Reunión Revisión del Sprint 62

10.4.3. Cierre y entrega 62

10.4.4. SPRINT 5 65

10.4.5. Objetivos 65

10.4.6. Reunión Revisión del Sprint 65

10.4.7. Cierre y entrega 66

11. FASE FINAL 70

11.1. ARCHIVO EJB 70

11.1.1. Entities 70

11.1.2. Session 71

11.1.3. Mail 72

11.2. ARCHIVO WAR 73

11.2.1. Basicas 73

11.2.2. Tickets 73

11.2.3. Util 74

12. CONCLUCIONES 75

13. RECOMENDACIONES 76

9
14. BIBLIOGRAFÍA 77

10
TABLA DE ILUSTRACIONES

Imagen 1. Diagrama de proceso de Scrum. .......................................................... 23


Imagen 2. Arquitectura de Java Enterprise Edition ................................................ 26
Imagen 3. Arquitectura de JavaServer Faces ........................................................ 27
Imagen 4. Arquitectura de JPA .............................................................................. 29
Imagen 5. Estructura de Consulta en JPQL ........................................................... 32
Imagen 6. Estructura de actualización y borrado en JPQL .................................... 32
Imagen 7. Historias de usuario - Primera parte .................................................... 41
Imagen 8. Historias de usuario - Segunda parte .................................................... 42
Imagen 9. Historias de usuario – Tercera Parte .................................................... 43
Imagen 10. Formato Product BackLog .................................................................. 45
Imagen 11. Priorización del Product Backlog. ....................................................... 46
Imagen 12. Historias de usuario a trabajar en el Spring 1 ..................................... 48
Imagen 13. Diagrama de secuencia del product Backlog No. 7 ............................ 49
Imagen 14. Inicio de sesión de SunOne para la aplicación Hermes. ..................... 50
Imagen 15. Diagrama de flujo del product Backlog No. 8 Parte 1.......................... 51
Imagen 16. Diagrama de flujo del product Backlog No. 8 Parte 2.......................... 52
Imagen 18. Vista de cambio de contraseña ........................................................... 53
Imagen 17. Vista de recuperación de contraseña .................................................. 53
Imagen 19. Historias de usuario a trabajar en el Spring 2 ..................................... 54
Imagen 20. Vista listado de publicaciones realizadas por la entidad ..................... 55
Imagen 21. Diagrama de secuencia del product Backlog No. 10........................... 56
Imagen 22. Vista creación de Publicación ............................................................. 57
Imagen 23. Vista edición de publicación. ............................................................... 57
Imagen 24. Diagrama de secuencia del product Backlog No. 9 ............................ 58
Imagen 25. Historias de usuario a trabajar en el Spring 3 ..................................... 59
Imagen 26. Diagrama de secuencia del product Backlog No. 1 ............................ 60
Imagen 28. Visualización a detalle de una publicación .......................................... 61
Imagen 27. Vista visualización publicación ............................................................ 61

11
Imagen 29. Historias de usuario a trabajar en el Spring 4 ..................................... 62
Imagen 30. Diagrama de secuencia de los product Backlog No. 2 y 3 .................. 63
Imagen 32. Vista archivo descargado .................................................................... 64
Imagen 31. Vista listado de archivos adjuntos de la publicación ........................... 64
Imagen 33. Historias de usuario a trabajar en el Spring 5. .................................... 65
Imagen 34. Vista aviso de censura de lenguaje .................................................... 66
Imagen 35. Diagrama de secuencia del product Backlog No. 4 ............................ 67
Imagen 36. Diagrama de secuencia del product Backlog No. 5 ............................ 68
Imagen 37. Vista comentario censurado ................................................................ 69
Imagen 38. Diagrama de clases del paquete Entity ............................................... 70
Imagen 39. Diagrama de clases del paquete Sessión ........................................... 71
Imagen 40. Diagrama de clases del paquete Mail ................................................. 72
Imagen 41. Diagrama de clases del diagrama Básicas ......................................... 73
Imagen 42. Diagrama de clases del paquete Tickets ............................................ 73
Imagen 43. Diagrama de clases del paquete Util................................................... 74

12
TABLA DE TABLAS

Tabla 1.Presupuesto total del proyecto. Elaboración propia .................................. 38

13
RESUMEN

En el siguiente trabajo se encuentra el proceso de desarrollo para un módulo de


divulgación de sucesos internos en entidades públicas, su definición y los elementos
que lo conforman, así mismo con una metodología ágil para el desarrollo de este
módulo en conjunto con la supervisión de la empresa con la cual se presentó esta
pasantía, de esta manera cubrir la problemática de publicar noticias de interés,
actualizaciones, y sucesos internos de cualquier entidad para que la comunidad
interesada pueda discutir y dar aportes sobre dicha novedad, fomentando un
ambiente sano y constructivo.

En este documento se explica a fondo la metodología utilizada donde se podrá


revisar las historias de usuario, luego se avanzará mediante el paso a seguir de la
metodología, se verá las iteraciones realizadas y así cumplir con el producto
esperado.

14
ABSTRACT

In the following work is the development process for a module of disclosure of


internal events in public entities, its definition and the elements that comprise it, as
well as an agile methodology for the development of this module in conjunction with
the supervision of the company with which this internship was presented, in this way
cover the problem of publishing news of interest, updates, and internal events of any
entity so that the interested community can discuss and give input on this novelty,
promoting a healthy and constructive environment.

This document explains in depth the methodology used where users' stories can be
reviewed, then the methodology step will be followed, the iterations will be seen and
the expected product will be fulfilled.

15
INTRODUCCIÓN

La finalidad de este proyecto es suplir la necesidad de mantener informada a la


comunidad involucrada sobre las diferentes actualizaciones, noticias informativas,
entre otros, que se encuentren dentro de la suite de plataformas y de las empresas
que estén utilizando dichas aplicaciones y así, permitir que la empresa, pueda
cumplir con lo que demanda la ley No. 1712 de 2014 que es la ley de transparencia
y acceso de la información.

Gracias a esto se podrá abrir una discusión entre las comunidades, para así tener
en cuenta la opinión de las personas que no están dentro de las entidades pero que
son participes de estas.

16
1. PLANEACIÓN

1.1. TITULO

Desarrollo de plataforma web para la publicación de sucesos internos de entidades


públicas basado en tecnología JSF

1.2. TEMA

Para el desarrollo de este proyecto se tiene en cuenta distintos temas como socio-
políticos, ambientales, entre otros dependiendo la entidad donde se encuentre el
software, implementando herramientas como Java Server Faces, PrimeFaces,
XHTML, CSS e Hibernate.

1.3. PLATEAMIENTO DEL PROBLEMA

Según la ley No. 1712 de 2014 (Ley de transparencia y acceso a la información),


las entidades públicas deben informar a la ciudadanía, sucesos recientes dentro de
sus dependencias, no obstante, muchas entidades no cuentan con la plataforma
específica para poder darle cumplimiento a la normatividad aplicable, lo cual podrían
ser sancionadas según lo describe la ley. Por esta razón, este proyecto de grado se
enfoca en crear lineamientos y directrices que les permita a todas las
organizaciones, sin importar su naturaleza, cumplir a cabalidad con esta ley,
diseñando e implementando una plataforma en la cual los administrativos con
acceso a esta aplicación, puedan publicar y dar a conocer noticias referentes a la
entidad, permitiendo que además de que los usuarios, conozcan dichos sucesos y
así mismo, puedan participar en un ambiente de discusión acerca de un tema de su
elección dentro de la plataforma; sin llegar a vulnerar algún derecho civil, por lo
tanto, se plantea implementar en la plataforma, un algoritmo en específico el cual
permita la censura de comentarios mal intencionados que incluyan palabras
ofensivas hacia otro usuario, fomentando así una discusión sana y constructiva.

Este proyecto de grado, aplicado a la organización Soluciones en Redes y Sistemas


S.A.S – SOLREDES S.A.S. –, dedicada a proveer aplicaciones para múltiples

17
entidades del estado, permite a los estudiantes del proyecto curricular “Tecnología
en Sistematización de Datos” aplicar sus conocimientos, habilidades y disciplina,
durante su estadía en la universidad, para así poder contribuir a la comunidad con
su quehacer laboral.

1.4. FORMULACIÓN DEL PROBLEMA

¿Es posible realizar una plataforma web que permita la publicación de sucesos
internos de una entidad?

1.5. ALCANCES Y DELIMITACIONES

1.5.1. Alcances

● Elaborar una plataforma web la cual se incluirá en la suite de aplicaciones


SunOne®.
● La información publicada se podra compartir por medio de redes sociales
para incluir a personas que desconozcan la aplicación y puedan acceder a
ella, informarse y opinar.
● Mantener un control sobre el uso de palabras obscenas en el registro de
comentarios realizados por los usuarios
1.5.2. Delimitaciones

● La puesta en marcha de la aplicación estará a cargo de la empresa.


● El software será desarrollado para que se ejecute desde una plataforma web,
por lo tanto, el equipo deberá contar con conexión a internet.
● El software garantiza una divulgación de novedades internas de las
entidades, sin embargo, la participación de este, dependerá exclusivamente
del usuario.

18
2. OBJETIVOS

2.1. Objetivo General

Desarrollar una plataforma web para la divulgación de sucesos generales en


entidades públicas, para el conocimiento de la comunidad interesada.

2.2. Objetivo especifico

● Desarrollar el módulo para la creación, modificación y eliminación de una


publicación de interés social.
● Poner en funcionamiento un componente de divulgación en diferentes redes
sociales como lo son Facebook y Twitter.
● Incluir un módulo de comentarios, para la participación de comunidad
interesada.
● Implementar componentes para la generación de censura de lenguaje
ofensivo.
● Complementar el desarrollo de la plataforma mediante una fase de pruebas
del mismo para su posterior uso.

19
3. JUSTIFICACIÓN

Ya que la ley 1712 Marzo 6 de 2014, ley de Transparencia y del Derecho de Acceso
a la Información Pública Nacional, nos dice que “Toda información en posesión, bajo
control o custodia de un sujeto obligado es pública y no podrá ser reservada o
limitada sino por disposición constitucional o legal, de conformidad con la presente
ley.”1, por lo tanto, la empresa Soluciones en Redes y Sistemas – SOLREDES
S.A.S. – desarrolló una la plataforma de divulgación de sucesos internos de
entidades tanto públicas como privadas, debido a que, Solredes es una empresa
enfocada a producir software, generalmente para el sector público, donde carecen
de dichas plataformas de divulgación. Por esta razón la empresa, cree conveniente
que además de prestar uno de sus muchos servicios de la Suite SunOne®, debe
integrar un software para suplir la obligación de compartir la información relacionada
con ciertos procesos internos y así mismo mantener informada a la comunidad, con
veracidad y evitando falsa información, donde hoy en día, es implícita en cualquier
lugar.

1 LEY 1712 DE 2014. [En Linea] <http://www.alcaldiabogota.gov


co/sisjur/normas/Norma1.jsp?i=56882>. [Citado el 11 de Noviembre de 2017]

20
4. MARCO HISTORICO

Actualmente existen miles de páginas web que nos permiten divulgar opiniones,
sugerencias y comentarios siempre y cuando no afecten la integridad de los demás
usuarios, muchas de estas páginas eliminan o clausuran manualmente este tipo de
comentarios, otros los realizan automáticamente, a continuación, se presentan dos
páginas reconocidas por permitir comentar y clausurar lenguajes ofensivos para los
usuarios:

4.1. Blogger

Autor: Google

Blogger es un servicio que suministra Google el cual busca que los cibernautas
puedan crear y administrar sus propios Blogs sin tener grandes conocimientos en
creación de páginas web ni de programación.

4.2. Taringa!

Autor: Fernando Sanz

En Taringa!, los usuarios pueden compartir todo tipo de información por medio de
Posts, Micro contenido y Comunidades a través de un sistema colaborativo de
interacción. Su lema es "Inteligencia Colectiva" y se propone como una plataforma
abierta donde las personas puedan compartir de manera democrática sus
opiniones, intereses y experiencias y descubrir nuevas ideas, información y
conocimiento.2

2 Taringa!. [En linea] <https://es.wikipedia.org/wiki/Taringa!> [Citado el 15 de Noviembre de 2017]

21
5. MARCO TEORICO

Para realizar el desarrollo del software previamente se deben tener conocimientos


teóricos y prácticos de las tecnologías que usa la empresa, para llevar un
lineamiento con las decisiones tomadas por el jefe de desarrollo quien ha escogido
las tecnologías más favorables para la empresa, además de la metodología que es
la estructura para llevar un control y seguimiento de cómo se está desarrollando y
cuánto tiempo está tomando en cada una de las fases planteadas al inicio.

5.1. SCRUM FRAMEWORK

Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas


prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado
posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene
origen en un estudio de la manera de trabajar de equipos altamente productivos.

En Scrum se realizan entregas parciales y regulares del producto final, priorizadas


por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está
especialmente indicado para proyectos en entornos complejos, donde se necesita
obtener resultados pronto, donde los requisitos son cambiantes o poco definidos,
donde la innovación, la competitividad, la flexibilidad y la productividad son
fundamentales.

Scrum también se utiliza para resolver situaciones en que no se está entregando al


cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se
disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción
ante la competencia, cuando la moral de los equipos es baja y la rotación alta,
cuando es necesario identificar y solucionar ineficiencias sistemáticamente o
cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de
producto.

22
5.1.1. El proceso

En Scrum un proyecto se ejecuta en bloques temporales cortos y fijos (iteraciones


que normalmente son de 2 semanas, aunque en algunos equipos son de 3 y hasta
4 semanas, límite máximo de feedback y reflexión). Cada iteración tiene que
proporcionar un resultado completo, un incremento de producto final que sea
susceptible de ser entregado con el mínimo esfuerzo al cliente cuando lo solicite.

Imagen 1. Diagrama de proceso de Scrum. Recuperado de Qué es SCRUM. [En Línea]


<https://proyectosagiles.org/que-es-scrum/> [Citado el 11 de noviembre de 2017]

El proceso parte de la lista de objetivos/requisitos priorizada del producto, que actúa


como plan del proyecto. En esta lista el cliente prioriza los objetivos balanceando el
valor que le aportan respecto a su coste y quedan repartidos en iteraciones y
entregas.

Las actividades que se llevan a cabo en Scrum son las siguientes:

23
5.1.2. Planificación de la iteración

El primer día de la iteración se realiza la reunión de planificación de la iteración.


Tiene dos partes:

● Selección de requisitos (4 horas máximo). El cliente presenta al equipo la


lista de requisitos priorizada del producto o proyecto. El equipo pregunta al
cliente las dudas que surgen y selecciona los requisitos más prioritarios que
se compromete a completar en la iteración, de manera que puedan ser
entregados si el cliente lo solicita.
● Planificación de la iteración (4 horas máximo). El equipo elabora la lista de
tareas de la iteración necesarias para desarrollar los requisitos a que se ha
comprometido. La estimación de esfuerzo se hace de manera conjunta y los
miembros del equipo se auto asignan las tareas.

5.1.3. Ejecución de la iteración

Cada día el equipo realiza una reunión de sincronización (15 minutos máximo).
Cada miembro del equipo inspecciona el trabajo que el resto está realizando
(dependencias entre tareas, progreso hacia el objetivo de la iteración, obstáculos
que pueden impedir este objetivo) para poder hacer las adaptaciones necesarias
que permitan cumplir con el compromiso adquirido. En la reunión cada miembro del
equipo responde a tres preguntas:

● ¿Qué he hecho desde la última reunión de sincronización?


● ¿Qué voy a hacer a partir de este momento?
● ¿Qué impedimentos tengo o voy a tener?
Durante la iteración el Facilitador (Scrum Master) se encarga de que el equipo
pueda cumplir con su compromiso y de que no se merme su productividad.

● Elimina los obstáculos que el equipo no puede resolver por sí mismo.


● Protege al equipo de interrupciones externas que puedan afectar su
compromiso o su productividad.

24
Durante la iteración, el cliente junto con el equipo refina la lista de requisitos (para
prepararlos para las siguientes iteraciones) y, si es necesario, cambian o re
planifican los objetivos del proyecto para maximizar la utilidad de lo que se
desarrolla y el retorno de inversión.

5.1.4. Inspección y adaptación

El último día de la iteración se realiza la reunión de revisión de la iteración. Tiene


dos partes:

● Demostración (4 horas máximo). El equipo presenta al cliente los requisitos


completados en la iteración, en forma de incremento de producto preparado
para ser entregado con el mínimo esfuerzo. En función de los resultados
mostrados y de los cambios que haya habido en el contexto del proyecto, el
cliente realiza las adaptaciones necesarias de manera objetiva, ya desde la
primera iteración, re planificando el proyecto.
● Retrospectiva (4 horas máximo). El equipo analiza cómo ha sido su manera
de trabajar y cuáles son los problemas que podrían impedirle progresar
adecuadamente, mejorando de manera continua su productividad. El
Facilitador se encargará de ir eliminando los obstáculos identificados 3.

5.2. JAVA EE

Java Enterprise Edition es el estándar para desarrollar aplicaciones Java robustas


del lado del servidor. Una de las ventajas de Java EE proporciona APIS para los
servicios web, modelos de componentes, gestión y comunicación que hacen que lo
convierten en el estándar de la industria para implementar aplicaciones Web y Web
2.0 y aplicaciones con arquitectura orientada a servicios (SOA).

3Qué es SCRUM.[En Linea] <https://proyectosagiles.org/que-es-scrum/> [Citado el 11 de Noviembre


de 2017]

25
Imagen 2. Arquitectura de Java Enterprise Edition. Recuperado de Entra al mundo de Java Enterprise. [En
Línea] <http://www.jtech.ua.es/j2ee/2006-2007/jee.html> [Citado el 11 de Noviembre de 2017]

Java EE proporciona una arquitectura multi-capa. La capa cliente puede estar


constituida por aplicaciones Java de escritorio o navegadores HTML. Las capas
proporcionadas por Java EE propiamente dicha son las capas Web (mediante las
tecnologías Servlets, JSP y JSF) y las capas de Negocio (mediante tecnologías
como EJB, JMS o Web Services). Por último, estas capas se comunican con una
capa de datos (base de datos o aplicaciones y sistemas legacy) 4.

5.3. JAVASERVER FACES

JavaServer Faces (JSF) es un framework basado en el patrón MVC (Modelo Vista


Controlador) para aplicaciones Java basadas en web que simplifica el desarrollo de
interfaces de usuario en aplicaciones Java EE. Típicamente suelen incluir soporte
de programas, bibliotecas y un lenguaje interpretado entre otros para ayudar a
desarrollar y unir los diferentes componentes de un proyecto.

4 Entra al mundo de Java Enterprise. [En Linea] <http://www.jtech.ua.es/j2ee/2006-


2007/jee.html>[Citado el 11 de Noviembre de 2017]

26
Imagen 3. Arquitectura de JavaServer Faces. Recuperado de Taruelo, Sandra - Miguel, Barcenilla. Java
Server Faces (JSF). [En Línea] <http://www.it.uc3m.es/spickin/docencia/comsoft/presentations/spanish/07-
08/JSF.pdf > [Citado el 12 de noviembre de 2017]

JSF pretende normalizar y estandarizar el desarrollo de aplicaciones web. Ofrece


una clara separación entre el comportamiento y la presentación, lo que permite a
cada miembro del equipo de desarrollo de una aplicación Web enfocarse en su parte
del proceso de desarrollo, y proporciona un sencillo modelo de programación para
enlazar todas las piezas5.

5.4. PRIMEFACES

PrimeFaces es una librería de componentes visuales open source desarrollada y


mantenida por Prime Technology, una compañía turca de IT especializada en
consultoría ágil, JSF, Java EE y Outsourcing. El proyecto es liderado por Çağatay
Çivici, un miembro del “JSF Expert Group” (y forofo del Barça). Las principales
características de Primefaces son:

● soporte nativo de Ajax, incluyendo Push/Comet.


● kit para crear aplicaciones web para móviles.
● es compatible con otras librerías de componentes, como JBoss RichFaces.

5Taruelo, Sandra - Miguel, Barcenilla. Java Server Faces (JSF). [En Línea]
<http://www.it.uc3m.es/spickin/docencia/comsoft/presentations/spanish/07-08/JSF.pdf > [Citado el
12 de Noviembre de 2017]

27
● uso de javascript no intrusivo (no aparece en línea dentro de los elementos,
sino dentro de un bloque <script>).
● es un proyecto open source, activo y bastante estable entre versiones.
Algunos inconvenientes podrían ser:

● para utilizar el soporte de Ajax tenemos que indicarlo explícitamente, por


medio de atributos específicos de cada componente.
● no podemos utilizar el soporte de Ajax de JSF 2 (mediante <f:ajax>) con los
componentes de Primefaces6

5.5. JPA

La persistencia de datos es un medio mediante el cual una aplicación puede


recuperar información desde un sistema de almacenamiento no volátil y hacer que
esta persista. La persistencia de datos es vital en las aplicaciones empresariales
debido al acceso necesario a las bases de datos relacionales. Las aplicaciones
desarrolladas para este entorno deben gestionar por su cuenta la persistencia o
utilizar soluciones de terceros para manejar las actualizaciones y recuperaciones de
las bases de datos con persistencia. JPA (Java™ Persistence API) proporciona un
mecanismo para gestionar la persistencia y la correlación relacional de objetos y
funciona desde las especificaciones EJB 3.0.

6 Lerma, Enrique. Introducción a Primefaces. 2010 [En Línea]


<https://www.adictosaltrabajo.com/tutoriales/introduccion-primefaces/> [Citado el 16 de Noviembre
de 2017]

28
Imagen 4. Arquitectura de JPA. Recuperado de JPA – Introducción [En Línea]
<https://www.tutorialspoint.com/es/jpa/jpa_introduction.htm> [Citado el 14 de diciembre de 2017]

La especificación JPA define la correlación relacional de objetos internamente, en


lugar de basarse en implementaciones de correlación específicas del proveedor.
JPA se basa en el modelo de programación Java que se aplica a los entornos Java
EE (Java Enterprise Edition) pero JPA puede funcionar en un entorno Java SE para
probar las funciones de las aplicaciones.

JPA representa una simplificación del modelo de programación de persistencia. La


especificación JPA define explícitamente la correlación relacional de objetos, en
lugar de basarse en implementaciones de correlación específicas del proveedor.
JPA crea un estándar para la importante tarea de la correlación relacional de objetos
mediante la utilización de anotaciones o XML para correlacionar objetos con una o
más tablas de una base de datos. Para simplificar aún más el modelo de
programación de persistencia:

La API EntityManager puede actualizar, recuperar, eliminar o aplicar la persistencia


de objetos de una base de datos.

29
La API EntityManager y los metadatos de correlación relacional de objetos manejan
la mayor parte de las operaciones de base de datos sin que sea necesario escribir
código JDBC o SQL para mantener la persistencia.

JPA proporciona un lenguaje de consulta, que amplía el lenguaje de consulta EJB


independiente, conocido también como JPQL, el cual puede utilizar para recuperar
objetos sin grabar consultas SQL específicas en la base de datos con la que está
trabajando.

JPA está diseñado para funcionar dentro y fuera de un contenedor Java Enterprise
Edition (Java EE). Cuando se ejecuta JPA dentro de un contenedor, las aplicaciones
pueden utilizar el contenedor para gestionar el contexto de persistencia. Si no hay
ningún contenedor para gestionar JPA, la aplicación debe manejar ella misma la
gestión del contexto de persistencia. Las aplicaciones diseñadas para la
persistencia gestionada por contenedor no requieren tanta implementación de
código para manejar la persistencia, pero estas aplicaciones no se pueden utilizar
fuera de un contenedor. Las aplicaciones que gestionan su propia persistencia
pueden funcionar en un entorno de contenedor o en un entorno Java SE.

Los contenedores Java EE que dan soporte al modelo de programación de EJB 3.x
deben dar soporte a la implementación de JPA, denominada también proveedor de
persistencia. Un proveedor de persistencia JPA utiliza los elementos siguientes para
habilitar una gestión de persistencia más fácil en un entorno EJB 3.x:

5.5.1. Unidad de persistencia

Define un modelo relacional de objeto que correlaciona las clases Java (entidades
+ estructuras de soporte) con una base de datos relacional. EntityManagerFactory
utiliza estos datos para crear un contexto de persistencia al que se puede acceder
mediante EntityManager.

30
5.5.2. EntityManagerFactory

Se utiliza para crear un EntityManager para las interacciones de base de datos. Los
contenedores del servidor de aplicaciones normalmente proporcionan esta función,
pero es necesario EntityManagerFactory si se utiliza la persistencia gestionada por
las aplicaciones JPA. Una instancia de EntityManagerFactory representa un
contexto de persistencia.

5.5.3. Contexto de persistencia

Define el conjunto de las instancias activas que la aplicación está manipulando


actualmente. Puede crear el contexto de persistencia manualmente o mediante
inyección.

5.5.4. EntityManager

Gestor de recursos que mantiene la colección activa de objetos de entidad que está
utilizando la aplicación. EntityManager maneja la interacción y metadatos de bases
de datos para las correlaciones relacionales de objetos. Una instancia de
EntityManager representa un contexto de persistencia. Una aplicación en un
contenedor puede obtener el EntityManager mediante inyección en la aplicación o
buscándolo en el espacio de nombres del componente Java. Si la aplicación
gestiona su persistencia, el EntityManager se obtiene desde EntityManagerFactory.

5.5.5. Objetos de entidad

Clase Java simple que representa una fila en una tabla de base de datos con su
formato más sencillo. Los objetos de entidades pueden ser clases concretas o
clases abstractas. Mantienen estados mediante la utilización de propiedades o
campos7.

7 JPA (Java Persistence API) [En Línea]


<https://www.ibm.com/support/knowledgecenter/es/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.doc
/ae/cwlp_jpa.html> [Citado el 14 de Noviembre de 2017]

31
5.6. JPQL

JPQL está parado para el lenguaje de consulta de persistencia de Java. Se utiliza


para crear consultas contra entidades para almacenar en una base de datos
relacional. JPQL está desarrollado en base a la sintaxis SQL. Pero no afectará
directamente a la base de datos.

JPQL puede recuperar datos mediante la cláusula SELECT, puede hacer a granel
actualizaciones con cláusula UPDATE y DELETE cláusula.

5.6.1. Estructura de consulta

Sintaxis JPQL es muy similar a la sintaxis de SQL. Tener SQL como sintaxis es una
ventaja porque SQL es simple y siendo ampliamente utilizado. SQL trabaja
directamente contra la base de datos relacional tablas, registros y campos, mientras
que JPQL trabaja con Java clases e instancias.

Por ejemplo, una consulta JPQL puede recuperar una entidad objeto en lugar de
campo conjunto de resultados de una base de datos, al igual que con SQL. El JPQL
consulta estructura como sigue.

Imagen 5. Estructura de Consulta en JPQL. Recuperado de JPA – JPQL [En Línea]


<https://www.tutorialspoint.com/es/jpa/jpa_jpql.htm> [Citado el 11 de noviembre de 2017]

La estructura de JPQL borrar y consultas de actualización son las siguientes.

Imagen 6. Estructura de actualización y borrado en JPQL. Recuperado de JPA – JPQL [En Línea]
<https://www.tutorialspoint.com/es/jpa/jpa_jpql.htm> [Citado el 11 de noviembre de 2017]

32
5.6.2. Funciones escalares y agregadas

Las funciones escalares devuelven valores resultantes basados en los valores de


entrada. Funciones de agregado de devuelvan los valores resultantes mediante el
cálculo de los valores de entrada8.

5.7. HIBERNATE

Hibernate es una herramienta de Mapeo objeto-relacional (ORM) para la plataforma


Java (y disponible también para .Net con el nombre de NHibernate) que facilita el
mapeo de atributos entre una base de datos relacional tradicional y el modelo de
objetos de una aplicación, mediante archivos declarativos (XML) o anotaciones en
los beans de las entidades que permiten establecer estas relaciones. Hibernate es
software libre, distribuido bajo los términos de la licencia GNU LGPL.

En otras palabras, Hibernate es un Framework que agiliza la relación entre la


aplicación y la base de datos. Para poder aprender a utilizarlo es necesario contar
con los conocimientos básicos de base de datos y SQL así como manejar el
lenguaje Java9.

8 JPA – JPQL. [En Línea]. <https://www.tutorialspoint.com/es/jpa/jpa_jpql.htm> [Citado el 11 de


noviembre de 2017]

9 2013. ¿Qué es Java Hibernate? [En Línea] <http://blog.educacionit.com/2013/02/07/que-es-java-


hibernate/> [Citado el 15 de Noviembre de 2017]

33
6. MARCO CONCEPTUAL

Para poder realizar una correcta ejecución del desarrollo y de esta documentación
se deben conocer algunos conceptos a nivel técnico y de negocio, por lo cual se
investigó sobre algunos significados que permitirán una mejor comprensión de lo
que se buscó con el desarrollo de la plataforma web.

6.1. Plataforma web

Una aplicación Web es una aplicación informática que se ejecuta en un entorno


Web. La arquitectura Web permite a múltiples clientes o usuarios establecer una
comunicación a través de Internet con un servidor Web.

Los clientes mediante un navegador emiten peticiones vía HTTP a un servidor web
que responde a cada una de las solicitudes.10

6.2. Entidad

Del latín medieval entitas, entidad es toda colectividad que puede considerarse
como una unidad. El concepto suele utilizarse para nombrar a una corporación o
compañía que se toma como persona jurídica.11

6.3. Información

La información está constituida por un grupo de datos ya supervisados y ordenados,


que sirven para construir un mensaje basado en un cierto fenómeno o ente. La
información permite resolver problemas y tomar decisiones, ya que su
aprovechamiento racional es la base del conocimiento.12

10Valero, Brayan – Clavijo Andres. Sistema de información integral estudiantil. 2016. [En Línea]
<http://hdl.handle.net/11349/4751> [Citado el 17 de Noviembre de 2017]
11 Porto, Julian - Gardey, Ana. Definición de entidad. 2010. [En Línea]
<https://definicion.de/entidad/> [Citado el 17 de Noviembre de 2017]
12 Porto, Julian - Gardey, Ana. Definición de Información. 2008. [En Línea]
<https://definicion.de/informacion/> [Citado el 17 de Noviembre de 2017]

34
6.4. Publicación

El término publicación se utiliza para hacer referencia al acto mediante el cual se


hace público o se da a conocer determinada información, acto, dato, etc. La
publicación puede ser en diferentes tipos de soportes que han variado en
disponibilidad y en importancia a lo largo de la historia, siendo los más comunes los
escritos, impresos o, actualmente, los digitales.13

6.5. Sucesos

Se define como suceso a una cuestión que ocurre. El término tiene su origen en el
vocablo latino successus y se emplea en especial cuando aquello que ocurre o se
desencadena posee una cierta trascendencia.14

6.6. Obscenidades

La palabra obscenidad proviene del latín obscenus, el cual se define como repulsivo
o algo detestable. Dicho término se usa mucho en el contexto legal para describir
ciertas expresiones como: palabras, acciones e imágenes que puedan ofender la
moral o sexualmente a alguien. La obscenidad va a depender en algunos casos de
la cultura, dado que hay países que han promulgado leyes con respecto a lo que
consideran obsceno y censuran todo aquello relacionado con este término. Por
ejemplo, lo más común y conocido es la pornografía.15

6.7. Integración

La integración es la acción y efecto de integrar o integrarse a algo, proviene del latín


integration y constituye completar un todo con las partes que hacían falta ya sea

13 Definición de Publicación. [En Línea] <https://www.definicionabc.com/general/publicacion.php>


[Citado el 17 de Noviembre de 2017]
14 Porto, Julián – Merino, María. Definición de suceso. 2010. [En Línea]
<https://definicion.de/suceso/> [Citado el 17 de Noviembre de 2017]
15 Definición de Obscenidad. [En Línea] <http://conceptodefinicion.de/obscenidad/> [Citado el 17 de
Noviembre de 2017]

35
objeto o persona. Es un fenómeno que sucede cuando un grupo de individuo unen
a alguien que se encuentra por fuera sin importar sus características y diferencias.16

16Definición de Integración. [En Línea] <http://conceptodefinicion.de/integracion/> [Citado el 17 de


Noviembre de 2017]

36
7. FACTIBILIDAD

7.1. Factibilidad técnica

7.1.1. Recurso humano

Los desarrolladores deben tener conocimiento teórico y práctico sobre manejo de


bases de datos con sentencias DDL y DML, Java, PrimeFaces, JavaScript, Java
Server Faces, Pretty Faces, Hibernate y JPQL. Esto con el fin de dar solución el
problema planteado además de contar con el tiempo requerido por la empresa para
llevar a cabo un progreso considerable en el desarrollo del proyecto.

7.2. Hardware y software

Posteriormente se hará una descripción en cuanto a las herramientas en software y


hardware que se requieren para el desarrollo e implementación del proyecto.

7.2.1. Hardware

 Procesador Intel Core i3 de Cuarta generación o superior


 Memoria RAM de 4Gb o superior
 Disco Duro 500Gb o superior
 Conexión estable a la red interna de la empresa con conexión a internet

7.2.2. Software

 Sistema operativo Windows 7


 Toad para Oracle 12
 NetBeans 8.1
 Notepad++ (Editor de Texto)
 Explorador Web (Chrome, Mozilla, Edge)

37
7.3. Factibilidad operativa

Se espera que, al implementar la aplicación, esta genere una aceptación positiva


por parte de los usuarios, debido a que:

Siendo una aplicación enfocada a salvaguardar el derecho a la veracidad y


transparencia de la información, ayudará a las comunidades a estar informadas
sobre procesos de mayor interés sobre la entidad y generar así, conocimiento y
seguir con la normativa que dicta la ley 1712 marzo 6 de 2014.

7.4. Factibilidad económica

En la tabla 1, se reflejan los costos que acarrea el desarrollo de la aplicación,


teniendo en cuenta el recurso humano, hardware, software y costos adicionales
para realizar la pasantía propuesta.

TIPO DE
VALOR VALOR
RECURSO RESPONSABLE DESCRIPCIÓN CANTIDAD
UNITARIO TOTAL

Humano Empresa Computadores 2 $1.500.000 $3.000.000


Horas 2*(4 meses)
Humano Empresa $737.717 $5.901.736
Desarrollador
4 meses
Infraestructura Empresa Internet $240.000 $960.000
4 meses
Infraestructura Empresa Luz $180.000 $720.000
2*(4 meses)
Transporte Desarrollador Transporte $100.000 $800.000

Humano Universidad Horas Tutor 80 $45.000 $ 3.600.000


Papel, 2
Papelería Desarrollador $40.000 $80.000
Imprevistos
Presupuesto Total: $15.061.736
Tabla 1.Presupuesto total del proyecto. Elaboración propia

7.5. Factibilidad Legal

Para el desarrollo de este proyecto se utilizará software de código abierto, libre o


bajo licencia educativa.

38
8. FASE DE INICIO

Durante esta fase, se inicia el levantamiento de requerimientos y la estructuración


de las historias de usuario, para así dar comienzo con el proceso de product
BackLog, donde se verá reflejada la implementación de la metodología Scrum,
como se describe en el ítem 5.1 de este documento. A continuación, se explicarán
los procesos de la fase de inicio a detalle.

8.1. Incertidumbre

En la primera reunión con el jefe de departamento de desarrollo se reúnen los


requerimientos iniciales, con el fin de tener una visión del producto y entrar a
priorizar sobre algunos aspectos.

8.2. Requerimientos informales

Se necesita una plataforma web que se asocie con la suite de SunOne® en la cual
se puedan hacer publicaciones acerca de sucesos de la entidad, además que
conserve el tema de SunOne®.

● Que en cada publicación se pueda hacer comentarios


● ¿? Las publicaciones se puedan compartir en redes sociales
● Para poder crear una publicación debe tener una cuenta de usuario dentro
de la suite
● Al crear las publicaciones se le puedan añadir archivos adjuntos
● Se puedan eliminar las publicaciones
● Al realizar comentarios no me muestre palabras obscenas que incomoden a
otros participantes dentro de la aplicación

8.2.1. Descripción de las funcionalidades

Según los requerimientos obtenidos se buscó profundizar más en cada aspecto,


tanto como el equipo como el Jefe de departamento de desarrollo, obteniendo una
mejor descripción de las funcionalidades, con el fin de tener las Historias de
usuario.

39
8.3. HISTORIAS DE USUARIO

En esta parte del proyecto se decide usar un solo formato para realizar las historias
de usuario, que tuvieron en cuenta los requerimientos de la empresa y el grupo de
trabajo.

40
Imagen 7. Historias de usuario - Primera parte. Elaboración propia

41
Imagen 8. Historias de usuario - Segunda parte. Elaboración propia

42
Imagen 9. Historias de usuario – Tercera Parte. Elaboración propia

43
9. DEFINICIÓN Y PRIORIZACIÓN DE PRODUCT BACKLOG

9.2. CREACIÓN DEL PRODUCT BACKLOG

En esta parte del proyecto se toma cada historia de usuario y se le asigna un alias
y se ingresan en el Product Backlog para el cual se usa el formato de la imagen 10.

9.3. PRIORIZACIÓN DEL PRODUCT BACKLOG

Como se puede apreciar, en esta parte solo se ingresaron las historias de usuario
al Product BackLog, pero estas se deben priorizar según:

● Su funcionalidad.
● Que sean independientes de otras historias.
● Que sean necesarias para la creación para un entregable para la empresa.

9.3.1. PILA DEL PRODUCTO

En la imagen 11, se puede apreciar la priorización de las historias de usuario dentro


del product Backlog.

44
Imagen 10. Formato Product BackLog. Elaboración propia

45
Imagen 11. Priorización del Product Backlog. Elaboración propia.

46
10. SPRINT PLANNING

En esta parte se buscar organizar y estimar cuantas historias deben ir por sprint,
cuanto se demoran y su prioridad. Según la reunión del sprint Planning se acordó
que serían 5 Sprint para desarrollar el producto y que historias irían en cada uno,
además, a cada historia se le dio una prioridad y un tiempo estimado de desarrollo,
con el cual podemos calcular el tiempo estimado de cada Sprint.

Se da por “terminada” una tarea cuando se encuentre completamente funcional y


no depende de otros pendientes para que trabaje al 100%.

En primera instancia se mostrará de que trata cada sprint antes de entrar a detalle,
como se desarrolla cada uno de los Sprints que se mencionan a continuación.

Sprint 1

● Historias Asignadas:
Inicio de sesión y recuperar contraseña (Integración con la suite de aplicaciones)

● Tiempo Estimado: 32 días, lunes a viernes


Sprint 2

● Historias Asignadas:
Crear publicación y editar publicación.

● Tiempo Estimado: 20 días, lunes a viernes


Sprint 3

● Historias Asignadas:
Seleccionar publicación y compartir
● Tiempo Estimado: 30 días, lunes a viernes
Sprint 4

● Historias Asignadas:
Ver adjuntos y descargar adjuntos
● Tiempo Estimado: 10 días, lunes a viernes

47
Sprint 5

● Historias Asignadas:
Ver comentarios y realizar comentarios
● Tiempo Estimado: 50 días, lunes a viernes
10.1. SPRINT 1

En la reunión inicial se estableció trabajar con las historias de usuario 7 y 8, con


esto se definió la pila de sprint que se incluirá en la entrega al final de la iteración.

Imagen 12. Historias de usuario a trabajar en el Spring 1. Elaboración propia

10.1.1. Objetivos

Los objetivos que se deben cumplir para este sprint son:

● Integrar la aplicación con la suite


● Permitir iniciar sesión desde SunOne para usar con el nuevo desarrollo
● Permitir restablecer la contraseña por medio de SunOne
Durante las reuniones diarias se aclararon dudas respecto a cómo debería
realizarse la integración con la suite.

10.1.2. Reunión Revisión del Sprint

Se presenta el software completo acuerdo el sprint backlog inicial donde se obtienen


los siguientes comentarios:

● El logo de SunOne debe ser cambiado por el de Hermes.


● El tema de Hermes debe coincidir con el tema de la Suite

48
10.1.3. Cierre y entrega

Para el product Backlog No. 7 (Inicio sesión) se debía vincular la plataforma Hermes
(Entiéndase Hermes como el proyecto que se está desarrollando) dentro de la suite
SunOne®, para ello se debió usar las características de JSF se hereda la sesión del
usuario de la aplicación principal que genera el login (SunOne) para así validar los
permisos de acceso a las aplicaciones y navegar entre las distintas aplicaciones
que dicha suite contiene, en este caso Hermes.

Imagen 13. Diagrama de secuencia del product Backlog No. 7. Elaboración propia

49
Imagen 14. Inicio de sesión de SunOne para la aplicación Hermes. Elaboración propia.

Para el product Backlog No. 8 (Recuperar Password), al igual que el product


Backlog No. 7 se necesita recursos de sesión que maneja la aplicación principal, en
este caso SunOne, para poder realizar el cambio de contraseña y la recuperación
de esta.

50
Imagen 15. Diagrama de flujo del product Backlog No. 8 Parte 1. Elaboración propia

51
Imagen 16. Diagrama de flujo del product Backlog No. 8 Parte 2. Elaboración propia

52
Imagen 187. Vista de recuperación de contraseña. Elaboración propia

Imagen 178. Vista de cambio de contraseña. Elaboración propia

Habiendo cumplido con los objetivos iniciales del sprint se obtiene respuesta
satisfactoria por parte del director externo, respecto a la primera versión entregada,

53
se toman en cuenta tanto comentarios, como modificaciones y se da por finalizado
el sprint 1 para dar paso al siguiente incremento.

10.2. SPRINT 2

En la reunión inicial se estableció trabajar con las historias de usuario 10 y 9, con


esto se definió la pila de sprint que se incluirá en la entrega al final de la iteración.

Imagen 19. Historias de usuario a trabajar en el Spring 2. Elaboración propia

10.2.1. Objetivos

Los objetivos que se deben cumplir para este sprint son:

● Permitir la creación de publicaciones


● Permitir al guardado de archivos
● Permitir la edición de publicaciones
● Permitir la inserción y eliminación de archivos
Durante las reuniones diarias se aclararon dudas respecto a cómo se podía ocultar
una publicación, como se debía guardar el contenido de la publicación y el correcto
almacenamiento de los adjuntos.

10.2.2. Reunión Revisión del Sprint

Se presenta el software completo acuerdo el sprint backlog inicial donde se obtienen


los siguientes comentarios:

● Ajustar el largo de algunos campos


● Cambiar el modo en el que se adjunta el archivo
● Revisar el tamaño máximo de los archivos a adjuntar

54
● Delimitar el tamaño de la publicación (debe tener un máximo de caracteres en la
publicación)
● Debe permitir todo tipo de archivos

10.2.3. Cierre y entrega

Para el product Backlog No. 10, se realiza el listado de las publicaciones y la opción
de poder crearlas a partir de las características que nos ofrece PrimeFaces en
conjunto con Java, esto nos permite estructurar la vista deseada junto con las
funciones de redactar la publicación, inserción y eliminación de adjuntos a esta y
posteriormente, su publicación.

Imagen 20. Vista listado de publicaciones realizadas por la entidad. Elaboración propia.

55
Imagen 21. Diagrama de secuencia del product Backlog No. 10.Elaboración Propia

56
Imagen 22. Vista creación de Publicación. Elaboración propia

Para el product Backlog No. 9 (Edición de publicaciones), se aprovecha lo


desarrollado en el product Backlog No. 10 para poder consultar la información y así
poder editar el contenido de la publicación seleccionada de las vistas previamente
creadas.

Imagen 23. Vista edición de publicación. Elaboración propia.

57
Imagen 24. Diagrama de secuencia del product Backlog No. 9. Elaboración propia

58
Habiendo cumplido con los objetivos iniciales del sprint se obtiene respuesta
satisfactoria por parte de nuestro jefe respecto a la primera versión entregada, se
toman en cuenta comentarios y modificaciones y se da por finalizado el sprint 2 para
dar paso al siguiente incremento.

10.3. SPRINT 3

En la reunión inicial se estableció trabajar con las historias de usuario 1 y 6, con


esto se definió la pila de sprint que se incluirá en la entrega al final de la iteración.

Imagen 25. Historias de usuario a trabajar en el Spring 3. Elaboración propia

10.3.1. Objetivos

Los objetivos que se deben cumplir para este sprint son:

● Mostrar una vista que contenga todas las publicaciones


● Permitir el acceso a la vista sin necesidad de un login
● Permitir que cada publicación pueda ser compartida en Facebook o Twitter
● Permitir que la publicación nos redirija a la noticia compartida
Durante las reuniones diarias se aclararon dudas respecto a cómo se debería
compartir la publicación y como debería visualizarse al acceder al link, también de
cómo debería distribuirse la publicación con sus respectivos adjuntos.

10.3.2. Reunión Revisión del Sprint

Se presenta el software completo acuerdo el sprint backlog inicial donde se obtienen


los siguientes comentarios:

● Cambiar los logos para compartir en redes sociales

59
10.3.3. Cierre y entrega

Para este Spring se diseña las respectivas vistas, para que en el momento que
ingrese a la plataforma no me realice una petición en la sesión de la plataforma
SunOne, así cualquier usuario que no posea permisos para entrar a la aplicación
pueda visualizar las publicaciones emitidas en la plataforma. Además de esto se
agrega un filtro para realizar la búsqueda personalizada de las publicaciones.

En el product Backlog No.1 (Selección de publicación) se realiza dos vistas, una


donde se visualiza todas las publicaciones realizadas en la plataforma y la segunda
donde se visualiza todo el contenido de una sola aplicación. El usuario puede
acceder desde la primera vista a la segunda a través de un hipervínculo que se
encuentra en cada una de las publicaciones que se listan en esta vista.

Imagen 26. Diagrama de secuencia del product Backlog No. 1. Elaboración propia.

En el product Backlog No.6 (Compartir en redes sociales) se implementan las API’s


de las redes sociales más usadas en el mundo (Facebook y Twitter) para realizar
una publicación en dichas redes de nuestra publicación.

60
Imagen 287. Vista visualización publicación. Elaboración propia

Imagen 278. Visualización a detalle de una publicación. Elaboración propia

61
Habiendo cumplido con los objetivos iniciales del sprint se obtiene respuesta
satisfactoria por parte de nuestro jefe respecto a la primera versión entregada, se
toman en cuenta comentarios y modificaciones y se da por finalizado el sprint 3 para
dar paso al siguiente incremento.

10.4. SPRINT 4

En la reunión inicial se estableció trabajar con las historias de usuario 2 y 3, con


esto se definió la pila de sprint que se incluirá en la entrega al final de la iteración.

Imagen 29. Historias de usuario a trabajar en el Spring 4. Elaboración propia

10.4.1. Objetivos

Los objetivos que se deben cumplir para este sprint son:

● Mostrar el listado de adjuntos pertenecientes a la publicación


● Permitir descargar cada uno de los adjuntos de cada publicación
Durante las reuniones diarias se aclararon dudas respecto a cómo se deberían
mostrar lo adjuntos, como debería listarse y como deberían descargarse.

10.4.2. Reunión Revisión del Sprint

Se presenta el software completo acuerdo el sprint backlog inicial donde no se


obtuvieron comentarios.

10.4.3. Cierre y entrega

Para el product Backlog No. 2 y 3, con ayuda de los componentes de Primefaces


se realiza la visualización de archivos que se cargaron en dicha publicación en la
aplicación, así mismo, con ayuda del mismo componente se realiza un hipervínculo
el cual permite descargar el adjunto seleccionado.

62
Imagen 30. Diagrama de secuencia de los product Backlog No. 2 y 3. Elaboración Propia

63
Imagen 321. Vista listado de archivos adjuntos de la publicación. Elaboración propia

Imagen 312. Vista archivo descargado. Elaboración Propia

Habiendo cumplido con los objetivos iniciales del sprint se obtiene respuesta
satisfactoria por parte de nuestro jefe respecto a la primera versión entregada, se

64
toman en cuenta comentarios y modificaciones y se da por finalizado el sprint 4 para
dar paso al último incremento.

10.4.4. SPRINT 5

En la reunión inicial se estableció trabajar con las historias de usuario 4 y 5, con


esto se definió la pila de sprint que se incluirá en la entrega al final de la iteración.

Imagen 33. Historias de usuario a trabajar en el Spring 5. Elaboración propia

10.4.5. Objetivos

Los objetivos que se deben cumplir para este sprint son:

● Mostrar un listado de comentarios por cada publicación


● Permitir realizar comentarios
● Validar cada comentario y censurar las palabras obscenas
● Permitir los comentarios obscenos ya censurados
● Mostrar el nombre de la persona que comento si esta estaba logeada
Durante las reuniones diarias se aclararon dudas respecto a cómo se debería
censurar las obscenidades de un comentario.

10.4.6. Reunión Revisión del Sprint

Se presenta el software completo acuerdo el sprint backlog inicial donde se obtienen


los siguientes comentarios:

● Cambiar el campo de realizar comentario para la parte superior de los


comentarios
● Mostrar un mensaje cuando un comentario contenga lenguaje ofensivo que
permita al usuario publicar o no el mensaje

65
10.4.7. Cierre y entrega

Para los product Backlog 4 y 5, fue necesario utilizar la herramienta Primefaces


como, por ejemplo, el componente DataScroller, para visualizar los datos y no
sobrecargar la página con todos los comentarios. A parte, se presenta un algoritmo
para detección de lenguaje vulgar resistente a transliteración ASCII17, el cual nos
permitirá a partir de algoritmos de detección de caracteres especiales y
comparación de este a una letra del alfabeto para así comparar y detectar
similitudes de palabras obscenas en cadena de caracteres insertadas por el usuario
dentro de un comentario.

Imagen 34. Vista aviso de censura de lenguaje. Elaboración propia

17Diseño e Implementación de un filtro de censura en foros web resistente a transliteración ASCII.


[En Linea] <http://repository.udistrital.edu.co/handle/11349/2377>. Citado el 28 de diciembre de 2017

66
Imagen 35. Diagrama de secuencia del product Backlog No. 4. Elaboración propia

67
Imagen 36. Diagrama de secuencia del product Backlog No. 5. Elaboración propia

68
Imagen 37. Vista comentario censurado. Elaboración propia

Habiendo cumplido con los objetivos iniciales del sprint se obtiene respuesta
satisfactoria por parte de nuestro jefe respecto a la primera versión entregada, se
toman en cuenta comentarios y modificaciones y se da por finalizado el sprint 5 por
lo tanto se da un entregable del producto final y es aceptado.

69
11. FASE FINAL

El producto se desarrolló en su totalidad de acuerdo a lo establecido entre las dos


partes (Solredes S.A.S. y la Universidad Distrital Francisco José de Caldas), se
realizaron las pruebas internas de operatividad respectivas y correcciones
necesarias. Quedó a disposición de la empresa Solredes S.A.S. y la Universidad
Distrital Francisco José de Caldas, para que sea implementado a futuros desarrollos
y despliegues con el fin de suplir las necesidades mencionadas anteriormente en
este documento.

De dicho desarrollo se ha generado las siguientes clases:

11.1. ARCHIVO EJB

11.1.1. Entities

Imagen 38. Diagrama de clases del paquete Entity. Elabración propia

70
11.1.2. Session

Imagen 39. Diagrama de clases del paquete Sessión. Elaboración propia

71
11.1.3. Mail

Imagen 40. Diagrama de clases del paquete Mail. Elaboración propia

72
11.2. ARCHIVO WAR

11.2.1. Basicas
11.2.2. Tickets

Imagen 41. Diagrama de clases del diagrama Básicas. Elaboración propia

Imagen 42. Diagrama de clases del paquete Tickets. Elaboración propia

73
11.2.3. Util

Imagen 43. Diagrama de clases del paquete Util. Elaboración propia

74
12. CONCLUCIONES

Para concluir, se logra conocer la importancia de la persistencia de datos dentro de


la misma aplicación y lo sencillo que se hace el desarrollo mediante los diferentes
frameworks que los lenguajes de programación nos ofrecen.

Java Enterprise Edition es una herramienta vital para este tipo de investigaciones
gracias a su robustez y flexibilidad para este tipo de investigaciones debido a su
gran capacidad de integración con otras tecnologías y librerías, además Hibernate
nos permite realizar el mapeo objeto relacional de nuestra base de datos, de tal
forma que podemos usar las tablas como objetos y las columnas como atributos,
así poder manejar una persistencia optima en nuestra aplicación.

Por otro lado, PrimeFaces, permite el manejo de componentes visuales de la


aplicación que hacen de una experiencia agradable tanto para el usuario como para
el desarrollador.

Gracias a esto, se logró obtener el desarrollo de una aplicación robusta, de forma


rápida y segura. Se espera que esta aplicación en un futuro sea complementada
para el crecimiento intelectual tanto de nosotros como de la empresa a la cual va
destinada este trabajo.

75
13. RECOMENDACIONES

Las siguientes recomendaciones son para el correcto funcionamiento del software


denominado Hermes:

● Debe ser desplegado en el servidor de aplicaciones Widlfly10.0.0 Final


● Debe realizarse la configuración adecuada en el servidor de aplicaciones (Esto
se encuentra en el manual de despliegue)
● Se debe tener acceso a las bases de datos de la suite SunOne® y Hermes
● Se debe vincular la aplicación Hermes en la suite SunOne®
● Se debe contar con conexión a internet

76
14. BIBLIOGRAFÍA

LEY 1712 DE 2014. [En Linea] <http://www.alcaldiabogota.gov


co/sisjur/normas/Norma1.jsp?i=56882>. [Citado el 11 de Noviembre de 2017]

Taringa!. [En linea] <https://es.wikipedia.org/wiki/Taringa!> [Citado el 15 de


Noviembre de 2017]

Qué es SCRUM.[En Linea] <https://proyectosagiles.org/que-es-scrum/> [Citado el


11 de Noviembre de 2017]

Entra al mundo de Java Enterprise. [En Línea] <http://www.jtech.ua.es/j2ee/2006-


2007/jee.html>[Citado el 11 de Noviembre de 2017]

Taruelo, Sandra - Miguel, Barcenilla. Java Server Faces (JSF). [En Linea]

<http://www.it.uc3m.es/spickin/docencia/comsoft/presentations/spanish/07-
08/JSF.pdf > [Citado el 12 de Noviembre de 2017]

Lerma, Enrique. Introducción a Primefaces. 2010 [En Línea]


<https://www.adictosaltrabajo.com/tutoriales/introduccion-primefaces/> [Citado el
16 de Noviembre de 2017]

JPA – Introducción [En Linea] <


https://www.tutorialspoint.com/es/jpa/jpa_introduction.htm> [Citado el 14 de
Diciembre de 2017]

JPA (Java Persistence API) [En Linea]


<https://www.ibm.com/support/knowledgecenter/es/SSAW57_8.5.5/com.ibm.webs
phere.wlp.nd.doc/ae/cwlp_jpa.html> [Citado el 14 de Noviembre de 2017]

JPA – JPQL. [En Linea]. <https://www.tutorialspoint.com/es/jpa/jpa_jpql.htm>


[Citado el 11 de noviembre de 2017]

2013. ¿Qué es Java Hibernate?. [En Liena]


<http://blog.educacionit.com/2013/02/07/que-es-java-hibernate/> [Citado el 15 de
Noviembre de 2017]

77
Valero, Brayan – Clavijo Andres. Sistema de información integral estudiantil. 2016.
[En Línea] <http://hdl.handle.net/11349/4751> [Citado el 17 de Noviembre de 2017]

Porto, Julian - Gardey, Ana. Definición de entidad. 2010. [En Línea]


<https://definicion.de/entidad/> [Citado el 17 de Noviembre de 2017]

Porto, Julian - Gardey, Ana. Definición de Información. 2008. [En Línea]


<https://definicion.de/informacion/> [Citado el 17 de Noviembre de 2017]

Definición de Publicación. [En Línea]


<https://www.definicionabc.com/general/publicacion.php> [Citado el 17 de
Noviembre de 2017]

Porto, Julián – Merino, María. Definición de suceso. 2010. [En Línea]


<https://definicion.de/suceso/> [Citado el 17 de Noviembre de 2017]

Definición de Obscenidad. [En Línea] <http://conceptodefinicion.de/obscenidad/>


[Citado el 17 de Noviembre de 2017]

Definición de Integración. [En Línea] <http://conceptodefinicion.de/integracion/>


[Citado el 17 de Noviembre de 2017]

Diseño e Implementación de un filtro de censura en foros web resistente a


transliteración ASCII. [En Linea]
<http://repository.udistrital.edu.co/handle/11349/2377>. Citado el 28 de diciembre
de 2017

78
ANEXO 1:
MANUAL DE
DESPLIEGUE

79
MANUAL DE DESPLIEGUE
DESARROLLO DE PLATAFORMA WEB PARA LA
PUBLICACIÓN DE SUCESOS INTERNOS DE ENTIDADES
PÚBLICAS BASADO EN TECNOLOGÍA JSF

Universidad Distrital Francisco José de Caldas


Soluciones en redes y sistemas – SOLREDES S.A.S.

Haroll Alexander Mora Garzón – Oscar Ricardo López López


2018

80
Requerimientos del sistema.
Para poder ejecutar la aplicación, se es necesario las siguientes características:
 Hardware
Se debe tener un servidor que posea:
 Procesador Quadcore de 2.5 Ghz o superior
 4Gb de memoria RAM (Recomendable 8Gb)
 500Gb de memoria principal
 Software
 Windows server 2008 en adelante o cualquier distribución de Linux
de su preferencia.
 Servidor de aplicaciones WildFly 10.0.0 Final.
 Gestor de base de datos Oracle 10g en adelante.
Servidor de Aplicaciones
El servidor de aplicaciones que se debe usar para el correcto despliegue de la
aplicación es Wildfly 10, lo podemos descargar de la siguiente url
http://wildfly.org/downloads/.

Aquí aparece el listado de versiones libres disponibles, en este caso buscamos la


versión 10.0.0. Final (JavaEE Full & Web Distribution) con la cual se realizó el
desarrollo y posteriormente las pruebas.

81
Seleccionamos el link de descarga, y esperamos a que se descargue el archivo
comprimido con extensión .zip, luego de finalizar la descarga debemos contar con
un programa que permita la descompresión de archivos, en este caso usamos
Winrar.

82
Luego de que finalice la descompresión aparecerá una carpeta con el mismo
nombre del archivo comprimido en este caso es “wildlfy-10.0.0. Final”, dentro de
esta carpeta seleccionamos la carpeta “standalone” y luego seleccionamos la
carpeta “configuration”.

En esta carpeta con clic derecho seleccionamos el archivo “standalone.xml” y


buscamos la opcion abrir con, alli seleccionamos un editor de texto, en este caso
usaremos Notepad++.

83
Abierto el archivo, buscamos en las líneas de configuración el subsistema
“subsystem xmlns="urn:jboss:domain:datasources:4.0"”

Allí dentro de la sección “datasources” debajo del primer “datasoruce”


agregamos las siguientes líneas de configuración:

<datasource jta="true" jndi-name="java:/DS_SUNONE" pool-name="DS_SUNONE" use-java-


context="true" use-ccm="true">
<connection-url>”CONEXIÓN JDBC”</connection-url>
<driver>” CONTROLADOR DE BASE DATOS”</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>”USUARIO BASE DE DATOS”</user-name>
<password>”CONTRASEÑA BASE DE DATOS”</password>
</security>
<statement>
<prepared-statement-cache-size>16</prepared-statement-cache-size>

84
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>

En este caso se deben cambiar los siguientes parámetros por la configuración


establecida en el motor de base de datos a utilizar, en este ejemplo se reemplazó
la información así:

 CONEXIÓN JDBC = jdbc:oracle:thin:@//192.168.5.4:1521/DBMASTER


 CONTROLADOR DE BASE DATOS = Oracle
 USUARIO BASE DE DATOS = C##SDIS2017_SUNONE
 CONTRASEÑA BASE DE DATOS = SDIS2017_SUNONE

Después de insertar las líneas de configuración del datasoruce de “SunOne”


debajo debemos insertar la configuración del datasource de “Hermes” con las
siguientes líneas:

85
<datasource jta="true" jndi-name="java:/DS_HERMES" pool-name="DS_HERMES" use-java-
context="true" use-ccm="true">
<connection-url>”CONEXIÓN JDBC”</connection-url>
<driver>” CONTROLADOR DE BASE DATOS”</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>”USUARIO BASE DE DATOS”</user-name>
<password>”CONTRASEÑA BASE DE DATOS”</password>
</security>
<statement>
<prepared-statement-cache-size>16</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>

En este caso se deben cambiar los siguientes parámetros por la configuración


establecida en el motor de base de datos a utilizar, en este ejemplo se reemplazó
la información así:

86
 CONEXIÓN JDBC = jdbc:oracle:thin:@//192.168.5.4:1521/DBMASTER
 CONTROLADOR DE BASE DATOS = Oracle
 USUARIO BASE DE DATOS = C##SDIS2017_HERMES
 CONTRASEÑA BASE DE DATOS = SDIS2017_HERMES
Después de esta configuración debemos descargar el JDBC de acuerdo al motor
de bases de datos que se va a implementar, en este caso usaremos el JDBC de
oracle “ojdbc6” el cual lo descargaremos del siguiente vínculo:
https://mvnrepository.com/artifact/com.oracle/ojdbc6/11.2.0.4.0-atlassian-hosted.

Después de descargar el JDBC procedemos a ubicar el archivo, buscamos la


documentación de este en la página del fabricante, para así determinar la ubicación
de nuestro JDBC dentro de los módulos del servidor de aplicaciones.

En este caso, el motor de bases de datos usado ha determinado que la dirección es


“com.oracle.ojdbc6”. Ya teniendo la ruta en la cual debe ir almacenado el JDBC,
procederemos a crear las carpetas que usaremos para añadir el módulo, las cuales
deben estar almacenadas dentro de “modules\system\layers\base” que se
encuentra en la carpeta de Wildfly, una vez estando dentro de la ruta mencionada
anteriormente se crean las carpetas “com/oracle/ojdbc6/main” esto en caso de

87
que dichas carpetas no se encuentren creadas con anterioridad, finalmente, dentro
de esta ruta se añade el archivo JDBC descargado y se crea un archivo llamado
“modules.xml” el cual debe incluir lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>


<module xmlns="urn:jboss:module:1.3" name="com.oracle.ojdbc6">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
Para esta ocasión en “name” se agrega la ruta determinada por el fabricante de la
ubicación del JDBC dentro de los módulos en el servidor de aplicaciones. En la línea
“resource-root path” se debe agregar el nombre del archivo JDBC incluyendo el
formato del archivo (generalmente .jar).

Después de esto, al final de la configuración realizada con el “datasource” veremos


otra sección “drivers” dentro de esta sección agregaremos el siguiente código:

88
<driver name="oracle" module="com.oracle.ojdbc6">
<driver-class>oracle.jdbc.OracleDriver</driver-class>
</driver>
En este caso se deben cambiar los siguientes parámetros por la configuración
establecida en el motor de base de datos a utilizar:

 “name” = Debe tener el nombre del proveedor de base de datos


 “module” = Debe tener la ruta donde se almaceno el driver del JDBC
 “driver-class” = Debe tener la definición de la clase de conexión

Luego de realizar esta configuración procedemos a descargar un framework


llamado “Primefaces” el cual podemos descargar en el siguiente enlace:
https://www.primefaces.org/downloads/

89
Allí buscamos la opción “Community Downloads” que es la version open source
y buscamos la version “primefaces-6.0.jar” y descargamos en el link que está en
la columna “Binary”

Al finalizar la descarga buscamos dentro de la carpeta de Wildfly


“modules\system\layers\base”, una vez estando en la ruta creamos las carpetas
“org\primefaces\main” esto en caso de que dichas carpetas no se encuentren
creadas con anterioridad, finalmente, dentro de esta ruta se añade el archivo

90
descargado y se crea un archivo llamado “modules.xml” el cual debe incluir lo
siguiente:

<?xml version="1.0" encoding="UTF-8"?>


<module xmlns="urn:jboss:module:1.3" name="org.primefaces">
<resources>
<resource-root path="primefaces-6.0.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.annotation.api"/>
<module name="javax.faces.api"/>
<module name="org.apache.commons.fileupload"/>
<module name="org.slf4j" />
</dependencies>
</module>

91
Luego debemos proceder a descargar una librería llamada “Prettyfaces” la cual
debemos descargar la version “3.3.3” que podemos encontrar en el siguiente
enlace: https://mvnrepository.com/artifact/com.ocpsoft/prettyfaces-jsf2/3.3.3

Al finalizar la descarga buscamos dentro de la carpeta de Wildfly


“modules\system\layers\base”, una vez estando en la ruta creamos las carpetas
“org\ocpsoft\main” esto en caso de que dichas carpetas no se encuentren creadas
con anterioridad, finalmente, dentro de esta ruta se añade el archivo descargado y
se crea un archivo llamado “modules.xml” el cual debe incluir lo siguiente:

92
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.ocpsoft">
<resources>
<resource-root path="prettyfaces-jsf2-3.3.3.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.annotation.api"/>
<module name="javax.faces.api"/>
<module name="org.slf4j.impl"/>
<module name="org.slf4j"/>
</dependencies>
</module>

93
Luego debemos proceder a descargar una librería llamada “FileUpload” la cual
debemos descargar la version “1.3.3” que podemos encontrar en el siguiente
enlace:

https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.3.3

Al finalizar la descarga buscamos dentro de la carpeta de Wildfly


“modules\system\layers\base”, una vez estando en la ruta creamos las carpetas
“org\apache\commons\fileupload\main” esto en caso de que dichas carpetas no
se encuentren creadas con anterioridad, finalmente, dentro de esta ruta se añade el
archivo descargado y se crea un archivo llamado “modules.xml” el cual debe
incluir lo siguiente:

94
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="org.apache.commons.fileupload">
<properties>
<property name="jboss.api" value="private"/>
</properties>}
<resources>
<resource-root path="commons-fileupload-1.3.1.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>

95
Después de realizar las configuraciones anteriores buscamos la carpeta
“SunOneApp” dentro de esta buscamos una carpeta llamada “dist” en la cual
existe un archivo “SunOneApp.ear” este archivo es el que contiene empaquetadas
las dos aplicaciones, este archivo es el que usaremos para realizar el despliegue
dentro de nuestro servidor de aplicaciones.

NOTA: La aplicación solo podrá ser ejecutada si se cuenta con las dos aplicaciones
“SunOne y Hermes” y estas se encuentren dentro de la carpeta “SunOneApp” la
cual contiene el Archivo de Aplicación Empresarial (EAR) de la suite.

96
Ya en la ruta, copiamos el archivo “SunOneApp.ear” y nos dirigimos nuevamente
a la carpeta “wildlfy-10.0.0. Final”, dentro de esta carpeta seleccionamos la
carpeta “standalone” y luego seleccionamos la carpeta “deployments”
encontrándonos dentro de la carpeta pegamos el archivo “SunOneApp.ear”.

Volvemos a la carpeta “wildlfy-10.0.0.Final” e ingresamos la carpeta “bin” donde


se encuentra un archivo llamado “standalone.bat” el cual se debe ejecutar y
deberá abrir la consola “cmd” de Windows desplegando así el servidor de
aplicaciones Wildfly.

97
98
La consola mostrara el “log” del servidor, si la última línea mostrada en el “cmd”
aparece como en la imagen podremos dirigirnos a algún explorador (Chrome,
Mozilla, Interner Explorer, Edge, etc...) y colocar la siguiente ruta en la barra de url:

http://localhost:8080/hermes/

Con esta url nos redirigirá a la aplicación “hermes”, y quedara desplegada


correctamente la aplicación.

99
ANEXO 2:
MANUAL DE USUARIO

100
MANUAL DE USUARIO
DESARROLLO DE PLATAFORMA WEB PARA LA
PUBLICACIÓN DE SUCESOS INTERNOS DE ENTIDADES
PÚBLICAS BASADO EN TECNOLOGÍA JSF

Universidad Distrital Francisco José de Caldas


Soluciones en redes y sistemas – SOLREDES S.A.S.

Haroll Alexander Mora Garzón – Oscar Ricardo López López


2018

101
Manual de Usuario

Requerimientos del sistema.

Para poder ejecutar la aplicación, se es necesario las siguientes características:

 Hardware
Se debe tener un computador que posea:
 Procesador de 1.2 Ghz o superior
 2Gb de memoria RAM
 Conexión estable a internet
 Software
 Cualquier versión de Linux o Windows
 Navegador de su preferencia
Para el correcto funcionamiento de la aplicación Hermes se puede utilizar con los
siguientes exploradores: Google Chrome, Mozilla Firefox, Microsoft Edge e Internet
Explorer, este último debe tener la versión 10 o superior.

Para ingresar a la plataforma ingresamos el siguiente link:

https://186.31.64.11:7080/hermes

Se debe cargar las publicaciones realizadas por la entidad:

En este caso no existen publicaciones, por lo tanto, si deseo realizar una publicación
debo seleccionar la opción de la parte superior derecha que dice Iniciar:

102
Después de seleccionar esta opción nos abrirá una nueva pestaña con el inicio de
sesión del a aplicación SunOne® la cual se encarga de realizar la administración de
cuentas.

Allí ingresamos el nombre de usuario y contraseña, si no contamos con una cuenta


en la aplicación debemos contactarnos con el administrador debido a que en
SunOne® se registran las cuentas por medio del administrador. Después de
ingresar los datos debe aparecer el inicio de la aplicación Hermes.

103
Luego de iniciar sesión seleccionamos la opción en la parte superior izquierda que
dice Publicaciones, esta nos redirigirá al listado de publicaciones realizadas por
todos los usuarios.

En este caso no hay publicaciones por lo cual, seleccionamos el botón de la parte


superior izquierda que dice Crear Ticket, este botón habilitara un formulario para
crear la publicación.

104
En este formulario podemos ingresar:

Asunto: El asunto de la publicación que es una breve descripción del tema a tratar

Proyecto: El proyecto hacia el cual está orientada la publicación

Descripción: El contenido de la publicación del tema a tratar

Adjuntos: Los archivos adjuntos a la publicación los cuales que pueden contener
complementos a la publicación a realizar

Si deseamos adjuntar archivos seleccionamos en la parte inferior izquierda el botón


Seleccionar… Este abrirá un dialogo donde podremos seleccionar varios archivos
para adjuntarlos.

105
Después de seleccionar los archivos presionamos el botón Abrir ubicado en la parte
inferior derecha del dialogo, este dialogo se cerrara y se visualizara la lista de
archivos adjuntos bajo el botón de Seleccionar…

En el listado podremos observar el nombre, peso en KB una barra de carga y un


botón con el que podemos cancelar el cargue del archivo, para subir todos los
archivos seleccionamos el botón Adjuntar.

Luego desaparecerá el listado de archivos, y se listaran en una tabla en la parte


inferior derecha del formulario, allí podremos ver el nombre del archivo, un botón
con el icono de un ojo y un botón con el icono de un bote de basura.

El botón con el icono del ojo nos permite visualizar el adjunto siempre y cuando sea
una imagen o un archivo PDF, de lo contrario se descargara el adjunto.

106
El botón con el icono del bote de basura permite eliminar el archivo para que no sea
adjuntado a la publicación.

Para poder publicar es obligatorio el asunto y la descripción, después de esto


presionamos el botón Publicar en la parte inferior del formulario.

107
Después de publicar si recargamos nuevamente la parte pública se verá la nueva
publicación.

Allí podremos ver cada publicación realizada, cada una tendrá el asunto en la parte
superior izquierda del contenedor, en la parte superior derecha estará la fecha de
publicación junto con la imagen de la cuenta de la persona que publico, además si
se pasa el mouse sobre la imagen se ampliara un poco y se verá el nombre y correo
electrónico de quine público.

108
Luego de esto en la parte central izquierda podremos visualizar una imagen
resumen, la cual debe ser una imagen incluida en los adjuntos (si no hay adjuntos
o imágenes en los adjuntos se dejara por defecto el icono de la aplicación), debajo
de la imagen se encuentran dos iconos uno de Facebook y otro de Twitter que
permiten compartir la publicación en redes sociales.

En la parte central al lado de la imagen resumen encontraremos la descripción


completa de la publicación, pero además de esto en la parte inferior izquierda bajo
los links de Facebook y Twitter se encuentra un link que dice Ver Todo… que
permite redirigir la aplicación hacia la noticia completa.

109
Después de dar clic en el link Ver Todo… podemos observar solamente la noticia,
con un listado de los adjuntos y el listado de comentarios, estos dos listados estarán
minimizados.

Para ampliar cualquiera de los dos listados en la parte derecha del contenedor
deseado hay un botón con un signo + que presionamos para ampliar.

La aplicación por defecto al adjuntar las imágenes a la publicación les cambia el


nombre por BUG_No de Adjunto, en el listado veremos el nombre de cada archivo,
la fecha en que se adjuntó y un icono representativo del tipo de archivo que es, al
dar clic en este icono podremos descargar el archivo en nuestra computadora.

110
Para ver o comentar la publicación presionamos en botón + en el contenedor que
dice Comentarios (No de comentarios)

Allí podremos visualizar todos los comentarios y un campo de texto junto con un
botón que dice Comentar, en este caso no hay comentarios por lo cual aparece
vacío, si deseamos comentar escribimos en el campo de texto el comentario y
seguido de esto presionamos el botón Comentar

111
Después de comentar se visualizará el comentario con el nombre de la persona que
comento (Si no está logueada la persona por defecto el nombre es Anónimo)
también se visualizara la fecha en que se realizó la publicación y bajo esto se verá
el comentario realizado.

Ahora, en SunOne® existe un listado de malas palabras u obscenidades las cuales


son usadas para comparar en los comentarios y validas que no existan malas
palabras, ejemplo:

112
Después de presionar el botón comentar, el sistema validara el comentario con el
listado de obscenidades y malas palabras, si encuentra alguna coincidencia,
desplegara un mensaje de confirmación si se desea comentar con el mensaje
modificado ya que se hallaron malas palabras.

Si se acepta el comentario cambiará las malas palabras por asteriscos y lo


publicará, de lo contrario si no se acepta no se realizará ninguna publicación.

Si se desea editar la publicación se debe ingresar nuevamente al listado de


publicaciones visto anteriormente y seleccionarlo.

113
Después de seleccionar la publicación a editar se mostrará el formulario diligenciado
anteriormente, aunque con algunos cambios, ya no se mostrara el listado de
aplicación sino el estado de la publicación, además se muestra una lista de los
archivos adjuntos a la publicación que muestra el nombre del archivo, fecha en la
que se adjuntó, y una serie de botones.

El estado de la publicación permite seguir mostrando u ocultar la publicación, si


poderla eliminar, por otro lado, el botón con icono de flecha hacia abajo permite
descargar el archivo, el icono de dos cuadros muestra el archivo en otra ventana
siempre y cuando sea una imagen o un PDF y el icono con la equis permite eliminar
el archivo de la publicación.

Nota: Si se elimina alguno de los archivos con el botón de la equis que están listados
la actualizara automáticamente la cantidad de adjuntos, el botón actualizar realizara
los cambios del asunto, el estado, la descripción.

114
ANEXO 3:
HISTORIAS DE USUARIO

115
Desarrollo ágil: Historias de usuario y criterios de aceptación

Enunciado de la Historia Criterios de Aceptación

Identificador Número Criterio de Resultado /


Característica /
(ID) de la Rol Razón / Resultado (#) de Aceptación Contexto Evento Comportamiento
Funcionalidad
Historia Escenario (Título) esperado

Con la finalidad de
Como un conocer todas los En caso que se
Necesito ver la Cuando se El sistema mostrará el
Particular y un comunicados Seccion de necesite ver las
1 sección de 1 ingresa a la listado de publicaciones
usuario de la presentados a la publicaciones publicaciones de la
publicaciones aplicación Hermes realizados por la entidad
institución comunidad entidad
interesada

Cuando se
Como un Con la finalidad de En caso que se
Necesito ver selecciona en la El sistema mostrara el
Particular y un saber si la Ver archivos necesite ver los
2 archivos 1 parte derecha de listado de archivos
usuario de la publicación contiene adjuntos archivos adjuntos a
adjuntos la sección adjuntos a la publicación
institución archivos adjuntos la publicación
Archivos

En el listado de
En caso que se
Como un Necesito archivos en la El sistema realizara
Con la finalidad de Descargar necesite descargar
Particular y un descargar parte derecha se inmediatamente una
3 descargar el archivo 1 archivos los archivos
usuario de la archivos da click en el descarga del archivo
adjunto adjuntos adjuntos a la
institución adjuntos icono referencia a seleccionado
publicación
una imagen

Con la finalidad de
Cuando se
Como un visualizar todos los En caso que el El sistema mostrara el
selecciona en la
Particular y un Necesito ver comentarios que público necesite ver listado de comentarios
4 1 Ver comentarios parte derecha de
usuario de la comentarios han hecho otros comentarios de la desde el más reciente
la sección de
institución usuarios dentro de publicación hasta el más antiguo
Comentarios
la aplicación

116
En el listado de
comentarios en la
En caso que el El sistema validara el
cabecera se
Realizar público necesite comentario verificando
1 encuentra un
comentarios realizar comentarios que no contenga
campo de texto y
a la publicación palabras obscenas
Con finalidad de un botón de
Como un participar en la comentar
Particular y un Necesito realizar dicusión de la
5 Si el comentario
usuario de la comentarios publicación del (Si el comentario
institución gusto de los El usuario observara contiene lenguaje
contiene El sistema valida si se
usuarios un dialogo de obsceno el
palabras acepta o cancela el
advertencia donde sistema
obscenas) comentario y lo publica
2 podrá aceptar o desplegara un
Aceptar o modificando las
cancelar el dialogo donde
cancelar palabras obscenas por
comentario podrá aceptar o
comentario asteriscos
modificado cancelar el
modificado
comentario

Cuando se
Con la finalidad de En caso que el El sistema abrirá una
Como un selecciona en la
Necesito que el usuario público necesite nueva pestaña que
Particular y un Compartir en parte izquierda los
6 compartir en quiera divulgar la 1 compartir la permite compartir un link
usuario de la redes sociales iconos de
redes sociales publicación en sus publicación por referenciando la
institución Facebook o
redes sociales Facebook o Twitter publicación
Twitter

En la parte El sistema redirige al


En caso que el
superior derecha usuario a un inicio de
1 Inciar sesión usuario necesite
Necesito que los se ingresa a la sesión que es
iniciar sesión
usuarios de la opción iniciar controlado por SunOne
Con la finalidad de
Como un usuario aplicación
7 incluir la plataforma
de la institución puedan iniciar
en la suite
sesión desde
SunOne En el inicio de El sistema valida el
En caso que el sesión de SunOne usuario y contraseña y
Ingresar usuario
2 usuario necesite se ingresa Usuario si es correcto inicia
y contraseña
iniciar sesión y Contraseña y se sesión que es
da la opción Iniciar controlado por SunOne

117
En la opción de
Necesito que los iniciar sesión, hay
usuarios de la un link que El sistema envía un
En caso de que el
aplicación Con la finalidad de redirige a un correo electrónico con la
Como un usuario Recuperar usuario desee
8 puedan incluir la plataforma 1 formulario donde nueva contraseña del
de la institución contraseña recuperar la
recuperar la en la suite se ingresa el usuario que es
contraseña
contraseña correo para controlado por SunOne
desde SunOne recuperar la
contraseña

Al iniciar sesión en
En caso que el la parte superior El sistema redirige al
Sección de usuario necesite izquierda se usuario a un listado de
1
Con la finalidad de publicaciones seleccionar una selecciona la publicaciones realizadas
corregir publicación opción por el usuario
Como un usuario Necesito editar
9 publicaciones que publicaciones
de la institución una publicación
en un momento
hayan quedado mal En caso que el selecciona alguna
el sistema redirige a la
Editar usuario necesite de las
2 parte de edición de las
Publicación editar una publicaciones que
publicaciones
publicación desee editar

En el listado de
En caso que el El sistema redirige al
publicaciones se
Iniciar usuario necesite usuario a un formulario
1 selecciona el
publicación iniciar la creación de donde se creara la
botón crear
la publicación publicación
publicación
Con la finalidad de
realizar En el formulario se
Como un usuario Necesito crear
10 publicaciones a toda solicita el Asunto,
de la institución una publicación
la comunidad Proyecto al que
interesada En caso de que el
está relacionada El sistema permite la
Completar usuario desee
la publicación, descripción en formato
2 formulario de completar el
descripción y se html y permite adjuntar
publicación formulario para crear
pueden archivos desde el cliente
la publicación
seleccionar
archivos para
adjuntar

118
El sistema valida que los
En caso de que el En el formulario,
campos obligatorios
Crear usuario complete el en la parte inferior
3 estén llenos y realiza la
Publicación formulario y desee se selecciona la
inserción de la
publicar opción de publicar
publicación

119
ANEXO 4:
PRODUCT BACKLOG

120
Pila de Producto (Product Backlog)

Identificado
Dimensión / Iteración
r (ID) de la Enunciado de la Historia Alias Estado Prioridad
Esfuerzo (Sprint)
Historia

7 Como un usuario de la institución Necesito que Inicio Sesion Hecho 3 semanas 3 Alta
los usuarios de la aplicación puedan iniciar
sesión desde SunOne Con la finalidad de
incluir la plataforma en la suite
8 Como un usuario de la institución Necesito que Restaurar Password Hecho 2 semanas 2 Alta
los usuarios de la aplicación puedan recuperar
la contraseña desde SunOne Con la finalidad
de incluir la plataforma en la suite

10 Como un usuario de la institución Necesito Crear publicacion Hecho 3 semanas 3 Alta


crear una publicación Con la finalidad de
realizar publicaciones a toda la comunidad
interesada
9 Como un usuario de la institución Necesito Editar Publicacion Hecho 2 semanas 2 Media
editar una publicación Con la finalidad de
corregir publicaciones que en un momento
hayan quedado mal
1 Como un Particular y un usuario de la Seleccionar Hecho 2 semanas 2 Alta
institución Necesito ver la sección de publicacion
publicaciones Con la finalidad de conocer todas
los comunicados presentados a la comunidad
interesada
6 Como un Particular y un usuario de la compartir Hecho 2 semanas 2 Media
institucion Necesito compartir en redes sociales
Con la finalidad de que el usuario quiera
divulgar la publicación en sus redes sociales
2 Como un Particular y un usuario de la Ver Adjuntos Hecho 1 semana 1 Media
institucion Necesito ver archivos adjuntos Con
la finalidad de saber si la publicación contiene
archivos adjuntos
3 Como un Particular y un usuario de la Descargar Archivos hecho 2 semanas 2 Media
institucion Necesito descargar archivos
adjuntos Con la finalidad de descargarel
archivo adjunto

121
4 Como un Particular y un usuario de la Ver Comentarios hecho 2 semanas 2 Alta
institucion Necesito ver comentarios Con la
finalidad de visualizar todos los comentarios
que han hecho otros usuarios dentro de la
aplicación
5 Como un Particular y un usuario de la Realizar Comentarios Hecho 4 semanas 4 Alta
institucion Necesito realizar comentarios Con
finalidad de participar en la dicución de la
publicación del gusto de los usuarios

122
123

Das könnte Ihnen auch gefallen