Software safety refers to a range of services targeted at improving the reliability, dependability and safety of software.
Software does not exhibit the random or wear out related failure behavior of hardware. Software will always function in the same way as long as the same input and computer states are present. Software can cause system failures either because of design errors or implementation errors.
Design errors are often caused by wrong assumptions about system operation, e. g., that input A is always followed by input B.
Typical implementation errors are caused by confusing symbols, such as g instead of G. Software faults will only cause failures if the fault is encountered during usage. Therefore faults existing in often used code will cause failures more often than faults residing in rarely used code but the latter can be equally serious. In mission or safety critical applications it is particularly important to review and test rarely used code.
Software safety is a subset of system safety. So in the context of safety it’s crucial that the system is protected against, and also designed to handle unexpected software behavior.
Software safety has evolved to be a parallel effort to the development of the software itself. The system safety engineer is involved in each step of the software development process identifying which functions are critical to the safe functioning of the greater system and tracing those functions down into the software modules which support them.
A good software reliability engineering program, introduced early in the development cycle, will mitigate problems by:
- Preparing program management in advance for the testing effort and allowing them to plan both schedule and budget to cover the required testing.
- Continuous review of requirements throughout the life cycle, particularly for handling of exception conditions. If requirements are incomplete there will be no testing of the exception conditions.
- Offering management a quantitative assessment of the dependence of reliability metrics on the effort (time and cost) allotted to testing.
- Providing the most efficient test plan targeted to bringing the product to market in the shortest time subject to the reliability requirements imposed by the customer or market expectations.
- Continuous quantitative assessment of software/system reliability and the effort/cost required to improve these by a specified amount.
Want to learn more? Tonex offers Software Safety Training, a 3-day course that covers all aspects of Software Safety focusing on philosophies and methods in software safety and its primary objectives.
Additionally, Tonex offers nearly 400 classes, seminars and workshops in close to four dozen categories of systems engineering training, including:
For more information, questions, comments, contact us.