95627 - Software Engineering

Academic Year 2024/2025

  • Teaching Mode: Traditional lectures
  • Campus: Cesena
  • Corso: Second cycle degree programme (LM) in Digital Transformation Management (cod. 5815)

Learning outcomes

Students will get acquainted with basic aspects of the following topics: - service-oriented architectures, API, microservices: principles, technologies, enterprise viewpoint - cloud computing: principles, technologies, enterprise viewpoint - agile development: principles and methodologies, the role of testing, the case of SCRUM - devops: DVCS, agile project management tools, continuous development/integration/delivery - intelligent systems: definitions, problems, applications - multi-agent systems for the engineering of intelligent systems: models, technologies, methodologies

Course contents

The course is structured in two parts.

The first one, "Principles and Methods", provides an introduction about software engineering and its role in modern software development, there including methodologies and DevOps tools and practices.

The second part focuses on the "Engineering of Distributed Systems and Enterprise Applications", and it delves into the details of how modern service-oriented and microservices-based applications are architected.

Details about the topics to be presented in each part is provided below:

PRINCIPLES AND METHODS

- software development phases: requirements analysis, design, implementation, testing, maintenance

- software project management tasks: dependency management, build, test, release, deploy

- software engineering methodologies: waterfall, agile, lean, extreme programming

- DevOps: distributed version control, build automation, continuous development/integration/delivery

ENGINEERING DISTRIBUTED SYSTEMS AND ENTERPRISE APPLICATIONS

- service-oriented architectures, API, microservices: principles, technologies, enterprise viewpoint

- cloud computing: principles, technologies, enterprise viewpoint

Readings/Bibliography

M. Richards, N. Ford. Fundamentals of Software Architecture: An Engineering Approach. A Comprehensive Guide to Patterns, Characteristics, and Best Practices O'Reilly

R. C Martin Clean Agile: Back to Basics Pearson

L. Zhu, L. J. Bass DevOps: A Software Architect's Perspective Addison Wesley

T. Erl Service-Oriented Architecture Concept, Technology, and Design. Prentice-Hall

T. Erl et al. SOA with REST - Principles, Patterns & Constraints for Building Enterprise Solutions with REST. Prentice-Hall. 2013

S. Newmann Building Microservices. O’Reilly

C. Richardson. Microservices Patterns. Manning, 2019

Frederick Phillips Brooks Jr. The Mythical Man-Month: Essays on Software Engineering Addison-Wesley

Eric Evans Domain-Driven Design: Tackling Complexity in the Heart of Software Addison-Wesley

Teaching methods

Lectures and hands-on practical sessions in the lab. Lectures will be face-to-face, yet the whole course will be recorded and access to recording may be granted to students upon request, in case specific needs arise.

Assessment methods

The exam consists of a written and an oral test.
In the written one, students will have to answer questions about the topics of the course.
In the oral one, students will have to present and defend a software project they developed, either individually or in a team.

Evaluation criteria and grading:

  • 18-23: the student shows sufficient knowledge about the basic concepts and a sufficient technical and methodological preparation;
  • 24-27: the student shows good knowledge about the conceptual part and adequate capabilities of applying concepts in practice;
  • 28-30: the student shows good knowledge about the conceptual part, good critical and analytical skills, a good capability of applying concepts in practice by means of a satisfactory technical and methodological preparation;
  • 30L: the student shows excellent knowledge about the conceptual part, extensive critical and analytical skills, remarkable abilities in applying concepts in practice by means of a robust technical and methodological preparation.

Teaching tools

During the term of the lectures, material (both slides and lab exercises) will be available on Virtuale.

Links to further information

https://github.com/unibo-dtm-se/

Office hours

See the website of Giovanni Ciatto