Post on 12-Nov-2020
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
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
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.
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.
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.
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.
Proyecto Final – Análisis y Diseño Basado en Componentes
Página 7 de 23
Leyenda del diagrama de contenedores
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
Proyecto Final – Análisis y Diseño Basado en Componentes
Página 9 de 23
Jwt
Persistence
Proyecto Final – Análisis y Diseño Basado en Componentes
Página 10 de 23
Leyenda de los diagramas de componentes
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.
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.
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.
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.
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.
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»
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.
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.
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.
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.
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).
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).
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/