Critical software development: How is RAMS engineering applied?
From a formal point of view, the set of software sub-systems does not have a failure rate, that is, its MBTF is infinite. In any case, MTBF is evidenced by electronic equipment running the software.
On the other hand, it is known that software is one of the sub-systems that entails the most problems during the life cycle of a product and, undoubtedly, requires more maintenance, impacting availability and safety of systems and installations.
This situation will be increasingly prevalent. We are facing a macro technological trend where software is increasingly responsible for meeting the requirements of systems and products.
The world is being digitized: regulated and unregulated education, professionals, products, systems, M2M communications, generating a virtuous (or vicious) circle in favour of digitalization and software.
Thus, software (and its development) will be increasingly complex, generating failures in its development.
By now, there are only five ways to mitigate and reduce the failure rate of software components developed by humans:
Management: control of the generation, validation and traceability processes of the software components, as well as generating an adequate work structure, being organized and properly hierarchized. For example, CENELEC EN 50128 standard defines, according to safety and reliability level of a software project, the structure of the work team and the management of software activities.
Reutilization: Reusing code to not potentially add new failures (well-known bugs) and, if they were found, update (cost) can be leveraged on several computers or systems.
Diversity: introducing different actors within a development and validation process, and even having different development teams in redundant systems (= redounded in process).
Automatic code generation: that is, an entity that is always right (unlike a programmer) will generate the code
Automatic check: using tools that allow the developed code to be statically and dynamically verified.
Leedeo Engineering supports companies that must develop critical software, both in software development itself, and in design of processes and organization: Engineers specialized in critical software design and encryption, as well as RAMS engineers for verification and validation (V&V) of software product, collaborating, all being integrated in their in-house work teams or as a turnkey project.