It’s somewhat fascinating to look at growth by accretion in software. For one thing, just like geological GBA (yeah, that’s how hip I am), it can give you a visible record of the history of a particular little piece of the world. For another thing, it can lead to interesting conflicts within and between developers, as something that’s grown by accretion rarely ‘looks right’ from a fresh (ahistorical) point of view.
I ought to look through the computing literature and see what people have done in the vein of automatically analyzing GBA and trying to reverse-engineer the ‘meaning’ if it. Thing is, when you look at some GBA and say it doesn’t look right, then you go and try to ‘fix’ it, you can often end up losing important features/functionality/quirks/etc., because you tend to sort of throw away some of the little differences that seem incidental but were actually hard-won little bits of real-world application knowledge. Having a little tool sitting over your shoulder and saying “look, jerky, you removed this bit of logic, but this here source-control comment says ‘I know this looks odd, but it’s VERY IMPORTANT'” could save some hassle sometimes.