The LegoHypothesis is that software can be put together like Lego, out of lots of small interchangeable components.
We are attempting to conclusively disprove this hypothesis, by showing that component sizes follows a PowerLaw, and thus that there is no natural scale to software componentry. Bigger systems will have larger components than smaller ones.
This TR demonstrates this for OO Programs
Now actually published: yay!
We now wish to generalise it (particular this component size data) to lots of other systems in [paper writing] by our [pool cleaner].
See ShapeOfJavaSoftware for the latest developments with UoA.
The main work will probably consist of
questions to answer
software to analyse
Here's a page where we can summarise results in one place: LegoResultsSummary
A program to read in a list of values and produce various outputs: PowerStats (Obsolete, use Marcus's script)
TheNetworkHypothesis: A working hypothesis that says that the distributions that are from network-related things are power laws; other stuff tends to be LogNormal.
A note about how log-normals could look like power laws: WikiOfJerome:PowerLawLogNormal
New stuff Nick is working on:
Component size dependence on system size: ComponentSystemSizeCorrelation
ClusteringCoefficient: a metric describing the amount of clustering among vertices in a graph.
So, I've been reading many papers recently about WebServices?. I wonder what the failure of the LegoHypothesis would say about their success? --EwanTempero
I was the architect of a commercial software tool called AppComposer that was successful at building large applications out of software components, but only if you slightly change the definition of what a component is. I agree that you cannot build software out of reusable objects, and unfortunately when most people say "component" they are really saying "object". I plan to give a talk about this, probably sometime in February. --WmLeler