Classes


This page contains the material you have to read prior to the classes (lectures and problems). At the end of each lecture a mini-test will take place on the lecture subjects.
The material includes the bibliography of the Software Architecture course, Software Architecture in Practice (SAiP), 3rd edition, Documenting Software Architecture (DSA), 2nd edition, Domain Driven Design (DDD), 1st edition,  Microservices Patterns (MP), 1st edition, plus the articles and other sources of information that will be used in the course.

Week 1

  • Lecture 1 - Presentation, Logistics, and Making Architecture Matter by Martin Fowler (Slides).
  • Lecture 2 - The Life Cycle of a Domain Object (Chapter 6 of DDD).
  • Lecture 3 - What is a Software Architecture (Sections of SAiP 1.1, 3.3-3.7).
  • Problems 1 - Domain Models: example of Entities, Value Objects and Aggregate (Chapter 7 of DDD, pages 163-179); Monolith in the project: master branch.

Week 2

  • Lecture 4 - Maintaining Model Integrity (Chapter 14, pages 331-373, until Separate Ways, of DDD).
  • Lecture 5 - Microservices (Microservices by Martin Fowler).
  • Lecture 6 - Modular Monolith (Modular Monolith, 5 articles, by Kamil Grzybek, In Defence of the Monolith, Part I and Part II, by Dan Haywood).
  • Problems 2 - Modular Monolith in the Project: the modular monolith branch. 

Week 3

  • Lecture 7 - Managing Transactions with Sagas (Sections 4.1-4.3 of MP).
  • Lecture 8 - External API Patterns (Sections 8.1-8.2 of MP).
  • Problems 3 - Microservices in the Project Code: the microservices branch. (Sections 4.4 and 8.3 of MP).
  • Lecture 9 - Migrate to Microservices (Chapter 4 of Business Logic Migration: From Monolith to Microservices Architecture).
  • Lecture 10 - Quality Scenarios and Tactics (Chapter 4 of SAiP).
  • Problems 4 - Course Project: define goals and planning.

Week 4

  • Lecture 11 - Availability Scenarios (Chapter 5 of SAiP).
  • Lecture 12 - Availability Tactics (Chapter 5 of SAiP).
  • Problems 5 - Course Project. The Graphite case study.
  • Lecture 13 - Modifiability Scenarios and Tactics (Chapter 7 of SAiP).
  • Lecture 14 - Usability Scenarios and Tactics (Chapter 11 of SAiP).
  • Problems 6 - Course Project. The Graphite case study: functionalities and usability scenarios and tactics.

Week 5

  • Lecture 15 - Architectural Views and Styles (Sections P.3, P.4, I.1-I.5 of DSA).
  • Lecture 16 - Module Views (Chapter 1 of DSA).
  • Problems 7 - Course Project. The Graphite case study: performance scenarios and tactics.
  • Lecture 17 - Decomposition and Uses Styles (Section 2.1 and 2.2 of DSA).
  • Lecture 18 - Generalization and Layered Styles (Sections 2.3 and 2.4 of DSA).
  • Problems 8 - Course Project. The Graphite case study: more performance and availability scenarios and tactics.

Week 6

  • Lecture 19 - Aspects and Data Model Styles (Sections 2.5 and 2.6 of DSA).
  • Lecture 20 - Component-and-Connector Views (Chapter 3 of DSA).
  • Problems 9 - Course Project. The DVD Catalog case study.
  • Lecture 21 - Event-Based and Repository Styles (Sections 4.4 and 4.5 of DSA).
  • Lecture 22 - Client-Server and Peer-to-Peer Styles (Sections 4.3.1 and 4.3.2 of DSA).
  • Problems 10 - Course Project. The Graphite case study: architectural views.

Week 7

  • Lecture 23 - Data-Flow Styles and Building a complete Tweet index (Section 4.2 of DSA and Slides).
  • Lecture 24 - Service-Oriented Architecture Style and Adventure Builder (Section 4.3.3 of DSA).
  • Problems 11 - Course Project. The Adventure Builder case study.
  • Lecture 25 - Crosscutting Styles (Section 4.6 of DSA).
  • Lecture 26 - Allocation Styles (Sections 5.1-5.4 of DSA).
  • Problems 12 - Course Project.

Case Studies

Scenarios and Tactics