ITALIANO
Italian
Conoscenze sulla programmazione orientata agli oggetti
Knowledge of Object Oriented Programming
L'insegnamento ha la finalità di consentire agli studenti e alle studentesse di conoscere le nozioni di base dell'ingegneria del software, sia nel suo approccio tradizionale sia nell'approccio agile. Gli studenti e le studentesse impareranno, 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 students to learn the basics of software engineering, in both its traditional approach and its agile one. Therefore, students 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.
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, sia di tipo plan-based che 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 proseguirà con l’introduzione di una serie di concetti fondamentali per l’ingegneria
informatica quali quelli relativi ai pattern, alla valutazione del software, al testing del software, alla sua manutenzione, al Component-
Based Development Paradigm, alla Service Oriented Architecture
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.
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.
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 both plan-based and 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 continue with the introduction of a number of fundamental concepts for computer engineering, such as those related to
patterns, software evaluation, testing and maintenance, the Component-Based Development Paradigm, the Service Oriented
Architecture, microservices, and dependability.
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
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.
Teoria
Unified Modeling Language (UML) (2 CFU)
Unified Process (UP) (2 CFU)
I pattern (1 CFU)
Ciclo di vita di un progetto e metodologie agili (1 CFU)
Il software come prodotto (0.5 CFU)
Il software come processo (0.5 CFU)
Ingegneria del software avanzata (1 CFU)
Esercitazioni
• Python (1 CFU)
• Enterprise Architect
Il programma dettagliato è disponibile sul sito di e-learning dell'Università all'indirizzo https://learn.univpm.it
Theory
Unified Modeling Language (UML) (2 ECTs)
Unified Process (UP) (2 ECTs)
Patterns (1 ECTs)
Project lifecycle and agile methodologies (1 ECTs)
Software as a product (0.5 ECTs)
Software as a process (0.5 ECTs)
Advanced software engineering (1 ECT)
Exercises
• Python (1 ECTs)
• Enterprise Architect
The detailed program is available at the e-learning site of the University at the address https://learn.univpm.it
L’esame prevede la realizzazione di una tesina e una prova orale in cui si discuterà la tesina realizzata e si discuteranno gli aspetti teorici introdotti durante il corso. La tesina, da svolgersi in gruppo, riguarderà la progettazione di un sistema informatico di medie dimensioni e la sua realizzazione in Python (con l’applicazione facoltativa di qualcuno dei pattern studiati).
Per superare l'esame lo studente o la studentessa deve dimostrare, attraverso la tesina, di aver compreso i concetti fondamentali del corso e di aver acquisito le competenze relative alla conduzione dei progetti di sistemi informatici. La valutazione massima è attribuita agli studenti e alle studentesse che dimostrano un'ottima conoscenza dei contenuti degli argomenti e un'ottima capacità di applicarli nella tesina.
Viene attribuito un voto in trentesimi con eventuale lode
Il voto complessivo dipende principalmente dalla qualità della tesina e dal contributo che lo studente dimostrerà di aver dato per la sua realizzazione nonchè dalla padronanza sugli argomenti del corso che lo studente o la studentessa dimostrerà durante la prova orale.
The examination includes the realization of one thesis and an oral test in which the thesis will be discussed and the theoretical aspects related to them will be deepened. The thesis, to be held in groups, will deal with the design of a medium-sized computer system and its implementation in Python (with the possible application of some of the studied patterns).
In order to pass the examination, the student must demonstrate, through the thesis, that he/she understands the basic concepts of the course and that he/she has acquired the skills related to the management of computer systems projects. The maximum score is given to the students who demonstrate an excellent knowledge of the topics and an excellent ability to apply them in the thesis.
A score in thirtieths is given, possibly cum laude.
The overall score depends mainly on the quality of the thesis, on the contribution that the student will provide to its realization, as well as on the knowledge of the topics of the course that the student will show during the oral examination.
• J. Arlow, I. Neustadt, "UML 2 e Unified Process", Seconda Edizione. McGraw Hill. 2007.
• 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
• J. Arlow, I. Neustadt, "UML 2 e Unified Process", Seconda Edizione. McGraw Hill. 2007.
• 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
No
No
Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427