The aim of the course is to provide a comprehensive understanding of the principles, methodologies, and tools needed for large-scale software development. 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.
Programming capability (aka coding in an object oriented language) is a prerequisite.
The aim of the course is to provide a comprehensive understanding of the principles, methodologies, and tools needed for large-scale software development. 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.
Programming capability (aka coding in an object oriented language) is a prerequisite.
This course is designed to be later followed by the courses: Design and software architectures, Information systems, Software engineering 2.
Knowledge acquired: issues in the development of large software systems (communication and coordination between contractors and developers, evolution, correctness, reliability, usability). Software life cycles. The UML language. Operational modeling and prototyping. Verification and validation. Management and support of software projects.
Skills acquired: ability to analyze and formalize functional and non functional requirements of a software system. Ability to define an operational model of a software system. Ability to validate and verify a software system (through test, prototyping and inspection). Ability to define the organizational support of a software project (project management, configuration management, lifecycle).
Knowledge acquired: issues in the development of large software systems (communication and coordination between contractors and developers, evolution, correctness, reliability, usability). Software life cycles. The UML language. Operational modeling and prototyping. Verification and validation. Management and support of software projects.
Skills acquired: ability to analyze and formalize functional and non functional requirements of a software system. Ability to define an operational model of a software system. Ability to validate and verify a software system (through test, prototyping and inspection). Ability to define the organizational support of a software project (project management, configuration management, lifecycle).
Capability of developing small programs, knowledge of structural elements of programming languages (functions, classes, packages), operational knowledge of Javascript or Python. Knowledge of SQL and capability of defining a DB schema.
Capability of developing small programs, knowledge of structural elements of programming languages (functions, classes, packages), operational knowledge of Javascript or Python. Knowledge of SQL and capability of defining a DB schema.
Introduction (0.5 CFU)
-issues in the development and maintenance of large programs
-software qualities: functionality, correctness, efficiency, usability, portability etc
-economic value, direct and indirect, of programs
-program types
Configuration management (0.5 CFU)
- identification of configuration items
- version control, change management, configuration control
- practice with a CM tool (aka Git)
Software processes (0.5 CFU)
-waterfall, prototyping, iterative
- agile methodologies
UML (1.5 CFU)
-structural diagrams (class diagram, deployment diagram)
-dynamic diagrams (sequence diagram)
-functional diagrams (use case diagram)
Requirements Analysis and modelling (1.5 CFU)
- Functional and non functional requirements
- Stakeholders
- Outline of a requirement specification document
- use of UML to formalize requirements
- Validation and verification of requirements: inspections, prototypes, formal models
Software design(0.5 CFU)
- use of UML for design
-design and architectural diagrams
-Validation and verification of designs
Verification and Validation (2.5 CFU)
- testability, correctness, reliability a
- test: test white and black box, unit, integration, system; techniques and tools
- inspections, walkthrough, reviews, reading
Software project management(0.5 CFU)
- tools:WBS, Gantt, Pert, milestones, deliverables.
- activities: estimation, planning, tracking, post mortem
Introduction (0.5 CFU)
-issues in the development and maintenance of large programs
-software qualities: functionality, correctness, efficiency, usability, portability etc
-economic value, direct and indirect, of programs
-program types
Configuration management (0.5 CFU)
- identification of configuration items
- version control, change management, configuration control
- practice with a CM tool (aka Git)
Software processes (0.5 CFU)
-waterfall, prototyping, iterative
- agile methodologies
UML (1.5 CFU)
-structural diagrams (class diagram, deployment diagram)
-dynamic diagrams (sequence diagram)
-functional diagrams (use case diagram)
Requirements Analysis and modelling (1.5 CFU)
- Functional and non functional requirements
- Stakeholders
- Outline of a requirement specification document
- use of UML to formalize requirements
- Validation and verification of requirements: inspections, prototypes, formal models
Software design(0.5 CFU)
- use of UML for design
-design and architectural diagrams
-Validation and verification of designs
Verification and Validation (2.5 CFU)
- testability, correctness, reliability a
- test: test white and black box, unit, integration, system; techniques and tools
- inspections, walkthrough, reviews, reading
Software project management(0.5 CFU)
- tools:WBS, Gantt, Pert, milestones, deliverables.
- activities: estimation, planning, tracking, post mortem
Lessons.
Project and labs to support the execution of the project.
Lessons.
Project and labs to support the execution of the project.
M. Camilli, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri: Software Engineering. A Structured Journey from Inception to Delivery.
M. Fowler. UML distilled, Pearson, 2018
M. Camilli, E. Di Nitto, A. Fuggetta, A. Margara, M. G. Rossi, D. A. Tamburri: Software Engineering. A Structured Journey from Inception to Delivery.
M. Fowler. UML distilled, Pearson, 2018
Slides; Esercizi; Esercizi risolti; Video lezioni dell’anno corrente;
Lecture slides; Exercises; Exercise with solutions ; Video lectures (current year);
Modalità di esame: Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Computer-based written test in class using POLITO platform;
...
The final exam is made of two parts: Written exam (mandatory) + Project (optional)
---Project, in 4 people teams, developed only during the course: consists in developing a small project in Typescript or Python, delivering: requirement document, design document, code, test cases (unit, integration, acceptance), estimation document.
The project is developed using a configuration management tool (aka GitLab) and open source tools (aka Jest, Mocha, PlantUmL, Jacoco, Cypress and similar).
The project is graded considering the quality of the deliverables.
Weekly labs are organized to support the students in the execution of the project.
---Written exam, individual, 1 hour duration, no access to books or notes.
The exam is made of exercices and open questions. Past exams with solutions are available on the course web site.
---The final grade (max 33) depends on the grade of the project (max 14 points) + grade of the written exam (max 20 points).
-- The project grade must be at least 8/14
-- The written exam grade must be at least 11/20
-- 30cum laude requires >= 32.5 points
In case the project is not done, max possible grade is 20/33, the written exam grade must be at least 14/20
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: Computer-based written test in class using POLITO platform;
The final exam is made of two parts: Written exam (mandatory) + Project (optional)
---Project, in 4 people teams, developed only during the course: consists in developing a small project in Typescript or Python, delivering: requirement document, design document, code, test cases (unit, integration, acceptance), estimation document.
The project is developed using a configuration management tool (aka GitLab) and open source tools (aka Jest, Mocha, PlantUmL, Jacoco, Cypress and similar).
The project is graded considering the quality of the deliverables.
Weekly labs are organized to support the students in the execution of the project.
---Written exam, individual, 1 hour duration, no access to books or notes.
The exam is made of exercices and open questions. Past exams with solutions are available on the course web site.
---The final grade (max 33) depends on the grade of the project (max 14 points) + grade of the written exam (max 20 points).
-- The project grade must be at least 8/14
-- The written exam grade must be at least 11/20
-- 30cum laude requires >= 32.5 points
In case the project is not done, max possible grade is 20/33, the written exam grade must be at least 14/20
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.