B0010 - SOFTWARE ARCHITECTURE AND PLATFORMS

Anno Accademico 2023/2024

  • Docente: Alessandro Ricci
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Inglese
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Cesena
  • Corso: Laurea Magistrale in Ingegneria e scienze informatiche (cod. 8614)

Conoscenze e abilità da conseguire

The goal of this course is to introduces the essential concepts of software architecture and related abilities expected for a software architect in the practice of software engineering, including the application of modern architectures (e.g. Service-Oriented Architectures and REST, microservices, event-driven Architectures, cloud-computing architectures) to concrete application contexts, including cyber-physical systems and the IoT. The student will learn to: - analyze how a software architecture relates to an organization and identify its quality attributes; - design software architectures using fundamental principles, patterns, and styles; - implement, deploy and manage software architectures using proper software platforms; - document and evaluate software architectures, using standard languages (e.g. UML) and tools.

Contenuti

- Software Architecture introduction
-- What do we mean for Software Architecture and Architectural Thinking
-- The Role of Software Architect

- Software Architecture foundations
-- Basic Concepts and Design Principles
-- Architectural Styles and Patterns
--- main examples including Layered Architecture, Clean Architecture, Service-Oriented Architecture, Microservices, Event-Driven Architecture

- Software Architecture and the Software Engineering Process
-- Architectural Significant Requirements
-- Designing, implementing, evaluating, documenting, evolving a software architecture
-- Software Architectures and Domain-Driven Design
-- Software Architectures and DevOps

- Software Architectures in Practice - selected domains and case studies
-- Pervasive Computing, Internet of Things and Web of Things - with a focus on Digital Twins
-- Enterprise Applications and Cloud Computing
-- Autonomous/Intelligent Systems - with a focus on Intelligent Agents and Cognitive Architectures

Testi/Bibliografia

Mark Richardson and Neal Ford. Fundamental of Software Architecture - An Engineering Approach O'Reilly (2020)

Richard N. Taylor et al. Software Architecture - Foundations, Theory, and Practice. Wiley (2010)

Robert C. Martin. Clean Architecture. Addison Wesley (2018)

Len Bas et al. Software Architecture in Practice. Addison Wesley (2022, 4th ed.)

Martin Fowler. Patterns of Enterprise Application Architecture. Addison Wesley (2003)

Gregor Hohpe. The Software Architect Elevator. O'Reilly (2020)

Metodi didattici

Three credits (about 30 hours) are devoted to theory and activities in the classroom and three credits (about 30 hours) to practice in the lab.

Modalità di verifica e valutazione dell'apprendimento

The final assessment is composed by two parts:
- practical part: a set of three assignments assigned during the course or a single project assigned at the end of the course
- an oral discussion, with questions about the theory and the assignments/project

Strumenti a supporto della didattica

- slides projected during the lectures, available on the course web site
- scientific papers and articles

Link ad altre eventuali informazioni

https://virtuale.unibo.it/course/view.php?id=53404

Orario di ricevimento

Consulta il sito web di Alessandro Ricci