Monday, January 21, 2008

Vicious Measurement

ACM's Queue magazine features a regular Q&A column by someone with the pseudonym Kode Vicious. This month he talks about measurement, in a humorous and short story entitled "Take a Freakin' Measurement". He makes the case that you should measure as much as it takes to reach your desired level of confidence, but that anything less isn't science. His style is different than mine, but I think the message is right on: measure what you need to know and do it well enough to suit the need.

Wednesday, January 09, 2008

Active Design Reviews: So sensible

I'm often embarrassed when I discover a method that has been around for decades, makes perfectly good sense, but I haven't seen it practiced and didn't know about it. Active Design Reviews (ADR) are such a method. First described in 1985 by Parnas and Weiss, they devised a system which mitigates non-participation in design reviews.

ADR changes yes/no questions asked in a design review (e.g. "do you understand it?" and "will this work?") to a set of questions that require understanding to answer. An easy example is "write down the exceptions that can happen with [insert component here]". You can't fake the answer to that - you need to have read and understood the design, and actually put your understanding into practice. The reader will necessarily provide better feedback, although more focused - "higher fidelity" in the words of Clements.

Those of you who are up on the latest techniques probably know that SEI developed ARID, which is a hybrid of ADR and ATAM. ARID takes ADR a step further, by allowing the reviewers to pose the questions rather than the designers, through the choice of "scenarios". This enables focus on a particular area of concern by the people that need to understand it.

So sensible.

Somewhat tangential to this, but this paper about a sane design process, written by Parnas of ADR fame and Clements of ARID and SPL fame, is a great reference for artifacts and process one should think about when creating a design process.