Wednesday, February 21, 2007

 

BetterEstimate: the (simple) math behind

Took longer than I expected, but my paper BetterEstimate: the (simple) math behind is finally online.

The paper describes the mathematical approach behind the BetterEstimate tool, together with some interesting insights on the relationship between times and probabilities in the input data.

Note: the paper is referencing version 1.2 of my other paper, Realistic and Useful: Towards Better Estimates, which is not online yet (only version 1.0 is available). I hope it will be finished quite soon, but meanwhile, the paper on the math side can be easily read on its own.

As usual, your feedback is welcome :-).

Thursday, February 15, 2007

 

Process Query Systems

Some of my clients build very complex machinery. As I often say, those companies may realize it or not, but they're deeply in the business of software. Software is the enabling force behind all their products. It is software that analyzes, process, distribute data and controls the machines. Software is also responsible for diagnostics. In some cases, diagnosing a fault is rather simple. Some symptoms can be unambiguously tracked back to something that is meaningful for the user. Some can't: it won't help much to say that some amplifier in some well-hidden card has gone to saturation, yet we have several possible explanations for that.
Software is not generally known for being user-friendly in face of faults. Even mass-market software will often fail with mysterious error boxes. When a complex system, build upon mechanical parts, optical devices, electronic board (not to mention cables and junction boxes) and software fails, providing sensible diagnostics can be rather hard.
An interesting approach has been recently presented in IEEE Computer, January 2007 (Process Query Systems, by George Cybenko and Vincent H. Berk). The underlying idea makes a lot of sense: for complex systems, situational awareness can't be a function of the current state only; you need a track, or a sequence of model states. A track can be explained by one or more hypotheses, as a sequence of events can be associated to different transitions among internal states. A longer track usually reduces the set of reasonable hypotheses.
If you like the idea, you can find more details on the PQS net. Needless to say, the concept is not limited to system diagnostics, but it has also been applied to other complex problems, like motion detection.
Curiously enough, when the underlying model is based on a nondeterministic finite state machine, once you define a reference model for most system failures the problems looks a lot like strong bisimulation in CCS. Old stuff keeps coming back :-).

Monday, February 05, 2007

 

Value and Priorities

I was writing about optimizing the development curve for value in my previous post, so I was just happy to find an article titled "Value-Oriented Requirements Prioritization in a Small Development Organization" in IEEE Software, Jan/Feb 2007. The article is indeed interesting, because the proposed technique is very simple to apply, yet can give significant benefits (mostly in decreasing the amount of struggling when assigning priorities to tasks).
I've used the same idea (with a different terminology) for a few years, to handle conflicting viewpoints in several large projects. Indeed, it must have been inspired from some paper on viewpoints (unfortunately, I can't remember exactly which one).
The idea is quite simple: instead of struggling over each requirement, take the time to agree on a set of core values (as they are called in the paper above; I usually call them "concerns", by gathering from the viewpoints literature). Core values could include non-functional concepts like "security", "dependability" or "efficiency", business concepts like "innovation", "customer retention" or "new sales", and so on.
Then give values (or concerns) a weight (for instance, on a 0-9 scale). Values, and weights, should be set only once and should be agreed upon by all the stakeholders, as they should reflect the company's appreciation of those values (if you can't even get past this point, you're in serious troubles :-).
After that, each requirement is simply given an importance (or weight as it's called on the paper above) relative to each core value. You then multiply and sum to get the final requirement weight, after which it's easy to prioritize (just sort on final weight).
Simple, effective, and requires no more than a spreadsheet. There is also no need to quantify value in monetary terms, which may help in many cases where the economic impact of having (or not having a feature) can't be easily determined.
Of course, the company may grow, the focus can change, and so on, so we should periodically revisit the set of core values and their relative weights.

This page is powered by Blogger. Isn't yours?