The knowledge that students acquired through the fundamental and optional courses mainly concern technologies that can be used to build software systems (e.g. programming languages, web technologies, security, computer architectures) and basic techniques and tools to support development (e.g. deployment, version control, requirements, design). In order to effectively employ such knowledge and skills, it is fundamental to organize the development activities and manage them, curate the quality of the software products, and account for the inevitable characteristic of software: its persistent change.
This course has the goal of expanding the knowledge and skills of students in the software engineering, especially concerning:
- management of the software development process
- organization of development activities
- quality assurance and process improvement
- software evolution
The students will acquire basic knowledge regarding:
- software development methods, focusing on agile methods
- software quality assurance and process improvement, in particular static analysis and technical debt assessment
- software evolution dynamics
A key component of software development (as it happens in industrial context) is team work. Key skills to be developed include:
- coordination of individuals and their interactions,
- planning and monitoring the project evolution,
- manage stakeholders' collaboration,
- set up self-organizing teams.
This course build on the foundations of software engineering as provided in the Software Engineering course: software development life-cycle, configuration management, software testing.
In addition the students are expected to be able to develop web applications.
The course will be organized with a balance of theory and practice.
Conventional lectures will introduce the theory concerning the main topics of the course. Such lectures will be followed by practical sessions (either collective exercises or hands-on development sessions).
A key component of software development that will be exercised is team work, including coordination of individuals and their interactions, leveraging stakeholders' collaboration, and achieving self-organization.
The main contents of the course are described in detail in the following books:
"The Nature of Software Development"
The Pragmatic Programmers
- K.Schwaber, M.Beedle. "Agile Software Development with Scrum",
"Succeeding with Agile",
- C.Sims, H.L.Johnson. “The Elements of Scrum” DYMAXICON, 2011.
- K.Schwaber and J.Sutherland
"The Scrum Guide" (http://www.scrumguides.org)
- P.Grubb, A.Takang
"Software Maintenance: concepts and practice"
World Scientific Publishing, 2003
Additional materials will be provided by the teacher during the course, including articles on scientific journal to represent the most advanced state of the art in the field.
Modalità di esame: prova orale obbligatoria; progetto di gruppo;
Exam: compulsory oral exam; group project;
The 80% of the assessment will be based on a team project work that will let the student apply the techniques illustrated during the course and acquire the relative skills.
The remaining 20% of the grade will be based on a final oral exam that will focus on the experience of the student during the project work and on the knowledge acquired during the course.