Scheda programma d'esame
SOFTWARE SYSTEMS ENGINEERING
MARIO GIOVANNI COSIMO ANTONIO CIMINO
Academic year2023/24
CourseCOMPUTER ENGINEERING
Code911II
Credits6
PeriodSemester 1
LanguageEnglish

ModulesAreaTypeHoursTeacher(s)
SOFTWARE SYSTEMS ENGINEERINGING-INF/05LEZIONI60
ANTONIO LUCA ALFEO unimap
MARIO GIOVANNI COSIMO ANTONIO CIMINO unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Conoscere le diverse fasi del ciclo di vita dello sviluppo del software utilizzate per sviluppare, consegnare e mantenere i prodotti software.

Conoscere le fasi fondamentali del ciclo di vita dello sviluppo del software.

Conoscere la terminologia fondamentale dell'ingegneria del software e le pratiche di codifica.

Knowledge

The student who completes the course successfully will be able to demonstrate a solid knowledge of advanced techniques for designing software systems. Finally he/she will be able to perform, working in group, a software project and produce all necessary documentation.

 

Modalità di verifica delle conoscenze

Nella prova orale, gli studenti presenteranno e discuteranno la soluzione sofrtware sviluppata nel progetto di gruppo.

Assessment criteria of knowledge

During the oral exam the student must be able to demonstrate his/her knowledge of the course material and be able to discuss the reading matter thoughtfully and with propriety of expression. Through the project the student must demonstrate the ability to put into practice and to execute, with critical awareness, the activities illustrated or carried out under the guidance of the teacher during the course.

Methods:

  • Final oral exam
  • Final essay

 

Capacità

Acquisire competenze di sviluppo del software e comprendere la terminologia comunemente utilizzata nella professione di ingegnere del software.

Apprendere e praticare l'uso di standard/linee guida di codifica tradizionali. Le librerie di sviluppo software e gli strumenti di debug Python vengono esplorati e utilizzati nei progetti.

Dimostrare i concetti chiave utilizzando strategie di apprendimento collaborativo.

Modificare/costruire un programma software che introduca agli strumenti/ambienti di sviluppo software.

Sviluppare un programma software Python originale, imparando la sintassi del linguaggio Python.

Analizzare la funzionalità e le prestazioni di programmi applicativi software.

Dimostrare e comunicare efficacemente i principi dell'ingegneria del software attraverso relazioni scritte e/o presentazioni verbali.

Modalità di verifica delle capacità

Nella prova orale, gli studenti presenteranno e discuteranno la soluzione sofrtware sviluppata nel progetto di gruppo.

Prerequisites

UML concepts and techniques.

Teaching methods

Delivery: face to face

Learning activities:

  • attending lectures
  • preparation of oral/written report
  • individual study
  • group work

Attendance: Advised

Teaching methods:

  • Lectures
  • project work

 

 

Programma (contenuti dell'insegnamento)

Ingegneria dei requisiti. Specifica dei requisiti. Casi d'uso. Modellazione del dominio. Progettazione orientata agli oggetti. Progettazione orientata ai servizi. Progettazione orientata ai processi. Unified Modeling Notation. Implementazione del software. Test del software.
Modellazione di sistemi aziendali, landscape, DevOps, toolchain, approccio orientato ai processi, Business Process Model and Notation. Modellazione BPMN, flusso di controllo, eventi, task, gateway, gateway event-driven, tipi di task.
Progetti di gruppo, toolchain, python, flusso di lavoro. IDE PyCharm. Analisi dei dati in python, qualità del codice standard pep8, denominazione, controllo automatico della qualità, installazione di plint. Restful api, git e github, repository, commit, branch, merge, github, fork, pull, vcs, integrazione di pycharm con github, condividere un progetto.
Requisiti: notazione semi-formale, BPMN, caso d'uso, classe, scenario, storyboard GUI. Progettazione: diagramma di classe, diagramma di sequenza. Implementazione: qualità del codice, JSON, JSON Schema, validazione. Domini applicativi.
Metriche: automazione, reattività, elasticità, resilienza, interoperabilità. La tassonomia cognitiva. Pipeline del software di apprendimento automatico: ingestione dei dati, preparazione dei dati, segregazione dei dati, formazione dei modelli, valutazione dei modelli candidati, distribuzione dei modelli, monitoraggio delle prestazioni.
Integrazione e consegna continue (CI/CD) con le azioni Github. Flusso di lavoro Git. Rami e tag Git. Integrazione e consegna continue. Confronto tra i fornitori di CI/CD. Azioni GitHub: Panoramica, azione, sintassi, contenitori e servizi, eventi, segreti, flussi di lavoro complessi, matrice, riutilizzo del codice.

Syllabus

 

The course addresses software system development issues: all phases of the software life cycle are crossed. The development process management and planning is illustrated and accompanied by related supporting tools; also the international quality standards for these phases are presented and the maturity models. Students, in group, must perform a software project, this year following an Agile methodology.

 

Bibliografia e materiale didattico

I. Sommerville, Software Engineering. 10th Edition, Pearson Education Limited, Boston,2016.

T. Allweyer, D. Allweyer, BPMN 2.0, 2nd ed., BoD press, Norderstedt, 2010.

J. Arlow, I. Neustadt, UML 2 and the Unified Process, Pearson Education, 2005.

J. Rumbaugh, I. Jacobson, G. Booch, The UML Reference Manual, Addison-Wesley, 2004.

Bibliography


 

"Software Engineering" Ian Sommerville, Addison-Wesley; 10 Har/Psc edizione

G.Vaglini, M. Cimino, slides at http://elearn.ing.unipi.it/course/view.php?id=2699

 

Non-attending students info

Attendance is not mandatory but highly recommended.

Modalità d'esame

Prova orale basata sulla discussione e sulla motivazione di un progetto software.

Updated: 20/10/2023 23:28