CHAPTER FIVE
5.5 What’s Luck Got To Do With It: Choice and Planning
GO es un lenguaje de código abierto, es expresivo, conciso, limpio y eficiente. Sus mecanismos de concurrencia hacen que sea más fácil escribir programas que saquen el máximo rendimiento de multinúcleos y máquinas en red. (Golang, 2016)
Go es desarrollado por un equipo de Google y contribuyentes de la comunidad Open Source.
5.3.2. Angular
Es un framework MVC (Modelo Vista Controlador) de código abierto desarrollado Google y escrito en javascript, que trabaja del lado del cliente cuyo principal objetivo es lograr aplicaciones web dinámicas. (Flores, 2015)
Angular permite el desarrollo de aplicaciones sencillas sin necesidad del uso de javascript a partir de la declaración de directivas en las etiquetas HTML. Estas directivas son comandos que se le asignan a las etiquetas por medio de atributos, para la ejecución de éstas existe un compilador de HTML que recorre el código y las localiza. El framework trae directivas por defecto, pero se pueden desarrollar más directivas.
5.3.3. UI-Grid
Es una librería desarrollada en Angular JS que nos permite mostrar grandes conjuntos de datos en la interfaz del usuario organizados en grillas en el cual se pueden ordenar o filtrar facilitando la visualización de los datos. (UI-Grid, 2017)
5.3.4. PostgreSQL
PostgreSQL debido a sus características técnicas es una de las bases de datos más potentes y robustas del mercado, PostgreSQL funciona muy bien con grandes cantidades de datos y una alta concurrencia de usuarios accediendo a la vez a el sistema (rafaelma, 2010). Debido a esto se escogió esta herramienta para la administración de los datos pertenecientes al proyecto.
PostgreSQL es muy popular debido a que no hay tarifas ni restricciones ya que utiliza una licencia tipo BSD (Berkeley Software Distribution) “permisiva”. Esta licencia certificada por la OSI es ampliamente apreciada como flexible y amigable para los negocios, pues no restringe el uso de PostgreSQL para aplicaciones propietarias y comerciales (PostgreSQL, 2014).
5.3.5. Repositorios GIT
Para poder tratar el tema de los repositorios GIT se deben conocer ciertos conceptos los cuales se definen a continuación:
5.3.5.1. Sistema de Control de Versiones
Un sistema de control de versiones permite realizar seguimiento de la historia de cambios de una colección de archivos y que además tiene la funcionalidad que permite revertir la versión actual a una versión anterior. Cada versión es el estado de la colección de archivos en un momento determinado de tiempo, cabe resaltar que los archivos no son necesariamente de código escrito en un lenguaje de programación, ya que un sistema de estos sirve para archivos de cualquier formato.
Los archivos de la colección y toda la historia de cambios quedan almacenados en un repositorio. (Cooperativa de Trabajo Fiqus LTDA)
5.3.5.2. Sistema de control de versiones distribuido
Es un sistema que posee un servidor central para almacenar el repositorio del cual se puede obtener una copia exacta mediante el uso de un proceso llamado clonación. Estas copias al ser copias exactas del servidor central poseen sus mismas características y funcionalidades del repositorio original, dentro de los que se encuentra la historia de la colección de archivos actuales y la posibilidad de hacer más clonaciones de sí misma.
GIT se puede definir como un sistema de control de versiones distribuida que se origina a partir del desarrollo del kernel de Linux y es usado por muchos proyectos populares Open Source como ser Android o Eclipse, así como tantos otros proyectos comerciales. Entonces, la principal diferencia entre Git y cualquier otro sistema de control de versiones es cómo Git modela sus datos. Conceptualmente, la mayoría de los demás sistemas almacenan la información como una lista de cambios en los archivos. Estos sistemas modelan la información que almacenan como un conjunto de archivos y las modificaciones hechas sobre cada uno de ellos a lo largo del tiempo. En cambio, Git modela sus datos más como un conjunto de instantáneas de un mini sistema de archivos. Cada vez que confirmas un cambio, o guardas el estado de tu proyecto en Git, él básicamente hace una foto del estado de todos tus archivos en ese momento, y guarda una referencia a esa instantánea. Para ser eficiente, si los archivos
no se han modificado, Git no almacena el archivo de nuevo, sólo un enlace al archivo anterior idéntico que ya tiene almacenado. (Cooperativa de Trabajo Fiqus LTDA)
5.3.6. Servicios Web
Es un sistema de software diseñado para soportar la interacción máquina a máquina sobre una red. Este sistema tiene una interfaz descrita en un formato procesable por máquinas el cual es WSDL (Web Service Description Language). Otros sistemas interactúan con un Web Service de una forma prescrita por su descripción usando mensajes SOAP, transportados usando HTTP con XML en conjunto con otros estándares relacionados con la web (World Wide Web Consortium, 2004).
Existe un estilo arquitectural que está diseñado para que los servicios trabajen mejor en la Web, y son los servicios web RESTful. REST o Representational State Transfer por sus siglas, un estilo arquitectural en el que los datos y la funcionalidad son considerados recursos y se accede a estos mediante URIs, normalmente enlaces web. El estilo arquitectural REST restringe todo a una arquitectura cliente/servidor y es diseñado para usar un protocolo de comunicación sin estados, principalmente HTTP. Este estilo permite que haya intercambio de representaciones de recursos entre el cliente y el servidor mediante el uso de una interfaz estandarizada y un protocolo. Los servicios web REST tienen principios que los hacen simples, livianos y rápidos, estos son:
Identificación de recursos mediante URIs: Cada recurso posee su propia URI lo que hace que un web service provea un espacio de direcciones para el uso de estos.(Oracle)
Interface Uniforme: Los recursos son manipulados mediante un conjunto fijo de operaciones para crear, leer, actualizar y borrar, estas son PUT, GET, POST y DELETE. PUT crea un nuevo recurso que puede ser borrado con DELETE, GET obtiene el estado actual de algún recurso en alguna representación y POST le transfiere un nuevo estado a un recurso.(Oracle)
Mensajes autodescriptivos: Los recursos son desacoplados de su representación tal que se puede acceder a estos mediante varios formatos como HTML, texto plano, XML, PDF, JSON, JPEG, entre otros. (Oracle)
Interacciones con estado a través de hipervínculos: Cada interacción con recursos es sin estados, es decir, los mensajes de petición se encuentran auto contenidos. (Oracle)
5.3.7. Tuleap
Es una herramienta de software libre que permite planear, hacer seguimiento, desarrollar y colaborar en proyectos de software. Esta herramienta está diseñada para equipos de trabajo que usan metodologías ágiles. Permite la asignación de roles a cada uno de los integrantes del equipo de trabajo.
Para el desarrollo, permite la creación y administración de repositorios GIT. Para el seguimiento provee un backlog y gráficas en las que permite observar el esfuerzo a lo largo de una iteración. (Enalean)