The Code Battle

  • CONTESTO:

    Oggigiorno il mondo della programmazione è molto orientato all’utilizzo di tecnologie che favoriscano il Responsive Web Design (RWD), e che permettano una gestione Agile sia nella fase di Sviluppo, sia nella fase di Operation, ad esempio seguendo quanto proposto dalla metodologia DevOps.

    Tutte queste fasi vanno ad ottimizzare il processo produttivo quindi fino al momento della “messa in produzione” del prodotto, non considerando però a pieno la fase successiva, relativa all’assistenza di tale prodotto.
    Si pensi ad esempio a quanto tempo deve dedicare un operatore di Help Desk, in caso di segnalazione di un problema da parte di un cliente, solo per poter capire esattamente in quale pagina dell’applicativo di trova l’utente, quali filtri ha impostato, quale operazioni aveva appena ultimato, etc..
    Ad oggi ci sono diverse tecnologie che possono venire incontro a questo problema, una di queste ad esempio è Redux. Introducendo il concetto
     di stato dell’applicazione (o dei moduli dell’applicazione) come oggetti lato client, automaticamente possiamo vedere lo stato dell’applicazione come un qualcosa che può essere “fotografato”, e quindi salvato, per poi poter essere ripristinato in un secondo momento.
    Tornando al nostro esempio di prima, si pensi al risparmio di tempo di un operatore di HelpDesk, se in caso di errore o segnalazioni da parte di un cliente, quest’ultimo potesse salvare lo stato della propria applicazione, inviarlo in automatico al servizio di HelpDesk, il quale avrebbe quindi la possibilità di “ripristinare” lo stato dell’applicazione, e vedere sul proprio monitor l’applicazione allo stesso punto, con le stesse selezioni, e quindi poter procedere alla simulazione dell’errore segnalato.
    Partendo da questo “problema da risolvere”, di seguito viene proposto un progetto con lo scopo di capire come approcciare la soluzione a tale problema, indipendentemente dall’ambito funzionale.

  • DESCRIZIONE PROGETTO:

    OGGETTO

    Il presente progetto ha per oggetto la realizzazione di un modulo Angular 5, basata sulla gestione a stati tramite Redux, che consentadi salvare / gestire / ripristinare gli store NgRx all’interno di una generica applicazione Angular.
    Il contesto funzionale di riferimento, seppur non determinante, sarà indicato tramite applicativo di esempio fornito il giorno di apertura della Challenge.
    Dal punto di vita tecnico, oltre ad implementare le funzioni base descritte ad esempio nel punto procedente, il modulo dovrà permettere di:

    1. Gestire un evento di salvataggio remoto, tramite chiamata a un servizio REST, degli store applicativi;
    2. Listare gli stati salvati con la possibilità di eliminazione del singolo stato;
    3. Ricaricare lo stato dell’applicativo, scaricandolo da un servizio REST di lettura di quanto salvato in precedenza.
    TECNOLOGIE RICHIESTE

    1. Angular 5
    2. Angular Cli 1.6
    3. NgRx
    4. RxJs
    5. Bootstrap per la parte grafica

    Per i servizi remoti è possibile utilizzare un mock locale, ad esempio json-server.

    Peri test sia di unità che di funzionalità:

    1. Jasmine
    2. Karma

    OUTPUT RICHIESTO

    Il progetto deve essere presentato come file zip, contenente:

    1. Applicativo di esempio fornito nella Challenge con le modifiche/aggiunte apportate
    2. File README.txt (da scaricare dal sito della Challenge) compilato in tutte le sue parti
    3. File ALTERNATIVE_SOLUTIONS.txt, con la descrizione di approcci/tecnologie alternative per la risoluzione del problema.