- Docente: Paolo Ciancarini
- Credits: 9
- SSD: INFO-01/A
- Language: Italian
- Moduli: Paolo Ciancarini (Modulo 1) Giancarlo Succi (Modulo 2)
- Teaching Mode: Blended Learning (Modulo 1); Blended Learning (Modulo 2)
- Campus: Bologna
- Corso: First cycle degree programme (L) in Computer Science (cod. 8009)
-
from Sep 23, 2026 to Dec 16, 2026
-
from Sep 21, 2026 to Dec 14, 2026
Learning outcomes
At the end of the course the student knows the basics of software systems construction: methods and tools for analyzing, designing and measuring the qualities of software products. The student will be able to develop a specification starting from some requirements written in natural language. The student will be able to model a software system using UML and to develop the code using an object oriented language using collaborative versioning and code analysis tools.
Course contents
The course introduces the principles and practices of software engineering, with attention to the software lifecycle, quality, requirements, and development processes. It also includes the critical use of LLMs as support for analysis, design, documentation, and testing, in order to develop software effectively, iteratively, and value-oriented.
1. Software production and the nature of software, and the role of software in industry and services.
2. Software lifecycle and development activities: requirements, design, coding, testing, release, and maintenance.
3. Software development processes and process models, with a focus on agile methods and iterative work.
4. Scrum: roles, events, artifacts, and team dynamics.
5. Software requirements: elicitation, analysis, specification, and change management, also with LLM support for summarization and reformulation.
6. User stories, product backlog, prioritization, and Definition of Done, with attention to the use of LLMs for brainstorming and requirements review.
7. Product Owner, stakeholders, and product value management.
8. Quality, productivity, risks, and economic aspects of software development, including reflections on the responsible use of LLMs in development.
Readings/Bibliography
P.Jalote, A Concise Introduction to Software Engineering: With Open Source and GenAI, Springer 2025
Teaching methods
The course is delivered in a blended format, alternating in-person lectures and online activities, with a progressive, hands-on approach. Lectures introduce the core concepts, while exercises, discussions, and examples guide the use of software engineering tools and methods, including LLMs and agile practices.
Assessment methods
Assessment of learning by means of a final oral and/or written exam, designed to verify the understanding of the course contents and the ability to apply them to case studies and design situations.
Teaching tools
The course tools include slides, guided exercises, case studies, backlog and group-work management tools, and digital collaboration environments. Open-source tools and LLMs may also be used for requirements analysis, writing, review, testing, and documentation.
Office hours
See the website of Paolo Ciancarini
See the website of Giancarlo Succi
SDGs
This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.