diff --git a/thesis/source/docs/2_introduzione/index.rst b/thesis/source/docs/2_introduzione/index.rst index a516b53..6049d9f 100644 --- a/thesis/source/docs/2_introduzione/index.rst +++ b/thesis/source/docs/2_introduzione/index.rst @@ -33,14 +33,16 @@ L'obiettivo di questa tesi è quello di descrivere lo sviluppo dell'applicativo Struttura della tesi ==================== +.. todo:: + + Aggiornare questo elenco man mano che vengono aggiunti nuovi capitoli. + La tesi è strutturata nel seguente modo: #. nel primo capitolo, :ref:`Sinossi`, viene descritto molto brevemente il progetto realizzato; #. nel secondo capitolo, :ref:`Introduzione`, viene introdotto il contesto della tesi, la tesi stessa e i suoi contenuti; #. nel terzo capitolo, :ref:`Ricerca collaborativa`, viene presentata in dettaglio la situazione attuale della ricerca collaborativa; -#. nel quarto capitolo, :ref:`Requisiti`, venono elencati i requisiti che si sono voluti raggiungere con la realizzazione dell'applicativo; -#. nel quinto capitolo, :ref:`Progetto`, viene descritta la progettazione avvenuta, entrando nei dettagli della suddivisione in moduli e delle astrazioni create; -#. nel sesto capitolo, :ref:`Implementazione`, vengono trattate le specifiche tecniche implementative del progetto; -#. nel settimo capitolo, :ref:`Applicazione`, viene fatto un esempio di applicazione del progetto all'interno di un'Università; -#. nell'ottavo capitolo, :ref:`Conclusione`, vengono tratte le conclusioni della tesi; -#. nel nono capitolo, :ref:`Appendice`, è infine inserito ulteriore materiale indirettamente relativo alla tesi. +#. nel quarto capitolo, :ref:`Progettazione`, viene descritta la progettazione avvenuta, entrando nei dettagli dei requisiti, della suddivisione in moduli e delle astrazioni create; +#. nel quinto capitolo, :ref:`Implementazione`, vengono trattate le specifiche tecniche implementative del progetto; +#. nel sesto capitolo, :ref:`Applicazione`, viene fatto un breve esempio di applicazione del progetto all'interno di un'Università; +#. nell'settimo capitolo, :ref:`Conclusione`, vengono tratte le conclusioni della tesi. diff --git a/thesis/source/docs/3_presentazione/index.rst b/thesis/source/docs/3_presentazione/index.rst index 00ff549..ba44408 100644 --- a/thesis/source/docs/3_presentazione/index.rst +++ b/thesis/source/docs/3_presentazione/index.rst @@ -72,7 +72,7 @@ Il più importante di questi editor è `Google Docs `_ .. index:: - single: notebook computazionale + single: notebook; computazionale single: celle Notebook computazionali diff --git a/thesis/source/docs/4_progetto/index.rst b/thesis/source/docs/4_progetto/index.rst new file mode 100644 index 0000000..67ca1bc --- /dev/null +++ b/thesis/source/docs/4_progetto/index.rst @@ -0,0 +1,364 @@ +.. index:: + single: progettazione + +************* +Progettazione +************* + +Vista la situazione della `ricerca collaborativa `, si è ritenuto potesse essere utile sviluppare un'alternativa al `progetto JupyterHub `. + + +.. index:: + single: requisiti + +Requisiti +========= + +Si è stabilito che per essere un'alternativa valida, il progetto dovesse avere i seguenti requisiti: + +* `estendibilità ` +* `security by default ` +* `interfaccia grafica facile ed intuibile ` +* `maggiore possibilità di collaborazione ` +* `codice open source ` +* `possibilità di personalizzazione ` +* `accessibilità ` + +Seguono descrizioni dettagliate dei requisiti elencati. + + +.. index:: + single: requisiti; estendibilità + single: estendibilità + +Estendibilità +------------- + +**Aggiungere nuove funzionalità** al software deve essere facile, e non richiedere ristrutturazioni profonde del codice. + +Inoltre, il software deve essere **modulare**, in modo da semplificare l'aggiornamento, la sostituzione e la eventuale rimozione di componenti. + +Infine, il software deve esporre un'**interfaccia alla quale altri software esterni possono connettersi** per interagirvi come se fossero un utente. + + +.. index:: + single: requisiti; sicurezza + single: sicurezza + +Sicurezza +--------- + +I dati immagazzinati all'interno del software devono essere **protetti da acccessi non autorizzati**. + +**Tentativi di ingannare gli utenti del software devono essere impediti**, riducendo il fattore umano nelle falle di sicurezza. + +Non si reputa importante impedire agli utenti di comunicare con Internet all'interno delle loro ricerche, in quanto si ritiene che essi siano utenti fidati; qualora ne sorga la necessità, ciò deve essere possibile senza ristrutturazione del codice. + +Non si reputa nemmeno importante limitare le risorse utilizzate dai `notebook ` in uso; deve però essere possibile implementare la funzionalità in futuro, se divenisse necessario. + + +.. index:: + single: requisiti; intuibilità + single: intuibilità + +Intuibilità +----------- + +Il modo in cui utilizzare l'interfaccia utente del software deve essere **facilmente intuibile** dall'utente medio, senza che abbia bisogno di leggere alcuna guida o manuale. + +A tale scopo, l'interfaccia grafica deve utilizzare **design patterns comuni e familiari** all'utente medio. + +In aggiunta, i **dettagli implementativi devono essere nascosti** all'utente, in modo che possa concentrarsi sull'utilizzo del software. + + +.. index:: + single: requisiti; personalizzabilità + single: personalizzabilità + +Personalizzabilità +------------------ + +Il software deve permettere all'utente di **personalizzare il suo workflow senza alcuna limitazione**, che ciò venga fatto tramite plugin, configurazioni speciali o modifica di file dell'ambiente di lavoro, assicurando che i workflow personalizzati di un utente **non possano interferire** con quelli degli altri. + +Inoltre, il software deve inoltre permettere all'amministratore di **personalizzare nome e aspetto** mostrati agli utenti nell'interfaccia grafica, in modo che essa possa essere adattata al brand dell'istituzione che utilizza il progetto. + + +.. index:: + single: requisiti; possibilità di collaborazione + single: possibilità di collaborazione + +Possibilità di collaborazione +----------------------------- + +Il software deve permettere agli utenti di **collaborare sui notebook in tempo reale**, come all'interno dei `web-based editor `. + +Devono essere **facilitate le interazioni tra utenti**, al fine di ridurre errori e incomprensioni tra essi. + + +.. index:: + single: requisiti; open source + single: open source + +Open source +----------- + +Il software deve essere interamente **open source**. + +In pieno spirito collaborativo, il **codice sorgente deve essere liberamente consultabile, modificabile, utilizzabile e condivisibile**, sia per soddisfare la curiosità degli utenti, sia per permetterne lo studio e il miglioramento. + +Tutte le **modifiche al codice sorgente devono essere rese disponibili agli utenti** del software modificato, in modo che possano verificare l'affidabilità del software che utilizzano. + + +.. index:: + single: requisiti; responsività + single: responsività + +Responsività +------------ + +Il software deve essere **utilizzabile su schermi di dimensione ridotta**, come quelli di un cellulare. + +Pertanto, gli elementi dell'interfaccia devono essere disposti in modo che non escano dallo schermo qualora non ci fosse spazio sufficiente per mostrarli. + + +.. index:: + single: requisiti; accessibilità + single: accessibilità + +Accessibilità +------------- + +Il software deve essere utilizzabile da **qualsiasi tipologia di utente**, inclusi utenti con disabilità visive e motorie. + +Deve essere quindi possibile utilizzare il software **interamente da tastiera**, senza dover ricorrere a un mouse. + +Inoltre, i colori scelti per l'interfaccia grafica **devono essere chiari anche a persone affette da daltonismo**. + + +.. index:: + single: separazione in moduli + single: modulo + +Separazione in moduli +===================== + +.. todo:: Separazione in moduli + + +.. index:: + single: modulo; backend + +Modulo backend +-------------- + +.. todo:: Modulo backend + + +.. index:: + single: Django + +Django +^^^^^^ + +.. todo:: Django + + +.. index:: + single: Django; REST Framework + +Django REST Framework +^^^^^^^^^^^^^^^^^^^^^ + +.. todo:: Django REST Framework + + +.. index:: + single: modulo; frontend + +Modulo frontend +--------------- + +.. todo:: Modulo frontend + + +.. index:: + single: React + +React +^^^^^ + +.. todo:: React + + +.. index:: + single: Bluelib + +Bluelib +^^^^^^^ + +.. todo:: Bluelib + + +.. index:: + single: modulo; proxy + +Modulo proxy +------------ + +.. todo:: Modulo proxy + + +.. index:: + single: Apache HTTP server + single: httpd + single: apache2 + +Apache HTTP server +^^^^^^^^^^^^^^^^^^ + +.. todo:: Apache HTTP server + + +.. index:: + single: modulo; Jupyter + single: Jupyter; modulo di Sophon + +Modulo Jupyter +-------------- + +.. todo:: Modulo backend + + +.. index:: + single: containerizzazione + +Containerizzazione +================== + +.. todo:: Containerizzazione + + +.. index:: + single: Docker + +Docker +------ + +.. todo:: Containerizzazione + + +.. index:: + single: container + single: Docker; container + +Container +^^^^^^^^^ + +.. todo:: Container + + +.. index:: + single: network + single: Docker; network + +Network +^^^^^^^ + +.. todo:: Network + + +.. index:: + single: volume + single: Docker; volume + +Volumi +^^^^^^ + +.. todo:: Volumi + + +.. index:: + single: Docker; compose + +Docker Compose +-------------- + +.. todo:: Containerizzazione + + +.. index:: + single: database + +Database +======== + +.. todo:: Database + + +.. index:: + single: PostgreSQL + +PostgreSQL +---------- + +.. todo:: PostgreSQL + + +.. index:: + single: entità + +Entità +------ + +.. todo:: Entità + + +.. index:: + single: entità; istanza + single: istanza + +Istanze +^^^^^^^ + +.. todo:: Istanze + + +.. index:: + single: entità; gruppi di ricerca + single: gruppi di ricerca + +Gruppi di ricerca +^^^^^^^^^^^^^^^^^ + +.. todo:: Gruppi di ricerca + + +.. index:: + single: entità; progetti di ricerca + single: progetti di ricerca + +Progetti di ricerca +^^^^^^^^^^^^^^^^^^^ + +.. todo:: Progetti di ricerca + + +.. index:: + single: entità; notebook + single: notebook; entità di Sophon + +Notebook +^^^^^^^^ + +.. todo:: Notebook + + +.. index:: + single: entità; utente + single: utente + +Utenti +^^^^^^ + +.. todo:: Utenti + diff --git a/thesis/source/docs/4_requisiti/index.rst b/thesis/source/docs/4_requisiti/index.rst deleted file mode 100644 index 733e034..0000000 --- a/thesis/source/docs/4_requisiti/index.rst +++ /dev/null @@ -1,94 +0,0 @@ -********* -Requisiti -********* - -Sophon è stato realizzato per fornire un'alternativa al `progetto JupyterHub ` con i seguenti requisiti: - -* più facile `estendibilità ` -* `security ` by default -* interfaccia grafica `facile ed intuibile ` -* maggiore `possibilità di collaborazione ` -* codice `open source ` -* `possibilità di personalizzazione ` -* completa `accessibilità ` - - -Estendibilità -============= - -Aggiungere nuove funzionalità al software deve essere facile, e non richiedere ristrutturazioni profonde del codice. - -Inoltre, il software deve essere modulare, in modo da semplificare l'aggiornamento, la sostituzione e la eventuale rimozione di componenti. - -Infine, il software deve esporre un'interfaccia alla quale altri software esterni possono connettersi per interagirvi come se fossero un utente. - - -Sicurezza -========= - -I dati immagazzinati all'interno del software non devono essere accessibili agli utenti non autorizzati. - -Inoltre, tentativi di ingannare gli utenti del software devono essere resi più difficili possibile, riducendo il fattore umano delle falle di sicurezza. - -Non si reputa importante impedire agli utenti di comunicare con Internet all'interno delle loro ricerche, in quanto si ritiene che essi siano utenti fidati; qualora ne sorga la necessità, ciò deve essere possibile senza ristrutturazione del codice. - - -Intuibilità -=========== - -Il modo in cui utilizzare l'interfaccia utente del software deve essere intuibile all'utente medio, senza che abbia bisogno di leggere alcuna guida o manuale. - -A tale scopo, l'interfaccia grafica deve utilizzare design patterns comuni e familiari all'utente medio. - -In aggiunta, i dettagli implementativi devono essere nascosti all'utente, in modo che possa concentrarsi sull'utilizzare il notebook. - - -Personalizzabilità -================== - -Il software deve permettere all'utente di personalizzare il suo workflow senza alcuna limitazione, che venga fatto tramite plugin, configurazioni speciali o modifica di file dell'ambiente di lavoro, assicurando che i workflow personalizzati di un utente non possano interferire con quelli degli altri. - -Inoltre, il software deve inoltre permettere all'amministratore di personalizzare nome e aspetto mostrati agli utenti nell'interfaccia grafica, in modo che essa possa essere adattata al brand dell'istituzione che utilizza il progetto. - - -Possibilità di collaborazione -============================= - -Il software deve permettere agli utenti di collaborare sui notebook in tempo reale, come all'interno dei `web-based editor `. - - -.. todo:: - - Il software deve facilitare le interazioni all'interno del gruppo, e non complicarle. (Preludio al meccanismo di locking) - - -Open source -=========== - -Il software deve essere open source nella sua interezza. - -In pieno spirito collaborativo, il codice sorgente deve essere liberamente consultabile, modificabile, utilizzabile e condivisibile da chiunque, sia per soddisfare la curiosità degli utenti, sia per permetterne lo studio e il miglioramento. - -Tutte le modifiche al codice sorgente devono essere disponibili agli utenti del software modificato, in modo che possano verificare l'affidabilità del software che utilizzano. - - -Responsività -============ - -Il software deve essere utilizzabile almeno in parte da schermi di dimensione ridotta, come quelli di un cellulare. - -Pertanto, gli elementi dell'interfaccia devono essere disposti in modo che non escano dallo schermo qualora non ci fosse spazio sufficiente per mostrarli. - -.. todo:: eh? - - -Accessibilità -============= - -Il software deve essere utilizzabile da qualsiasi tipologia di utente, inclusi utenti con disabilità visive e motorie. - -Deve essere allora possibile utilizzare il software interamente da tastiera, senza dover ricorrere a un mouse. - -Inoltre, i colori scelti per l'interfaccia grafica non devono essere confondibili da persone affette da daltonismo. - -Infine, l'intero software deve essere navigabile tramite screen reader, permettendo a non-vedenti di usare il progetto. diff --git a/thesis/source/docs/6_implementazione/index.rst b/thesis/source/docs/5_implementazione/index.rst similarity index 53% rename from thesis/source/docs/6_implementazione/index.rst rename to thesis/source/docs/5_implementazione/index.rst index 5c6b67e..60438ca 100644 --- a/thesis/source/docs/6_implementazione/index.rst +++ b/thesis/source/docs/5_implementazione/index.rst @@ -1,3 +1,7 @@ *************** Implementazione *************** + +.. todo:: + + Scrivere questo capitolo. diff --git a/thesis/source/docs/5_progetto/index.rst b/thesis/source/docs/5_progetto/index.rst deleted file mode 100644 index 8ee19a1..0000000 --- a/thesis/source/docs/5_progetto/index.rst +++ /dev/null @@ -1,3 +0,0 @@ -******** -Progetto -******** diff --git a/thesis/source/docs/6_applicazione/index.rst b/thesis/source/docs/6_applicazione/index.rst new file mode 100644 index 0000000..bd90d6d --- /dev/null +++ b/thesis/source/docs/6_applicazione/index.rst @@ -0,0 +1,7 @@ +************ +Applicazione +************ + +.. todo:: + + Scrivere questo capitolo. \ No newline at end of file diff --git a/thesis/source/docs/7_applicazione/index.rst b/thesis/source/docs/7_applicazione/index.rst deleted file mode 100644 index 196fb14..0000000 --- a/thesis/source/docs/7_applicazione/index.rst +++ /dev/null @@ -1,3 +0,0 @@ -************ -Applicazione -************ diff --git a/thesis/source/docs/7_conclusione/index.rst b/thesis/source/docs/7_conclusione/index.rst new file mode 100644 index 0000000..44a262d --- /dev/null +++ b/thesis/source/docs/7_conclusione/index.rst @@ -0,0 +1,7 @@ +*********** +Conclusione +*********** + +.. todo:: + + Scrivere questo capitolo. \ No newline at end of file diff --git a/thesis/source/docs/9_appendice/index.rst b/thesis/source/docs/8_appendice/index.rst similarity index 57% rename from thesis/source/docs/9_appendice/index.rst rename to thesis/source/docs/8_appendice/index.rst index 18f26e3..960a47a 100644 --- a/thesis/source/docs/9_appendice/index.rst +++ b/thesis/source/docs/8_appendice/index.rst @@ -2,9 +2,8 @@ Appendice ********* -.. only:: html - - .. rubric:: Bibliografia +Bibliografia +============ .. bibliography:: :all: diff --git a/thesis/source/docs/8_conclusione/index.rst b/thesis/source/docs/8_conclusione/index.rst deleted file mode 100644 index f9b8737..0000000 --- a/thesis/source/docs/8_conclusione/index.rst +++ /dev/null @@ -1,3 +0,0 @@ -*********** -Conclusione -*********** diff --git a/thesis/source/index.rst b/thesis/source/index.rst index b55f5d0..3ea8455 100644 --- a/thesis/source/index.rst +++ b/thesis/source/index.rst @@ -4,19 +4,17 @@ Progettazione e sviluppo di Sophon, applicativo cloud a supporto della ricerca .. toctree:: :maxdepth: 6 - :numbered: 1 + :numbered: 2 :caption: Contenuti docs/1_sinossi/index docs/2_introduzione/index docs/3_presentazione/index - docs/4_requisiti/index - docs/9_appendice/index - -.. docs/5_progetto/index -.. docs/6_implementazione/index -.. docs/7_applicazione/index -.. docs/8_conclusione/index + docs/4_progetto/index + docs/5_implementazione/index + docs/6_applicazione/index + docs/7_conclusione/index + docs/8_appendice/index .. only:: html