Skip to content

Instantly share code, notes, and snippets.

@Danielusuario
Last active February 29, 2024 02:20
Show Gist options
  • Save Danielusuario/b685debce4ec8539a130fe69b90d5654 to your computer and use it in GitHub Desktop.
Save Danielusuario/b685debce4ec8539a130fe69b90d5654 to your computer and use it in GitHub Desktop.

1.1.1 Entrevista, Anaisis del sistema y seleccion del Leng. de Programacion y BASE de DATOS

Entrevistador: Buenos días, Sr. Estrada. Gracias por tomarse el tiempo para hablar con nosotros sobre sus necesidades de desarrollo de software. ¿Podría proporcionarnos más detalles sobre la plataforma que necesita desarrollar para el intercambio seguro de activos digitales utilizando blockchain?

Cliente (): Buenos días. Claro, estamos buscando desarrollar una plataforma que nos permita intercambiar activos digitales de manera segura, específicamente archivos en formato XML, que son utilizados en nuestras transacciones comerciales relacionadas con la gestión de sucursales de llantas y el apartado de autos. Actualmente, nos enfrentamos a problemas de seguridad y confidencialidad al enviar estos archivos por correo electrónico o aplicaciones de mensajería como WhatsApp.

Entrevistador: Entiendo. ¿Podría explicarnos qué tipo de información contiene estos archivos XML y por qué es crucial garantizar su seguridad durante el intercambio?

Cliente: Por supuesto. Los archivos XML que manejamos contienen información sensible sobre transacciones comerciales, inventario de productos, datos de clientes, entre otros. Es vital garantizar su seguridad porque cualquier alteración o acceso no autorizado podría comprometer la integridad de nuestros datos y afectar la confianza de nuestros clientes y proveedores.

Entrevistador: ¿Cuáles son sus principales preocupaciones o desafíos con respecto al intercambio de estos archivos en la actualidad?

Cliente: Nuestro principal desafío es asegurar la confidencialidad y la integridad de los archivos durante el intercambio. Además, nos preocupa la falta de trazabilidad y control sobre quién accede y modifica estos archivos una vez que salen de nuestras manos. También queremos simplificar y agilizar el proceso de intercambio para mejorar la productividad de nuestro equipo.

Entrevistador: ¿Cuáles serían los requisitos clave que busca en esta nueva plataforma?

Cliente: Necesitamos una solución que garantice la seguridad mediante tecnologías como blockchain, que ofrezca autenticación de usuarios, cifrado de datos, control de acceso granular y un registro inmutable de todas las transacciones. También necesitamos una interfaz fácil de usar que simplifique el proceso de intercambio de archivos y que pueda integrarse fácilmente con nuestros sistemas existentes.

Entrevistador: Entiendo. Basado en sus necesidades, ¿estaría abierto a utilizar tecnologías específicas para el desarrollo de esta plataforma, como Python y blockchain?

Cliente: Sí, estamos abiertos a considerar cualquier tecnología que cumpla con nuestros requisitos de seguridad y funcionalidad. Python es un lenguaje que nuestros desarrolladores están familiarizados, y blockchain parece ser una opción prometedora para garantizar la seguridad y la trazabilidad de los archivos.

Entrevistador: Excelente. Vamos a trabajar en diseñar una solución que se adapte perfectamente a sus necesidades. Estaremos en contacto para discutir más detalles y avanzar en este proyecto.

Resumen Ejecutivo: Desarrollo de Plataforma para Intercambio Seguro de Activos Digitales con Blockchain

Grupo Tersa busca abordar desafíos significativos en la seguridad y confidencialidad de sus transacciones comerciales mediante el desarrollo de una plataforma innovadora. La necesidad principal es facilitar el intercambio seguro de archivos XML utilizados en operaciones cruciales, como la gestión de sucursales de llantas y el apartado de autos.

Problema a Resolver

  • Seguridad y Confidencialidad: Actualmente, enfrentan problemas al enviar archivos por métodos convencionales, exponiéndose a riesgos de alteración o acceso no autorizado.

Objetivos del Proyecto

  1. Desarrollar una Plataforma Segura: Crear una plataforma utilizando tecnologías blockchain y Python para garantizar la seguridad y confidencialidad en el intercambio de archivos XML.
  2. Trazabilidad y Control: Implementar un sistema que proporcione trazabilidad y control sobre el acceso y modificaciones en los archivos, asegurando un registro inmutable de transacciones.
  3. Interfaz Intuitiva: Diseñar una interfaz fácil de usar que simplifique el proceso de intercambio, mejorando la productividad del equipo.

Requisitos Clave

  • Blockchain y Python: Abierto a tecnologías específicas, como Python y blockchain, para cumplir con requisitos de seguridad y funcionalidad.

Beneficios Esperados

  • Mayor Seguridad: Garantizar la integridad y confidencialidad de archivos sensibles.
  • Eficiencia Operativa: Simplificar y agilizar el proceso de intercambio para mejorar la productividad.
  • Registro Inmutable: Utilizar blockchain para un registro transparente e inalterable de transacciones.

Próximos Pasos

  • Explorar opciones de desarrollo utilizando Python y blockchain.
  • Diseñar una solución que se alinee con los requisitos y expectativas del cliente.
  • Mantener una comunicación continua para ajustar y mejorar la plataforma según las necesidades emergentes.

Este proyecto no solo busca resolver los desafíos actuales de Grupo Tersa, sino también establecer una base tecnológica sólida para futuras innovaciones en la gestión de activos digitales.

DESARROLLO DEL SOFTWARE PARA GESTIÓN DE ACTIVOS DIGITALES CON BLOCKCHAIN

Sugerencias para la creación de una base de datos:

  1. Elegir el tipo de base de datos adecuado:

Seleccionar un framework de desarrollo:

  1. Flask (Python): Un framework ágil y adecuado para proyectos que involucren blockchain, facilitando la integración de contratos inteligentes y la interacción con la red.

Considerar la escalabilidad y la seguridad:

  1. Utilizar contratos inteligentes escalables: Para asegurar que la plataforma pueda manejar un crecimiento significativo en la cantidad de transacciones y activos.
  2. Implementar medidas de seguridad blockchain: Utilizar características como la criptografía de extremo a extremo y la gestión de claves para garantizar la seguridad de los activos digitales.

Elegir las herramientas adecuadas:

  1. Herramientas de desarrollo de contratos inteligentes: Para facilitar la creación y despliegue de los smart contracts en la red blockchain elegida.
  2. Herramientas de gestión de nodos blockchain: Para administrar y monitorear la red blockchain y garantizar su correcto funcionamiento.

Probar y optimizar la plataforma blockchain:

  1. Realizar pruebas exhaustivas de los smart contracts: Asegurarse de que los contratos inteligentes funcionen según lo previsto y sean seguros.
  2. Optimizar la eficiencia de las transacciones: Mejorar la velocidad y eficiencia de la red blockchain seleccionada.

Recursos adicionales:

PATRONES DE DISEÑO

Justificación de las Clases del Sistema:

  • Servicio de Gestión de Activos Digitales: Esta clase define la interfaz para el servicio de gestión de activos digitales con blockchain, incluyendo funcionalidades para la creación, modificación, eliminación y consulta de activos digitales.
  • Gestor de Almacenamiento Blockchain: Esta clase se encarga de gestionar el almacenamiento descentralizado de los activos digitales en la blockchain, interactuando con contratos inteligentes y garantizando la integridad y seguridad de la información.
  • Generador de Archivos XML: Esta clase se encarga de generar archivos XML que contienen información sobre los activos digitales, siguiendo estándares definidos para su interoperabilidad y transferencia de datos.
  • Planificador de Tareas: Esta clase se encarga de programar tareas relacionadas con la gestión de activos digitales, como la programación de actualizaciones de información o la generación de informes automáticos.
  • Notificador: Esta clase se encarga de enviar notificaciones al usuario sobre eventos importantes en la gestión de activos digitales, como la confirmación de transacciones o cambios en la información de un activo.

Lenguaje de Programación Recomendado por el GPT:

  • Python: Se selecciona Python como lenguaje de programación principal debido a su versatilidad, legibilidad de código y amplio soporte en la comunidad de blockchain. Frameworks como Web3.py para Ethereum o PyTezos para Tezos facilitan la interacción con contratos inteligentes.
  • Java: También se recomienda Java por su robustez y escalabilidad. Bibliotecas como Web3j para Ethereum o JLibra para Libra (ahora Diem) permiten integrarse con blockchain desde aplicaciones Java.

Lista de Patrones de Diseño:

  • Singleton: Se utiliza para garantizar la existencia de una única instancia del servicio de gestión de activos digitales.
  • Factory: Se utiliza para crear diferentes tipos de objetos de activos digitales, adaptándose a las características específicas de cada uno.
  • Strategy: Se utiliza para definir estrategias de almacenamiento y gestión de activos digitales, como la elección de la blockchain específica o la forma de interactuar con contratos inteligentes.
  • Observer: Se utiliza para notificar a los usuarios sobre eventos importantes en la gestión de activos digitales, como confirmaciones de transacciones o cambios en la información.
  • Command: Se utiliza para encapsular las acciones de gestión de activos digitales, como la creación, modificación o eliminación de activos, en objetos independientes.
  • Memento: Se utiliza para guardar y restaurar el estado del servicio de gestión de activos digitales, permitiendo la reversión de cambios si es necesario.

Ejemplos de Codigo de clases:

Estos códigos son implementaciones de clases en Python que representan los patrones de diseño mencionados anteriormente. hay una breve descripción de cada uno de ellos al inicio:

1. Singleton - AssetManagementService:

Singleton - AssetManagementService: Este es un patrón Singleton. La clase AssetManagementService garantiza que solo haya una instancia de sí misma en el programa.

classDiagram
  class AssetManagementService {
    - static _instance: AssetManagementService
    + __new__()
  }
  
  AssetManagementService --|> Singleton

image

2. Factory - AssetFactory:

Factory - AssetFactory: Este es un patrón Factory. La clase AssetFactory se utiliza para crear instancias de diferentes tipos de activos (en este caso, CryptoCurrencyAsset y RealEstateAsset).

classDiagram
  class AssetFactory {
    + create_asset(asset_type)
  }
  
  class CryptoCurrencyAsset
  class RealEstateAsset
  
  AssetFactory --|> Factory
  CryptoCurrencyAsset --|> Asset
  RealEstateAsset --|> Asset

image

3. Strategy - BlockchainStrategy:

Strategy - BlockchainStrategy: Este es un patrón Strategy. Las clases BlockchainStrategy, EthereumStrategy, TezosStrategy y AssetManagementContext implementan este patrón. Permite definir una familia de algoritmos, encapsular cada uno y hacer que sean intercambiables.


classDiagram
  class BlockchainStrategy {
    + execute()
  }

  class EthereumStrategy {
    + execute()
  }

  class TezosStrategy {
    + execute()
  }

  class AssetManagementContext {
    - _blockchain_strategy: BlockchainStrategy
    + execute_strategy()
  }

  BlockchainStrategy <|-- EthereumStrategy
  BlockchainStrategy <|-- TezosStrategy
  AssetManagementContext --|> Context

image

4. Observer - AssetObserver, UserNotifier, AssetSubject:

Observer - AssetObserver, UserNotifier, AssetSubject: Este es un patrón Observer. Las clases AssetObserver, UserNotifier y AssetSubject implementan este patrón. Proporciona un mecanismo de suscripción en el que múltiples objetos (observadores) pueden escuchar y responder a los eventos o cambios en otro objeto (sujeto).


classDiagram
  class AssetObserver {
    + update()
  }

  class UserNotifier {
    + update()
  }

  class AssetSubject {
    - _observers: AssetObserver[]
    + add_observer(observer)
    + remove_observer(observer)
    + notify_observers()
  }

  AssetObserver --|> Observer
  UserNotifier --|> AssetObserver
  AssetSubject --|> Subject

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment