Tonight's news included yet another case of a Prius sudden-acceleration problem, this time in San Diego where the driver ended up being assisted by a police officer who used his police car to stop the Prius by driving in front of it to slow it down to a stop. Toyota's engineers are really scratching their heads over this problem and that particular Prius is now being analyzed very thoroughly in hope to figure out the cause.
So, how to fix this problem? Probably Toyota's engineers already thought about what I am about to propose but here it goes anyway: do not fix the problem! Okay so, before those of you who are still reading on what I think should be done is two things:
- Verify the algorithm and its implementation. One very likely cause is the software that controls the car's acceleration and brake systems. If that is the case and engineers cannot find and fix the bug(s) then a better course of action would be to start from the beginning and (a) create a new algorithm, (b) analyze the algorthm quality as such, i.e. as an abstraction, (c) implement and test it simultaneously. Step (b) is extremely important because that is the best way to make sure the algorithm is robust. If we wait until implementation time to do testing then it will be harder to know if the problem is the algorithm itself or its implementation. I think this is the most viable, fast, and cost-effective course of action.
- Unit level testing is not enough. One well know problem with measurement, from the physics standpoint, is that any attempt to measure something will affect what is being measured and therefore the measurement will be inexact. This means that once the algorithm and its implementation are robust it will be more effective to test at subsystem and system levels instead of inisolation.
- Reproduce internal and external test conditions. The best way to reproduce a behavior is by recreating all conditions that triggered the undersired behavior. In addition to the car conditions this includes road, slope, weather, etc.