Decisiones de Diseño - Pharsat/Granny GitHub Wiki

Usar el lector de código de barras phonegap-plugin-barcodescanner

Problema

Granny requiere del registro de un código único de producto con el que vienen todos los productos registrados en Colombia para almacenar la información en el sistema, este código se debe escanear a través de un lector de código de barras ya que resulta engorroso que el usuario lo digite de manera manual, el scanner digital del código debe aportar a la experiencia de usuario.

Restricciones

  • El hardware se debe limitar solo al disponible por el dispositivo móvil.
  • La funcionalidad debe operar para los sistemas operativos Android & IOs

Supuestos

  • Todos los dispositivos modernos incluyen una cámara funcional.
  • El usuario asimila que para escanear el código debe usar su cámara web.
  • Las condiciones inherentes a la aplicación tales como el estado de iluminación o la calidad del código de barras no son relevantes.

Alternativas consideradas

Decisión

Se decide usar phonegap-plugin-barcodescanner proveído por el framework Ionic, ya que puede corrrer en las plataformas requeridas con un muy buen margen de compactibilidad entre las versiones de los distintos sistemas operativos. Ademas de ser el recomendado por la comunidad

Usar la autenticación de google para autenticar a un usuario

Problema

Cuando un usuario quiere registrar un producto con un nuevo valor este se debe autenticar en la herramienta de tal manera que quede vinculado al registro ingresado, esto para satisfacer los atributos de seguridad y fidelidad de la información.

Restricciones

  • No se desea crear una funcionalidad propia de registro.
  • La autenticación debe operar para los sistemas operativos Android & iOS

Supuestos

  • El usuario no desea invertir su tiempo en hacer un registro para usar la plataforma.
  • El usuario posee una cuenta de google verificada.
  • La plataforma google es más usada por dispositivos basados en android
  • La plataforma google tambien esta disponible en sistemas operativos iOS
  • Los usuarios tienen acceso a internet

Alternativas consideradas

  • Autenticación de Facebook
  • Autenticación de Microsoft

Decisión

Se decide usar la autenticación de google debido a su facilidad de implementación y que es más popular en nuestro medio colombiano ya que los celulares más usados están basados en tecnologías Android quienes obligan a la vinculación de una cuenta google existente.

Usar la tecnología de mapas de google

Problema

Para registrar la información de productos en Granny el usuario necesita especificar la dirección de una ubicación específica para que allí sea relacionado el producto encontrado. A su vez se necesita usar esta dirección para poder encontrar productos en un lugar especifico.

Restricciones

  • El sistema debe ser independiente del GPS del movil, no es necesario.
  • Las direcciones deben existir en el mundo real, se debe tener garantia que un determinado lugar exista.
  • La autenticación debe operar para los sistemas operativos Android & iOS

Supuestos

  • Todos los productos se venden en lugares localizables en los mapas
  • Los usuarios tienen acceso a internet

Alternativas consideradas

  • Mapas de bing
  • Apple maps

Decisión

Se decide usar la tecnología de mapas de google para identificarlas direcciones obligando al usuario a seleccionar de un combo de búsqueda la ubicación en la que desea registrar el hallazgo de su producto. Esta tecnologia esta disponible para los sistemas operativos requeridos.

Usar el sistema de autenticación basado en JwtBearer

Problema

Para implementar el aspecto de seguridad transversal entre los API y garantizar que los API no estén fuertemente acoplados se necesita implementar un sistema de autenticación local que no relacione los API y no los obligue a comunicarse.

Restricciones

  • El sistema debe ser seguro, no debe permitir consumos externos no autorizados.
  • Las API no deben comunicarse entre ellas para garantizar este aspecto, asegurando su bajo acoplamiento.
  • El sistema de autenticación debe ser ligero, de ser posible no implicar el consumo de repositorios estáticos.

Supuestos

  • El sistema sabe que un usuario no es un robot cuando implementa la autenticación de Google previo al registro de un nuevo usuario.
  • Una vez autenticado el sistema no debe depender del sistema de autenticación de Google.
  • Los usuarios tienen una cuenta de Google válida.
  • La autenticación interna es transparente para el usuario.

Alternativas consideradas

  • JwtBearer.
  • Autenticación por token.

Decisión

Se decide usar la tecnología de autenticación de JwtBearer basado en la generación de token cifrados ya que implementa todas las necesidades y restricciones requeridas, permite generar un sistema de autenticación transversal entre API que conocen el mismo Secret que es un parámetro de configuración que se implementa en cada API y permite reconocer cada petición y decidir si es una petición segura y autorizada o no.