SOFTWARE ENGINEERING
cod. 06015

Academic year 2021/22
3° year of course - First semester
Professor
- Federico BERGENTI
Academic discipline
Informatica (INF/01)
Field
A scelta dello studente
Type of training activity
Student's choice
72 hours
of face-to-face activities
9 credits
hub:
course unit
in ITALIAN

Learning objectives

The course starts from the basics of the well-know Software Crisis phenomenon. It then passes through the study of classic development techniques. It eventually ends to provide the basic of architectural aspects of modern software systems.
The course is structured into frontal lessons and a set of exercizes in Java.

Taking Dublin Indicators into account:

Knowledge and understanding
The course introduces the first concepts related to software engineering. Particular emphasis is given to the understanding of the classical techniques. The reference texts are in Italian, but standard English terminology is commonly used during the lessons as goodwill to the consultation of international scientific literature.

Applying knowledge and understanding
The knowledge presented is always applied to the solution of specific problems. The exercises that accompany the course are focused on solving exercises and problems, particularly in the development of Java-based software systems. Often, the solution methods are presented in the form of an algorithm, developing in the students the ability to structure procedures that are useful in many parts of computer science, and not only in the study of software engineering.

Making judgments
The exercises, which are proposed in relation to the theoretical part presented in classes, can be solved individually or in groups. The comparison with classmates, work at home or in classroom, favors the development of specific skills in students to enable the explanation of arguments to fellows and teachers. Often, exercises can be solved in different ways and the listening to the solutions proposed by others allows students to develop the ability to identify common structures, beyond the apparent superficial differences.

Communication skills
The numerous discussions on the different methods to solve problems allow students to improve communication skills. Specific communication of software engineering concepts is also usually used during classes and exercises.

Learning skills
The study of the origins of technological solutions and their introduction motivated by qualitative and quantitative considerations contributes to the students’ ability to learn in a deep way and not just superficial and repetitive. The knowledge acquired is never rigid and definitive, but it is adaptable to any evolution and change of perspective and context.

Prerequisites

- - -

Course unit content

Insights on object-oriented programming.
Insights on the Java language.
Insights on concurrent programming in Java.
Programming techniques to foster code reuse.
Techniques for the of general-purpose software frameworks.
Introduction to design patterns and related notations.
Introduction to some general-purpose software architectures.
Introduction to software development processes.
Insights on the analysis and testing phases.
Introduction to software project management and related notations.




Approfondimenti sulla programmazione orientata agli oggetti.
Approfondimenti sul linguaggio Java.
Approfondimenti sulla programmazione concorrente in linguaggio Java.
Tecniche di programmazione finalizzate al riuso del codice.
Tecniche per la realizzazione di framework di uso generale.
Introduzione ai design pattern e relative notazioni.
Introduzione ad alcune architetture software di utilizzo comune.
Introduzione ai processi di sviluppo del software.
Approfondimenti sulle fasi di analisi e specifica dei requisiti e di testing.
Cenni alla gestione dei progetti software e alle relative notazioni.



Part 1 - Software Development Processes

Part 2 - Languages for Software ​​Modeling

Part 3 - Requirements Analysis

Part 4 - Software Architectures

Part 5 - Development Environments

Part 6 - Software Design and Coding

Part 7 - Testing, Verification and Validation

Part 8 - Methods for Software-Project Management

Full programme

- - -

Bibliography

Simon Bennett, John Skelton, Ken Lunn, UML, McGraw-Hill
Bruce Eckel, Thinking in Java, available at http://www.mindview.net, II edition
Bruce Eckel, Thinking in Patterns, available at http://www.mindview.net
E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison-Wesley

Teaching methods

Classes are held at the Campus of Science and Technologies.
Meetings with the teacher can be requested via e-mail

Assessment methods and criteria

Being able to understand and make appropriate use of techniques of software engineering.
The exam consists of a written test. A laboratory test follows the written test only when the written test is sufficient.
An oral session can be requested when the laboratory test is sufficient.

Other information

- - -