(SOFTWARE ENGINEERING)
CdSINFORMATICA E NETWORKING
Codice290AA
CFU9
PeriodoPrimo semestre
LinguaInglese
Gli studenti acquisiranno conoscenze su varie tecniche avanzate di ingegneria del software, tra cui architetture basate su microservizi, test, principi agili, virtualizzazione basata su container, modellazione dei processi aziendali e sicurezza.
Students will acquire knowledge on various advanced software engineering techniques, including microservice-based architectures, testing, agile principles, container-based virtualisation, business process modeling and security.
Valutazione continua ed esame orale.
Continuous assessment and oral exam.
Alla fine del corso, gli studenti saranno in grado di affrontare la progettazione, il test e l'implementazione di applicazioni basate su microservizi.
At the end of the course, students will be able to face the design, testing and deployment of microservice-based applications.
Valutazione continua ed esame orale.
Continuous assessment and oral exam.
Gli studenti sperimenteranno il lavoro di squadra nello sviluppo del software nelle lezioni di laboratorio e con i compiti a casa. Sperimenteranno anche come presentare oralmente le metodologie e i risultati dell'ingegneria del software.
Students will experiment teamwork in software development in lab classes and with homework assignments. They will also experiment how to orally present software engineering methodologies and results.
Valutazione continua ed esame orale.
Continuous assessment and oral exam.
Lezioni (con supporti visivi come diapositive e clip), laboratori "hands-on", compiti a casa, apprendimento attivo. Uso di Moodle per condividere materiale didattico e gestire forum interattivi.
Lectures (with visual aids like slides and clips), “hands-on” labs, homework assignments, active learning. Use of Moodle for sharing teaching material and running interactive forums.
RESTful services
REST, OpenAPI. Microservices
Motivations, definition, properties. Design principles, architectural smells, refactorings. A toolchain for microservices. Use cases. Flask microservices. Containerisation with Docker.
Software testing
Development, release, and user testing. Test-driven development.
User stories
Agile principles. User stories, examples.
Business process modelling
Business process models, BPMN, workflow nets, Camunda.
Security and microservices
Challenges of securing microservices. Smells and refactorings for microservices security. Static vulnerability analysis. Authentication and authorization. API vulnerabilities and penetration testing.
Splitting the monolith
Code splitting, data splitting.
Cloud-IoT continuum
Motivations, Fog computing, research challenges. Declarative application placement. Security assessment of application deployments. Continuous reasoning. Secure FaaS orchestration.
RESTful services
REST, OpenAPI. Microservices
Motivations, definition, properties. Design principles, architectural smells, refactorings. A toolchain for microservices. Use cases. Flask microservices. Containerisation with Docker.
Software testing
Development, release, and user testing. Test-driven development.
User stories
Agile principles. User stories, examples.
Business process modelling
Business process models, BPMN, workflow nets, Camunda.
Security and microservices
Challenges of securing microservices. Smells and refactorings for microservices security. Static vulnerability analysis. Authentication and authorization. API vulnerabilities and penetration testing.
Splitting the monolith
Code splitting, data splitting.
Cloud-IoT continuum
Motivations, Fog computing, research challenges. Declarative application placement. Security assessment of application deployments. Continuous reasoning. Secure FaaS orchestration.
Slide e
[1] D. Neri, J. Soldani, O. Zimmermann, A. Brogi. Design principles, architectural smells and refactorings for microservices: a multivocal review. Software-Intensive Cyber-Physical Systems, 35:3-15. 2020.
[2] I. Sommerville. Software engineering. Pearson. 2016. [Chapter 8]
[3] V. Monochristou, M. Vlachopoulou. Requirements specification using user stories. In Agile software development quality assurance. 2007.
[4] OMG. BPMN 2.0 by example. 2010. [Section 5]
[5] A. Brogi, S. Forti. Workflow nets. Teaching note. 2020.
[6] P. Siriwardena, N. Dias. Microservices security in action. Manning. 2020. [Section 1.2 and Chapter 13]
[7] F. Ponce, J. Soldani, H. Astudillo, A. Brogi. Smells and Refactorings for Microservices Security: A Multivocal Literature Review. 2021.
[8] S. Newman. Building microservices. O’Reilly. 2015. [Chapter 5]
[9] S. Forti, G.L. Ferrari, A. Brogi. Secure Cloud-Edge Deployments, with Trust. Future Generation Computer Systems, 102, pages 775-788. 2020.
[10] S. Forti, G. Bisicchia, A. Brogi. Declarative Continuous Reasoning in the Cloud-IoT Continuum. Journal of Logic and Computation. 2021. In press.
Slides and
[1] D. Neri, J. Soldani, O. Zimmermann, A. Brogi. Design principles, architectural smells and refactorings for microservices: a multivocal review. Software-Intensive Cyber-Physical Systems, 35:3-15. 2020.
[2] I. Sommerville. Software engineering. Pearson. 2016. [Chapter 8]
[3] V. Monochristou, M. Vlachopoulou. Requirements specification using user stories. In Agile software development quality assurance. 2007.
[4] OMG. BPMN 2.0 by example. 2010. [Section 5]
[5] A. Brogi, S. Forti. Workflow nets. Teaching note. 2020.
[6] P. Siriwardena, N. Dias. Microservices security in action. Manning. 2020. [Section 1.2 and Chapter 13]
[7] F. Ponce, J. Soldani, H. Astudillo, A. Brogi. Smells and Refactorings for Microservices Security: A Multivocal Literature Review. 2021.
[8] S. Newman. Building microservices. O’Reilly. 2015. [Chapter 5]
[9] S. Forti, G.L. Ferrari, A. Brogi. Secure Cloud-Edge Deployments, with Trust. Future Generation Computer Systems, 102, pages 775-788. 2020.
[10] S. Forti, G. Bisicchia, A. Brogi. Declarative Continuous Reasoning in the Cloud-IoT Continuum. Journal of Logic and Computation. 2021. In press.
Tutto il materiale didattico e le informazioni sono disponibili nel sito Moodle dedicato al corso.
Students can take the course also without attending to classes and labs.
All teaching material and information are available in the Moodle site devoted to the course.
Valutazione continua ed esame orale.
Continuous assessment and oral exam.
http://pages.di.unipi.it/brogi/AttivitaDidattica/Informatica/AdvancedSoftwareEngineering/
http://pages.di.unipi.it/brogi/AttivitaDidattica/Informatica/AdvancedSoftwareEngineering/