What industry known software safety standards has anyone had experience in having to adhere to while developing software that is involved in controlling a device/system that has potential to harm the individuals using it?
Software should never run a system that could injure someone. The only possible (and still questionable) time this might be false is when using a safety reliable PLC which is specially engineered for safety.
You should look into:
Start here: http://www.aonix.com/safety_critical_overview.html
Read this: http://www.ghs.com/products/safety_critical/index.html
Listen to this: http://www.podnova.com/channel/388090/episode/7/
This is a well-understood topic. The military has been building safety-critical software for years.
MISRA is the standard followed in the automotive industry, but it's a coding standard to ensure correctness of operation and portability.
You need to read up on the Therac accidents to understand the complexity of this issue.
Also, NASA and military documents are widely available and discuss standards for coding that allow determination of safety of the system.
Not a saftey standard, but reading comp.risks for a while will show the kind of problems you will need to work hard to prevent.
(The book, "Computer Related Risks" is very good as well.)
Different industries have different standards. Aircraft and robotics for example. Standards are still evolving in some new industries, such as surgical robots. Still there are some common elements. The first is redundancy. I work with industrial robots. For critical items such as speed control, we use three different calculations on two different controllers. For emergency stop systems we use dual circuits, every red e-stop button has two physical switches behind it.
I used to work on aircraft. On aircraft autopilots there are often two or even three separate computers doing the calculations and comparing results.
The goal is to prevent any single failure from making the system unsafe.
You need to look at the rules and regulations that govern the area you are working in to see what the legal requirements are, but you have to make the entire system safe.
The Aonix link above is a good one for the basic reasoning. If you want examples of how particular standards work, you can google for the following:
- IEC61508: “Functional safety of electrical / electronic / programmable electronic safety-related systems (E/E/PES)”. Base standard that is referenced in various sector specific standards. This IEC page is a good starting point. Part 61508-3 is about software.
- DO-178B: Avionics standard with similar scope as IEC61508 that takes a slightly different view on software
- IEC60601-1-4: Deals with "Programmable electrical medical systems" (Part of the 60601 series of standards)
- EN5012x: Railway specific standards - 50128 is about software.
Approaches vary by field. (sorry, I only rate 1 link...)
Avionics: DO-178B: (see wikipedia)
Information Security The Common Criteria (see the Common Criteria Portal website)
The FDA controls software for medical devices (think X-ray machines) http://www.fda.gov/medicaldevices/deviceregulationandguidance/guidancedocuments/default.htm
The safety-critical mailing list (UK) at U of York in the UK is an excellent resource There has been discussion there recently of how to apply the SIL standards (see wikipedia on SIL standards) to software systems.