The way that the fine article was worded, it seems that the engineering team knew that they needed approximately 1.5M LOC before they has started
It's possible, with highly detailed design documents. You could use something like "cyclomatic complexity" which is an older estimation methodology which is just a laundry list of small granularity features with point values attached. You add those up, while multiplying some weighted numbers together to account for interlinked complexity, then use a figure for the implementation language to come up with an estimated LOC figure. Error bars on that kind of thing are something like +/- 100%/50%. (I'm pulling numbers out of my @ss here, but I'm talking about a highly ritualized and systematized way of doing just that.)
You can get better estimates, usually by asking shops that have written the same sort of product many times before.
Calculating this involves working out the number of branches through the code, nothing to do with estimation. It is also very much in use today to analyse codebases, finding hotspots, etc.
It's possible, with highly detailed design documents. You could use something like "cyclomatic complexity" which is an older estimation methodology which is just a laundry list of small granularity features with point values attached. You add those up, while multiplying some weighted numbers together to account for interlinked complexity, then use a figure for the implementation language to come up with an estimated LOC figure. Error bars on that kind of thing are something like +/- 100%/50%. (I'm pulling numbers out of my @ss here, but I'm talking about a highly ritualized and systematized way of doing just that.)
You can get better estimates, usually by asking shops that have written the same sort of product many times before.