Category Archives: OOD

Object-Oriented Design

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 , , , , | 28 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

Divide-and-Conquer: Coping with Complexity

Sometimes a problem is simply too complex for us to solve. Our only chance seems to be breaking it into smaller parts that we know how to deal with. This strategy of reducing the complexity of a problem by dividing … Continue reading

Posted in OOD, OOP | Tagged , | 2 Comments

Inheritance and the Power of Abstraction

Programming is an exercise in abstraction. If a program is intended to solve some problem, we must first be able to model this problem in an abstract way, in order to express it in a programming language. Only after the … Continue reading

Posted in OOD, OOP | Tagged , | 3 Comments

Effective Software Reuse

For many years Software Reuse has been seen as a solution to both reduce the costs of software development and improve the quality of the systems being developed. However, in practice, most companies today have the feeling that they are … Continue reading

Posted in OOD, Software Reuse | Tagged , | 6 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