Master of science-level of the Bologna process in Data Science And Engineering - Torino Master of science-level of the Bologna process in Cybersecurity Engineering - Torino Master of science-level of the Bologna process in Cybersecurity Engineering - Torino Master of science-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino
The aim of the course is to provide a comprehensive understanding of the principles, methodologies, and tools needed for large-scale programming. Students will be guided in the analysis and formalization of software requirements, in the design using UML, in software project management, and in code testing. Emphasis will be placed on the development of teamwork skills, preparing students to collaborate effectively in a large-scale software development context.
The aim of the course is to provide a comprehensive understanding of the principles, methodologies, and tools needed for large-scale programming. Students will be guided in the analysis and formalization of software requirements, in the design using UML, in software project management, and in code testing. Emphasis will be placed on the development of teamwork skills, preparing students to collaborate effectively in a large-scale software development context.
By the end of the course, students will be able to:
• discuss the challenges associated with the development and maintenance of large software systems, including the economic significance of software, and identify various software quality attributes (functionality, correctness, efficiency, usability, portability, etc.);
• manage software configuration, including identifying configuration items, version control, change management, and configuration control;
• compare and contrast different software process approaches (waterfall, prototyping, iterative – agile methodologies);
• analyze and formalize functional and non-functional requirements of a software system, use UML to formalize requirements, and verify and validate requirements through inspections, prototypes, and formal models;
• use UML for software design, create design and architectural diagrams, and verify and validate designs;
• perform various types of testing on source code (white-box and black-box testing, unit, integration, and system testing), use inspection and review techniques and tools, and discuss the importance of testability, correctness, and reliability in the software development process;
• understand project management tools such as WBS, Gantt, PERT, milestones, and deliverables, and effectively manage a software project;
• collaborate and contribute effectively in a group environment, as demonstrated by their ability to complete a group project using a team assigned based on a survey reflecting their background and expected commitment.
By the end of the course, students will be able to:
• discuss the challenges associated with the development and maintenance of large software systems, including the economic significance of software, and identify various software quality attributes (functionality, correctness, efficiency, usability, portability, etc.);
• manage software configuration, including identifying configuration items, version control, change management, and configuration control;
• compare and contrast different software process approaches (waterfall, prototyping, iterative – agile methodologies);
• analyze and formalize functional and non-functional requirements of a software system, use UML to formalize requirements, and verify and validate requirements through inspections, prototypes, and formal models;
• use UML for software design, create design and architectural diagrams, and verify and validate designs;
• perform various types of testing on source code (white-box and black-box testing, unit, integration, and system testing), use inspection and review techniques and tools, and discuss the importance of testability, correctness, and reliability in the software development process;
• understand project management tools such as WBS, Gantt, PERT, milestones, and deliverables, and effectively manage a software project;
• collaborate and contribute effectively in a group environment, as demonstrated by their ability to complete a group project using a team assigned based on a survey reflecting their background and expected commitment.
Ability to develop small programs, knowledge of the structural elements of programming languages (functions, classes, packages), operational knowledge of Python or JavaScript. Knowledge of SQL and ability to define a database schema.
Ability to develop small programs, knowledge of the structural elements of programming languages (functions, classes, packages), operational knowledge of Python or JavaScript. Knowledge of SQL and ability to define a database schema.
Introduction
• Challenges in the development and maintenance of large software systems
• Software quality attributes: functionality, correctness, efficiency, usability, portability, etc.
• The economic value—both direct and indirect—of software
• Types of software systems
Configuration Management
• Identification of configuration items
• Version control, change management, configuration control
• Practical examples using GIT
Software Processes
• Waterfall
• Prototyping
• Iterative – Agile methodologies
UML
• Structural diagrams (class diagrams, deployment diagrams)
• Behavioral diagrams (sequence diagrams)
• Functional diagrams (use case diagrams)
Requirements Analysis and Modeling
• Functional and non-functional requirements
• Stakeholders
• Structure of a software requirements specification (SRS) document
• Use of UML to formalize requirements
• Requirements verification and validation: inspections, prototypes, formal models
Software Design
• Use of UML for design
• Design and architectural diagrams
• Design verification and validation
Verification and Validation
• Testability, correctness, reliability
• Testing: white-box and black-box testing, unit testing, integration testing, system testing; techniques and tools
• Inspections, walkthroughs, reviews, reading techniques
Software Project Management
• Tools: WBS, Gantt, PERT, milestones, deliverables
• Activities: estimation, planning, tracking, post-mortem analysis
Introduction
• Challenges in the development and maintenance of large software systems
• Software quality attributes: functionality, correctness, efficiency, usability, portability, etc.
• The economic value—both direct and indirect—of software
• Types of software systems
Configuration Management
• Identification of configuration items
• Version control, change management, configuration control
• Practical examples using GIT
Software Processes
• Waterfall
• Prototyping
• Iterative – Agile methodologies
UML
• Structural diagrams (class diagrams, deployment diagrams)
• Behavioral diagrams (sequence diagrams)
• Functional diagrams (use case diagrams)
Requirements Analysis and Modeling
• Functional and non-functional requirements
• Stakeholders
• Structure of a software requirements specification (SRS) document
• Use of UML to formalize requirements
• Requirements verification and validation: inspections, prototypes, formal models
Software Design
• Use of UML for design
• Design and architectural diagrams
• Design verification and validation
Verification and Validation
• Testability, correctness, reliability
• Testing: white-box and black-box testing, unit testing, integration testing, system testing; techniques and tools
• Inspections, walkthroughs, reviews, reading techniques
Software Project Management
• Tools: WBS, Gantt, PERT, milestones, deliverables
• Activities: estimation, planning, tracking, post-mortem analysis
Lessons.
Project and labs to support the execution of the project.
Lessons.
Project and labs to support the execution of the project.
M. Camille, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri - Software Engineering - A Structured Journey from Inception to Delivery
Slides, exercises and case studies on the course web site.
M. Camille, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri - Software Engineering - A Structured Journey from Inception to Delivery
Slides, exercises and case studies on the course web site.
Slides; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente;
Lecture slides; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (current year);
Modalità di esame: Elaborato progettuale in gruppo; Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Group project; Computer-based written test in class using POLITO platform;
...
The exam is a written, individual test lasting 1 hour, conducted in class without access to books or notes, and delivered through the university's exam platform. It includes multiple-choice questions as well as some exercises and theory questions.
Project work in teams of 5 students, developed exclusively during the course
The project consists of documenting and validating a small software project in the TypeScript language. Deliverables include:
- Requirements document
- Use Case document
- Class diagram and glossary
- Docker container
- Unit tests (black box, white box)
- E2E tests
The project is managed through a configuration management tool (GitLab) and makes use of open-source tools (e.g., Visual Studio Code, Jest, PlantUML, Cypress).
Project evaluation is based on the quality of the deliverables. Weekly lab sessions are organized to support students in carrying out the project.
Exam rules
- Students may choose to take only the written exam. In this case, the maximum achievable score is 23 out of 33.
- If the project is completed, a minimum score of 14/23 is required in the written exam to add the group project grade.
- The project will receive a grade between 0 and 10.
- The project must be carried out in parallel with the course and delivered at a fixed deadline that will be communicated during the course.
- Honors (cum laude) are awarded starting from a total score > 32 points (project points included).
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Group project; Computer-based written test in class using POLITO platform;
The exam is a written, individual test lasting 1 hour, conducted in class without access to books or notes, and delivered through the university's exam platform. It includes multiple-choice questions as well as some exercises and theory questions.
Project work in teams of 5 students, developed exclusively during the course
The project consists of documenting and validating a small software project in the TypeScript language. Deliverables include:
- Requirements document
- Use Case document
- Class diagram and glossary
- Docker container
- Unit tests (black box, white box)
- E2E tests
The project is managed through a configuration management tool (GitLab) and makes use of open-source tools (e.g., Visual Studio Code, Jest, PlantUML, Cypress).
Project evaluation is based on the quality of the deliverables. Weekly lab sessions are organized to support students in carrying out the project.
Exam rules
- Students may choose to take only the written exam. In this case, the maximum achievable score is 23 out of 33.
- If the project is completed, a minimum score of 14/23 is required in the written exam to add the group project grade.
- The project will receive a grade between 0 and 10.
- The project must be carried out in parallel with the course and delivered at a fixed deadline that will be communicated during the course.
- Honors (cum laude) are awarded starting from a total score > 32 points (project points included).
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.