REPORTE CRUD
Tarea 1
Ingeniería en Sistemas de Información
Practica de desarrollo de sistemas 1
Espinoza Rivera Saul Filiberto
Grupo 01
03/11/2024
Introducción
Se busca generar un sistema para una gestión de inventario de un almacén de
productos, este debe facilitar el crear, eliminar, editar y leer los productos, esto,
enlistándolos y mostrándolos al usuario de una forma en la cual el usuario pueda
identificar todos y cada uno de los productos que este haya ingresado, con su
descripción, precio y nombre. También debe registrar las entradas que se harán al
almacén. En el apartado de editar: el usuario podrá modificar: nombre, precio y
descripción y si es necesario modificar los niveles de stock del producto y por eliminar
deberá de poder eliminar productos que se deseen quitar del stock. Este software,
además, deberá de mejorar la eficiencia operativa de las transacciones a realizar
(CRUD) y ayudar facilitando la toma de decisiones que se puedan generar al consultar
algún producto, y sea necesario cambiar información o agregar productos nuevos. A su
vez, se deberá de tener en cuenta el Stock de los productos, llevando un control de
estos.
Marco Teórico
.NET core
Yo utilicé .NET core como plataforma de desarrollo, es una tecnología de código fuente
abierto, multiplataforma y brinda un alto rendimiento para la creación de todo tipo de
aplicaciones. Este al no ser de dependiente a Windows y ser modular, utilizando su paquete
de NuGet, nos brinda mayor flexibilidad y rendimiento al desarrollar aplicaciones. Todo esto
aunado a que se utilizaron diversas tecnologías que funcionan muy bien con esta plataforma,
ayudo a que el proyecto se ejecutara y desarrollara de manera eficiente y eficaz.
Dependencias utilizadas:
1. CommunityToolkit.Mvvm: nos ayuda a organizar el código usando MVVM.
2. Microsoft.Extensions.DependencyInjection: enfocado a gestionar las
dependencias de la aplicación que estamos desarrollando, en este caso el
almacen.
3. WPF-UI: Nos permite a mejorar visualmente nuestra interfaz, es una
personalización más agradable a la vista.
4. Microsoft.NETCore.App: es un Framework diseñado para ser más modular y
flexible, de lo que hablamos al principio.
5. Microsoft.WindowsDesktop.App.WPF: Este framework va de la mano con
WPF, nos brinda las herramientas y clases necesarias para crear nuestra
aplicación de escritorio.
Estructura de Almacen-Unison-App
1. Resource: aquí agregamos una imagen que es parte de la vista de inicio.
Gracias a WinUi3 se logro agregar muchas de las funcionalidades de una
forma sencilla.
2. Servicios: Se puede ver lógica de la aplicación, este es utilizado para gestionar
la navegación entre vistos.
3. ViewModel: Como se observa en la imagen contiene los ViewModels, sus
clases con datos y los comandos que nos sirven para obtener una vista.
4. Views: Este contiene las vistas de la interfaz con las que el usuario va a poder
interactuar Aquí los ejemplos:
C
Conclusión de App:
La principal razón por la cual fue desarrollado es para lograr darle una interfaz grafica
intuitiva gracias al patrón de arquitectura MVVM, facilita el poder separar
responsabilidades entre vistas y dar un código más limpio. Utilizando diversas
dependencias y bibliotecas se logró una mejor actuación y rendimiento así como lo
fueron DependencyInjection la cual ayudo a gestionar la resolución y la fácil creación
de las vistas y la aplicación WPF nos permitió personalizar y lograr personalizar la
experiencia visual hacia el usuario y lograr crear aplicaciones de escritorio.
Dependencias utilizadas:
1. Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.10: importante para poder
trabajar con la base de datos e interactuamos con ella de una forma mas
orientada a objetos.
2. Microsoft.EntityFrameworkCore.Sqlite/8.0.10: es un complemento del de
arriba nos habilita otras funcionalidades.
3. Esta ya es la implementación de la base de datos, esta al ser SQLite es una
versión ligera lo cual nos es ideal para nuestra aplicación de escritorio.
Estas dependencias nos brindan una capacidad para lograr entender que es lo que se
logra utilizar en nuestra aplicación.
Por ejemplo la base de datos buscaría conectarse con Producto para lograr realizar
las acciones correspondientes así como lo son CRUD. SQLite aquí entraría como el
almacén de datos de nuestra aplicación, almacenando la información de los
productos y lograr invocarla en caso de ser necesario.
Estructura de Unison-Almacen-Core
1. Base de datos: Este es donde tenemos las clases y todo el contexto de la base
datos, esto incluye: Asignar nombre a la base de datos, crear la tabla llamada
“Productos” y la configuración de la base de datos (OnConfiguring): crear el
directorio, asegurarnos de que se haya creado la BD, asignarle nombre y
terminar la configuración, todo esto se realizo de una forma muy fácil gracias a
las dependencias utilizadas de SQL por parte de .NET core.
2. Contratos: estas son las interfaces para repositorios y servicios, estableciendo
como se relacionan. IRepositorio se relaciona con los métodos que puede
realizar un producto, para nuestro proyecto: agregar, listar, obtener por ID,
modificar y eliminar.
Y ¿a qué nos referimos con esto? Que cualquier clase que quiera trabajar con
productos debe de proporcionar alguno de los métodos mencionados. Esto
nos permite aislar las unidades de código y probarlas de forma independiente.
3. Modelos: Aquí viene la clase productos, es su representación, esta es la que
manda a llamar la base de datos cuando se busca interactuar y obtendrá la
información o bien solicitara.
4. Repositorios: implementa las interfaces que se realizaron en contratos y a su
vez proporciona la lógica para ingresar a la base de datos. En otras palabras es
el responsable de que podamos realizar las operaciones CRUD sobre la base
de datos.
5. Servicios: No me quedo del todo claro esta parte, pero a lo que entendí es la
lógica de la aplicación y ayuda a como se van a coordinar los servicios con
múltiples repositorios, haciendo referencia a la carpeta que tenemos arriba de
“repositorios”.
Conclusión de Core:
Por lo que se logro ver a lo largo del desarrollo, este apartado nos permitió gestionar
de manera eficiente la información de productos, esto gracias a la ventaja que nos
otorgo el utilizar .NET y la base de datos SQLite, se definieron todos y cada uno de los
directorios y clases con el fin de poder aprovechar de una manera modular, lógica,
coordinada y lograr toda una implementación, para el buen funcionamiento de la app.
Unison-Almacen-Test
Dependencias utilizadas:
1. coverlet.collector: Se utiliza para recopilar cobertura de código
durante las pruebas.
2. Microsoft.NET.Test.Sdk: Es el SDK de pruebas de .NET, esencial para
ejecutar pruebas unitarias.
3. NUnit: Es un framework de pruebas unitarias muy popular.
4. NUnit3TestAdapter: Adaptador para ejecutar pruebas NUnit con otros
frameworks de pruebas.
Estructura:
Este proyecto va mas orientado al testing, el probar la aplicación relacionada con la
base de datos, siendo mas concretos sobre la tabla productos.
El primer directorio llamado BaseDeDatos contiene los metodos para configurar y
preparar nuestra base de datos para las pruebas y Modelos contiene las clases que
representarian los datos para las pruebas en productos lo relacionado al CRUD.
Conclusiones de testing: Se logro observar que es una parte muy importante y a tener
en cuenta al desarrollar un proyecto, esto, porque nos brinda un área segura donde
probar el código, para este caso de la base de datos, así podemos prevenir posibles
problemas que se pueden mostrar a futuro.
Diagramas
Unison Almacen-Core
Unison Almacen-App
Conclusión General:
Se logro presentar una solución adecuada para la gestión de productos, con la ayuda
de una base de datos y una interfaz de usuario intuitiva y fácil de usar. Esto, a través
de una arquitectura bien definida y utilizando herramientas modernas se logró crear
una aplicación con arquitectura estable y enfocada en pruebas para brindarle al
usuario una experiencia saludable.
Bibliografia
• OpenWebinars. (2023). ¿Qué es .NET Core? Recuperado de
https://openwebinars.net/blog/que-es-net-core/
• NuGet. (2023). NuGet. Recuperado de https://www.nuget.org/packages