L'insegnamento prevede 2.0 CFU erogati con Didattica Innovativa come segue:
Cotutela con mondo esterno
Blended Learning & Flipped Classroom
Corso di Studi
Codice Piano di Studio preventivamente approvato
Ing - Civ (Mag.)(ord. 270) - MI (495) GEOINFORMATICS ENGINEERING - INGEGNERIA GEOINFORMATICA
089184 - SOFTWARE ENGINEERING 2
052532 - SOFTWARE ENGINEERING 2
Ing Ind - Inf (Mag.)(ord. 270) - MI (263) MUSIC AND ACOUSTIC ENGINEERING
054443 - SOFTWARE ENGINEERING 2
Ing Ind - Inf (Mag.)(ord. 270) - MI (474) TELECOMMUNICATION ENGINEERING - INGEGNERIA DELLE TELECOMUNICAZIONI
054443 - SOFTWARE ENGINEERING 2
Ing Ind - Inf (Mag.)(ord. 270) - MI (481) COMPUTER SCIENCE AND ENGINEERING - INGEGNERIA INFORMATICA
054443 - SOFTWARE ENGINEERING 2
The goal of the course is to enable students to master the engineering methods and processes that are necessary to produce complex software with industrial strength quality. The course covers the software process and its organization, requirements, design methods and tools, specification, verification and validation. Each topic is treated both theoretically and practically. Through the course, the flipped class teaching method will be exploited to allow students to acquire a good level of autonomy in learning new topics.
Risultati di apprendimento attesi
Expected learning outcomes
Knowledge and understanding
Students will learn how to:
- Identify the phases of software development and the specific activities associated with each phase
- Understand an Alloy specification
- Analyze software code written by others
- Identify architectural styles and patterns
Applying knowledge and understanding
Given specific project cases, students will be able to:
- Detail the corresponding requirements
- Identify, analyze and comment on specific architectural choices
- Apply the theory to assess the availability of a software architecture
- Test code fulfilling the corresponding specification documents
- Write software components in JEE
Given a relatively complex problem, students will be able to:
- Analyze and understand the goals, assumptions and requirements associated with that problem and model them
- Define the architecture of the corresponding software system using proper styles and patterns
- Identify and define the needed verification and validation activities
- Estimate the size of the system and the resources needed for its development, identify risks and define mitigation actions
Students will learn to:
- Write a requirement specification document
- Write a design specification document
- Present their work in front of their colleagues during project labs
Lifelong learning skills
- Students will learn how to develop a realistic project
- Students choosing to focus on the research project will learn how to conduct a research activity on some specific aspect of software engineering, developing some innovative solution or some empirical experiment.
The software process
Project management and cost estimation
Notations and specification methods: Alloy
Problem definition: requirements engineering
Importance of requirements
The Jackson-Zave approach (requirements, specification, domain)
Usage of Alloy and UML to support requirement modeling activities
Methods and technologies for product development
Software architectures and architectural styles
Middleware and software components: J2EE
Verification and validation
The verification and validation process
Analysis, reviews and walkthroughs techniques
The various facets of testing
The flipped class method will be exploited to help students in learning part of the topics related to requirement engineering and how to apply them in practical contexts.
A project laboratory is an integral part of the course. The objective of the project is to help students in applying the approaches and principles that are taught in class. Projects will be assigned at the beginning of the semester. Project artifacts (Requirement Analysis and Specification Document and Design Document) are expected to be released at fixed deadlines that will be defined by the time the project will be assigned. The evaluation of projects will be based on the produced artifacts and on a presentation. The project laboratory will include class discussions supervised by the course instructor. Tutors will be available to support students in their work.
Some additional project laboratory activities can be taken by interested students. These concern the development and testing of a running implementation of the assigned project, or the development of innovative research (new tools, formal specifications or empirical experiments) concerning some aspects of software engineering that will be agreed with the instructor.
Students who cannot take the project laboratory in the first semester can work at the project on their own in the second semester. In this case, no support by project tutors will be possible.
Students are required to know the principles and methods of object-oriented design, the basic notions of UML, testing, and configuration management.
Modalità di valutazione
The assessment will be based on a written exam at the end of the course and on the projects developed in the laboratory part of the course. Projects will be presented to the instructor at the end of the course. The scores of the written exam and of the project will be summed to compute the total score. The written exam is open book. It will assign up to 16 points and will be considered sufficient when the score will be equal to or higher than 9.
The project part will assign up to 16 points and will be considered sufficient when the score is equal to or higher than 9. Students can take the written part at any exam session during the year. 30 cum laude will be assigned when the total score is equal to or higher than 31.
The written exam can be replaced by the implementation and testing project or by the research project. These will have to be agreed with the course instructor by the deadline that will be specified as part of the course schedule. Implementation and testing projects, as well as research projects, will not be available during the second semester.
The following table provides a detailed overview of the elements that will be considered in the various assessment activities.
Type of assessment
Solution of numerical problems:
- Computation of availability estimates for - a software architecture
- Cost and effort estimation
- Software testing and analysis exercises
Exercises focusing on design aspects:
- Definition of the Alloy model for a given problem
- Definition of the high level architecture for a software system
- Definition of code fragments in JEE to fulfill specific requirements
- Definition of a test plan and/or of a project plan for a specific software
1, 2, 3, 4, 5
Assessment of laboratorial artefacts
Assessment of the design and experimental work developed by students, either individually or in groups, as part of the project
2, 3, 4, 5
Assessment of the project presentation
2, 3, 4, 5
Hans van Vliet, Software Engineering: Principles and Practice, 3rd Edition, Editore: Wiley, Anno edizione: 2008, ISBN: 978-0-470-03146-9 Note:
If for any reason you are not included in the official list of course students, you may not been able to access the course material. In this case, I can grant you access provided that you request it through the site.
Carlo Ghezzi, Mehdi Jarayeri, Dino Mandrioli, Fundamentals of Software Engineering, Editore: Prentice-Hall, Anno edizione: 2002, ISBN: 0133056996
Tipo Forma Didattica
Ore di attività svolte in aula
Ore di studio autonome
Laboratorio Di Progetto
Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese