Considering the components used in the current control systems, hardware failure causes have been widely studied. Software failure causes, on the other hand, are rarely studied or understood. In the field studies that have been done, some of the rules for software failure causes have been theorized but even those are not widely known by software engineers or followed. Few practitioners know the rules of software reliability or take the time to study how to create reliable software. Why? This is in part because it appears deceptively easy to create software. Software tool manufacturers work hard to promote this.
We cannot, however, ignore the importance of software reliability. As control systems grow in functionality and complexity, we depend on an increasing amount of software. This paper addresses these issues and includes examples of software failures, the “root causes” of those failures, some rules for avoiding those causes and some guidance in evaluating software reliability in control system products.