Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PLANETAS API
Proyecto
Introducción
Objetivos
Actividades
Marco Teórico
Cronograma
Conclusiones
PROYECTO
Desarrollo de un proyecto implementado usando uno de los patrones de desarrollo de software
orientado a servicios (SOA). En nuestro caso se desarrollará una API que suministrará servicios
para información y actualización de los planetas de nuestro sistema solar.
INTRODUCCIÓN
Debido al desarrollo exponencial de los servicios ofrecidos por los productos implementados
por los ingenieros de software se han vuelto un aliado estratégico de las empresas en todos sus
niveles, en el caso que nos ocupa el desarrollo de los servicios ofrecidos por nuestras
aplicaciones ayudan a facilitar las operaciones de cualquier entorno empresarial, el presente
proyecto pretende mostrar el funcionamiento de una aplicación completa, FrontEnd y BackEnd
con su correspondiente base de datos que refleje el avance logrado en suministro de servicios
empresariales.
Objetivo General
● Desarrollar un servicio API REST que permita borrar, actualizar, consultar y guardar
información de planetas y estrellas en una base de datos no relacional. La aplicación debe
guardar el nombre y el tamaño en Km de los planetas y estrellas. También debe asociar las
estrellas con los planetas que la orbitan.
Objetivos Específicos
● Guardar, borrar, consultar y actualizar registros almacenados en una base de datos no
relacional.
● Almacenar información de planetas y estrellas.
● Conectar usuarios con los datos almacenados en la nube.
Justificación
Los avances tecnológicos han permitido estudiar mas aspectos de nuestro universo en
menos tiempo. Debido a la gran cantidad de datos obtenidos de planetas y estrellas con las
nuevas tecnologías utilizadas por la astronomía se necesita un servicio web que permita
gestionar la información obtenida y que pueda ser consultada por cualquier tipo de cliente
sin importar su plataforma.
La arquitectura del patrón Modelo Vista Controlador divide una aplicación interactiva en 3
componentes. El Modelo que se encarga de la funcionalidad del servicio y la información
almacenada en la base de datos. La Vista que se encarga de mostrar la información al usuario y
los Controladores que se encargan de información introducida por el usuario y la traduce en
solicitudes al servicio.
Este patrón de diseño se utiliza generalmente en creación de aplicaciones interactivas con una
interfaz de usuario.
Situación problemática
Se necesita una aplicación que almacene información y pueda presentar de formas distintas en
diferentes ventanas o vistas, por ejemplo, puede mostrar la misma información en un diagrama
de barras o de torta. Los cambios generados en la Interfaz de Usuario se deben implementar de la
forma más sencilla posible y preferiblemente durante tiempo de ejecución.
Sería muy conveniente poder separar los componentes que se encargan de hacer las consultas
a la base de datos y los componentes que se encargan de la interfaz del usuario.
Solución que ofrece la arquitectura MVC
Puede haber múltiples vistas en la interfaz del usuario y todas utilizan el mismo modelo para
enviar y recibir información de la base de datos.
Cada vista está asociada con un controlador que se encarga de manipular las entradas de los
usuarios y traducirlas en solicitudes al servicio. El usuario puede trabajar desde la vista, pero
toda la funcionalidad se basa en el uso de controladores.
Caracteristicas del patron MVC Descripción de la categoria
Icono
MARCO TEORICO
Cada día, la arquitectura orientada a servicios (SOA) gana más popularidad. Los mercados
cada vez más competitivos han visto una oportunidad de mejorar sus procesos productivos y sus
servicios invirtiendo en sus estructuras IT. En muchos casos parece ser la respuesta para
interconectar procesos, personas e información.
¿Qué es SOA?
Capas de Software:
Aplicaciones básicas.
De exposición de funcionalidades.
De integración de servicios.
De composición de procesos.
De entrega.
Arquitectura SOA.
Dentro de esta arquitectura podemos decir que SOA estará formada por la combinación de
tecnologías, productos, API’s (Interfaces relacionales de aplicaciones) extensiones de la
tecnología de soporte y otras partes varias.
Ventajas de la SOA.
Es un marco de trabajo que establece una estructura para la integración de aplicaciones lo que
permite a las organizaciones unir los objetivos y procesos de negocio con sistemas legados o
nuevos en la infraestructura de TI. Todo esto facilita la reducción de costos, innovación de
servicios, adaptación rápida y reacción temprana ante la competencia.
SOA permite formular una estrategia que combine nuevas tecnologías y aplicaciones
independientes, permitiendo que los componentes del proceso se integren y coordinen.
Cronograma de Actividades
El servicio esta alojado en una plataforma basada en la nube que funciona como PaaS
(Platform as a Service) llamada Heroku que nos ha brindado el siguiente URL para acceder al
servicio.
https://pure-beach-54311.herokuapp.com
https://pure-beach-54311.herokuapp.com/planets
Método: GET
"count": 3,
"planets": [
"_id": "5e90a357e3281848587a81a5",
"name": "Earth",
"size": 6371,
"star": "5e8e9044f815351e245b0def",
"starUrl": "http://localhost:3000/stars/5e8e9044f815351e245b0def"
},
"_id": "5e90a58392bfd00e04565a25",
"name": "Venus",
"size": 6051.8,
"star": "5e8e9044f815351e245b0def",
"starUrl": "http://localhost:3000/stars/5e8e9044f815351e245b0def"
},
"_id": "5e90a5d792bfd00e04565a28",
"name": "Mars",
"size": 3389.5,
"star": "5e8e9044f815351e245b0def",
"starUrl": "http://localhost:3000/stars/5e8e9044f815351e245b0def"
}
]}
https://pure-beach-54311.herokuapp.com/planets/:id
Método: GET
Ejemplo: {
"planet": {
"_id": "5e90a357e3281848587a81a5",
"name": "Earth",
"size": 6371,
"star": "5e8e9044f815351e245b0def",
"starUrl": "http://localhost:3000/stars/5e8e9044f815351e245b0def"
https://pure-beach-54311.herokuapp.com/planets/:id
Método: PATCH
“name”: “Mars”
Borrar un planeta
https://pure-beach-54311.herokuapp.com/planets/:id
Método: DELETE
Crear un planeta
https://pure-beach-54311.herokuapp.com/planets
Método: POST
Estrellas
https://pure-beach-54311.herokuapp.com/stars
Método: GET
"count": 2,
"stars": [
"_id": "5e8e9044f815351e245b0def",
"name": "Sun",
"size": 696340
},
"_id": "5e8e90d010908c4e487e07f6",
"size": 851120
https://pure-beach-54311.herokuapp.com/stars/id
Método: GET
"star": {
"_id": "5e8e9044f815351e245b0def",
"name": "Sun",
"size": 696340
https://pure-beach-54311.herokuapp.com/stars/id
Método: PATCH
https://pure-beach-54311.herokuapp.com/stars/id
Metodo: DELETE
https://pure-beach-54311.herokuapp.com/stars
Método: POST
Se realizaron las pruebas con todas las rutas del servicio API REST usando un cliente llamado
Postman.
Ruta: https://pure-beach-54311.herokuapp.com/planets
Método: GET
Conclusión: prueba exitosa
Objetivo: Obtener un planeta dependiendo del ID introducido en los parámetros del URL
Ruta: https://pure-beach-54311.herokuapp.com/planets/5e90a5d792bfd00e04565a28
Método: GET
Crear un planeta
Ruta: https://pure-beach-54311.herokuapp.com/planets
Método: POST
Actualizar un planeta
Ruta: https://pure-beach-54311.herokuapp.com/planets
Método: POST
La ruta funciona correctamente y permite actualizar la información de un planeta, sin
embargo, cuando el cuerpo de la respuesta tiene un número de estrella no valido permite seguir
la operación sin actualizar el id de la estrella. Si se introduce un ID valido de una estrella, la ruta
permite actualizar la propiedad star.
Borrar un planeta
Objetivo: Borrar un nuevo planeta que tenga un identificador dado como parámetro.
Ruta: https://pure-beach-54311.herokuapp.com/planets/:id
Método: DELETE
La ruta borrar exitosamente el planeta que tenga el ID en el parámetro del URL y muestra un
mensaje diciendo que el planeta fue borrado exitosamente.
CONSULTA PLANETAS
En este apartado seleccionamos el método GET y escribimos el url a consultar en este caso el
de planetas, damos clic en Send.
https://pure-beach-54311.herokuapp.com/planets
4. Este método GET lo que realiza es la consulta de información al servidor sobre
los planetas en general que se encuentran disponibles con sus características como se
muestra a continuación.
5. Si deseamos realizar una consulta de un solo planeta debemos colocar el ID de
nuestro planeta, por ejemplo:
Vamos a escoger el ID del planeta Venus que se muestra en la anterior imagen lo
ingresamos a la url de planeta agregándolo con un / y le damos clic en SEND como se
muestra a continuación.
10. Luego de haber digitado las propiedades damos clic en POST y luego SEND para
crear nuestro planeta.
POST: Es utilizado para solicitar la creación de un nuevo registro, es decir, algo que
no existía previamente, es equivalente a realizar un INSERT en la base de datos.
ACTUALIZACIÓN INFORMACIÓN
ELIMINAR PLANETA
13. Para eliminar un planeta colocamos el ID del planeta a eliminar luego la opción
DELETE y luego en SEND. Con esto el planeta queda eliminado como en siguiente
ejemplo
DELETE: Este método se utiliza para eliminar un registro existente, es similar a
DELETE a la base de datos.
2. Si deseamos realizar una consulta de una solo estrella debemos colocar el ID por
ejemplo:
Vamos a escoger el ID la estrella sun que se muestra en la anterior imagen lo
ingresamos a la url de planeta agregándolo con un / y le damos clic en SEND como se
muestra a continuación
CREACION ESTRELLAS
3. Realizaremos la creación de una nueva estrella para esto damos clic en BODY
Clic en RAW luego TEXT y por último JSON
Conclusiones y recomendaciones
Los patrones de diseño de arquitectura de software son una metodología muy útil para el
desarrollo de sistemas de software que presenten una problemática de implementación
recurrente. Existen soluciones y buenas prácticas que solucionan estos problemas recurrentes y
ahorran tiempo y recursos para el desarrollo de los proyectos.
La arquitectura del Modelo Vista Controlador ofrece una solución para aplicaciones que
necesiten separar las funcionalidades de la interfaz de usuario y del servicio. Se pueden
implementar más funcionalidades en la interfaz de usuario en menos tiempo sin afectar la
funcionalidad del servicio o la integridad de la base de datos.
Hemos escogido Nodejs, Express y MongoDB y ATLAS como las tecnologías para crear
nuestro servicio que puede ser consumido desde un cliente mediante solicitudes con métodos
GET, POST, PUT y DELETE.
Se recomienda una ampliación de la API que permita guardar más información de diferentes
cuerpos celestes.
ACDM y SCRUM
Una de las diferencias más notorias entre las dos metodologías de desarrollo es la cantidad de
roles que existen en cada metodología ya que ACDM propone un número mayor de roles que se
encargan de taras específicas.
ACDM SCRUM
Ingeniero gerente Scrum Team
Ingeniero de soporte Product Owner
Arquitecto jefe Scrum Master
Científico jefe Developement Team
Ingeniero de requisitos
Ingeniero de procesos de calidad
Ingeniero de producción
El número de roles que propone el ACDM resulta en equipos más grandes y difíciles de
manejar. SCRUM ofrece una ventaja sobre ACDM debido a que sus roles son autoorganizados y
multifuncionales, por lo tanto, no dependen de actores externos al equipo.
La administración del tiempo es mas optima utilizando SCRUM debido a que los Sprints
tienen duración fija, mientras que en ACDM la duración de cada iteración no es clara al principio
del desarrollo.
QAWM y SCRUM
La primera diferencia que logramos identificar evaluando los dos enfoques es que QAWM no
es una metodología de desarrollo y su finalidad es la captura de requerimientos, escenarios y
drivers de arquitectura.
QAWM es un taller que dura un solo día y hace parte de la primera fase de un proceso de
arquitectura y cuyo enfoque principal es la calidad.
SCRUM propone una forma de trabajo que ataca los problemas relacionados con la gestión de
proyectos y como tal necesita de un complemento que se ocupe de los aspectos técnicos.
El tamaño de los equipos es muy similar, QAWM puede ser mayor en algunas ocasiones y
siempre necesitara de dos roles que son el Lead QAW y el escritor de QAW.
FURPS+ y SCRUM
El modelo FURPS se enfoca principalmente en desarrollar los requerimientos funcionales, no
funcionales y restricciones adicionales. No es una metodología de desarrollo como SCRUM pero
es un modelo que debería ser aplicado en toda fase de levantamiento de requerimientos.
Postmortem
Áreas de mejora
Los requerimientos del servicio web no fueron claramente definidos en el principio del
proyecto. Esto resultó en un tiempo mas extendido del proceso de pruebas debido a que los
requerimientos eran ambiguos y no definía una funcionalidad clara por parte del servicio.
En consecuencia, se tuvo que hacer pruebas adiciones después de varias sesiones de desarrollo
no contempladas en el cronograma para obtener un producto de calidad.
Recomendaciones
El grupo de trabajo ha llegado a la conclusión de que una definición solida de los
requerimientos del proyecto permite un diseño mas optimo y robusto del producto. Además,
permite un proceso de pruebas mas confiable en un tiempo menor.
Se recomienda hacer la gestión necesaria para hacer un levantamiento de requerimientos
exitoso.
API: Una API es un conjunto de definiciones y protocolos que se utiliza para desarrollar e
integrar el software de las aplicaciones. API significa interfaz de programación de aplicaciones.
SERVICIOS: Un servicio podría ser un conjunto de actividades que buscan satisfacer las
necesidades de un cliente
MVC: Modelo - Vista - Controlador un patrón de diseño de software para programación que
propone separar el código de los programas por sus diferentes responsabilidades.