Martin Pool's blog

SWEBOK: Sink the Slipper

Cem Kaner tears apart SWEBOK, the so-called “Software Engineering Body of Knowledge”.

SWEBOK was created using a strange process. They started with the table of contents of the main software engineering textbooks -- as if there is a strong relationship between software engineering as described in textbooks and software engineering as practiced in the field. From there, SWEBOK developed as delta's from these books. SWEBOK is focused on "established traditional practices recommended by many organizations" and is intended to exclude "practices used only for certain types of software" and to exclude "innovative practices tested and used by some organizations and concepts still being developed and testing in research organizations."

Somehow, we conclude that mutation testing is an established traditional practice that is widely recommended and used, but we exclude scenario testing. We conclude that massive tombs of test documentation are an established traditional practice widely followed, even though rants about bad test documentation are, to say the least, a common theme of comment in the community. And we exclude consideration of requirements analytical techniques (or project context considerations) that might help you make a sensible engineering determination of what types of documentation, at what level of depth, for what target reader, are worth the expense of creating and (possibly) maintaining them.

In the SWEBOK, page IX, we learn that the purpose of SWEBOK is to provide a "consensually-validated characterization." In this, SWEBOK has failed utterly. Only a few people (about 500) were involved in the project. It alienated leading people, such as Grady Booch who recently said (in a post to the extremeprogramming listserv on yahoogroups, dated 5/31/2003)

"I was one of those 500 earlier reviewers - and my comments were entirely negative. The SWEBOK I reviewed was well-intentioned but misguided, naive, incoherent, and just flat wrong in so many dimensions."

[...]SWEBOK says "Clearly, unit testing starts after coding is quite mature, for instance after a clean compile."

This is 100% in disagreement with the practice of test-driven development, which requires the programmer to write a unit test immediately _before_ writing code that will enable the program to pass the test.

I think that test-driven development is the most important advance in the craft of testing of the past 30 years. This, more than any of the other flaws, illustrates the extent to which SWEBOK is blind to modern good practice.

Why does the criticisim cheer me? Because I know there's a certain type of person who laps up this “pious-sounding claptrap, religious doctrine rather than engineering”. Given half a chance they'll use SWBOK to make their students' or engineers' lives a misery...

Archives 2008: Apr Feb 2007: Jul May Feb Jan 2006: Dec Nov Oct Sep Aug Jul Jun Jan 2005: Sep Aug Jul Jun May Apr Mar Feb Jan 2004: Dec Nov Oct Sep Aug Jul Jun May Apr Mar Feb Jan 2003: Dec Nov Oct Sep Aug Jul Jun May