Tag Archives: Design Patterns

On Italian Food and the Evolution of Software Architecture

I really like this picture. Besides being funny, I think it is also a nice metaphor. There is no such a thing the “right software architecture”, in the same way that there is no such a thing the “right Italian … Continue reading

Posted in Design Patterns, Software Architecture, Software Evolution | Tagged , , | 1 Comment

The SOLID Principles Illustrated by Design Patterns

The Clean Code Alliance in Israel organized a special event about the SOLID Principles of Object-Oriented Design. I was glad to be invited to give a talk about “The SOLID Principles Illustrated by Design Patterns”. My friend Eyal Golan also … Continue reading

Posted in Design Patterns, OOD, Software Architecture | Tagged , , | 5 Comments

Do SOLID design principles make code slow?

This week one of the readers of my blog asked me this question: “Do SOLID design principles make code slow?” I think this is a very interesting question, which I have already encountered several times during my 20 years as … Continue reading

Posted in Agile, Design Patterns, OOD, Programming, Software Architecture | Tagged , , , , | 12 Comments

Adaptable Design Up Front and the Open/Closed Principle

The Open/Closed principle is one of the SOLID principles of software design: “The Open/Closed Principle states that the design and writing of the code should be done in a way that new functionality should be added with minimum changes in … Continue reading

Posted in Adaptable Design, Design Patterns, OOD, Software Architecture, Software Evolution | Tagged , , , , | 11 Comments

Adaptable Designs for Agile Software Evolution

“It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.” – Charles Darwin Big Design Up Front (BDUF) is considered a very bad … Continue reading

Posted in Adaptable Design, Agile, Design Patterns, Software Architecture, Software Evolution | Tagged , , , , | 37 Comments

Separation of Concerns

The most important principle in Software Engineering is the Separation of Concerns (SoC): The idea that a software system must be decomposed into parts that overlap in functionality as little as possible. It is so central that it appears in … Continue reading

Posted in AOP, Design Patterns, OOD, OOP, Software Reuse | Tagged , , , , | 52 Comments

Design Patterns and the Tower of Babel

This is the story of the Tower of Babel from Wikipedia: According to the biblical account, a united humanity of the generations following the Great Flood, speaking a single language and migrating from the east, came to the land of … Continue reading

Posted in Design Patterns, OOD | Tagged , | 2 Comments

Identifying Anti-Patterns

In my previous post, I’ve discussed the importance of identifying domain-specific Design Patterns in an organization. Equally important is the need to identify Anti-Patterns. This is the definition of Anti-Patterns from Wikipedia: “An anti-pattern is a pattern that may be … Continue reading

Posted in Design Patterns, OOD | Tagged , | 3 Comments

Collecting Design Patterns

Today we expect every professional Software Engineer to have a good knowledge of Design Patterns. In particular, the names of the patterns in the Gang-of-Four (GoF) book became part of the common vocabulary of software developers. Any good programmer should … Continue reading

Posted in Design Patterns, OOD | Tagged , | 2 Comments