Software Architecture and Design – An Overview

I recently founded the Meetup group Software Architecture & Design Berlin. At the first event I gave a talk myself, in front of 30 people. It was general talk explaining what software architecture and design is.

Here are the slides (additional speaker notes can be found in the options):


Resolving Cyclic Dependencies

Need to break the vicious circle?

Need to break the vicious circle?

Cyclic dependencies among Classes are a common issue in software development. They are best resolved at design level. This article explains how to do this. It also provides some intuitive insights into Interfaces and dependencies. Continue reading

Dependencies and Arrowheads

Dependencies burden your design

Dependencies burden your design

Fixing one bug often causes multiple new bugs. This article explains why by introducing some basics about dependencies. It also briefly introduces parts of UML to visualize these dependencies. Continue reading

Code Smell: Feature Envy

Are your classes green with envy?

Are your classes green with envy?

Methods suffer from Feature Envy, if they use other classes more than their own. This article describes why this is bad design, how to visualize feature envy and how to cure it.  Continue reading

Code Smell: Data Class

Dumb Data Class

Dumb Data Class

This articles describes what’s bad about dumb data holding classes. It describes how to refactor Data Classes. Also Code Smells are introduced briefly, of which Data Class is one.  Continue reading

Grumbling about JavaScript

Must... resist... killing... JavaScript

Must… resist… killing… JavaScript

This article describes why JavaScript is crap and its community is dumb, from an object-oriented point of view. It names alternatives and shows why they are problematic. It reveals that waiting for later versions is an option. Continue reading

The Single Responsibility Principle

Swiss Army Knife

Are your classes Swiss Army Knifes?

Every good software is based on fundamental principles, every developer should know. This article explains the single responsibilities principle using a simple example. It introduces a new diagram to identify responsibilities of a class and a simple refactoring to get rid of multiple responsibilities.  Continue reading