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
- Build tool utilizzato: Gradle
- Versioning tool: Git
- Versioning portal: GitHub
- Containerization: Docker
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: