Tuesday, 27 February 2007

Patterns and other reusable solutions: the differences

In pattern discussions, we have been talking about “reusable solutions” quite a lot. I was wondering what are other reusable solutions and how similar or how different is patterns from them? After doing some research, I found out the answer. Here is the summary of my findings:

Other reusable solutions: Framework, Architecture, Methodology, OOP and so on.

Let’s see how different they are from patterns:

Design Pattern: Design pattern is more like a concept. It provides a proven solution to a specific problem with a very well specified context. A particular pattern can not be applied outside its defined context because different problems have different specific contexts and one pattern can no way be applied to another problem. If the context changes, so does the solution. A pattern is completely independent of any programming language or API.

Framework: A Framework is a general specification which is a collection of classes and interface APIs working together to solve a particular type of problem. In other words, Framework is a skeleton of code used for developing an application. And a Framework can consist of one or more design patterns but the opposite is not possible.

Architecture: Architecture is contextual. It defines how or which component is placed where. For example, a system architecture will specify which application components are placed how and where.

Methodology: Methodology is the way or style of doing a particular task. There are various methodologies that are normally followed. For example, Waterfall model is a methodology of System Development Lifecycle (SDLC), PRINCE2 is a project management methodology and there are specific methodologies for testing as well.

OOP: Object Oriented Programming is a concept for more efficient application development. It is not a solution to a particular problem rather it sets out rules of writing program codes more efficiently. OOP uses reusable components for future use. OOP concepts are used in Design Patterns but the opposite never happens.

No comments: