Skip to content
Roberto Negro edited this page Jan 29, 2018 · 4 revisions

rMind Logo

Benvenuto nella wiki di rMind!

Introduzione

rMind è un progetto sviluppato da Roberto Negro (matricola 178932), studente del corso Ingegneria del Software 2 dell'Università degli Studi di Trento (a.a. 2017/18).

L'idea nasce dall'impulso nel ripetere circa giornalmente alle persone che stanno attorno a noi la tipica frase: "ricordami di...". Per chi ha una vita particolarmente impegnata questo tipo di frase è ormai un mantra, perché le cose da fare sono sempre troppe e il tempo per segnarcele non c'è mai.

Ma cos'è che ci spinge a dire tale frase invece di annotarcelo autonomamente? Aprire un applicazione non richiede troppo tempo e il telefono lo abbiamo quasi sempre sotto mano. È l'organicità e naturalezza dell'azione quello di cui abbiamo bisogno. Aprire un programma che usiamo poco e non ci è familiare oppure che richiede troppi input e ragionamenti da parte dell'utente non ci farà altro che sconcentrare da ciò che stiamo facendo.

Segno il promemoria per domani.. Aspetta, oggi è il 12? No, è il 13.. Ok, allora, per il 13.. Devo farlo di mattina, quindi farei per le 10..

È questo il problema. Dire ad una persona di ricordarcelo richiede uno sforzo pressocchè nullo perchè si tratta di semplice comunicare: una cosa che ci viene spontanea e naturale. E la persona a cui parliamo non si aspetta dei pattern precisi: può interpretare quello che gli diciamo. Tutto ciò rende l'operazione il più veloce possibile.

Ricordami domani mattina di..

E qui si concretizza rMind, un reminder (da qui il nome) che riprende uno stile che tutti ormai conosciamo: una chat per dispositivi mobili. Non dobbiamo pensare a come si invia un messaggio su WhatsApp o su Telegram, e nemmeno come inviare un messaggio audio: è un azione talmente abituale che ci viene spontanea. E se dall'altra parte dello schermo ci fosse un intelligenza artificiale in grado di interpretare le nostre richieste, ecco che giungiamo ad una conclusione che non si basa più sulla speranza che l'altra persona se ne ricordi davvero, che non richiede più tempi biblici e sconcentrazione assicurata, ma che è a portata di un semplice tap.

rMinding was never done as fast as now.

Provalo subito!

L'applicazione è accessibile attraverso il link https://rmind.herokuapp.com.

In futuro è prevista anche una versione integrata in un applicazione mobile per iOS e Android, quindi rimani sintonizzato e tieni d'occhio il tuo app store di riferimento!

Descrizione tecnica

Spinto da un motore scritto in Node.js e con un front-end responsive scritto in HTML, CSS (SASS), JavaScript (jQuery), rMind cerca di esser adatto a qualsiasi tipo di dispositivo e risoluzione. Per esser raggiungibile a tutti, si appoggia su un servizio Heroku. Per il mantenimento dei dati invece si appoggia ad un database MongoDB servito da mLab. Per quanto riguarda l'intelligenza artificiale invece viene sfruttata l'API di DialogFlow (ex API.io).

Mockup

Preferendo un approccio manuale per la stesura di idee e progettazione, ho utilizzato una tavoletta grafica in un primo momento per abbozzare le idee, passando successivamente alla riproduzione tramite Photoshop delle stesse una volta ultimate. È possibile quindi visualizzare una serie di mockups e idee presso: https://projects.invisionapp.com/boards/HT3GZDEXSYU3A/

Branching strategy

Essendo un progetto in cui lo sviluppo è stato portato avanti solamente da una persona, ho ritenuto che un feature branch workflow fosse la strategia migliore da seguire, data la sua potenzialità di avere in codice nel branch master sempre funzionante e testato e una divisione logica dei branch in base alla funzionalità implementata. Al contrario, ho ritenuto meno adatto un gitflow workflow che offre maggiori vantaggi per progetti grandi e di dimensioni maggiori e nel mio caso sarebbe quindi stato fin troppo prolisso.

User stories

Per quanto riguarda le stories mi son appoggiato sul servizio offerto da Trello e sono accessibili presso il link: https://trello.com/b/s9y5EzM8/rmind. Sono divise in 3 releases, la prima che riguarda principalmente uno sviluppo tecnico dell'API e del front-end, la seconda che riguarda l'integrazione di DialogFlow, e la terza che riguarda uno sviluppo futuro.

API di rMind

E' possibile interagire con un API esposta di rMind per effettuare le stesse identiche operazioni che son possibili dalla pagina web. A dire il vero, le pagine web stesse si affidano alle API esposte. Per una descrizione dettagliata con esempi e informazioni consultare la pagina di rMind su Apiary: https://rmind.docs.apiary.io/

Test cases

Per quanto riguarda il testing, è stato utilizzato Jest per effettuare un 100% branch coverage (che implica 100% statement coverage) del modello utilizzato per la gestione dell'utente (autenticazione, creazione, lettura, modifica, eliminazione). Per ottenere tale risultato è stato scelto un approccio "gray box testing" e sono stati studiati 58 test cases in grado di verificare la correttezza di almeno un valore per ogni equivalence partition. Per avviare il testing è sufficiente eseguire il comando npm test da terminale.

Who's made what

Forse un po' inutile dirlo, essendo un progetto svolto singolarmente dietro ad ogni creazione l'autore è sempre lo stesso.