Sunday, May 21, 2006

What is the 5W1H or 5W2H framework?

Lots of writers do use the 5W1H/5W2H framework.

It is an amazing tool in different situations where one needs to clarify or understands something in more depth.

• What?
• Why?
• Where?
• When?
• Who?
• How?
• How much?

As you see from above: there are 5 questions starting with W and 2 starting with H.

This framework is paramount in requirements elicitation, and is widely used in TQM and QCC, which are the pillars of the Total Quality Movement.

I have been trying to find a reference that tells me where these questions came from. Although I suspect that they are from ancient times, I failed to find a reference that would point where they were first enumerated.

The oldest reference was found in Creatingminds.org, where they believe that those questions came from a Rudyard Kipling poem: “I Keep Six Honest
Serving Men ..."
. Beautiful poem, but I doubt that the 5W1H came from there.

If you happen to know a better origin for the 5W1H, let me know.

(07/07): As pointed out by Charlie Nguyen-Duc in his comment below,it seems that the origins of 5w1h are linked to Marcus Fabius Quintilianus.

Wednesday, May 03, 2006

Should universities have degrees in software engineering?

In a recent note to the ACM column Inside Risks (January, 2006), Professors John C. Knight and Nancy G. Leveson provide a list of deficiencies in the computer science and computer engineering degree programs regarding a software engineering education.

Although they do not provide any data on the number of programs they have analyzed, we understand that these programs are from several different universities in the US. These programs are responsible for the elite of professionals that will work in the software industry. As such, it is really provoking that so many important points are not been properly covered.

One possibility, long advocated by Professor David Parnas, is the existence of degrees in software engineering as there are degrees in civil engineering, aeronautics engineering, electric engineering, and nuclear engineering. These are some of the so many particular engineering domains where very specific knowledge is needed, but with a solid basis of engineering.

The final sentence of the note says: “A better alternative might be for more institutions to do what a few have done already, develop degrees in software engineering.”. However, there are very few institutions with a particular degree in software engineering. Why is this so? One reason, I believe, is the dispute from the viewpoints of computer science and engineering. It is hard from faculty on these two different camps to agree on what should be core knowledge, and several from computer science camp do not see the value on down to earth engineering practices. It is also usually said that to graduate a software engineer it would be necessary to have stronger basis, like calculus and physics, and there are not such stronger basis in computer science.

I am for university programs in software engineering. I believe that society needs better software engineers, but this pressure is not that clear, maybe because it is hard to understand what are the responsibilities of a software engineer (see my previous note on why software engineering is a must).