Software: How does the safety analysis of a software based system compare with that of a system implemented in analogue hardware technology?
|Because of the success of the digital and computer technology for implementing instrumentation and control systems in industry, hardware components in analogue systems are progressively disappearing from the market, thus creating problems for the maintenance of older systems. Hence, in many safety critical or related applications, software is gradually supplanting hardware. From the viewpoint of safety, hardware and software systems differ in various ways.
Software has several assets. Increased functionality and ‘intelligence’ is easier to implement, in particular to refine on-line monitoring and control mechanisms, to improve human interfaces; also to design fault diagnostic aids and fault tolerant mechanisms that increase resilience, safety and availability. Digital technology also may offer more accuracy and numerical stability. Contrary to hardware, software by itself does not wear out and is unaffected by electromagnetic, seismic or other physical interferences. Because it is programmable, it is more flexible to accommodate parametric tuning, maintenance and updates.
These advantages, however, have their counterparts. The size and the functionality of software –based systems may lead to quite complex implementations, with large numbers of internal states that may be hard to test. Digital systems have a discrete behaviour and are very sensitive to small (bit) errors. As opposed to analogue systems, they allow no continuity interpolation argument, making testing even tougher. A behaviour tested corrected in two neighbouring states does not imply correctness for the states in between.
These issues are potential sources of concern that require specific measures to guarantee and demonstrate a desired level of reliability. Unlike random hardware errors, software faults are defects of the design, against which parallel redundant components offer no protection. Instead, components coded differently or with diverse functionalities covering the same safety requirement are needed. And yet, however far-reaching it may be, testing often is unable to provide sufficient confidence in software safety critical applications. As a consequence, the safety analysis must take into account the impact of various important aspects of the design, such as the quality of the requirements specifications, the software design methodology, the design and test documentation and the competence of the developers.
In recent years, digital technology has had to face new challenges. Cybersecurity issues cause specific problems requiring measures to protect software against unauthorized access and malicious interactions. Technological advances in circuit design produce components with programmable integrated logic, such as programmable logic devices (PLD)’s) and field gate arrays (FPGA’s). The verifiability of their conception and performances generates new issues also.