The article Build and Validate Safety in Medical Device Software takes a critical look at the current processes for medical device software and concludes:
The complexity of the software employed in many medical devices has rendered inadequate traditional methods (testing) for demonstrating their safety.
The article then provides examples of the types of analyses that can be performed to better ensure safety.
BohrBug: Not necessarily easy to find, but once discovered is reproducible.
Heisenbug: The ever-annoying bug that can not be reliably reproduced.
Spin: An open-source software tool for formal verification of distributed software systems.