Software architecture: principles and patterns

“TONS of interesting stuff!  Wonderful!  Many thanks!”  

making me see object oriented analysis and design in a new light.”   


This supplement to Avancier Methods explores software modularity, tradeoffs and reuse.

If you are interested in a one day tutorial on the topics below - private or public - email here.








Home page


General lessons

Agile architecture (several papers)


Design concerns & qualities

Technical Debt

Concerns, qualities & requirement types

From logical model to physical database

Design for NFRs - basics

Flexibility v. performance


Integrity challenges

Single v. multiple data store solutions

Integrity challenges

  Continuous v. eventual consistency

  CAP triangle v. CAP theorem


Integrity v. throughput

Microservices (micro apps)


Business Capabilities / Contexts

Decentralized data management

Design for failure & "You build, you run it"

Smart endpoints and dumb pipes

Governance - decentralized or centralized

Do micro apps improve maintainability?


Service-Oriented Architecture

SOA and the Bezos mandate

SOA versus REST

SOA and EDA basics

What does SOA mean to you?

SOA business case &  governance



Basic design patterns *

Very basic design patterns

Layered software architecture

Basic OO design patterns

Four communication styles


More design patterns

Design by Contract and CQS

Logical domain models

Domain-Driven Design v. Transaction Script

CQRS and Event sourcing

Business v. database transactions

Software design as a process


Further discussions

Challenging assumptions

More is not better

A discussion of REST principles

Five flavours of WOA

Cloud computing

VM-unfriendly apps

Order processing in 2500 BC

What is an application?

Access rights

You may read and link to this site provided you accept that for organisational use a small licence fee is due.

It is illegal to print, copy or present pages of this web site except as explained in access and usage rights.

If you like the site, please declare your appreciation in an appropriate social or professional medium.