23rd, March 2000 
 
 
  
David facilitating a UI Design Session
This is the letters to the editor section. A collection of e-mail correspondence updated periodically.
Letters Index
Modal vs A-Modal
How is the big question
Wiley website review
Intelligence Advantage
Use Cases
Mediator Pattern
Visual Proxy
Visual Proxy Debate

Writing from New Zealand, David Paulo puts me on the spot over the Holub Visual Proxy Architecture.

Hi David,

On your web site you said "Recently I alerted the list members to the series of articles running at Javaworld written by Allen Holub."

And you then proceeded to say you disagreed with what he said without giving any rebuttals of his arguments.

I found Allen's arguments persuasive in terms of good OO practice.

I suspect that his methods *may* make it harder to do the UI but I am not an expert in this field - not even close - so I am very interested in your views on where Mr. Holub is wrong in his argument.

Would you consider putting up a more detailed rebuttal?

David

UIDesign.net reply ...

David,

The first part was 9000 words and as the Chinese say "nothing to eat". It was designed to pave the way for the somewhat unconventional approach to come. Much of the flame bait was later qualified in parts two and three. However, I was still fundamentally unhappy with Holub's approach.

I agree with your assessment that it was "persuasive", I would go further and say that it shouted out OO religious fundamentalism. Holub seems to be all consumed by OO purity and not taken by practical pragmatism. I have read some of his replies at Javaworld particularly his reply to the "why not get and set methods?"

It appears that his advocated approach seems to be heavily influenced by CRC methods. This re-reinforces my curiosity about whether he has ever tried this architecture on anything truly large scale. There are several studies showing that CRC doesn't scale to large OO projects.

Moving on...

I suspect that his methods *may* make it harder to do the UI but I am not an expert in this field - not even close - so I am very interested in your views on where Mr. Holub is wrong in his argument.

My primary concern with Holub's architecture is how he does his object modeling for the problem domain. He never elaborates this and I suspect that it is flawed.

There is one explicit premise in his architecture which doesn't hold up. He says that it is unlikely (or never) that someone requires more than one view of an object at any one time. He later qualified this and said that you could have several visual proxies. Fine but it doesn't hold water.

A proper OO design, to use database language, is completely "normalised". That is to say that all the attributes for Person are in the Person class, all the attributes for BillingPeriod are in the BillingPeriod class, all the attributes for Invoice are in the Invoice class. With Holub's architecture each of these 3 classes could have visual proxies and several of them. What happens when you need a composite from all three classes?

Holub seems to imply that he introduces another composite class - this is bad OO design and it is denormalised. It is also impossible to see how it can work when if you follow his other premise that Get/Set methods are illegal. How would the normalised Invoice class, inform a denormalised composite class that a value had changed? It would need to call a Set method on that composite class.

If you look at the patterns on my site, particularly the CoverSummary and the SummaryTab they both involve multiple views of composite data taken from multiple Problem Domain classes. Holub's architecture immediately implodes as soon as you try and build either of those patterns with his architecture.

I know that he could wriggle out of this accusation by suggesting more and more fine grained visual proxies and then composite classes which composed those fine grained visual proxies e.g. you could have a visual proxy for Invoice which returned Invoice Number as JLabel for composition into a JList. However, any composite classes which compose visual proxies are surely just View classes. !!!! And moreover, all these little vp classes are cluttering up the design and adding unnecessary complexity.

In conclusion, Holub's architecture works only in a fantasy world of OO purity. If you design a proper Problem Domain / Model layer and then add Holub's Visual Proxies to each class, all you will have is a pure OOUI suitable for OS2-like drag-n-drop . You won't be able to provide multiple-composite views of data. Really good interaction design needs this and Holub ruled it out from the beginning with his initial premise that multiple views are unnecessary.

Regards,

Signature

Feedbackdavid@uidesign.net

      
 
Copyright uidesign.net, 1999 - 2000