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, trade-offs and reuse.

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







Home page

Design concerns & qualities

Concerns, qualities & requirement types

From logical model to physical database

Design for NFRs - basics

Flexibility v. performance

Technical Debt


Basic design patterns *

Very basic design patterns

SOLID coding principles

Layered software architecture

Basic OO design patterns

Four communication styles


Microservices (micro applications)


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?


Integrity challenges

Single v. multiple data store solutions

Integrity challenges

  Continuous v. eventual consistency

  CAP triangle v. CAP theorem


Integrity v. throughput


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


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


General lessons

Agile architecture (several papers)


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?