When you're talking about physical devices and structures, I like "over"-engineering: e.g. those extra cables keep my elevator in the shaft when one fails. In the case of the physical world, I think we can define over-engineering as engineering to much more than the minimum required. Another example is two-lane bridges: the sign says "16 T" but obviously, two vehicles could be on the bridge at once, headed in opposite directions, and it has to hold up for decades. Exactly what specifications are used to build the bridge, I have no idea. But it's obvious to me that it's "over-engineered."
I don't think we know enough about solving problems with software to detect over- and under-engineering before ... I don't know. Before we need to? Before users complain that it doesn't work? Before MegaSoftCorp spends a few million too much?
In 'real' engineering, every engineering calculation has a safety factor attached to it. You figure out how much you need, and then you multiply it by the chosen safety factor to get what you need. The choice of safety factor varies. In some cases, it may be regulated/required. In other cases it is based on the engineer's judgement. And of course, it will vary from field to field. In aerospace, safety factors are typically much lower than in civil engineering, since weight is a much greater concern.
Which brings back to why we have a safety factor at all. The only reason why we have it is because of uncertainty. The real why we have safety factor at all is because we don't know enough.
I don't think we know enough about solving problems with software to detect over- and under-engineering before ... I don't know. Before we need to? Before users complain that it doesn't work? Before MegaSoftCorp spends a few million too much?