Software Architecture

How do you avoid making your project a big ball of mud? How do you balance a wide range of design concerns and constraints? How do you map customer requirements to working software? This course provides you with the means and methods to face these challenges.


Developers and architects who design systems or assume the role of the architect in a project 


A couple of years of development. Preferably in an object oriented language (Java, C#, C++). The course, however, is language and platform independent. 

About the instructor: Tore Nestenius

 Tore has worked as a consultant since 1997 and is a very knowledgeable system developer and has in the past worked for large companies like Ericsson and Flextronics. Early in his career, Tore Nestenius started Programmers Heaven - a portal with over 750 000 monthly users. He’s behind several other successful projects like CodePedia - a Wiki for developers, the Open Source project TNValidate, and the C# School e-book with over 100 000 downloads.

Course outline:

  • The Role of The Architect

    • Why design matters
    • Complexity
    • The architects place in the team.
    • Why architecture is hard.


    Getting feedback

    • TDD
    • Continuous Integration & deployment
    • Refactoring
    • Software metrics


    Domain Driven Design (DDD)

    • Bounded contexts
    • Ubiquitous language
    • Entity and value objects
    • Invariants
    • Aggregates


    Data Access Architecture

    • CAP theorem
    • ORM mapping
    • NoSQL databases
    • Polyglot persistence


    Event sourcing

    • State vs event sourcing
    • Building an event store
  • CQRS

    • Semantic operations
    • Read vs Write
    • The CQRS pattern
    • Commands and events
    • Write and read sides
    • Integration
    • Testing


    Architecture patterns

    • Sagas and process managers
    • Circuit breakers



    • Micro-services
    • REST APIs
    • Hypermedia
    • Creating scalable and reliable APIs
    • Webhooks
    • GraphQL



    • Container vs Virtual machines
    • Docker
    • Docker files & images
    • Serverless



    • The security challenges
    • Hacking your self
    • Social engineering
    • Securing your architecture



    • Authentication
    • Authorization
    • Tokens
    • OAuth
    • OpenID-Connect

Other relevant courses