Entrega Semana 7 Arquitectura de Software
Entrega Semana 7 Arquitectura de Software
Entrega Semana 7 Arquitectura de Software
ARQUITECTURA DE SOFTWARE
PROFESOR:
Martínez Natalia.
proporciona información eficiente capaz de ser consultada en diferentes fuentes de datos a una
organización.
las tecnologías orientadas a servicios deben lograr integrar de forma ágil y segura las herramientas y
información
Para el caso de nuestro tema de investigación es necesario entender el flujo de las operaciones y
final como actualizaciones de stock en entradas y salidas de productos y servicios que pueden ser
1
TABLA DE CONTENIDO.










2
II. OBJETIVOS
OBJETIVO GENERAL
Contribuir y aportar al sector empresarial de herramientas que le permitan dar continuidad de negocio
como servicio y como desde el diseño se puede establecer un correcto plan de ejecución.
OBJETIVOS ESPECÍFICOS
3
III. PLANTEAMIENTO DEL PROBLEMA
Problema:
Se requiere saber la ubicación y la cantidad disponible de un producto para una empresa que cuenta
con un inventario de productos que se encuentran distribuidos en diversos locales a nivel nacional.
Actualmente poseen una aplicación monolítica para saber la cantidad de productos que tienen en cada
El principal problema que ellos presentan es la actualización en tiempo real del inventario. Debido a
la lentitud de la red y el bajo rendimiento de los servidores tienen permitido solo actualizar el
inventario al terminar el día. Eso significa que todos los días al iniciar el día deben hacer una copia
del inventario general y exportarlo a un Excel para allí realizar los respectivos movimientos del
producto. Una vez la jornada haya terminado deben actualizar de manera manual los registros uno
por uno entre la hoja de cálculo y el aplicativo y guardar cambios para que el inventario general quede
Solución:
Figura 1
4
Aplicación:
Se propone realizar un modelo SOA para manejar los estados y las cantidades actuales de los
El servicio 2: se encargará de cambiar el estado a un producto cuando esté activo o agotado y actualiza
la cantidad de productos.
Impacto:
Al utilizar el modelo orientado a servicios se tiene la ventaja de poder implementar cada uno de ellos
con versiones distintas de algún framework o incluso en lenguajes de programación distintos sin haya
5
La desventaja es que al ser originalmente una aplicación monolítica se debe realizar ingeniería inversa
para entender y copiar el modelo de negocio lo que conllevaría a tiempos de desarrollo bastante altos.
6
IV. JUSTIFICACION
La información se constituye como uno de los activos más valiosos para toda empresa puesto que de
ella depende la misma toma de decisiones que puede afectarla o lograr un papel fundamental en su
crecimiento económico.
Es por esto que el análisis de los patrones de diseño SOA cobra mayor relevancia en los contextos de
creación y modificación de software dado sus características, es por esto que se debe tener en cuenta
que Los patrones de diseño más utilizados se clasifican en tres categorías principales, cada patrón de
diseño individual conforma un total de 23 patrones de diseño, cada uno de ellos define la solución
para resolver un determinado problema, facilitando además la reutilización del código fuente
• Patrones creacionales
• Patrones estructurales
• Patrones de comportamiento
Figura 2
7
Mapa conceptual de los tipos de patrones de diseño
Las prácticas de desarrollo de software han tenido un gran desarrollo en los últimos tiempos.
Antes se requería completar todo el software antes de realizar pruebas, lo que suponía
encontrarse con dificultades. Para ahorrar tiempo y evitar volver a la etapa de desarrollo una
vez que este ha finalizado, se introdujo una práctica de prueba durante la fase de desarrollo.
Estas acciones se usan para identificar condiciones de error y problemas en el código que
pueden no ser evidentes en ese momento. En definitiva, los patrones de diseño aportan a estar
seguro de la validez del código, teniendo en cuenta que son metodologías validadas por
muchos profesionales del ramo y ayudan a una construcción de código y aplicaciones cada
8
1. La necesidad en este proyecto. ¿Por qué se va a hacer?
replicación, seguridad, es por esto que por medio del análisis de las aplicaciones por medio de
modificación de estas.
la operatividad de una compañía y las Pymes, por esto es necesario realizar ajustes cada vez más
certeros en la creación y análisis de software esto a la luz de patrones de diseño que permitan
las compañías.
Autenticación
Es claro así, como la integración del SOA como práctica empresarial y de desarrollo de arquitecturas
cada vez más prácticas y escalables, según la necesidad del cliente, son de gran ayuda en la creación
9
de sistemas de información es por esto que múltiples compañías multinacionales tales como
Microsoft, RedHat, entre otras han iniciado hace mucho en ofrecer servicios diseñadores de
tiempo, “Debido a los avances en la tecnología de los contenedores, los microservicios ahora son
la base para las aplicaciones nativas de la nube, es decir, los microservicios sin conexión directa
que se implementan en los contenedores de Linux y se conectan a través de las API o de una red
10
V. GLOSARIO
Análisis: Es la fase del desarrollo de software donde se realiza un enfoque hacía ela solución del
Arquitectura: Arte que se basa en proyectar y diseñar espacios para finalmente construirlos, esto se
Cronograma: herramienta que presenta un detalle de las actividades que se deben desarrollar en los
tiempos establecidos.
Diseño: Fase de desarrollo de software donde se enfoca como se ejecuta la solución del problema
tecnologías e incluso aplicaciones, que se programan con el fin de ayudar a desarrollar software que
ayuda y facilita el desarrollo de Backend y/o Fron end se diseñan a partir de patrones de
situación en concreto también tienen como finalidad facilitar el desarrollo y llevar un enfoque más
preciso.
y otras situaciones, estos nos permiten tener soluciones predefinidas para los inconvenientes
Patrones estructurales: Son patrones que definen la forma de las clases y objetos para que estos
11
SOA: Servicio orientada arquitectura
Update: El término update hace referencia a pequeños cambios, como pequeñas actualizaciones o
URL: Es el mecanismo usado por los navegadores para obtener cualquier recurso publicado en la
web.
12
VI. CRONOGRAMA
Responsable: 5 integrantes
Duración. 2 a 3 horas)
• Desarrollar justificación.
Duración (1 día)
software.
Duración: (4 a 5 horas)
13
Duración: (3 a 4 horas)
• Presentar las conclusiones y recomendaciones como resultado del trabajo de esta fase.
Duración: (1 - 3 horas)
Duración: (1dia)
Duración: (2 a 3 horas)
Duración: (3 a 4 horas)
• Crear un espacio para incluir correcciones planteadas por el tutor de la entrega pasada
Duración: (1 - 2 horas)
Responsable: 5 integrantes
Duración: (3 a 4 horas)
Duración: (3 a 4 horas)
Duración: (2 a 3 horas)
Duración: (2 a 3 horas)
Responsable: 5 integrantes
15
Sosa Pinzón Cristian Camilo – 1821020779
16
VII. DISEÑO SERVICIO REST
Teniendo en cuenta el ambiente de desarrollo con Net Core (.NET), es de resaltar que el producto
pertenece a la casa Microsoft y esta licenciada bajo licencia MIT (Licencia original del MIT,
conocemos el modelo CRUD desde la perspectiva de .NET se podría analizar bajo el siguiente
(https://docs.microsoft.com)
Figura 3
Representación Modelo vista controlador interactuando con el cliente usando protocolos HTTP
17
El diseño propuesto se realizó bajo una arquitectura de capas que permite, por medio de las interfaces,
Figura 4
18
Capa Presentación: Expone los controladores que poseen las acciones con los verbos http para el api
REST.
El método Get recibe como parámetro el id del inventario para realizar la búsqueda.
El método GetAll no recibe parámetros porque su función es listar la data que esté dentro de la base
El método Update recibe un objeto tipo DTO (Data Transfer Object) que posee el id del inventario y
Figura 5
19
Capa de Dominio: Expone la lógica de negocio de los métodos Get, GetAll y Update.
El método Get recibe como parámetro el id del inventario para realizar la búsqueda. Una vez le
responda la capa de infraestructura, construye un objeto de tipo DTO para ser enviado dentro de un
Figura 6
20
El método GetAll no recibe parámetros porque su función es listar la data que esté dentro de la base
de datos, en este caso la del inventario. Una vez le responda la capa de infraestructura, construye una
lista de objetos de tipo DTO para ser enviado dentro de un objeto response a la capa de presentación.
Figura 7
21
El método Update recibe un objeto tipo DTO (Data Transfer Object) que posee el id del inventario y
la cantidad que se desea extraer. Una vez le responda la capa de infraestructura, construye una lista
de objetos de tipo DTO para ser enviado dentro de un objeto response a la capa de presentación. Es
decir, cuando actualice un elemento el API no va a responder con el elemento recién modificado, sino
Figura 8
Código nvocación método update usando como parámetro objeto tipo DTO:
información que esta persistida en una base de datos relacional y motor de búsqueda postgressql.
22
El método Get de la capa de infraestructura posee la relación de las tablas que se encuentran en la
base de datos gracias al ORM entity framework core. En este caso son tres tablas la de inventario, la
Cuando se solicita que busque ese inventario él va a incluir la información de esas tablas y la va a
insertar en la consulta:
Figura 9
El objeto context posee la información del ORM y la cadena de conexión a la base de datos.
Las consultas se realizan utilizando LINQ que es un lenguaje integrado para consultas de tipo sql y
Figura 10
23
En la actualización el método Update recibe el objeto completo que fue modificado. Al utilizar el
EntityState.Modified garantizamos que solo modifique los valores de las propiedades que cambiaron
y no todo el objeto:
Figura 11
24
El proceso inicia cuando el controlador recibe la petición del cliente, y dependiendo del verbo HTTP
Cuando entra en alguna de esas acciones, existe una referencia de la capa de dominio que se inyecta
en el constructor del controlador para que la capa de presentación pueda acceder a los métodos
En la capa de dominio se encuentran los métodos con la lógica de negocio para el tratamiento de la
información que llega del cliente, la filtre y la valide para que sea entregada al repositorio. Una vez
el repositorio tenga la data validada realizará la petición directamente al servidor en este caso a
PostgreSQL y responderá a la capa de dominio si fue exitosa o no la petición. Una vez que llegue la
respuesta a la capa de dominio, se valida, se filtra, según las reglas del negocio, y se construye una
Funcionamiento de la API:
Dentro de la clase principal startup, net core posee una manera fácil y rápida de catalogar un API
Figura 12
Una vez se depura el API o publica se puede acceder a esta vista con su catálogo creado de manera
automática:
25
Figura 13
Al hacer click en el primer método que corresponde al GetAll para traer toda la data del inventario y
Figura 14
26
Figura 15
En el response body se puede apreciar la data extraída de la base de datos en formato json.
Cuando se requiere ingresar la cantidad para que esta se descontada del inventario utilizamos el verbo
PUT que corresponde al método Update en la lógica para actualizar esa información de la base de
datos:
Figura 16
27
Vista de botón PUT para llamar método update:
Figura 17
28
Figura 18
Figura 19
Figura 20
29
datos relacionados al id 2 después de ejecutar la actualización:
Como se puede observar en la imagen de arriba el inventario de id=2 ahora queda con una cantidad
de 5 productos.
Figura 21
30
Figura 22
El último verbo http del API permite protegerla para que solo los clientes autorizados puedan acceder
31
Figura 23
Figura 24
32
VIII. CORRECIONES
este trabajo en su primera fase, es por esto que nos permitimos listar así los ajustes realizados a esta
segunda entrega.
1. Justificación: Aunque bien, en el texto se hace énfasis en la importancia del uso de SOA
escalables y que brinden cada vez más agilidad en la implementación, es así mismo necesario
citar artículos donde se observe la necesidad y que alternativas se tienen para lograr una
basados en software Libre Linux, articulo expuesto en su página web principal para LATAM
(https://www.redhat.com/es/topics/cloud-native-apps/what-is-service-oriented-architecture),
De este modo y tomando como referencia el articulo (Reporte Técnico RT 06-16) llamado
Montevideo Uruguay del año 2006, es importante observar cómo estas metodologías son
“Link-All”
RECOMENDACIONES:
33
• De acuerdo a las correcciones realizadas al proyecto, se continúan haciendo ajustes al
bien documentados, de manera que sea posible no perder la conexión entre lo propuesto y
• Continuar reforzando nuestros conocimientos sobre SOA para poder aplicar las nociones del
34
TERCERA ENTREGA
Tabla 1
METODOLOGÍA OBSERVACIÓN
DISEÑO. problema.
escalabilidad.
definición de roles
REST. Es una tecnología mucho más flexible que transporta datos por
35
SOAP. Conocidos como Web Services, son servicios que basan su
mejor en análisis.
El enfoque establecido para ofrecer la mejor y óptima solución al problema planteado exige
que se definan principios y rutas plenamente definidas y enmarcadas, que brinden lineamientos
concisos y claros, idealmente de una manera estandarizada, con el fin de evitar confusiones y
Por este motivo, a continuación, se definirán los distintos patrones que compondrán la
36
Para empezar, es necesario reconocer la necesidad de establecer al máximo estándares con el fin de
que, por un lado, los artefactos e insumos producidos no se alejen de las mejores prácticas presentes
en la industria; y, por otro lado, minimizar las ambigüedades y confusiones que puedan darse dentro
de los integrantes del proyecto y así evitar errores por falta de claridad. Es así, que lo primero que se
requiere es definir, por medio del protocolo canonizado, un solo protocolo de interoperabilidad y
Tabla 2
Protocolo Canonizado
la solución
establecido.
37
También es necesario determinar, dentro de esa estandarización, una forma de centralizar las
Tabla 3
Centralization)
redundancia y el retrabajo.
38
exclusivamente enfocados en una única
de las entidades.
en la aplicación diseñada, se puede evidenciar que a lo largo de estas tres entregas se pudo
encontrar la manera más optima de utilizar y construir el mejor diseño a aplicar la aplicación.
• Se logran obtener los resultados de información de los procesos y procedimientos por medio
de las diferentes actualizaciones que se realizan en el control de inventarios para dar un mejor
uso a esta información, logrando recibir la información de manera oportuna y eficaz para
• Se logra comprender de manera adecuada las diferencias entre las aplicaciones abiertas y
39
4. SUSTENTACION REST API:
40
RECOMENDACIONES FINALES
cumplir con los tiempos proyectados, en miras a que se culmine satisfactoriamente el mismo
como parte fundamental de proceso de aprendizaje en el que nos encontramos los integrantes
• Es importante que, como equipo, se tengan claras las fortalezas de cada uno de los integrantes,
para de esta manera poder unificar esfuerzos sacando lo mejor de cada uno.
• Continuar reforzando nuestros conocimientos sobre SOA para poder aplicar las nociones del
41
CONCLUSIONES FINALES
• Se logro definir un proyecto de trabajo de acuerdo con los requerimientos del módulo y, a
partir de las habilidades identificadas entre los integrantes del grupo de trabajo.
• Gracias a la información obtenida, así como a los temas tratados durante el proceso de
alcanzar el planteamiento, diseño y definición del producto a entregar a futuro, con altos
estándares de calidad. Asimismo, se espera definir los pasos a seguir para mantener la calidad
esperada mediante los procesos que los consultores de calidad requieran a lo largo del
• De acuerdo con el proyecto seleccionado por el equipo como primera fase, se concluye que
• Nos parece importante resaltar de la estrategia que, antes de que existiera SOA, no se contaba
con buenas interfaces para acceder a las funcionalidades de otros ordenadores en red.
• El modelo SOA de arquitectura puede significar una forma de ordenar los sistemas de
información que posibilita la relación entre los diferentes servicios ofrecidos en la empresa.
42
• Gracias al diseño SOA se implementan mejoras en el desafío con pocos recursos, pero sin
43
BIBLIOGRÁFIA
Color Palette 1649, Gal Shir, (2015). URL https://colorhunt.co/palette/1649 Color Hunt, E-mail:
team@colorhunt.co.
Ingeniería Web y Web semántica. Modelo avanzado. Arquitectura Orientada a Servicios. (2015) URL
https://repositorio.grial.eu/bitstream/grial/381/3/Sistemas%20Inteligentes%20-%20SOA.pdf
construir-cronograma-de-entrega-proyecto/
Ingeniería y arquitectura del software, Angel Arias, Alicia Durango (2016), IT campus academy
architecture
44
Delgado, A, González, L y Piedrabuena, F. (2006.). Desarrollo de aplicaciones con enfoque SOA
Microsoft (02-04-2021) por Rick Anderson, Kirk Larkin, y Mike Wasson, Tutorial: Create a web API
api?view=aspnetcore-5.0&tabs=visual-studio
https://www.aplyca.com/es/blog/aplicaciones-monoliticas-o-
microservicios#:~:text=Actualizar%20una%20aplicaci%C3%B3n%20monol%C3%ADtica%20tien
e,identificar%20y%20solucionar%20problemas%20concretos.
https://ealmeida.blogspot.com/2019/10/aplicacion-monolitica-o-
distribuida.html#:~:text=Desventajas%20de%20la%20aplicaci%C3%B3n%20monol%C3%ADtica.
&text=enlenteciendo%20el%20desarrollo%20y%20dificultando,la%20aplicaci%C3%B3n%20fuera
%20de%20servicio.
https://www.ekon.es/importancia-inventarios-
empresa/#:~:text=El%20control%20de%20inventario%20es,los%20clientes%20a%20otros%20pro
veedores.
45
BIND. ERP. ¿Qué son los inventarios de materias primas y productos terminados? URL
https://blog.bind.com.mx/que-son-los-inventarios-de-materias-primas-y-productos-terminados
Fernández, A. (2018). 8 pasos para crear una Web Api con .Net Core. URL
https://azaharafernandezguizan.medium.com/8-pasos-para-crear-una-web-api-con-net-core-
25323708cac0#:~:text=Net%20Core%20es%20una%20versi%C3%B3n,en%20el%20propio%20fra
mework%20.
https://www2.deloitte.com/es/es/pages/technology/articles/que-es-orm.html
46