Software-intensive system are just plain wicked, and - as Fred Brook notes - all such systems have an essential complexity to them that is inescapable. Add to the mix the nature of such discrete systems in their interaction with a very continuous world, then add to that the problems inherent with concurrent systems of systems - race, dead lock, live lock starvation, and the like - and you end up with something that challenges contemporary development, testing, and deployment practices. I'm not casting any disparaging thoughts to Toyoto in particular, but as David properly notes, even reproducing intermittent faults so that the root cause may be found is wickedly hard.
Quote of the day:
Read more at Grady’s Handbook blog