Salta al contenuto principale della pagina

SOFTWARE PLATFORMS

CODICE 98460
ANNO ACCADEMICO 2022/2023
CFU
  • 6 cfu al 1° anno di 11160 COMPUTER ENGINEERING (LM-32) - GENOVA
  • SETTORE SCIENTIFICO DISCIPLINARE ING-INF/05
    LINGUA Inglese
    SEDE
  • GENOVA
  • PERIODO 1° Semestre
    MATERIALE DIDATTICO AULAWEB

    PRESENTAZIONE

    Una Software Platform è un sistema software destinato ad ospitare applicazioni. Usa le tecniche del networking, della programmazione orientata agli oggetti, del cloud e del service oriented computing per ottenere sistemi software scalabili in grado di supportare le applicazioni informatiche distribuite della presente generazione.

    Il corso di Software Platform fa leva sulle competenze acquisite nel corso della Laurea Triennale per introdurre e formalizzare i fondamenti delle Software Platform, in modo da consentire agli studenti da un lato di capire il funzionamento di quelle oggi rese disponibili dai principali vendor e dall’altro di progettare e realizzare Software Platform ad hoc per domini applicativi specifici.

    OBIETTIVI E CONTENUTI

    OBIETTIVI FORMATIVI

    Software Platforms is a fundamental module in the software development path. The development of complex software systems does not only require proficency in programming but also the knowledge of advanced models, paradigms and tools. Software Platforms describes the models, the paradigms and the tools which support Web Applications, Web Services and Microservices, and introduces the evolution toward serverless computing.

    OBIETTIVI FORMATIVI (DETTAGLIO) E RISULTATI DI APPRENDIMENTO

    OBIETTIVI FORMATIVI

    Lo scopo dell’insegnamento e’ quello di fornire la conoscenza sui modelli e sugli strumenti alla base della progettazione e dello sviluppo di Sw Platforms. E” un corso di tipico di Ingegneria, rivolto non tanto a descrivere le modalita' con cui progettare e sviluppare Sw Platforms quanto a descrivere i principi alla base del funzionamento delle stesse. Poiche’ le Sw Platform sono basate sul concetto di “servizio” l'insegnamento si concentrera’ su tale concetto e sulle modalita’ con le quali lo stesso e’ stato declinato nel passato e viene oggi declinato. 

    RISULTATI DI APPRENDIMENTO

    Al termine dell’insegnamento lo studente sara’ in grado di

    1. classificare i modelli e gli strumenti per lo sviluppo di Sw Platform, con particolare riferimento al concetto si “servizio”
    2. analizzare e descrivere il funzionamento di Sw Platform esistenti facendo riferimento ai modelli ed agli strumenti acquisiti
    3. progettare Sw Platform, scegliendo le architetture e gli strumenti per l’integrazione maggiormente appropriati
    4. definire le modalita’ di integrazione di Sw Platform
    5. confrontare diversi modelli di sviluppo ed integrazione di Sw Platform

    La capacita’ di analisi del funzionamento delle Sw Platform e’ la caratteristica distintiva di questo corso. A differenza dei “programmatori”, che tipicamente sviluppano sistemi sw complessi semplicemente utilizzando piattafiorme esistenti in modo non sempre critic e consapevole, gli Ingegenri che avranno seguito l’insegnamento di Sw Platform avranno un'elevata sensibilita’ verso la comprensione delle modalita’ di funzionamento delle piattaforme utilizzate.

    METODI DIDATTICI

    1. Presentazione degli aspetti teorici e modellistici in aula da parte del docente;
    2. Presentazione di semplici programmi in aula da parte del docente, finalizzati a dimostrare in che modo i modelli presentati vengono utilizzati nella realta';
    3. Realizzazione di semplici programmi da parte degli studenti (si incoraggiano gli studenti a venire a lezione con un laptop), da un lato per favorire un atteggiamento critico verso la materia e dall'altro per favorire l'acquisizione di competenze operative;
    4. Studio ed analisi di Sw Platform esistenti proposte dal docente;
    5. Studio di testi e di White Papers ed in generale di documentazione proposta dal docente.

    MODALITA’ DI ACCERTAMENTO

    1. Frequenza ed assiduita’ alle lezioni;
    2. Test sulla conoscenza dei modelli e degli strumenti presentati a lezione;
    3. Sviluppo di documenti di descrizione di Sw Platform esistenti;
    4. Analisi della capacita’ di sviluppo di semplici programmi come quelli descritti a lezione

    L’obiettivo che ci si pone e’ che la valutazione dello student abbia inizio durante il corso delle lezioni, attraverso l’esecuzione di esercizi proposti dal docente e l’analisi di Sw Platform esistenti, e termini alla fine del corso attraverso una discussione con il docente nel quale quanto sviluppato durante il corso viene consolidato.

    PREREQUISITI

    1. Object Oriented Programming in Java
    2. Computer Networks

    MODALITA' DIDATTICHE

    1. Presentazione degli aspetti teorici e modellistici in aula da parte del docente;
    2. Presentazione di semplici programmi in aula da parte del docente, finalizzati a dimostrare in che modo i modelli presentati vengono utilizzati nella realta';
    3. Realizzazione di semplici programmi da parte degli studenti (si incoraggiano gli studenti a venire a lezione con un laptop), da un lato per favorire un atteggiamento critico verso la materia e dall'altro per favorire l'acquisizione di competenze operative;
    4. Studio ed analisi di Sw Platform esistenti proposte dal docente;
    5. Studio di testi e di White Papers ed in generale di documentazione proposta dal docente.

    PROGRAMMA/CONTENUTO

    1. Introduzione: Architectural Patterns, Paradigms, Frameworks
    2. Java come piattaforma per il supporto all'implmentazione di Software Platform complesse.
      1. Network Interface
      2. Annotations
      3. Reflection
      4. Thread Pools
      5. Dynamic Class Loading
    3. Paradigms
      1. Call/Response
      2. Message Passing
      3. Publish and Subscribe
    4. Web Applications, Web Services e Service Oriented Architecture
      1. Web Server (Server Side vs Client Side processing)
      2. Web Services (SOAP e REST)
    5. Sw Platforms basate su Microservices
      1. Evoluzione verso devops (Continuous Integration/Continuous Delivery)
      2. Introduzione a Virtual Machines e Containers
      3. Architecture di riferimento
      4. Strumenti per la composizione e per l'orchestrazione
    6. Analisi dei principi di alcune piattaforme software (ad es. Spreadsheet Space, Blockchain).

    TESTI/BIBLIOGRAFIA

    Main Reference manuals and books:

    1. Apache Tomcat Manual, www.tomcat.apache.org
    2. Apache Axis 2 Manual, axis.apache.org/axis2/java/core
    3. I. Nadareishvili, R. Mitra, M. Mc Larty & Mike Amundsen, Microservice Architecture, O' Reilly, 2016
    4. Sam Newman, Building Microservices, O' Reilly, 2015
    5. W. Gjda, Pro Vagrant, www.allitebooks.com
    6. S. Goasguen, Docker in the Cloud, O' Reilly, 2016
    7. D. Rensin, Kubernetes, O' Reilly 2015

    DOCENTI E COMMISSIONI

    LEZIONI

    Orari delle lezioni

    L'orario di tutti gli insegnamenti è consultabile su EasyAcademy.

    ESAMI

    MODALITA' D'ESAME

    1. Esame orale alla fine del corso e test al computer sui programmi presentati a lezione 
    2. Per gli studenti che hanno frequentato, la prova orale potrà essere integrata con lo sviluppo di studi monografici.
    3. Agli studenti che hanno disturbi specifici di apprendimento (DSA) sarà consentito di utilizzare modalità e supporti specifici per l'esame, determinati caso per caso in accordo con il delegato dei corsi di Ingegneria nella Commissione per l'inclusione di Studenti con Disabilità.

    MODALITA' DI ACCERTAMENTO

    1. Frequenza ed assiduita’ alle lezioni;
    2. Test sulla conoscenza dei modelli e degli strumenti presentati a lezione;
    3. Sviluppo di documenti di descrizione di Sw Platform esistenti;
    4. Analisi della capacita’ di sviluppo di semplici programmi come quelli descritti a lezione

    L’obiettivo che ci si pone e’ che la valutazione dello studente abbia inizio durante il corso delle lezioni, attraverso l’esecuzione di esercizi proposti dal docente e l’analisi di Sw Platform esistenti, e termine alla fine del corso attraverso una discussione con il docente nel quale quanto sviluppato durante il corso viene consolidato.

    Calendario appelli

    Data Ora Luogo Tipologia Note