Re: Six Sigma and XP Estimation / Planning

"Eric <poetengineer-/[email protected]>" <poetengineer-/[email protected]> Tue, 14 Jan 2003 01:16:00 -0000
Newsgroups gmane.comp.programming.extreme-customering
Message-ID <[email protected]>
Some responses in brackets {{ after asterisks *** in the 
interchange below.


--- In [email protected], Arien Malec 
<[email protected]> wrote:
> 
--- "Eric <[email protected]>" <poetengineer@y...> wrote:
 The Define and Measure step are focused on understanding the 
 business environment and capturing the customer 
 requirements.  Six Sigma is very focused on understanding and 
meeting or exceeding customer requirements. From that 
 perspective, the extremecustomering / XP approach of including 
 a representative of the customer in the development process is 
 fantastic!
> 
> From that standpoint, I'd ask in general, how would one 
approach software
> development from a 6S perspective? As far as I understand, 
the first step would
> be to establish the quality characteristics that are important to 
the customer,
> and focus the DMAIC process on those characteristics?

***  {{ Yes, you are right - from a six sigma perspective, one of the 
first steps would be to establish the quality characteristics that 
are important to the customer.

The DMAIC process is for process improvement; a similar 
process, called DMADV is used for new products and such - in 
this case, new software development.

DMADV stands for Define / Measure / Analyze / Design / Verify.

The Define step would involve understanding the business 
environment and requirements, and the influence they pose to 
the project.

The Measure step would be the step you mention - establishing 
the characteristics that are important to the customer. Many of 
these are quality characteristics, but the step also involved 
capturing other customer expectations that you might not 
consider quality characteristics.   

The approach that XP  uses - including the customer as part of 
the team that captures customer requirements and expectations 
- is entirely consistent with the Six Sigma approach, although it is 
not always possible to include the customer so intimately - so 
alternative approaches  are often used }} ***


> One subsidiary debate here is how XP manages 
requirements. The traditional
> software development process attempts to achieve 
conformance to requirements.
> XP does this as well, but is also concerned with fitness for 
use, and so
> explicitly allows the requirements to be tested against 
business needs.
> 
> (This is done in three principal ways: 1) Encouraging 
discussion between the
> developers and customers about the "user stories" which is 
how XP captures
> requirements, 2) Asking the customer to establish testable 
requirements against
> the stories: these are called "customer tests" in XP, 3) 
Showing the customer,
> every 2 weeks or so, the software produced to date, to ensure 
that it
> represents the customer needs.)
> 
> One concern some of us had about 6S (on the basis, of 
course, of speculation
> and little evidence) would be that it would take a conformance 
to requirement
> perspective, rather than a fitness for use perspective. I wonder 
if you could
> address that? (I would suppose that a manufacturing line 
analogy would be to
> focus on how closely we produce widgets within tolerance, but 
ignore whether we
> are producing the right widgets at the right times).

***{{ If I understand correctly what you refer to as "fitness for use", 
then Six Sigma does take that perspective in the DMADV 
approach for new product development.

The conformance to requirements perspective is a Quality 
Control or Quality Management System perspective.  Six Sigma's 
DMAIC process is considered a business improvement method 
that focuses on improving business results -so producing the 
right widgets at the right times is very much a part of applying Six 
Sigma to a manufacturing line, as you mention. 

Similarly, it is not good business practice to treat software as if it 
were a simple mechanical product in which meeting 
specifications is the end-all.  It is not good business practice to 
develop software that conforms to requirements but won't sell or 
won't satisfy the customer because it isn't fit to use or is so 
user-unfriendly that only the software developers can use it. }}***




> For the planning issue:
> 
> > In the situation under discussion, it appears that the 
customer 
> > requirement that you are addressing is the development 
time:
> 
> Actually, XP holds iteration time fixed. The issue under 
discussion is how much
> work can be done in that fixed amount of time, which is why the 
term "velocity"
> is used. XP attempts to break work down into small, mostly 
uniform chunks,
> called "story points". Velocity is defined as the number of 
points that can be
> completed in an iteration. (V = P/I)
> 
> [modeling velocity]
> > One statistical modeling approach would be to assume 
> > independence for each of these iterations. You've indicated, 
and 
> > I would also suppose, that these iterations are not 
independent - 
> > they are in fact autocorrelated (correlated with themselves: if 
you 
> > know the velocity of iteration X-1, you might have some 
indication 
> > of  what the velocity of iteration X might be). This 
autocorrelation 
> > is part of what you want to understand. 
> 
> The XP assumption is autocorrelation. Actually, the XP 
assumption runs
> something like this:
> 
> 1) Very strong autocorrelation (V(n+1) = V(n)) is good 
assuption for predicting
> the velocity of future iterations
> 2) An assumption of very strong autocorrelation provides a very 
cheap mechanism
> for prediction
> 3) Any other mechanism for prediction is likely to destroy more 
value (by
> taking time and resources) than it is to create value (by 
increasing
> predictability)
> 
> 
> Also, velocity is likely to be more unpredictable at the beginning 
of a
> project, but is likely to settle down in the middle and towards 
the end of a
> project. The very strong autocorrelation assumption is thus 
likely to be
> self-correcting, whereas using past performance is likely to 
skew our results.
> 
> > To be honest, I'm not at all clear about the nature of the 
> > autocorrelation - if I speak in terms of time rather than 
velocity, 
> > then I can argue that the autocorrelation between the time for 
> > iteration X-1 and iteration X would be positively correlated:if it 
> > takes a long time to perform iteration X-1, it will probably take 
a 
> > long time to perform iteration X.
> 
> That's the assumption.
>  
> > However, I can also argue a negative correlation in terms of 
time: 
> > if I spend a lot of  time on iteration X-1, doing a very thorough 
job, 
> > then it might take less time to perform iteration X.
> 
> Again, since story points are uniform work units, and iterations 
are fixed time
> periods, this is not likely to happen. Indeed, the development 
team looks at
> story point estimates in the iteration planning meeting: if 
something has
> happened to make a story cheaper than previously assumed, 
the team would mark
> down that story, and take on more work for that iteration, 
keeping within
> established velocity.
> 
> > So, just to start out, let's make an initial assumption that the 
> > iteration times are uncorrelated.  
> 
> This is a poor assumption, IMHO. 

*** {{ Yes, it is a poor assumption, but it is an initial assumption 
that can be built on. 

For example -  high  positive autocorrelation, as you are 
assuming, would approximately double the variance that would 
be expected from the assumption that iteration rates are 
uncorrelated.   *** }}


For instance, any of the below could and do
> happen:
> 
> 1) The team may have "jelled" since the beginning of the 
project, and now work
> together better
> 2) The team may understand key aspects of the project 
(technical, business)
> better now, than before
> 3) Resources may have changed (larger, smaller) with 
non-linear and
> difficult-to-predict effects on velocity (we may see velocity go up 
when people
> are removed and see velocity go down when people are 
added).
> 
> [Gamma distribution for velocity]
> The assumptions you use to choose a Gamma distribution 
sound correct. 
> > Now, there is a way to take this approach, which assumed 
> > independence, and adapt it to a situation where there are 
> > correlations.  If appropriate, I'll go into that later.
> > 
> > There are also numerical simulation approaches, using 
discrete 
> > event simulation tools to simulate running through the same 
> > sequence of  iterations thousands of times, and then seeing 
a 
> > histogram that would be an estimate of the gamma 
distribution 
> > of the total development time from that sequence of 
iterations.
> > This is a variation of a statistical approach called Monte 
Carlo 
> > simulation.
> 
> The question we would want to ask here is: Does using these 
techniques produce
> more value to customers (increased predictability) than it 
destroys through the
> increased effort of using it, and the increased complexity of 
understanding the
> results?

*** {{ You ask another excellent question here. 

When you use these techniques, you are building a stochastic 
model ( a fancy name for a "statistical model") of your software 
development process.

A famous statistician named George Box said, "All models are 
wrong. Some models are useful".

Basically, the model you create for your software development 
process will be wrong, in that it will not precisely predict future 
results.  However, it can be useful - just as models of electronics 
are useful in designing and developing new electronics products 
and models of manufacturing processes can be useful in 
improving the manufacturing line.

The key, I think, is to be sensitive to the point where you run into 
diminishing returns.  You can build a fairly simple statistical 
model for the software development process with very little 
investment of time or resources. If it looks useful, you can put in 
a little more time to improve the model. If it looks like it can help 
you improve things that are important to you and/or your 
customer and/or your management chain (such as giving better 
estimates of the time required to develop new software), then 
this is a case where the "model is useful". 

You can keep putting in time and effort improving the model, but 
at some point you will find that you will be putting in an awful lot 
more time for almost no benefit in terms of improved accuracy 
with a model that George Box indicated will always be wrong.
You will have reached a point of diminishing returns, and you 
should consider simply using the model as is for the benefit that 
it provides. }} ***
 - Eric Maass



------------------------ Yahoo! Groups Sponsor ---------------------~-->
Flexible Keyboard is the ideal accessory for PDA users that are on the move.
http://us.click.yahoo.com/dCBVZC/WnCFAA/xGHJAA/NhFolB/TM
---------------------------------------------------------------------~->

To unsubscribe from this group, send an email to:
extremecustomering-unsubscribe-hHKSG33TihhbjbujkaE4pw@public.gmane.org

 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/