Software verification and validation

A.Y. 2020/2021
Overall hours
Learning objectives
The aim of the course is to provide a deeper understanding about validation (i.e., checking if the software product matches the client's expetctations) and verification (i.e., checking if the software product matches the specification written by the analyst): in particular, the focus is on static analysis, testing and formal analysis.
Expected learning outcomes
The student will be able to use in a proficient and critical way some widespread testing and analysis frameworks, while understanding their methodolgical and theoretical core aspects.
Course syllabus and organization

Single session

Lesson period
Second semester
Lectures will be mainly streamed via YouTube (with synchronous interaction with the instructors); streamed videos will be available until the conclusion of the course. Some lesson could be registered in asynchronous form. Laboratory exercises will conducted autonomously by the students and special synchronous feedback sessions will be organized. The oral examinations will be organized via MS Teams.
Course syllabus
The main topics covered during the course are:

- Testing introduction using JUNIT 4 and JUNIT 5
- Parametric test
- Testing Exceptions
- JUNIT Extension models
- Grouping and hierarchy test
- CustomAssertion and other Verify Patterns
- Dependency Injection
- Acceptance Test with Cucumber
- Static Analysis
- Mutation Analysis
- Property Based Testing
- Model Checking with PathFinder
- Concurrency Analysis with Java PathFinder
- Symbolic Java PathFinder
- Java Modelling Language
Prerequisites for admission
Understanding of the terminology of software engineering and the basic techniques of managing the software development process, software design.

It is therefore strongly recommended that you pass a software engineering exam.
Teaching methods
The teaching is done through lectures. At the end of each lesson, students are given assignments that are collected and analysed at the beginning of the next lesson.
Teaching Resources
Slides presented in class and repositories are provided with the code presented and discussed in class. A collaborative written site with the notes about the lessons is also available online.

The material is available from the course website:
Assessment methods and Criteria
The exam consists of an oral test.
During the oral exam, candidates are asked to prepare and discuss a seminar on a topic with both technological and theoretical aspects related to the topics covered during the lessons. In addition, during the exposition the candidate may be asked to answer questions on the topics of the program.

At the end, the overall evaluation is expressed, expressed in thirtieths, taking into account the following parameters: degree of knowledge of the topics and technologies, ability to apply knowledge to concrete problems, ability of critical reasoning, clarity of display and properties of language.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Educational website(s)
By appointment only
Office 5004, Via Celoria 18, Milan