Yes, Yes I Have
I've kept quiet on this topic for a long time; it's time speak out.
- Has anyone tried to apply this concept to object design?
Yes. I've been working on formalizing object normalization (and hence the underlying object-oriented theory) for over 20 years.
By realizing that data and code are interchangeable, at least in theory. This means that the principles of normalization and the relational operations can apply to code as well as data.
It worked out pretty well so far - I believe the insights gained have been the "secret weapons" of my design, analysis, and refactoring abilities.
I haven't said anything about it publicly before this because I figured that eventually I would have time to finish the research - and produce the implied tools - myself.
But I've come to the conclusion that with everything else going on in my life that is more important, more fun, and/or more profitable, I am not going to have the time to finish the research myself. Ever. There's also the significant possibility that I simply do not have the requisite CS theoretical foundation to complete the work alone.
I have inquired at the local university about sponsoring a PhD candidate or two if they'd like to take up the cause, but alas our local university does not teach an adequate foundation in programming language semantics.
There has been some interesting research in this area, but all of it - that I'm aware of - has fallen short of the mark. Either it assumes incorrectly that because normalization comes from a relational background it does not apply to object-oriented models, or it assumes that normalization only applies to the data defined by objects. There are some very interesting near-miss projects however...
The really interesting stuff happens when you apply normalization to the code - which I would argue is the foundation of all refactoring.
So now I'm thinking that the best thing to do is to get the word out, perhaps by asking to speak at DevDays 2011 in DC, and find out if there is a community as excited by this stuff as I am.
Here's a sneak peek: Normalization is the process of making something minimal and non-redundant. The Don't Repeat Yourself (DRY) principle of object-oriented programming is therefore a clear manifestation of the goals of normalization. I believe I can show that all of the well-known object-oriented design/programming/refactoring principles are the logical consequence of object normalization. I think I can also show that there are more interesting things that can be done with systems in Object Normal Form (ONF) than just refactoring.