Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What is the definition of a Volatile Class?

5 views
Skip to first unread message

MikeB

unread,
Dec 31, 2009, 5:53:27 AM12/31/09
to

A colleague has been reading Robert C Martin's "Agile Principles,
Patterns, and Practices in C#". In the "Factory chapter", Robert Martin
uses the term "Volatile Class" but neither me nor my colleague are sure
what he means by that.

Google reveals little. Is it just a class that is likely to be prone to
change or is it something else entirely?

TIA,
MikeB

S Perryman

unread,
Dec 31, 2009, 6:45:13 AM12/31/09
to
MikeB wrote:

Volatility (V) is a statement of the likelihood of change in a given time
period.

Its converse property is impact (I) , the likelihood that of change
propagating to a dependent.

V and I are inversely proportional.
For any entity E, the greater the value of I(E) (the likelihood that a
change to E will cause change propagation to the dependents of E) , the
lower the tolerable value of V(E) .

A good measure of entity 'stability' is : 1 - ( I(E) * V(E) )

Impact is a *structural* property (based on the nature of dependencies) .

Volatility is a *temporal* property (based on the period of observed
change : product release, development iteration etc) .


Regards,
Steven Perryman

MikeB

unread,
Dec 31, 2009, 9:00:50 PM12/31/09
to
S Perryman wrote:

> V and I are inversely proportional.

Eh? Where does that assertion come from?

MikeB

unread,
Jan 1, 2010, 6:23:13 AM1/1/10
to

Steven,

the reason I questioned what looked like an assertion was that I've been
exposed to codebases where both V and I are high. Those systems
invariably exhibited poor design.

Taking this further, I'd venture that for a given volatility, impact is
a purely function of the quality of the design.

I wonder whether I misunderstood you and you meant that "in a good
design, V and I are inversely proportional".

Regards,
MikeB

Daniel Pitts

unread,
Jan 1, 2010, 12:10:05 PM1/1/10
to

It could be that Steven meant that there is a lower bounds on V*I, but
that is only my guess, I have nothing to back that up.

--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>

S Perryman

unread,
Jan 1, 2010, 12:49:27 PM1/1/10
to
MikeB wrote:

> the reason I questioned what looked like an assertion was that I've been
> exposed to codebases where both V and I are high. Those systems
> invariably exhibited poor design.

By "invariably" , I would expect to be shown a strong objective statistical
correlation between V(E) , I(E) , and other canonical 'quality' measures
(coupling, cohesion etc) .


> Taking this further, I'd venture that for a given volatility, impact is
> a purely function of the quality of the design.

When E has a high value for :

1. I(E) , we are informed about the potential effects of change
throughout a system.

2. V(E) , we are informed about the amount of change occuring for E.


#1 allows us to ask what will happen (rework, re-testing etc) if E
changes, and the justification thereof.

#2 allows us to ask why is E changing so often.

The reasons for either are often nothing to do with poor
design (good design is actually often the cause) .

For example, something that is very useful will have a very high I(E)
value. Think of things like I/O, container functionality etc.


> I wonder whether I misunderstood you and you meant that "in a good
> design, V and I are inversely proportional".

Over time, entities with high V(E) will exhibit I(E)
values tending to the relationship (high impact entities tend to become
less volatile - they 'stabilise' as their desired/essential purpose
becomes clear etc) .


Regards,
Steven Perryman

S Perryman

unread,
Jan 1, 2010, 12:57:44 PM1/1/10
to
Daniel Pitts wrote:

> MikeB wrote:

>> I wonder whether I misunderstood you and you meant that "in a good
>> design, V and I are inversely proportional".

> It could be that Steven meant that there is a lower bounds on V*I, but
> that is only my guess, I have nothing to back that up.

V(E) and I(E) are in the range [0,1] .

The product can be 1 at worst (impacts everything, changes continually) .
And tends to 0 at best (inversely proportional, the implications of one
property is tempered by that of the other) .


Regards,
Steven Perryman

0 new messages