The Worst Metric

Wed 06 February 2013

Lines Of Code is an awful way to measure software - but look at the pretty picture...

That's roughly 32 Million Lines of Code involved in a Baserock GENIVI Baseline Linux system - without any bloat C++ applications.

Total "effort/cost to develop" would be a much more useful metric generally, but truthful accurate numbers are really hard to come by, because:

  • no-one wants to admit how much they really spent, or how far wrong the original estimates were.
  • engineers work on multiple projects simultaneously.
  • large-scale projects are done by multiple organisations in "collaboration".
  • projects involve 're-use' of deliverables from previous projects, making it hard to measure the new stuff accurately.
  • time is billed to 'support', or 'maintenance', or even 'sales' instead of development.

I've never liked COCOMO much - it sucked when we used it in the 80s. And since reading The Leprechauns of Software Engineering I'd wager a beer there's no real science under COCOMO, in spite of Barry Boehm's pagecount.

So I'll get famous when I launch the devCurmudgeon software analysis suite, to sell with the after-dinner SCRUM lectures. Can't explain the details without an NDA, obviously, but it's a proprietary algorithm involving Git-active-days and the entrails of a chicken.

In the meantime, I'm having to wing it analyse using LOC. My guesses detailed calculations based on Ohloh's numbers were ridiculous questionable, so colleagues suggested SLOCCount. SLOCCount's numbers are typically smaller than Ohloh's, which is obviously useless when I'm trying to exaggerate justify figures for management. SLOCCount appears to be jolly thorough though, and it saves me flipping back and forth on hundreds of web pages.

So, as requested by the program itself, the following data was "generated using David A. Wheeler's 'SLOCCount'". If David (or anyone) can shed light on why SLOCCount sees 10 Million LOC in the Linux kernel, while Ohloh and the rest of the world claim 15, please sort it out let me know.

Here's the equivalent picture for the core Baserock operating system (approx 25MLOC) on its own.