Podczas tworzenia systemów informatycznych, szczególnie dużych, dobra
architektura jest jednym z ważniejszych aspektów, o które należy zadbać.
Dobra, czyli taka, która zapewni realizację wymagań zarówno funkcjonalnych,
jak i nie funkcjonalnych, która umożliwi rozwój i utrzymanie systemu w
granicach akceptowalnych kosztów na przestrzeni lat. Nie bez znaczenia są
także metody pracy, które mogą sprzyjać tworzeniu dobrej architektury, mogą
też to utrudniać. Bardzo popularną w ostatnich latach metodą wspierającą
tworzenie dobrej architektury jest Domain Driven Design i tą właśnie metodyką
zajmiejmy się przez przeważającą część semestru.
W ramach wykładu zostaną poruszone następujące zagadnienia:
* Introduction to IT Architecture, different roles
* Architectural styles like REST, Microservices, etc.
* Requirements management
* Ways of working: TDD, Agile
* Domains, Subdomains, and Bounded Contexts
* Context Maps
* Architecture
* Entities and Value Objects
* Services
* Domain Events
* Modules
* Aggregates
* Factories
* Repositories
* Integrating Bounded Contexts
* Application
* Integration patterns and practices
* Enterprise Architecture and TOGAF
Wykład będzie miał charakter głównie teoretyczny, chociaż niewykluczona jest
również część praktyczna.
**Wymagania**
Biegłość programowania w technologii obiektowej, podstawy baz danych.
**Literatura**
1. Eric Evans, _Domain-Driven Design: Tackling Complexity in the Heart of Software_ , Prentice Hall, 2003
2. Vernon Vaughn, _Implementing Domain-Driven Design_ , Addison-Wesley Professional, 2013