Skip to content

lhpaul/iBuilding

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

Proyecto iBuilding

1. Requisitos funcionales

Requisito Descripción
R01 Los dispositivos deben alojar un servidor Web.
R02 El sistema debe permitir comunicarse con un dispositivo en específico mediante un identificador único.
R03 El sistema debe permitir controlar los dispositivos mediante una interfaz web.
R04 Cada dispositivo debe poder responder con una lista que contenga las URL hacia sus funcionalidades.
R05 Los dispositivos deben alojar un servidor Web.
R06 Deben existir roles de usuarios: visitante, administrador y supervisor.
R07 Todos usuarios deben poder ver la agenda de la sala mediante el dispositivo panel o algún cliente Web conectado a Internet.
R08 Los usuarios con rol de administrador y/o supervisor deben poder configurar la agenda de la sala mediante el dispositivo panel o algún cliente Web conectado a Internet.
R09 Los usuarios con rol de supervisor deben poder configurar los dispositivos mediante el dispositivo panel o algún cliente Web conectado a Internet.
R10 El sistema debe permitir configurar y administrar los permisos de usuario.
R11 El sistema debe permitir configurar y administrar la BD.
R12 El sistema debe permitir la configuracion y administracion de la simulación de dispositivos.
R13 El sistema debe permitir monitoreo y logging de su funcionamiento.

2.0 Requisitos no funcionales

Requisito Descripción Tipo
RN1 El sistema debe poder soportar al menos 200 dispositivos. Escalabilidad Cantidad estimada por el cliente, de dispositivos en el sistema.
RN2 El sistema debe poder extenderse a 23 pisos. Escalabilidad Escalabilidad esperada por el cliente.
RN3 Todos los dispositivos se comunican con el servidor a través de un misma interfaz, para permitir integrar nuevos dispositivos. Flexibilidad Debe ser fácil lograr incorporar un dispositivo nuevo al sistema.
RN4 El servidor se comunica con los dispositivos utilizando una API REST. Flexibilidad y Escalabilidad Permite incorporar dispositivos fácilmente con operaciones estándar y recursos identificados.
RN5 El sistema posee una lista de dispositivos conocidos, con los cuales intercambia información. Testeabilidad Se considera como porcentaje razonable para el desarrollo del sistema.
RN6 El sistema posee una lista de dispositivos conocidos, con los cuales intercambia información. Seguridad Dispositivos desconocidos no deben participar en el sistema.
RN7 El sistema debe exigir autenticación de usuarios, con protocolo de seguridad SSL. Seguridad Se debe asegurar que los dispositivos no sean modificados por usuarios desconocidos.
RN8 El sistema debe permitir ser configurado por el administrador. Configurabilidad Es necesario para poder configurar el sistema y probar
RN9 El tiempo de recuperación no debe ser mayor a 2 horas. Disponibilidad Se considera como tiempo razonable para no atentar contra los usuarios, ni el funcionamiento de los demás dispositivos.
RN10 El sistema debe permitir mantenibilidad por parte de usuarios administradores, permitiendo agregar o modificar datos de configuración al sistema. Mantenibilidad Necesario para los cambio futuros del sistema.

2.1 Árbol de Utilidad

alt_text

3. Diagrama de componentes

alt text

Estilos arquitectónicos

  • Cliente Servidor
  • 3 Capas (Dispositivo, Servidor, Cliente)

Conectores

  • (1): Llamada a procedimientos, Parámetros (transferencia de datos)
  • (2): Árbitro, Planificación
  • (3): Árbitro, Seguridad: Autentificación
  • (4): Acceso a datos (disponibilidad persistente)

4. Diagrama de Deployment

alt text

5. Identificación de Riesgos, Puntos Sensibles y Trade‐Offs

Identificación de Riesgos Al momento de tomar las decisiones arquitectónicas, se generan distintas problemáticas que pueden generar conflictos. Por un lado se genera un riesgo al generar un componente común con su respectiva interfaz para todos los dispositivos, considerando la diversidad de estos, y los distintos niveles de complejidad hay decidir abstraerse por una interfaz, sin embargo, ¿Con que nivel de profundidad se debe generar?
Por otro lado está el tema de los componentes que podrían verse afectado al momento de escalar. El servidor debe ser capaz de procesar gran cantidad de información por ende el “Controlador dispositivo” y su respectivo conector con la API de data-in deben ser identificados como un factor de riesgo claro. En este caso, la capacidad de leer información, va verse restringida por el ancho de banda y por la cantidad máxima de request, sin embargo hay que tener en cuenta posibles opciones de replicar esta lógica de modo de procesar información simultánea.

Puntos Sensibles

  • Escalabilidad: capacidad de aumentar los request sin que el servidor colapse y pierda datos.
  • Flexibilidad: Elegir una interfaz común para todos los dispositivos, que no sea necesario hacer cambios cada vez que se quiera agregar un tipo de dispositivo nuevo.
  • Seguridad: Los datos deben ser de los dispositivos inscritos y no de dispositivos ajenos al sistema. Por otro lado el control de los dispositivos debe ser restringido, es de suma importancia que los dispositivos no sean manipulados externamente sin autorización.

TradeOffs La complejidad se va a ver afectada claramente con las decisiones tomadas tanto en escalabilidad, flexibilidad y seguridad. Por un lado, en caso que se desee escalar ocupando replicaciones, claramente va a generarse mayor complejidad debido a tener que coordinar distintos componentes en paralelo que procesan información y modifican la base de datos de manera concurrente. En el caso de la flexibilidad también hay un trade-off con complejidad ya que a medida que aumento la flexibilidad de los dispositivos, más complejo va a ser mi componente dispositivo. El aumentar la seguridad va a afectar por un lado la escalabilidad, debido a que protocolos de seguridad más complejos involucran una sobrecargar mayor en el servidor y a su vez un aumento de complejidad.

Trabajo en conjunto de todo el grupo

About

Respositorio del grupo iBuilding

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •