Link Search Menu Expand Document (external link)

Requisiti Implementativi

I requisiti di implementazione vincolano l’intera fase di realizzazione del sistema, ad esempio richiedendo l’uso di uno specifico linguaggio di programmazione e/o di uno specifico tool software.

Il sistema è diviso in sottoprogetti. Verranno brevemente illustrati i requisiti implementativi di ognuno e poi approfonditi successivamente:

Componenti comuni

Edge

  • Gestore di librerie esterne e configurazioni aggiuntive: PlatformIO;
  • Linguaggio utilizzato: C++17;
  • Hardware utilizzato: ESP8266, Node MCU v1.0
  • Testing: unity.h, integrata in PlatformIO;
  • Coverage: lcov;
  • IDE utilizzato/utilizzabile: Visual Studio Code, Clion;
  • Librerie:
    • jsoncpp: utilizzata per la creazione, e manipolazione di contenuti in formato json;
    • http-status-codes-cpp: utilizzata per semplificare la gestione dei codici HTTP.
    • Adafruit Sensor: Libreria necessaria come dipendenza per la maggior parte delle librerie che utilizzano componenti hardware come sensori ed attuatori.
    • Molte altre…: Non elencate a causa della natura scalabile del progetto. Ogni componente fisico potrebbe aver bisogno di una libreria specifica per poter funzionare.

Greenhouse Core

  • Linguaggio utilizzato: Java 11, Jason, Cartago, Moise;
  • IDE utilizzato/utilizzabile: Visual Studio Code, Eclipse;
  • Framework utilizzato: JaCaMo
  • Librerie:
    • wot-servient: l’implementazione dell’architettura W3C Web of Things (WoT) in Java;
    • gson: utilizzata per la gestione dei contenuti in formato json ricevuti e inviati;
    • okhttp: libreria che semplifica la creazione e l’invio di richieste HTTP.

[Auth, Persistence, Settings] Service

  • Gestore di librerie esterne e configurazioni aggiuntive: npm;
  • Linguaggio utilizzato: Javascript;
  • IDE utilizzato/utilizzabile: Visual Studio Code, WebStorm;
  • Testing: Jest, SuperTest
  • Framework utilizzati: Node.js, Express.js
  • Librerie:
    • Mongoose: utilizzata per l’interazione con le basi di dati.

Web Client

  • Gestore di librerie esterne e configurazioni aggiuntive: npm;
  • Linguaggio utilizzato: Javascript;
  • Framework utilizzati: Node.js, React.js
  • IDE utilizzato/utilizzabile: Visual Studio Code, WebStorm;
  • Testing: React Testing Library
  • Librerie:
    • Bootstrap: utilizzata per semplificare la creazione dell’interfaccia utente.
    • Redux: un contenitore di stato del sistema, utile per semplificare il processo più spinoso offerto da React.