Lectures on Software Architecture & Design
University Lectures at masters-level delivered at Munster Technology University (MTU) as part of an MSc program in Software Architecture & Design.
Note MTU was formerly Cork Institute of Technology (CIT)
I developed the course material over the summer of 2017 and delivered it in Q4 2017 and again in Q4 2018 (with minor revisions). The order of the lectures is relevant insomuch as lectures 02-04 are foundational and used to provide context for the rest of the course. The exact running order of the remaining lectures varied a little to accommodate logistics and guest speakers but the following reflects how the course progresses over the semester.
Lectures
Note: The following links reference PDF docs.
-
After introducing the course, I cover how the role of the Software Architect emerged in industry, describe what the role entails and why it’s so important.
-
Middleware & Interprocess Communication
In this lecture, I cover interprocess communication and explain the mechanics from sockets to RPC and beyond. Understanding computer networks and having an appreciation for middleware is at the core of understanding client/server, cloud and distributed systems design.
-
UI Architecture, UI Infrastructure & Web Frameworks (co-presented with Guest Speaker)
Here, I introduced the subject of UI Architecture in broad terms before co-presenting on UI Infrastructure and Frameworks with my guest speaker.
-
An Introduction to Database Modelling
In this talk, I give an introduction to structured design and entity modelling that underpins good database design.
-
I cover how SQL-Server databases emerged in the ‘80’s and ‘90’s to become central to most modern applications before going on to examine non-SQL databases. I also take a look at distributed-database architecture, two-phase commit and database replication.
-
A Quick Recap on Object-Oriented Design
I quickly recap on the principals of OO as a precursor to my next talk on Spring.
-
An Introduction to Spring, DI & IOC
In this talk, I introduce the Spring Framework, starting with the principals of Dependency Injection (DI) and Inversion of Control (IoC), explaining how this affects object-oriented design. I go on to use a simple example to illustrate design influences and explain the relevance of very late dynamic binding.
-
Server Infrastructure & Enterprise Services
This lecture covers enterprise development and how evolving frameworks provide similar, if not the same, services. I also look back at older technologies like COM and CORBA and examine why today, we are focused on REST and HTTP protocols.
-
Messaging & Event-Driven Architecture
In this talk, I provide an overview on messaging as an IPC mechanism, contrasting it with Client/Server communication. I examine messaging characteristics before going on to discuss Messaging/Notification models in the enterprise space and the common event-channel models we see in several implementations.
-
The ‘Third Platform’ - Cloud & Big Data
I discuss architecting for modern, enterprise platforms and examine how the cloud, mobile devices, social and ‘Big Data’ converge to describe the ‘Third Platform’.
-
Architecting for the Internet of Things
In this short talk, I introduce IoT from an architect’s perspective and propose how a tiered abstraction model helps us deal with the complexity in this domain and satisfy the needs of the various stakeholders.
Guest Speakers
There was an emphasis on industry contribution for this MSc course and, in keeping with that sentiment, I invited guest speakers from industry to gave a talk on their subject matter expertise.
- UI Infrastructure & Web Frameworks (Guest Speaker - Elaine Holland, EMC)
- Microservices Reference Architecture with NGINX (Guest Speaker - Peter Kelly, NGINX)
- Cloud Antipatterns with Pivotal Cloud Foundry (Guest Speaker - Tammer Saleh, Pivotal)
- Architecting for Scale with McAfee (Guest Speaker - Pat Lynch, McAfee)
Note Company associations correct as of the time the talk was delivered. (2017-2018).
Donnacha Forde