Tomas Petricek
email: t.petricek@kent.ac.uk
twitter: @tomaspetricek
office: S129A
Software Architecture
Planning a system before it is built
High-level overview of components
Christopher Alexander
A Quality
Without a Name
Feeling of satisfaction and contentment engendered by good building
Gang of Four Patterns
Beyond Gang of Four
Architectural style
How you approach the problem?
Form follows function ideal of modernism
How is system divided into components?
How is development divided into teams?
How components communicate with each other?
Styles do not prescribe specific implementation!
How is the problem divided into component?
What components talk to what other components?
How is the communication set-up?
What teams work on what parts of the system?
Layered architecture
Components in several layers
Can only call components from one layer below!
Operating system with kernel, system, user processes
Enterprise with presentation, business & persistence
Web apps with web page, server and database
Network stack TCP/IP protocol and such
Potential advantages
Potential problems
Three-tier architecture
Client-side code
Server-side code
Database
Communication over network
Different langua- ges in each layer
Service-oriented architecture
Services that call each other
Different services implement different functionality
Order management service to take orders
Warehouse management service to manage stock
Shipping service to handle delivery
Customer relationship service for communication
Implementing SOA
Pros and cons
Simpler communication via REST
Each service can use different language
Still need discovery and message queues
Can use auto-scaling in cloud (Kubernetes etc.)
Information exchange
Application areas
How to pass information in complex processing?
How to facilitate efficient sharing?
What component can access what information when?
How to avoid losing information on error?
Pipeline architecture
Data processed in a sequence of steps
Think UNIX pipelines!
Data science and scientific computing
Potential benefits
Open questions
Blackboard architecture
Data shared globally
Many different processors can access and transform it
For example, analysing natural language
Implementation
Application areas
Event sourcing architecture
Any action in the application is an event
Store events,
not final state!
Banking systems that cannot lose data
Implementation
State * Event -> State
functionApplication areas
Software architecture and patterns
Seeking quality without a name
Gang of Four patterns and beyond
Component-based architectures
Layers and three-tier web applications
From services to microservices
Information-oriented architectures
Pipeline in UNIX and Blackboard in AI
Event-sourcing architecture for reliability
What you should remember from this lecture
Tomas Petricek
t.petricek@kent.ac.uk | @tomaspetricek
Books