Skip to content

Instantly share code, notes, and snippets.

@SergioEstrada14
Last active February 27, 2024 23:00
Show Gist options
  • Save SergioEstrada14/44f73879095979da2269214cd0b8adec to your computer and use it in GitHub Desktop.
Save SergioEstrada14/44f73879095979da2269214cd0b8adec to your computer and use it in GitHub Desktop.

1.2 LIstar los patrones de diseño de su sistema, use GTP para detectar las clases.

Pratrones de diseño

Patrones de Diseño Recomendados

  1. Patrón de Comando

    • Encapsula solicitudes de acción en objetos, permitiendo operaciones y deshacer acciones.
  2. Patrón Observer

    • Notifica y actualiza automáticamente a varios objetos sobre los cambios de estado en otro objeto.
  3. Patrón Strategy

    • Define una familia de algoritmos, los encapsula y los hace intercambiables.
  4. Patrón State

    • Gestiona el estado del sistema de control por gestos, permitiendo cambiar su comportamiento según el estado interno.
  5. Patrón Factory Method

    • Proporciona una interfaz para crear objetos en una superclase, pero permite que las subclases alteren el tipo de objetos que se crearán.
  6. Patrón Abstract Factory

    • Ofrece una interfaz para crear familias de objetos relacionados o dependientes sin especificar sus clases concretas.
  7. Patrón Singleton

    • Asegura que una clase tenga solo una instancia y proporciona un punto de acceso global a ella.
  8. Patrón Prototype

    • Permite copiar objetos existentes sin hacer que el código dependa de sus clases.
  9. Patrón Builder

    • Separa la construcción de un objeto complejo de su representación.
  10. Patrón Facade

    • Proporciona una interfaz unificada a un conjunto de interfaces en un subsistema.

Patrón de Comando

Razones de la Elección:

  • Encapsulamiento de Solicitudes como Objetos: Este patrón permite encapsular acciones o solicitudes a realizar en objetos de comando. Esto es particularmente útil para un sistema de control por gestos, donde diferentes gestos pueden estar asociados con diferentes acciones (como encender luces, ajustar termostatos, etc.). Cada gesto puede activar un comando específico que ejecuta la acción correspondiente.

  • Desacoplamiento: El patrón de comando desacopla el componente que invoca la acción (en este caso, el detector de gestos) de los componentes que realizan la acción (los dispositivos domóticos). Esto facilita la expansión o modificación del sistema sin requerir cambios significativos en el código existente.

  • Historial de Comandos: Permite implementar de manera sencilla la funcionalidad para deshacer o rehacer acciones, algo que puede ser valioso en un entorno domótico para revertir comandos accidentalmente activados.

  • Flexibilidad en la Asignación de Comandos: Facilita la configuración y personalización de qué gestos activan qué comandos, lo que puede ser ajustado según las preferencias del usuario o necesidades específicas sin alterar el núcleo del sistema de detección de gestos o el manejo de dispositivos.

Implementación:

En la práctica, el patrón de comando se implementaría creando una clase abstracta o interfaz Comando con un método ejecutar() (y potencialmente deshacer()). Cada acción concreta (como encender una luz) se implementaría en una clase que extienda Comando, sobrescribiendo el método ejecutar() para llevar a cabo la acción específica. El sistema de detección de gestos tendría una manera de mapear gestos detectados a objetos de comando específicos y ejecutar el método ejecutar() correspondiente.

Lenguajes de programación

Python

Ventajas:

  • Rapidez en el Desarrollo: Python es conocido por su sintaxis clara y legible, lo que facilita la escritura rápida de código. Esto es particularmente útil en las etapas iniciales del proyecto, donde se prototipan ideas y se realizan pruebas conceptuales.
  • Bibliotecas para Visión Artificial y Aprendizaje Automático: Python tiene una extensa colección de bibliotecas como OpenCV, TensorFlow y Keras, que son esenciales para el desarrollo de algoritmos de detección e interpretación de gestos.
  • Comunidad Amplia: La vasta comunidad de desarrolladores de Python significa que hay una gran cantidad de recursos, tutoriales y soporte disponible, lo que puede ser invaluable para resolver problemas y aprender nuevas técnicas.

Desventajas:

  • Rendimiento: Aunque Python es suficientemente rápido para muchos casos de uso, su naturaleza interpretada puede limitar el rendimiento en tareas de procesamiento en tiempo real comparado con lenguajes compilados.

C++

Ventajas

  • Alto Rendimiento y Eficiencia: C++ es un lenguaje compilado que ofrece un control fino sobre los recursos del sistema y la gestión de la memoria, resultando en un rendimiento superior para el procesamiento en tiempo real de gestos, crucial para una respuesta rápida en aplicaciones domóticas.
  • Interacción Directa con el Hardware: C++ permite un control detallado sobre el hardware, lo que es útil para interactuar directamente con cámaras, sensores y otros dispositivos del sistema domótico.
  • Portabilidad: C++ es ampliamente soportado en diferentes plataformas y sistemas operativos, lo que permite desarrollar aplicaciones que pueden ser desplegadas en una variedad de entornos domóticos.

Desventajas

  • Curva de Aprendizaje: C++ puede ser más complejo de aprender y utilizar debido a su sintaxis y la necesidad de gestionar manualmente aspectos como la memoria.
  • Tiempo de Desarrollo: El desarrollo en C++ puede ser más lento comparado con Python, especialmente para prototipado y pruebas iniciales debido a la complejidad del lenguaje y la necesidad de compilación.

Diagrama

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

Problematica

Entrevista con cliente Felipe Calderon de la Empresa TECHome una empresa QUE DESARROLA SOFTWARE PARA CUALQUIER PERSONA, que requiere Sistema de Control por Gestos para Aplicaciones Domóticas con las necesidades actuales del cliente son: Implementar un sistema de control por gestos para mejorar la interacción con dispositivos domóticos. Cliente requiere una solucion para atender la productividad de el proyecto.

Entrevista con Felipe Calderón de TECHome

Entrevistador: Buenos días, Sr. Calderón. Gracias por aceptar esta entrevista.

Felipe Calderón: Buenos días. Un placer estar aquí.

Entrevistador: Me gustaría comenzar hablando sobre su empresa, TECHome. ¿Podría contarme un poco sobre ella?

Felipe Calderón: TECHome es una empresa que desarrolla software para cualquier persona. Nuestro objetivo es hacer que la tecnología sea más accesible y fácil de usar para todos. Ofrecemos una amplia gama de productos, desde software de productividad hasta aplicaciones de entretenimiento.

Entrevistador: Me han informado de que están trabajando en un nuevo sistema de control por gestos para aplicaciones domóticas. ¿Podría hablarnos un poco más sobre este proyecto?

Felipe Calderón: Sí, por supuesto. Estamos muy emocionados con este proyecto. Creemos que el control por gestos es una forma natural e intuitiva de interactuar con los dispositivos domóticos. Nuestro sistema permitirá a los usuarios controlar sus dispositivos con simples gestos de la mano, sin necesidad de tocar ningún botón o pantalla.

Entrevistador: ¿Cuáles son las necesidades actuales del cliente para este proyecto?

Felipe Calderón: El cliente necesita un sistema de control por gestos que sea fácil de usar, preciso y fiable. También necesitan un sistema que se pueda integrar con sus dispositivos domóticos existentes.

Entrevistador: Con respecto al sistema de control por gestos, ¿cuáles son los objetivos específicos que busca alcanzar?

Felipe Calderón: Con este sistema, buscamos:

  • Mejorar la experiencia del usuario: Hacer que la interacción con los dispositivos domóticos sea más natural e intuitiva.
  • Aumentar la accesibilidad: Permitir que personas con discapacidades puedan controlar sus dispositivos domóticos con facilidad.
  • Incrementar la eficiencia: Agilizar el control de los dispositivos domóticos con menos esfuerzo.
  • Agregar un toque de innovación: Ofrecer una forma novedosa y futurista de controlar el hogar.

Entrevistador: ¿Qué dispositivos y sistemas domóticos específicos desea controlar mediante gestos?

Felipe Calderón: En principio, nos gustaría controlar los siguientes dispositivos:

  • Iluminación: Encender, apagar, atenuar y cambiar el color de las luces.
  • Climatización: Ajustar la temperatura, encender y apagar el aire acondicionado/calefacción.
  • Seguridad: Activar y desactivar alarmas, abrir y cerrar puertas.
  • Entretenimiento: Controlar la reproducción de música, videos y juegos.
  • Electrodomésticos: Encender y apagar el televisor, la cafetera, etc.

Entrevistador: ¿Cuáles son las características clave que espera ver en el sistema de control por gestos?

Felipe Calderón: Algunas características clave que esperamos son:

  • Reconocimiento preciso de gestos: El sistema debe ser capaz de identificar correctamente los gestos realizados por el usuario.
  • Compatibilidad con múltiples gestos: Permitir al usuario realizar una variedad de gestos para controlar diferentes dispositivos y funciones.
  • Personalización: Permitir al usuario personalizar los gestos a su gusto.
  • Facilidad de uso: El sistema debe ser intuitivo y fácil de aprender para usuarios de todas las edades y habilidades.
  • Integración con otros sistemas: El sistema debe ser compatible con los dispositivos domóticos existentes y otras plataformas como Google Home, Alexa, etc.

Entrevistador: ¿Tiene preferencia por algún tipo específico de tecnología de detección de gestos?

Felipe Calderón: No tenemos una preferencia específica en este momento. Estamos abiertos a explorar diferentes tecnologías como:

  • Cámaras: Utilizar cámaras para capturar la imagen del usuario y sus movimientos.
  • Sensores de movimiento: Detectar el movimiento de las manos del usuario mediante sensores.
  • Tecnología de radar: Utilizar ondas de radar para detectar la posición y el movimiento de las manos del usuario.

Entrevistador: ¿Es necesario que el sistema de control por gestos sea compatible con plataformas específicas?

Felipe Calderón: Sí, el sistema debe ser compatible con plataformas como:

  • iOS: Permitir a los usuarios controlar sus dispositivos domóticos desde sus iPhones y iPads.
  • Android: Permitir a los usuarios controlar sus dispositivos domóticos desde sus teléfonos inteligentes y tabletas Android.
  • Dispositivos domóticos populares: Ser compatible con dispositivos domóticos populares como Amazon Echo, Google Home, etc.

Entrevistador: ¿Hay algún requisito de seguridad particular que debamos tener en cuenta al implementar el sistema de control por gestos?

Felipe Calderón: Sí, la seguridad es una prioridad. El sistema debe:

  • Ser resistente a ataques: Protegerse contra el acceso no autorizado y la manipulación.
  • Respetar la privacidad del usuario: No recopilar información sensible sin el consentimiento del usuario.
  • Contar con medidas de cifrado: Garantizar la seguridad de la comunicación entre el sistema de control por gestos y los dispositivos domóticos.

Entrevistador: ¿Cuántos usuarios diferentes utilizarán el sistema de control por gestos y cómo se espera que interactúen simultáneamente?

Felipe Calderón: Esperamos que el sistema pueda manejar múltiples usuarios simultáneamente, ya que en un hogar pueden convivir varias personas. La interacción simultánea sería común, por ejemplo, en la sala de estar donde varios miembros de la familia puedan controlar los dispositivos al mismo tiempo.

Entrevistador: ¿Qué tan intuitivo debería ser el sistema de control por gestos para los usuarios finales?

Felipe Calderón: La intuitividad es clave para nosotros. Queremos que cualquier persona, independientemente de su experiencia tecnológica, pueda utilizar el sistema sin dificultad. La curva de aprendizaje debe ser mínima, y la interacción con gestos debe sentirse natural y fácil de recordar.

Entrevistador: ¿Desea que el sistema sea capaz de reconocer gestos personalizados o predefinidos?

Felipe Calderón: Sí, nos gustaría que el sistema sea flexible y permita a los usuarios definir sus propios gestos personalizados según

Resumen Ejecutivo

Informe de Cliente: TECHome

Fecha: 2024-02-22

Objetivo

Desarrollar un sistema de control por gestos para aplicaciones domóticas que sea fácil de usar, preciso, fiable y compatible con los dispositivos domóticos existentes.

Necesidades del Cliente

  1. Mejorar la experiencia del usuario con la interacción domótica.
  2. Aumentar la accesibilidad para usuarios con discapacidades.
  3. Incrementar la eficiencia del control domótico.
  4. Agregar un toque de innovación al hogar.

Dispositivos y Sistemas a Controlar

  • Iluminación
  • Climatización
  • Seguridad
  • Entretenimiento
  • Electrodomésticos

Características Clave del Sistema

  1. Reconocimiento preciso de gestos.
  2. Compatibilidad con múltiples gestos.
  3. Personalización de gestos.
  4. Facilidad de uso.
  5. Integración con otros sistemas.

Tecnologías de Detección de Gestos

  • Cámaras
  • Sensores de movimiento
  • Tecnología de radar

Plataformas Compatibles

  • iOS
  • Android
  • Dispositivos domóticos populares

Requisitos de Seguridad

  1. Resistencia a ataques.
  2. Respeto a la privacidad del usuario.

Número de Usuarios

Múltiples usuarios en un hogar.

Interacción Simultánea

Se espera que varios usuarios interactúen con el sistema al mismo tiempo.

Próximos Pasos

  1. Definir la arquitectura del sistema.
  2. Seleccionar la tecnología de detección de gestos.
  3. Desarrollar el software de reconocimiento de gestos.
  4. Integrar el sistema con los dispositivos domóticos existentes.
  5. Probar y evaluar el sistema.
  6. Implementar el sistema en el mercado.

Beneficios del Sistema

  1. Mayor comodidad y facilidad de uso para la interacción domótica.
  2. Mayor accesibilidad para personas con discapacidades.
  3. Mayor eficiencia en el control domótico.
  4. Experiencia domótica más innovadora.

Oportunidades

  1. Expandir la compatibilidad del sistema a más dispositivos y plataformas.
  2. Desarrollar nuevas funciones y capacidades para el sistema.
  3. Comercializar el sistema a un público amplio.

Riesgos

  1. La tecnología de detección de gestos puede ser imprecisa.
  2. El sistema puede ser vulnerable a ataques.
  3. El sistema puede ser demasiado complejo para algunos usuarios.

Conclusiones

El desarrollo de un sistema de control por gestos para aplicaciones domóticas tiene el potencial de mejorar significativamente la experiencia del usuario y la accesibilidad. El sistema debe ser diseñado para ser preciso, fiable, fácil de usar y compatible con los dispositivos domóticos existentes. Con una planificación y ejecución cuidadosas, este proyecto puede ser un éxito rotundo.

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