Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y...

23
Proyecto Final “Análisis y Diseño Basado en Componentes” Sistema billetera virtual Integrantes: Acosta Choclo Wilton Mingyar Carrasco Sumoya Rosember Cruz Andia Carlos Gerardo Sandoval García David Jhonatan Módulo: Análisis y diseño orientado a componentes Docente: Ing. Alcides Leaños Rodríguez Santa Cruz Bolivia 16/11/2019

Transcript of Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y...

Page 1: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final

“Análisis y Diseño Basado en Componentes”

Sistema billetera virtual

Integrantes: Acosta Choclo Wilton Mingyar

Carrasco Sumoya Rosember

Cruz Andia Carlos Gerardo

Sandoval García David Jhonatan

Módulo: Análisis y diseño orientado a componentes

Docente: Ing. Alcides Leaños Rodríguez

Santa Cruz – Bolivia

16/11/2019

Page 2: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 2 de 23

Tabla de contenido 1. Introducción ...................................................................................................................................3

2. Objetivos ........................................................................................................................................3

2.1 Objetivo general .......................................................................................................................3

2.2 Objetivos específicos ................................................................................................................3

3. Descripción de la arquitectura ........................................................................................................4

3.1 Frameworks ..............................................................................................................................4

3.1.1 Spring Boot .......................................................................................................................4

3.1.2 Android .............................................................................................................................4

3.2 Modelo C4................................................................................................................................5

3.3 Descripción de los elementos del sistema .................................................................................5

3.3.1 Elementos ..........................................................................................................................5

3.3.2 Diagramas .........................................................................................................................6

4.Bibliografía ................................................................................................................................... 23

Page 3: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 3 de 23

1. Introducción El sistema desarrollado para este proyecto consiste en un sistema simple de billetera virtual, la cual

se compondrá de los siguientes elementos: Base de datos, API Rest y una aplicación móvil.

Entre las funcionalidades con las cuales contará el sistema se encuentran:

Administración de usuarios

Administración de carteras o billeteras virtuales

Autenticación con usuario y contraseña

Manejo de sesiones con Token

Realización de diferentes tipos de transacciones

Generación de reporte de transacciones por billetera

2. Objetivos

2.1 Objetivo general

Implementar el sistema de billetera virtual y generar diagramas utilizando modelo C4 para

la descripción de la arquitectura del sistema.

2.2 Objetivos específicos

Diseñar una base de datos que soporte las funcionalidades requeridas por el sistema.

Desarrollar una API Rest utilizando Spring Boot.

Desarrollar una aplicación móvil utilizando Java y Android.

Especificar la arquitectura del sistema con un enfoque orientado a componentes utilizando

el modelo C4.

Page 4: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 4 de 23

3. Descripción de la arquitectura

3.1 Frameworks

3.1.1 Spring Boot

Spring Boot facilita la creación de aplicaciones basadas en Spring, autónomas y del nivel de

producción que "simplemente se ejecutan". Tomamos una visión dogmática de la plataforma de

Spring y de las bibliotecas de terceros para que pueda empezarse con el mínimo revuelo. En otras

palabras, Spring Boot es una infraestructura ligera que elimina la mayor parte del trabajo de

configurar las aplicaciones basadas en Spring.

Spring Boot centra su éxito en las siguientes características que lo hacen extremadamente fácil de

utilizar:

Configuración: Spring Boot cuenta con un complejo módulo que autoconfigura todos los

aspectos de nuestra aplicación para poder simplemente ejecutar la aplicación, sin tener que

definir absolutamente nada.

Resolución de dependencias: Con Spring Boot solo hay que determinar qué tipo de

proyecto estaremos utilizando y él se encarga de resolver todas las librerías/dependencias

para que la aplicación funcione.

Despliegue: Spring Boot se puede ejecutar como una aplicación Stand-alone, pero también

es posible ejecutar aplicaciones web, ya que es posible desplegar las aplicaciones mediante

un servidor web integrado, como es el caso de Tomcat, Jetty o Undertow.

Métricas: Por defecto, Spring Boot cuenta con servicios que permite consultar el estado de

salud de la aplicación, permitiendo saber si la aplicación está prendida o apagada, memoria

utilizada y disponible, número y detalle de los Bean’s creado por la aplicación, controles

para el prendido y apagado, etc.

Extensible: Spring Boot permite la creación de complementos, los cuales ayudan a que la

comunidad de Software Libre cree nuevos módulos que faciliten aún más el desarrollo.

3.1.2 Android

Android es un sistema operativo de código abierto y basado en Linux para dispositivos móviles

como teléfonos inteligentes y tabletas. Android fue desarrollado por Open Handset Alliance,

liderado por Google y otras compañías.

Android ofrece un enfoque unificado para el desarrollo de aplicaciones para dispositivos móviles, lo

que significa que los desarrolladores solo necesitan desarrollar para Android, y sus aplicaciones

deberían poder ejecutarse en diferentes dispositivos con Android.

Las aplicaciones de Android generalmente se desarrollan en el lenguaje Java utilizando el Kit de

desarrollo de software de Android (SDK). El SDK de Android incluye proyectos de muestra con

código fuente, herramientas de desarrollo, un emulador y bibliotecas necesarias para crear

aplicaciones de Android. Las aplicaciones se escriben utilizando el lenguaje de programación Java y

se ejecutan en Dalvik, una máquina virtual personalizada diseñada para uso integrado que se ejecuta

sobre un kernel de Linux.

Page 5: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 5 de 23

3.2 Modelo C4 El Modelo C4 es un conjunto de diagramas jerárquicos que se pueden utilizar para describir la

arquitectura de su software en diferentes niveles de zoom, cada uno útil para diferentes audiencias.

El nombre C4 proviene de los conceptos contexto, contenedores, componentes y código.

El modelo C4 considera las estructuras estáticas de un sistema de software en términos de

contenedores, componentes y código. También considera a las personas que utilizan los sistemas de

software que construimos.

En este sentido el modelo C4 cuenta con los siguientes diagramas:

Diagrama de contexto, muestra el sistema de software que está construyendo y cómo

encaja en el mundo en términos de las personas que lo utilizan y los otros sistemas de

software con los que interactúa.

Diagrama de contenedores, amplía el sistema de software y muestra los contenedores que

componen este sistema de software. Las decisiones tecnológicas son también una parte

fundamental de este diagrama.

Diagrama de componentes, expande un contenedor individual para mostrar los

componentes que contiene.

Diagrama de código, de ser necesario puede ampliar un componente individual para

mostrar cómo se implementa este componente. Este diagrama es opcional.

3.3 Descripción de los elementos del sistema

3.3.1 Elementos

3.3.1.1 Base de datos

El sistema contará con una base de datos diseñaba en MySQL, la cual se utilizará para almacenar

los registros de los usuarios, sus billeteras virtuales y las transacciones que se realicen desde la

aplicación móvil.

3.3.1.2 Web API Rest

El sistema contará con una Web API Rest desarrollada con Spring Boot y Java la cual se encargará

de ofrecer todos los servicios web necesarios para la aplicación móvil. Además, también ofrecerá

servicios para la administración de usuarios y billeteras digitales.

3.3.1.3 Aplicación Android

El sistema contará con una aplicación móvil desarrollada para el sistema operativo Android

utilizando Java la cual podrá ser utilizada por los usuarios que deseen hacer uso del sistema de

billetera virtual.

Entre las funciones que tendrá la aplicación móvil se tiene:

Inicio y cierre de sesión.

Administración del perfil del usuario.

Acceso al listado de billeteras virtuales que tenga el usuario.

Realización de transacciones de depósito, retiro y transferencia.

Reporte de transacción realizadas por billetera virtual.

Page 6: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 6 de 23

3.3.2 Diagramas

3.3.2.1 Diagrama de contexto

Diagrama en el que se muestran los usuarios que harán uso del sistema y la relación de dicho

sistema con otros sistemas ya existentes.

Actualmente el sistema de billetera virtual solo contará con un único tipo de usuario, los cuales

serán los que realicen las transacciones, y trabajará de forma independiente sin el uso de sistemas

externos o de terceros.

Leyenda del diagrama de contexto:

3.3.2.2 Diagrama de contenedores

Diagrama en el que se muestran los elementos que conforman el sistema de billetera virtual. El

sistema contará con los siguientes elementos:

Aplicación móvil, la cual podrá ser utilizada por el usuario desde su teléfono celular para

poder registrar transacciones, modificar su perfil o generar reportes de las transacciones

realizadas.

Web API Rest, la cual se encargará de ofrecer los servicios web a la aplicación móvil.

Base de datos, donde se almacenarán los datos para su uso en la aplicación móvil.

Page 7: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 7 de 23

Leyenda del diagrama de contenedores

Page 8: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 8 de 23

3.3.2.3 Diagrama de componentes

Contenedor “app-movil”

Diagrama en el que se muestran los componentes que se encontrarán en la aplicación móvil. Entre

estos componentes se encuentran los siguientes:

Acceso a la API

Retrofit

Login

Transferencias

Billetera

Transacciones

Usuario

Contenedor “Web API Rest”

Diagrama en el que se muestran los componentes que se encontrarán en la Web API Rest. Entre

estos componentes se encuentran los siguientes:

Auth

Transactions

Users

Wallets

Web-common

Web

Page 9: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 9 de 23

Jwt

Persistence

Page 10: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 10 de 23

Leyenda de los diagramas de componentes

Page 11: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 11 de 23

3.3.2.4 Diagrama de código

Componente “Auth”

Diagrama que muestra el componente que se encargará de implementar los servicios de inicio y cierre de sesión.

Page 12: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 12 de 23

Componente “Transactions”

Diagrama que muestra el componente que se encargará de implementar los servicios para realizar y consultar transacciones.

Page 13: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 13 de 23

Componente “Users”

Diagrama que muestra el componente que se encargará de implementar los servicios para el registro y modificación de los datos de los usuarios.

Page 14: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 14 de 23

Componente “Wallets”

Diagrama que muestra el componente que se encargará de implementar los servicios para el registro de billeteras virtuales y la consulta de

transacciones por billetera.

Page 15: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 15 de 23

Componente “Web-common”

Diagrama que muestra el componente que se encargará de implementar objetos que se utilizaran en de la Web API Rest para recibir peticiones y

devolver respuestas en un formato especifico.

Page 16: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 16 de 23

Componente “Web”

Diagrama que muestra el componente que actúa como núcleo de la Web API Rest exponiendo los servicios web y validando el token generado

durante el inicio de sesión de un usuario.

class Class Model

web

WebSecurityConfig

+ configureGlobal(AuthenticationManagerBuilder): void

+ passwordEncoder(): PasswordEncoder

+ authenticationManagerBean(): AuthenticationManager

+ configure(HttpSecurity): void

AuthenticationEntryPointImpl

+ commence(request, HttpServletResponse, AuthenticationException): void

«interface»

UserDetailsService

+ loadUserByUsername(String): void

UserDetailsServiceImpl

+ loadUserByUsername(String): void

JwtRequestFilter

+ doFilterInternal(HttpServletRequest, HttpServletResponse, FilterChain): void

jwtPersistence

«import»«import»

Page 17: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 17 de 23

Componente “Jwt”

Diagrama que muestra el componente que se utilizará en la Web API Rest para generar los tokens de autentificación cuando se realice el inicio de

sesión por parte de un usuario.

Page 18: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 18 de 23

Componente “Persistence”

Diagrama que muestra el componente que se utilizará en la Web API Rest para realizar operaciones dentro de la base de datos.

Page 19: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 19 de 23

Componente “Login”

Diagrama que muestra el componente que se encargará de implementar los métodos necesarios para hacer uso de los servicios de inicio y cierre de

sesión proporcionados por la Web API Rest.

Page 20: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 20 de 23

Componente “Transacciones”

Diagrama que muestra el componente obteniendo las transacciones que se realizó a una determinada cuenta de un usuario, estas transacciones

pueden ser de débito o crédito.

Se encuentra diseñado bajo arquitectura de MVP (Model-View-Presenter), incorporando clases e interfaces en alta cohesión y bajo acoplamiento.

Page 21: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 21 de 23

Componente “Billetera”

Diagrama que muestra el componente que se encargará de implementar las cuentas o billeteras que tiene un determinado usuario mostrando el

número de cuenta y el saldo disponible por cada cuenta o billetera.

Se encuentra diseñado bajo arquitectura de MVP (Model-View-Presenter).

Page 22: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 22 de 23

Componente “Transferencia”

Diagrama que muestra el componente que se encargará de implementar las trasferencias de saldo entre cuentas del mismo cliente y a cuentas de

otros clientes.

Se encuentra diseñado bajo arquitectura de MVP (Model-View-Presenter).

Page 23: Proyecto Final “Análisis y Diseño Basado en Componentes ......Proyecto Final – Análisis y Diseño Basado en Componentes Página 6 de 23 3.3.2 Diagramas 3.3.2.1 Diagrama de contexto

Proyecto Final – Análisis y Diseño Basado en Componentes

Página 23 de 23

4.Bibliografía Pivotal. (2014). Spring Boot Overview. 14 de noviembre del 2019, de Spring Sitio web:

https://spring.io/projects/spring-boot

Oscar Blancarte. (2018). ¿Qué es Spring Boot y su relación con los microservicios? 14 de

noviembre del 2019, de Oscar Blancarte Software Architect Sitio web:

https://www.oscarblancarteblog.com/2018/07/17/spring-boot-relacion-los-microservicios/

tutorialspoint. (2014). Android: descripción general. 14 de noviembre del 2019, de

tutorialspoint Sitio web: https://www.tutorialspoint.com/android/android_overview.htm

Vangie Beal. (2012). Android SDK. 14 de noviembre del 2019, de webopedia Sitio web:

https://www.webopedia.com/TERM/A/Android_SDK.html

Simon Brown. (2012). The C4 model for visualising software architecture. 14 de noviembre

del 2019, de Simon Brown Sitio web: https://c4model.com/