B0010 - Software Architecture and Platforms

Academic Year 2023/2024

  • Teaching Mode: Traditional lectures
  • Campus: Cesena
  • Corso: Second cycle degree programme (LM) in Computer Science and Engineering (cod. 8614)

Learning outcomes

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.

Course contents

- 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

Readings/Bibliography

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)

Teaching methods

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.

Assessment methods

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

Teaching tools

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

Links to further information

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

Office hours

See the website of Alessandro Ricci