Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[3I273] - INGEGNERIA DEL SOFTWARESOFTWARE ENGINEERING
Domenico URSINO
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea - [IT04] INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE First Cycle Degree (3 years) - [IT04] COMPUTER AND AUTOMATION ENGINEERING
Dipartimento: [040040] Dipartimento Ingegneria dell'InformazioneDepartment: [040040] Dipartimento Ingegneria dell'Informazione
Anno di corsoDegree programme year : 2 - Secondo Semestre
Anno offertaAcademic year: 2020-2021
Anno regolamentoAnno regolamento: 2019-2020
Crediti: 9
Ore di lezioneTeaching hours: 72
TipologiaType: D - A scelta dello studente
Settore disciplinareAcademic discipline: ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

LINGUA INSEGNAMENTO LANGUAGE

ITALIANO

Italian


PREREQUISITI PREREQUISITES

Conoscenze sulla programmazione orientata agli oggetti

Knowledge of Object Oriented Programming


MODALITÀ DI SVOLGIMENTO DEL CORSO DEVELOPMENT OF THE COURSE

L'insegnamento ha la finalità di consentire allo studente di conoscere le nozioni di base dell'ingegneria del software, sia nel suo approccio tradizionale sia nell'approccio agile. Lo studente imparerà, quindi, come si conduce un progetto software dallo studio di fattibilità fino alla validazione e al collaudo. Una seconda parte del corso è dedicata allo studio dei pattern sia a livello progettuale che a livello implementativo. In quest'ultimo caso si farà uso del linguaggio Python che rappresenta il linguaggio di programmazione di riferimento per il corso.

This course aims at allowing the student to learn the basics of software engineering, in both its traditional approach and its agile one. Therefore, the student will learn how to conduct a software project from the feasibility study to validation and testing. A second part of this course is dedicated to the study of patterns at both design and implementation level. In the latter case, the Python language, which is the reference programming language for this course, will be adopted.


RISULTATI DI APPRENDIMENTO ATTESI LEARNING OUTCOMES
Conoscenze e comprensione.

L’insegnamento ha innanzitutto la finalità di far comprendere allo studente le varie fasi del ciclo di vita del software; a tal fine verranno prese in considerazione le principali metodologie di produzione del software con un’enfasi particolare su quelle agili. Successivamente si procederà allo studio
approfondito dei diagrammi UML e del loro utilizzo durante le varie fasi del ciclo di vita del software, con particolare enfasi sull’analisi dei requisiti e la progettazione. Per ciò che riguarda l’implementazione del software verrà innanzitutto introdotto il linguaggio Python e, successivamente, attraverso l’utilizzo di tale linguaggio, verranno illustrati i principali pattern architetturali e di design. Il corso si chiuderà con l’analisi delle tecniche di validazione e collaudo illustrando, anche, alcuni strumenti software di supporto a tali attività.


Capacità di applicare conoscenze e comprensione.

Lo studente sarà in grado di lavorare in team con altri colleghi al fine di simulare la gestione di un progetto software in tutte le sue fasi. L’argomento di ogni progetto potrà essere scelto dal team. Il progetto consentirà di mettere in pratica tutte le nozioni acquisite durante il corso in merito al ciclo di vita del software, alle tecniche per l’analisi dei requisiti e per la progettazione guidata da UML, ai pattern e alla validazione e collaudo del software.


Competenze trasversali.

Il corso è fortemente basato sulla realizzazione di progetti in gruppo e sul brainstorming. Questo favorisce lo sviluppo di varie competenze trasversali, quali la capacità di lavorare in gruppo, la gestione dei conflitti, la comunicazione efficace, la capacità di ascolto e di sintesi di idee differenti. La necessità, per ciascun gruppo, di individuare un contesto applicativo reale su cui simulare la realizzazione di un progetto, assieme alla presenza delle sessioni di brainstorming, favorirà, la capacità, da parte degli studenti, di confrontarsi con scenari molto stimolanti, consentendo loro di sperimentare in anticipo un
modus operandi tipico del mondo del lavoro.


Knowledge and Understanding.

First of all, this course aims at helping students to understand the various phases of the software lifecycle; to this end, it takes into consideration the main methods of software production, with particular emphasis on agile techniques. Then, it proposes an in-depth study of UML diagrams and their use during the various phases of the software lifecycle, with particular emphasis on requirements analysis and design. As far as the implementation of the software is concerned, first of all this course introduces the Python language; then, through the use of this language, it illustrates the main architectural and design patterns. The course will terminate with the analysis of validation and testing techniques; for this purpose, it also illustrates some software tools to support these activities.


Capacity to apply Knowledge and Understanding.

Students will be able to work in team with other colleagues in order to simulate the management of a software project in all its phases. The topic of each project can be chosen by the team. The project will allow each team to put into practice all the notions acquired during the course about the software
lifecycle, the techniques for requirement analysis and for UML guided software design, patterns and, finally, software verification, validation and testing.


Transversal Skills.

This course is strongly based on group projects and brainstorming. This promotes the development of various transversal skills, such as the ability to work in a team, conflict management, effective communication, the ability to listen to and synthesize different ideas. The need, for each group, to identify a real application context on which it can simulate the realization of a project, together with the presence of brainstorming sessions, will promote the students’ ability to deal with very challenging scenarios, allowing them to experience in advance a modus operandi typical of the job’s world.



PROGRAMMA PROGRAM

Introduzione all'Ingegneria del Software (3 CFU)

Introduzione
I processi software
Lo sviluppo agile
L'ingegneria dei requisiti
La modellazione dei sistemi
La progettazione delle architetture
Progettazione e implementazione
Il testing del software
La manutenzione del software

Python (1 CFU)

I Pattern (3 CFU)

Cos'è un pattern
I pattern creazionali
Factory Method, Abstract Factory, Builder, Prototype, Singleton
I pattern strutturali
Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
I pattern comportamentali
Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor

Ingegneria del software avanzata (2 CFU)

Riuso del software
Component-based software engineering
Distributed software engineering
Service oriented software engineering
Systems engineering
Systems of systems
Real-time software engineering
Project Management
Project Planning
Quality Management
Configuration Management

Il programma dettagliato è disponibile sul sito di e-learning dell'Università all'indirizzo https://learn.univpm.it

Introduction to Software Engineering (3 ECTs)

Introduction
Software processes
Agile software development
Requirement engineering
System modeling
Architectural design
Design and implementation
Software testing
Software evolution

Python (1 ECT)

Patterns (3 ECTs)

What is a pattern?
Creational patterns
Factory Method, Abstract Factory, Builder, Prototype, Singleton
Structural patterns
Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
Behavioral patterns
Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor

Advanced software engineering (2 ECTs)

Software reuse
Component-based software engineering
Distributed software engineering
Service oriented software engineering
Systems engineering
Systems of systems
Real-time software engineering
Project Management
Project Planning
Quality Management
Configuration Management

The detailed program is available at the e-learning site of the University at the address https://learn.univpm.it


MODALITÀ DI SVOLGIMENTO DELL'ESAME DEVELOPMENT OF THE EXAMINATION
Modalità di valutazione dell'apprendimento.

L’esame prevede la realizzazione di due tesine e una prova orale in cui si discuteranno le tesine realizzate e verranno approfonditi gli aspetti teorici che ad esse si riferiscono. Le tesine, da svolgersi in gruppo, riguarderanno la progettazione di un sistema informatico di medie dimensioni e l'applicazione dei design pattern in Python. Durante il corso verranno condotte delle sessioni di brainstorming dove ciascun gruppo presenterà il proprio lavoro e gli altri gruppi potranno intervenire per osservazioni, suggerimenti, etc.


Criteri di valutazione dell'apprendimento.

Per superare l'esame lo studente deve dimostrare, attraverso le tesine, di aver compreso i concetti fondamentali del corso e di aver acquisito le competenze relative alla conduzione dei progetti di sistemi informatici e ai pattern. La valutazione massima è attribuita agli studenti che dimostrano un'ottima conoscenza dei contenuti di entrambi questi argomenti e un'ottima capacità di applicarli nelle due tesine.


Criteri di misurazione dell'apprendimento.

Viene attribuito un voto in trentesimi con eventuale lode


Criteri di attribuzione del voto finale.

Il voto complessivo dipende principalmente dalla qualità delle tesine e dal contributo che lo studente dimostrerà di aver dato per la loro realizzazione nonchè dalla padronanza sugli argomenti del corso che lo studente dimostrerà durante la prova orale.


Learning Evaluation Methods.

The examination includes the realization of two theses and an oral test in which the theses will be discussed and the theoretical aspects related to them will be deepened. The theses, to be held in groups, will deal with the design of a medium-sized computer system and the application of design patterns in Python. During the course brainstorming sessions will be conducted ,where each group will present their work and the other groups can intervene for observations, suggestions, etc.


Learning Evaluation Criteria.

In order to pass the exam, the student must demonstrate, through the theses, that he or she understands the basic concepts of the course and that he or she has acquired the skills related to the management of computer systems projects and patterns. The maximum score is given to students who demonstrate an excellent knowledge of the contents of both these topics and an excellent ability to apply them in the two theses.


Learning Measurement Criteria.

A score in thirtieths is given, possibly cum laude.


Final Mark Allocation Criteria.

The overall score depends mainly on the quality of the reports, on the contribution that the student will provide to their realization, as well as on the knowledge of the topics of the course that the student will show during the oral exam.



TESTI CONSIGLIATI RECOMMENDED READING

I. Sommerville, "Ingegneria del Software", Decima Edizione. Pearson Education. 2017

A. Shvets, "Dive into Design Patterns". Ebook.

M. Boscaini, "Imparare a programmare in Python". Apogeo. 2020


Dispense fornite dal docente disponibili sul sito di e-learning dell'Università https://learn.univpm.t

I. Sommerville, "Ingegneria del Software", Decima Edizione. Pearson Education. 2017

A. Shvets, "Dive into Design Patterns". Ebook.

M. Boscaini, "Imparare a programmare in Python". Apogeo. 2020


Notes provided by Professor available at the e-learning site of the University at the address https://learn.univpm.it


Scheda insegnamento erogato nell’A.A. 2020-2021
Le informazioni contenute nella presente scheda assumono carattere definitivo solo a partire dall'A.A. di effettiva erogazione dell'insegnamento.
Academic year 2020-2021

 


Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427