Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am reading the book Object-Oriented Analysis and Design written by Grady Booch and others. In the Section : I Concepts in a subsection Bringing Order to Chaos authors suggest to separate between a Method and a Methodology:

According to the book:

A method is a disciplined procedure for generating a set of models that describe various aspects of a software system under development, using some well-defined notation.

A methodology is a collection of methods applied across the software development lifecycle and unified by process, practices, and some general, philosophical approach.

I understood that a Method is used to built system models and a Methodology is a set of such methods that are applied across software development lifecycle. To my knowledge, a software development lifecycle includes but is not limited to analysis, design, implementation and testing phases.

How it can be that a Method that is used to built system models is also applied in implementation or testing phase?

share|improve this question
May it be that a method and a methodology are in fact a design method and a design methodology? – Tim Jan 22 '11 at 7:20
up vote 2 down vote accepted

Maybe I'm misreading the definitions (I haven't read the book), but wouldn't you have different methods for system building and testing? So your methodology would include some methods that apply to analysis, some that apply to building, some that apply to testing, etc. All of those methods would be grouped by a common approach or goal -- e.g. Agile methodology, Waterfall methodology, etc.

share|improve this answer
Your point is clear. I can name some system models of design phase of software development, for example, class diagram. Could you please name some system models that may be described with well-defined notation for an implementation and testing phases? – Tim Jan 23 '11 at 18:07
@Tim First thing that comes to mind is a sequence diagram. This could apply both at the implementation stage and at the testing stage to verify workflows. – Adam Lear Jan 23 '11 at 20:42

method = one step

methodology = collection of steps

Note: every artifact including the code is a model of the system, or an aspect thereof. If it isn't, then you don't need it.

share|improve this answer
"methodology = series of steps" I see that series is not a good word here, the definition states "collection" or "set" of steps (you call a method step). Anyway, my confusion is: a method by definition is used to generate a set of system models. To my knowledge, the set of models is defined in design phase. A methodology is defined as a collection of methods that are applied across software development lifecycle, that along with design phase contains also implementation and testing phases. I think that system models are not created in the latter 2 phases, therefore, a method is not applied... – Tim Jan 22 '11 at 18:52 these 2 phases. The last statement is in contradiction with definition of a methodology, that states that a collection of methods are applied across development lifecycle. I hope I am clear. I think I have somewhere a wrong statement in my chain. Could you please point out where? – Tim Jan 22 '11 at 18:56
@Tim: every artifact in the development process is a model of the system, or some aspect thereof. And yes, I should have said collection instead of series, thanks. Edited. – Steven A. Lowe Jan 23 '11 at 17:10
@Stiven: The phrase "every artifact including the code is a model of the system" is the best candidate for an answer. Could you please give a reference to a scientific paper, book or a standard where it is precisely defined? Thank you. – Tim Jan 23 '11 at 18:41
@Tim: the quote is from me. It's truth should be obvious. If the artifact does not describe some aspect of the system, then it is not a model of the system, and it is unnecessary. And you can quote me on that ;-) – Steven A. Lowe Jan 23 '11 at 19:15

I think, by the definition you gave, that the Method is and i quote:

... a set of models that describe various aspects of a software system...

So the method is not used to build system, rather they are used to describe aspects of it. So if you think about it, you can use a method to describe the situation of a current working project in a phase.

share|improve this answer
Thank you for the answer. 1) You said: "that the Method is and i quote: ... a set of models that describe various aspects of a software system...", I said: "A Method is a disciplined procedure...". I see a set of models and a disciplined procedure as different terms 2) You said: "So the method is not used to build system", I said: "A method is used to built system models". In my view, system and system models are different terms: a system is described with help of system models, i.e. static models, dynamic models. Sorry, it was not clear what you wanted to say. – Tim Jan 22 '11 at 9:27

There is no consensus in the software engineering community about this issue. Therefore, the answer to your question will depend on who you ask.

The Definitions Track of the SEMAT initiative adopts most of the definitions from ISO/IEC 24744, which states that method = methodology. You can also see this approach, for example, in page 3 of "Metamodelling for Software Engineering" by Gonzalez-Perez and Henderson-Sellers; scroll to page 3 and look at the two definitions.

In other words, the two words mean the same. This view is from an international standard and shared by a large-ish number of people, but, as I say, there is no consensus.

One can always get pedantic and argue that, in theory of science, "method" refers to the way of showing that something is true, whereas "methodology" refers to the way of creating or producing something. These definitions are well grounded, and I think they should be the ones to be taken into account if we were to make a distinction. However, and after many years working in method engineering, I don't think it's worth it.

share|improve this answer
I have asked about concrete definitions given in the book "OOAD with Applications". I always consider this book as fundamental work for object-oriented technology. Anyway it is always good to consider ISO standards. – Tim Jan 23 '11 at 18:36
@Tim: I understand, but OOADwA is a bit dated today :-) A lot of things have happened since the early 1990s (almost 20 years!), and research has made some interesting progress, especially in terms of using metamodels as a way to formalise the underpinnings of methodological work. I don't think OOADwA is consistent in its definitions, so no coherent answer is possible. – CesarGon Jan 23 '11 at 18:46
I am reading the third edition of the book which was published in 2007. I like how Booch et al describes object model and I am looking forward to applying it in my every day work. Do you know other good books in object-oriented technology? – Tim Jan 23 '11 at 18:54
@Tim: I know about the third edition. And don't get me wrong; I think that OOADwA is a good book. But I also think it's a bit dated and not too rigorous sometimes. :-) It's hard to suggest alternatives given the wide range of learning styles, but if I had to pick a couple of books on OO technology, I would go for… (amazingly comprehensive, rigorous and current despite its age) and also… (quirky but very insightful). – CesarGon Jan 23 '11 at 19:03

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.