Category Archives: OOD

Object-Oriented Design

The Cat as a Metaphor in Object-Oriented Software Development

Grady Booch is a software development guru who wrote one of the most important books about Object-Oriented Programming: “Object-Oriented Analysis and Design with Applications“. In his book, Booch has wonderful illustrations using a cat as a metaphor for some of … Continue reading

Posted in OOD, OOP, Programming | Tagged , , | 6 Comments

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

Antifragile Software Design: Abstraction and the Barbell Strategy

In his book “Antifragile: Things That Gain From Disorder”, Nassim Taleb introduces the concept of Antifragility, which is the opposite of Fragility. The main question is how things react to volatility (such as randomness, errors, uncertainty, stressors and time). According … Continue reading

Posted in Antifragility, OOD, OOP, Software Architecture, TDD | Tagged , , , , | 29 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

On Information Hiding and Encapsulation

This month I participated in IBM Haifa’s Programming Languages and Software Engineering (PLSE) Seminar. There I had the opportunity to have lunch with David Parnas, one of the world pioneers in the field of Software Engineering. Parnas is the father … Continue reading

Posted in OOD, OOP, Software Architecture | Tagged , , | 9 Comments

An Event-Driven Approach for the Separation of Concerns

Last week I presented a paper at the International Conference on Evaluation of Novel Approaches to Software Engineering (ENASE 2012), at Wroclaw, Poland. Title: “An Event-Driven Approach for the Separation of Concerns” Abstract: “This paper presents an event-driven approach for … Continue reading

Posted in AOP, OOD, OOP, Research | Tagged , , , | 4 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

Who is an Expert? – On Rules and Exceptions

It is relatively easy to find very young people who are brilliant programmers, who seem to know every detail about a particular language, platform or technology. Some of them will be able to implement a nice Android app in a … Continue reading

Posted in Efficacy, OOD, OOP | Tagged , , | 4 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