Each day, millions of people around the world travel on trains. Some use them to travel relatively short distances, while others travel for days on end.

Regardless of the distance traveled, today's railway systems have evolved significantly from the trains of a century ago. They now incorporate complex embedded software systems that perform a wide range of tasks, relating to navigation, vehicle coordination, control and protection.

As with other many other forms of embedded software, such as medical device software and avionics software, railway software is safety-critical. Small defects in embedded railway software can have disastrous results, including financial loss, injury and even death.

As such, strict sets of regulatory specifications have been created for embedded railway software in order to ensure that applications used in railway systems are reliable and safe.

One such standard is the EN 50128, issued by the European Committee for Electrotechnical Standardization (CENELEC). It outlines maximum probabilities of dangerous failure and the associated reductions in overall risk. The EN 50128 standard provides for five different software integrity levels covering various embedded railway systems, ranging from SIL 0 for management information systems and similar up to SIL 4 for safety signaling.

CENELEC also publishes the EN 50126 and EN 50129 embedded software standards for railway-specific products. By providing standardized requirements for software developers, EN 50126 helps ensure they create embedded software that is suitable for use in safety-critical settings. The EN 50129 standard provides similar guidelines as EN 50128 for electronics systems used for signaling purposes, also using an SIL range of 0 to 5 to outline requirements for various types of signal.

When creating embedded railway software, many developers choose to utilize automated embedded software testing tools, in order to ensure that the testing process is rigorous, comprehensive and straightforward.