- Oggetto:
- Oggetto:
Tecniche e architetture avanzate per lo sviluppo del software
- Oggetto:
Software Engineering: Advanced Architectures and Techniques
- Oggetto:
Anno accademico 2022/2023
- Codice dell'attività didattica
- INF0100
- Docente
- Giovanna Petrone (Titolare)
- Corso di studi
- [008515] Laurea magistrale in informatica
- Anno
- 1° anno
- Periodo didattico
- Primo semestre
- Tipologia
- Caratterizzante
- Crediti/Valenza
- 9 CFU - Numero di ore - Number of hours: 48 (in aula) + 24 (in laboratorio)
- SSD dell'attività didattica
- INF/01 - informatica
- Modalità di erogazione
- Tradizionale
- Lingua di insegnamento
- Italiano
- Modalità di frequenza
- Facoltativa
- Tipologia d'esame
- Orale
- Prerequisiti
- Lo studente deve preliminarmente avere la capacità di scrivere, compilare e verificare la correttezza di programmi in Java, la capacità di disegnare interfacce grafiche uomo-macchina utilizzando una delle varie tecnologie web (fornite nei corsi di Programmazione III, Servizi Web e Tecnologie Web), avere conoscenze di base del linguaggio UML (fornite nel corso Sviluppo Applicazioni Software)
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Laboratorio di Servizi Web, Tecnologie WebA fluent coding ability is required before attending the class, and the student must be familiar with Java programming. Moreover, the student must have an operative knowledge on data base management, and on installing/configuring software packages in her/his operating system, UML basis and ability to design User interfaces.
Preparatory courses (providing the expected entry skills): Laboratorio di Servizi Web, Tecnologie Web . - Oggetto:
Sommario insegnamento
- Oggetto:
Obiettivi formativi
Questo insegnamento concorre agli obiettivi formativi dell'ambito dello sviluppo del software del Corso di Laurea Magistrale in Informatica
Il corso ha come obiettivo di fornire agli studenti una panoramica delle tecnologie di sviluppo di sistemi mission critical con particolare enfasi alle soluzioni industriali per l'e-Business, incluso cenni di Cloud Computing. Fornire agli studenti metodologie e strumenti di Project Management per permettere di gestire lo sviluppo di progetti Software dall'analisi al testing. Le basi del Project Management unite all'applicazione della metodlogie Agile di Ingegneria del Software si applicheranno allo sviluppo del progetto svolto in laboratorio. L'insegnamento permette agli studenti di familiarizzare con terminologie di uso comune nell'industria moderna quali: sviluppo per componenti, architetture multilivello, middleware. Per la parte di laboratorio viene realizzata un'applicazione completa basata su: modello UML, architettura three-tier, modello a componenti e Microservizi con Spring in Java e applicazioni Android. Particolare attenzione all'integrazione con ambienti Cloud e le reti sociali, come esempio di integrazione di servizi eterogenei. Inoltre verrano applicate le metodolgie di Dev ops e Continuos Integration, utilizzando GIT, Maven e le architetture a Microservizi, con Docker e Kubernetes. I temi introdotti durante il progetto di laboratorio corredano e integrano le conoscenze derivanti dalla parte teorica (knowledge and understanding), al tempo stesso presentando problemi realistici di costruzione di un'applicazione complessa, anche investigando soluzioni alternative (applying knowledge and understanding). La preparazione, le presentazioni intermedie e la discussione del progetto sono volte a stimolare le capacità di organizzare il lavoro in piccoli gruppo (2-3 studenti), e poi di illustrare verbalmente le soluzioni adottate (communication skills)
This teaching contributes to the educational objectives of the software
development area of the Master's Degree in Computer Science The course aims
to provide students with an overview of mission critical systems
development technologies with particular emphasis on industrial solutions for
e-Business, including hints of Cloud Computing. Provide students with Project
Management methodologies and tools to allow them to manage the development
of Software projects from analysis to testing. The basics of Project Management
combined with the application of the Agile Software Engineering methodology
will be applied to the development of the project carried out in
the laboratory. The teaching allows students to familiarize themselves
with terminologies commonly used in modern industry such as: component
development, multilevel architectures, middleware. For the laboratory part,
a complete application is created based on: UML model, three-tier architecture,
component model and Microservices with Spring in Java and Android applications.
Particular attention to integration with Cloud environments and social networks,
as an example of integration of heterogeneous services. Furthermore,
the Dev ops and Continuos Integration methodologies will be applied, using GIT,
Maven and Microservices architectures, with Docker and Kubernetes.
The themes introduced during the laboratory project complement and
integrate the knowledge deriving from the theoretical part
(knowledge and understanding), at the same time presenting realistic
problems of construction of a complex application, also investigating
alternative solutions (applying knowledge and understanding).
The preparation, the intermediate presentations and the discussion
of the project are aimed at stimulating the ability to organize work
in small groups (2-3 students), and then to verbally illustrate the solutions
adopted (communication skills). .- Oggetto:
Risultati dell'apprendimento attesi
La studentessa/lo studente acquisirà lacquisirà la conoscenza delle architetture software, e dovrà essere in grado di ragionare sulle architetture Web per sistemi aziendali di grandi dimensioni, basandosi sull'esperienza del progetto di laboratorio. Lo studente sarà in grado di partecipare allo sviluppo di un progetto software, utilizzando anche le conoscenze relative alle metodologie di sviluppo Agile e anche utilizzando elementi di Project Management agile. Inoltre lo studente sarà in grado di progeSpring a Microservizi utilizzando il container Docker e Kubernetes.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE
Acquisizione di metodologie di progettazione e implementazione di una applicaziona in Java con architettura a Microservizi.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE
Acquisizione dell'uso di strumenti linguistici dei linguaggi orientati agli oggetti per affrontare l'applicazione alla programmazione di linguaggi, metodologie e strumenti multiparadigma.AUTONOMIA DI GIUDIZIO
Acquisizione dei criteri di base per stabilire come impostare una corretta progettazione e una solida implementazione delle applicazioni.ABILITÀ COMUNICATIVE
Acquisizione e sviluppo di elementi del lessico informatico finalizzati al lavoro di progettazione e implementazione delle applicazioni tramite linguaggi multiparadigma, in particolare durante le Project Review.CAPACITÀ DI APPRENDIMENTO
Acquisizione di capacità autonome di apprendimento e di autovalutazione della propria preparazione, teorica e pratica.The student will acquire the knowledge of software architectures, and will
have to be able to think about Web architectures for large enterprise systems,
based on the experience of the laboratory project. The student will be able
to participate in the development of a software project, also using knowledge
related to Agile development methodologies and also using elements of Agile
Project Management. Furthermore the student will be able to design Spring
a Microservices using the Docker container and Kubernetes. KNOWLEDGE AND UNDERSTANDING Acquisition of design methodologies and implementation of a Java application with Microservices architecture. ABILITY TO APPLY KNOWLEDGE AND UNDERSTANDING Acquisition of the use of linguistic tools of object-oriented languages to address the application to programming of multi-paradigm languages, methodologies and tools. AUTONOMY OF JUDGMENT Acquisition of the basic criteria to determine how to set up a correct design and robust implementation of applications. COMMUNICATION SKILLS Acquisition and development of elements of the computer lexicon aimed at the design and implementation of applications using multi-paradigm languages, in particular during the Project Reviews. LEARNING SKILLS Acquisition of autonomous learning skills and self-assessment of one's own theoretical and practical preparation.- Oggetto:
Modalità di insegnamento
L’insegnamento è diviso in una parte di teoria e una di laboratorio, molto connesse tra loro. Per la parte di teoria sono previste 72 ore di lezione frontali che seguono il programma riportato più avanti, integrate da casi di studio e da esercitazioni volte ad illustrare l’applicazione pratica dei concetti appena studiati. La parte di laboratorio e' integrata nel corso, in questa parte gli studenti svolgeranno un progetto di laboratorio, a partire dalla proposta con relativa presentazione, fino alla realizzazione completa dell'applicazione, mostrando la demo funzionante, corredata dall'esposizione delle fasi di progettazione. Le lezioni si svolgono in maniera interattiva e sono corredate da vari esercizi miranti a fornire esempi pratici. Emergenza Covid 2022/2023: le lezioni saranno IN PRESENZA. Seguiremo inoltre le indicazioni dell'Ateneo riguardo lo streaming per gli studenti che non possono frequentare in presenza. Sicuramente provvederemo alla registrazione delle lezioni, fornendo su piattaforma Moodle il materiale utilizzato nel corso insieme alle registrazioni.The teaching is divided into a theory part and a laboratory part,
very connected to each other. For the theory part, there are 72 hours
of frontal lessons that follow the program shown below, supplemented by
case studies and exercises aimed at illustrating the practical application
of the concepts just studied. The laboratory part is integrated into the course,
in this part the students will carry out a laboratory project,
starting from the proposal with relative presentation, up to the complete
implementation of the application, showing the working demo, accompanied by
the presentation of the design phases . The lessons take place in an
interactive way and are accompanied by various exercises aimed at providing
practical examples.
We will also follow the University's instructions regarding streaming for
students who cannot attend in person. We will certainly provide for
the recording of the lessons, providing the material used in the course
together with the recordings on the Moodle platform.- Oggetto:
Modalità di verifica dell'apprendimento
L'esame consiste: Ai fini della determinazione del voto finale l'esame dell’insegnamento di è diviso in 2 parti. 1. Discussione sul progetto finale di laboratorio obbligatoria. Questa presentazione viene fatta in gruppo e vale il 50% del voto. La presentazione deve avvenire utilizzando la condivisione dello schermo su WebEx al fine di mantenere distanza sicura. 2. Orale individuale obbligatorio sulla parte più teorica del corso, serve anche ad inviduare ventuali lacune non rilevate nella presentazione del progetto di laboratorio e si ottiene l'altro 50% del voto. Per la parte di laboratorio, vengono svolti in laboratorio, esercizi che permettono di completare il progetto finale componendo le tecnologie sviluppate negli esercizi. Questo si combina bene con la metodologia dell'Extreme Programming che suggerisce lo svolgimento di Spikes per fornire una pianificazione più corretta del progetto. Queste esercitazioni favoriscono l'assimilazione graduale degli argomenti introdotti durante il corso. Inoltre vengono richieste 2 presentazioni intermedie, che hanno lo scopo di fornire Milestones del progetto e di permettere agli studenti di esercitare la presentazione di un lavoro, oltre che di applicare metodologie di Project Management come le Project Review. L’esercitazione finale generalmente consiste in un progetto di maggiore impegno, e richiede di sviluppare un’applicazione in cui lo studente deve mostrare di padroneggiare i concetti e gli strumenti presentati durante il laboratorio e gli studenti dovranno presentare I risultati utilizzando uno schema di presentazione che viene utilizzato durante le presentazioni intermedie.
The exam consists of: For the purposes of determining the final grade,
the exam of the teaching is divided into 2 parts. 1. Discussion on the
mandatory final laboratory project. This presentation is done in groups
and is worth 50% of the vote. Presentation must be using screen sharing
on WebEx in order to maintain safe distance. 2. Compulsory individual
oral on the more theoretical part of the course, it also serves to identify
any undetected gaps in the presentation of the laboratory project and the
other 50% of the vote is obtained. For the laboratory part, exercises are
carried out in the laboratory that allow you to complete the final project
by composing the technologies developed in the exercises. This combines
well with the Extreme Programming methodology which suggests the execution
of Spikes to provide a more correct planning of the project. These exercises
favor the gradual assimilation of the topics introduced during the course.
Furthermore, 2 intermediate presentations are required, which aim to provide
Milestones of the project and to allow students to practice the presentation
of a work, as well as to apply Project Management methodologies such as
Project Reviews. The final exercise generally consists of a more demanding
project, and requires the development of an application in which the student
must demonstrate mastery of the concepts and tools presented during the
laboratory and the students must present the results using a presentation
scheme that it is used during in-between presentations.- Oggetto:
Attività di supporto
Durante l'intera durata dell'insegnamento saranno svolte attività di tutorato, facoltative e
aggiuntive rispetto a quelle proprie dell'insegnamento, per la revisione in aula
di alcuni argomenti . Le attività di piccoli gruppi in
collegamento su WebEx.During the entire duration of the course, tutoring activities will be carried out, optional and additional to those specific to teaching, for revision in the classroom of some topics. Small group activities in link on WebEx.
- Oggetto:
Programma
PARTE DI TEORIA: Project managment cenni. In particolare come gestire un progetto Software, gestire un gruppo di sviluppatori e applicare le metodologie di ingegneria del Software XP e Continuos Integration. Le diverse architetture per la progettazione di applicazioni client/server distribuite sulla rete, dalle soluzioni two-tiers alle three-tiers, tipologie varie di middleware e di oggetti distribuiti: i business objects. La distribuzione dei processi applicativi nelle reti Internet ed Intranet. * L'architettura per oggetti distribuiti dello standard gli Object Request Broker.
L'architettura Java 2 Enterprise e il framework Spring. Nuove soluzioni
per le applicazioni Internet ed il commercio elettronicoI Web Services e gli standard UML. Cenni di soluzioni per Enterprise Application Integration, le Service Oriented Architecture, architettura a Microservizi, il Cloud Computing Configuration management e controllo di versione PARTE DI LABORATORIO: Definizione e successiva realizzazione dell'applicazione distribuita in Java Spring con utilizzo di IntelliJ. Si utilizzera' UML (Unified Modeling Language) nel progetto preliminare di un'applicazione distribuita. Si costruiranno Web Services sia SOAP che RESTful. Inoltre l'applicazione dovra' integrare servizi offerti dagli Open API piu' noti, come Facebook, Google e si sviluppera' una parte dell'interfaccia per Smartphone nuova generazione ( Android) Utilizzo del sistema di controllo versione GIT e della piattaforma Cloud, Heroku.
Project management hints. In particular, how to manage a software project, manage a group of developers and apply the engineering methodologies of XP Software and Continuos Integration. The different architectures for the design of client / server applications distributed on the network, from two-tiers to three-tiers solutions, various types of middleware and distributed objects: business objects. The distribution of application processes in the Internet and Intranet networks. * The distributed object architecture of the standard Object Request Broker.The Java 2 Enterprise architecture and the Spring framework.
New solutions for Internet applications and electronic commerceWeb Services and UML standards. Outline of solutions for Enterprise Application Integration, Service Oriented Architecture, Microservices architecture, Cloud Computing Configuration management and version control PART OF THE LABORATORY: Definition and subsequent implementation of the application distributed in Java Spring with the use of IntelliJ. We will use UML (Unified Modeling Language) in the preliminary design of a distributed application. Both SOAP and RESTful Web Services will be built. In addition, the application will have to integrate services offered by the most well-known Open API, such as Facebook, Google and a part of the interface for new generation Smartphones (Android) will be developed. Use of the GIT version control system and the Cloud platform, Heroku. .
Testi consigliati e bibliografia
- Oggetto:
Web services - Concepts, architectures and applications, G. Alonso and F. Casati and H. Kuno and V. Machiraju, 2004 Springer
- Oggetto: