views:

83

answers:

4

What is the difference between a software development pattern?

A methodology such as agile DSDM etc how is OO classed as a methodology and a paradigm?

How can OO be applied to a methodology such as agile if itself is a methodology?

Whats the difference between a paradigm and a methodology or a development pattern?

Thanks for any replys.

+2  A: 

Methodology is about people. Paradigm is about software.

Don Roby
+1  A: 

A paradigm is a way of thinking about a problem - so objects, a relational database, lambda calculus are all models for getting a problem into your head

A methodology is a way of actualy building something based on the paradigm.

If you like, the paradigm is the architect, what are building? should it be a suspension bridge or an arch. The methodology is the engineering, how many cables, how thick, which subcontractors.

Martin Beckett
+3  A: 

"When I use a word," Humpty Dumpty said, in a rather scornful tone, "it means just what I choose it to mean - neither more nor less." "The question is," said Alice, "whether you can make words mean so many different things." "The question is," said Humpty Dumpty, "which is to be master - that's all."

Through the Looking Glass.

Well, not my answer, Lewis Carroll's.

High Performance Mark
+1  A: 

Looking at only one of the questions you asked: "...how is OO classed as a methodology and a paradigm?"

That, at least, has a fairly simple answer:

  1. Object Oriented Design is an analysis methodology.
  2. Object Oriented Programming is an implementation paradigm.

OOD involves analyzing a problem in terms of objects and their interactions. OOP involves implementing a solution as a set of interacting objects.

"Agile" (I hate that name -- though I'll admit "eXtreme Programming" is worse) is really about project management. Just for example, you can apply Pair Programming about equally to something like assembly language or C as to a language that explicitly supports object oriented programming (though being a relatively new idea, it's probably used most often in conjunction with relatively new languages).

Edit: How I'd separate "methodology" from "paradigm" is fairly simple (at least in theory).

Paradigm is really just a fancy word for "example". If I'm following that example to a meaningful degree, the source code (for example) to the program should contain direct, (fairly) clearly defined results from having followed that example. Just for the obvious one, a class publicly derived from another would be a pretty obvious indication of OOP.

A methodology, by contrast, doesn't necessarily show a direct, definable result in the source code. Just for example, there's unlikely to be much in the source code to indicate whether it was developed using "Agile" methodology. I might be able to take a guess if (for example) all the source code files contained comments indicating two authors, but (at best) it would a rather indirect indication of one specific piece of the methodology.

I said in theory, because things can get a bit "fuzzy" at times. If I try hard enough, I can probably write pretty close to pure procedural code, even in a language like Smalltalk that favors objects almost exclusively. Likewise, if I try hard enough I can write OO code in something like C that doesn't really support it. In a case like this, the indications of following the paradigm will usually be harder to find or define than in a more straightforward case.

Jerry Coffin